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 e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *