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.