Czas

Zapis czasu

Prawie każda analiza digital forensics związana jest w jakimś stopniu z analizą czasu. Szczęśliwym trafem systemy komputerowe skrupulatnie zapisują czas większości zdarzeń. Dodatkowo często czas zdarzenia zapisywany jest równolegle w kilku miejscach. Niestety analiza czasu kryje w sobie kilka pułapek. Przede wszystkim istnieje wiele stref czasowych. Ponadto istnieją różne formaty zapisu czasu.

Strefy czasowe

Obeznany z geografią człowiek, zapytany o ilość stref czasowych, bez wahania odpowie, że 24. Logiczne – co godzinę jedna. Wikipedia jednak wskazuje obecnie istnienie 39 stref czasowych, ustawienia Windows około 100, a ustawienia programów digital forensics kilkaset. O co chodzi?

Strefa czasowa to nie równo wycięty wycinek 1/24 powierzchni ziemi. Jest to urzędowa definicja czasu na danym terytorium. Inaczej mówiąc strefy czasowe zmieniają się zgodnie z granicami państw lub ich administracyjnych części, a nie po przekroczeniu danego południka.

Na definicję strefy czasowej składają się:

  • Obszar, zwykle państwo lub w przypadku większych państw wydzielona część administracyjna.
  • Przesunięcie czasu w stosunku do GMT. GMT to czas 0. W Polsce standardowy czas jest przesunięty o jedną godzinę do przodu. Jeżeli zgodnie z GMT jest 13:37 to w Polsce standardowy czas to 14:47.
  • Przesunięcie czasu letniego w stosunku do czasu standardowego. W Polsce i większości innych krajów to jedna godzina. Jeżeli latem zgodnie z GMT jest 13:37 to w Polsce jest 15:37, czyli już dwie godziny różnicy.
  • Data początku czasu letniego. Zegarek w unii Europejskiej przestawia się o 1:00 GMT o godzinę do przodu w ostatnią niedzielę Marca. W Polsce z drugiej na trzecią.
  • Data końca czasu letniego.  w unii Europejskiej przestawia się o 1:00 GMT o godzinę do tyłu w ostatnią niedzielę Października. W Polsce z trzeciej na drugą

Przyczyną istnienia większej ilości stref czasowych niż 24 są:

  • Strefy czasowe z przesunięciem innym niż godzina, na przykład Indie/Delhi GMT+5.5h.
  • Strefy czasowe z innymi datami przejścia na na czas zimowy lub letni. Na przykład w Stanach Zjednoczonych czas letni trwa od drugiej niedzieli marca do pierwszej niedzieli listopada, czyli kilka tygodni dłużej niż w Europie.
  • Strefy czasowe bez czasu letniego.
  • Strefy czasowe, których definicja zmieniała się na przestrzeni czasu. Na przykład w Polsce od 1979 do 1995 roku, czas zimowy kończył się w ostatnią niedzielę września a nie października.

Kilka dodatkowych faktów i ciekawostek:

  • GMT to to samo co UTC. Greenwich okazał się za bardzo brytyjski i zmieniono zapis na UTC. Amerykańskie siły zbrojne używają również określenie “ZULU time”, z którym zetkniemy się w filmach i grach.
  • Czas na prawo (wschód) of Greenwich rośnie a na zachód maleje. Nowy Jork to UTC -5.
  • Południk 180, znajdujący się po przeciwnej stronie południka 0 (tego przechodzącego prze Greenwich) to południk zmiany daty. To właśnie tam możemy świętować nasze urodziny przez dwa dni, przechodząc tylko jeden krok. Szkoda że większość to ocean.

Podstawy zapisu czasu

W informatyce istnieje wiele metod zapisu czasu. Większość można zaliczyć do dwóch kategorii:

  • Te które definiują czas bezpośrednio poprzez podanie roku, miesiąca , dnia i godziny. Czas ten może być wskazany w różnorodny sposób na przykład w ASCII 25/05/2015 13:15 lub w postaci bajtów na przykład dwa bajty na rok jeden na miesiąc, jeden na dzień, jeden na godzinę i jeden na minutę. Jak widać mieścimy się w 6 bajtach zamiast w 16 powyżej, czyli jest bardziej efektywnie.
  • Te które wskazują upływ czasu od danego momentu w przeszłości. Timestamp (znacznik czasowy). Przykładem jest Unix timestamp.

Pamiętać należy, że czas, który informatyk śledczy analizuje na danym komputerze  może być zapisany w UTC lub w czasie lokalnym. W każdym wypadku należy wziąć to pod uwagę podczas analizy. Nawet godzina przesunięcia może mieć znaczenie dla sprawy a co gorsza taka pomyłka może skompromitować eksperta.

Unix timestamp

Unix timestamp zwany również Unix Epoch to liczba sekund które upłynęły od 01/01/1970 00:00 UTC. W systemach Linux i Unix czas przedstawia się jako 32-bitową liczbę całkowitą. Na przykład 15/06/2015 10:00 to 1434362400. Unix timestamp jest zapisana jako oznakowana (signed) czyli może być ujemna. Sekund zabraknie w 2038 roku, do tego czasu musi zostać wypracowany nowy system.

MSDOS timestamp

Jest to metoda zapisu czasu zastosowana w systemach plików FAT. Jest to metoda bezpośrednia.

Timestamp jest 32 bitowy i kolejne bity określają sekundy, minuty, godziny, dni, miesiące i lata:

  • Bity 0-4 – sekundy; 2 do potęgi piątej daje nam jedynie  32, a programiści chcieli zmieścić się w 5 bitach. Aby uzyskać liczbę sekund należy więc  uzyskaną liczbę należy pomnożyć razy dwa.
  • Bity 5-10 – minuty
  • Bity 11-15 – godzina
  • Bity 16-20 – dzień
  • Bity 21-24 – miesiąc
  • Bity 25-31 – rok – do uzyskanej liczby należy dodać 1980

Windows 64 bit timestamp

Współczesne wersje Windows, do zapisu czasu używają 64 bitów. Zapisane są one w konwencji little endian, czyli najważniejszy bajt znajduje się z prawej strony, Windows 64 bit timestamp jest liczbą wskazującą ilość jednostek równych  stu nanosekund, które ubiegły od 01/01/1601 00:00 UTC. Jedna sekunda to miliard nanosekund, więc z każdą sekundą liczba rośnie o 10 milionów. Pozwala to na dużą precyzję zapisu czasu, a w 64 bitach jest i tak wystarczająco miejsca do zapisu czasu na wiele lat naprzód.

HFS timestamp

HFS timestamp to 32-bitowa liczba określająca liczbę sekund, które upłynęły od 01/01/1904 00:00 UTC. Sekundy wyczerpią się w 2040 roku. Nie zapowiadało się, ze Apple wytrzyma do tego czasu, a jednak stało się to teraz jak najbardziej możliwe. Taka sama liczba, a dwa razy dłuższy okres niż w przypadku Unixa. Dlaczego? Odpowiedź może być tylko jedna. Integer używany przez HFS jest nieoznakowany (tylko dodatni), dlatego liczba może być dwa razy większa.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *