Safe Computing

RAPORT TECHNICZNY


Sophos Anti-Virus a problem roku 2000


W miarę zbliżania się roku 2000 coraz częściej pojawiają się wątpliwości dotyczące przystosowania oprogramowania do przejścia w kolejne tysiąclecie. Pragniemy udzielić Państwu odpowiedzi na trzy podstawowe związane z tym pytania:

Czym jest problem roku 2000?
Na całym świecie przyjęte jest aby do określenia bieżącego roku używać tylko dwóch jego ostatnich cyfr. Stwierdzenia typu "urodziłem się w 71" są dla nas całkowicie jasne. Tendencja ta została przeniesiona do dziedziny programowania. Kilka czy kilkanaście lat temu nikt nie przypuszczał, że jego program będzie wciąż wykorzystywany w następnym stuleciu. Program komputerowy numerujący lata tylko dwoma ostatnimi cyframi nie rozpoznaje dnia 1 stycznia 2000 jako następnego po 31 grudnia 1999. Spowoduje to błędy w obliczeniach daty. Problemy mogą wystąpić przy określaniu lat przestępnych. Lata podzielne przez cztery są przestępnymi za wyjątkiem pierwszego roku w nowym wieku, który musi dzielić się przez 400. Lata 1700, 1800 i 1900 nie były przestępnymi, natomiast 2000 będzie. Niektóre aplikacje są tak zaprogramowane, że nie będą traktować roku 2000 jako przestępnego. Po 28 lutego przejdą od razu do 1 marca. I tym razem obliczenia daty będą nieprawidłowe. Program zaprojektowany tak, by bezproblemowo przejść w następny wiek powinien poprawnie operować datą przed, w trakcie i po roku 2000. Powinien też rozpoznać rok 2000 jako przestępny. Należy zwrócić uwagę na to, że aplikacja posiadająca prawidłowo zaimplementowaną datę może działać niewłaściwie za sprawą systemu operacyjnego lub innych programów.

Jakie znaczenie ma data dla systemu Sophos Anti-Virus
Zadaniem Sophos Anti-Virus jest wykrywanie i usuwanie wirusów komputerowych. Daty nie mają dla niego praktycznego znaczenia. Nawet jeśli system jest używany razem z programami, które podają nieprawidłową datę, w żadnym stopniu nie wpłynie to na ochronę antywirusową jaką system zapewnia. Sophos Anti-Virus wykorzystuje obliczenia związane z datą jedynie w dwóch przypadkach. Pierwszym z nich jest moment, w którym system jest startowany. Porównywana jest wtedy data systemowa z datą wygenerowaną przez Sophos Anti-Virus i przechowywaną w pliku. Zapisana jest ona w formacie YYYYDDMM wykorzystującym cztery cyfry do zapisu roku. Data systemowa powinna zawsze zgadzać się, lub ewentualnie być późniejsza od daty wygenerowanej przez system antywirusowy. Jeśli tak nie jest na ekranie pojawia się komunikat: "System clock date is incorrect" (data systemowa jest nieprawidłowa). W przypadku, gdy data systemowa jest większa o ponad cztery miesiące od daty Sophos Anti-Virus wyświetlona zostaje informacja: "Usefull life of SWEEP has been exceeded" (ta wersja SWEEPa jest już przestarzała). Pomaga to ostrzec użytkowników przed używaniem nieaktualnego oprogramowania antywirusowego, które może nie wykryć nowopowstałych wirusów. Po raz drugi Sophos Anti-Virus korzysta z daty kiedy ładowane są pliki IDE zawierające identyfikatory nowych wirusów. Pliki te wysyłane są do użytkowników w wypadku jeśli pomiędzy aktualizacjami zostanie wykryty nowy wirus. Informacja o nowym wirusie jest później umieszczana w bazie wirusów następnej wersji systemu. Oznacza to, że każdy plik IDE starszy niż trzy miesiące jest całkowicie zbędny. W przypadku natrafienia na taki właśnie plik Sophos Anti-Virus wyświetla komunikat: "File C:\SWEEP\NEWVIRUS.IDE is older than 90 days" (plik C:\SWEEP\NEWVIRUS.IDE ma więcej niż 90 dni). Wyliczenie "wieku" pliku IDE odbywa się na zasadzie porównania daty będącego w użyciu pliku z datą systemową.

Jak przekonać się czy Sophos Anti-Virus jest przystosowany do przejścia w nowe tysiąclecie?
Na początek należy zainstalować aktualną wersję Sophos Anti-Virus na komputerze przeznaczonym do testów a następnie uruchomić system antywirusowy. Upewnić się, że nie są wyświetlane żadne komunikaty mające związek z datą. Następnie cofnąć datę systemową o jeden rok i ponownie uruchomić Sophos Anti-Virus. Powinien pojawić się komunikat: "System clock date is incorrect". Ustawić datę w systemie o rok naprzód i znów wystartować Sophos Anti-Virus. Tym razem pojawi się komunikat: "Usefull life of SWEEP has been exceeded". Taka sama informacja będzie wyświetlona jeśli datę systemową ustawimy na 31 grudnia 1999 a następnie na 1 stycznia 2000. Oznacza to, że system prawidłowo rozpoznaje pierwszy dzień dwudziestego pierwszego wieku jako następujący po ostatnim dniu dwudziestego. To czy oprogramowanie zainstalowane na testowym komputerze uznaje rok 2000 jako przestępny czy też nie dla systemu Sophos Anti-Virus nie ma znaczenia gdyż jest to kwestia jednego dnia.


© 1998 SAFE COMPUTING Sp. z o.o., http://www.safecomp.com/, email: info@safecomp.com
Tel/fax (022) 6198956, 6700756, 6700956; 03-733 Warszawa, ul.Targowa 34