Dlaczego twój antywirus działa powoli?
17 lutego 2010 08:28 Krzysztof Lech
Dzieje się tak ze względu na ryzyko, że na komputerze mogą znajdować się rzeczy, które właśnie zostały zidentyfikowane jako niebezpieczne. Zagrożeniem może być np. wygaszacz ekranu, który pobrany został tydzień wcześniej, lecz dopiero teraz firma tworząca program antywirusowy zauważyła, że jest on groźny. Może też być tak, że w momencie, gdy antywirus był wyłączony, pojawiło się na komputerze jakieś złośliwe oprogramowanie. Istnieje też ryzyko, gdy korzystamy z dwóch systemów. Np. podczas pracy z Linuksem pobrany został jakiś wirus atakujący system Windows.
Typowe działanie oprogramowania antywirusowego (AV) polega na sprawdzaniu każdego pliku na komputerze i określeniu, czy jest niebezpieczny. W wielu programach proces sprawdzania pojedynczego pliku jest źle przemyślany. Wielu dostawców opiera się na technice, która polega na porównywaniu kryptograficznych sygnatur wirusów, ale podchodzą oni do tego w nieinteligentny sposób, co bardzo spowalnia cały proces.
Czym są "sygnatury"?
Dostawcy programów AV chcieliby dokładnie dopasować pliki znajdujące się na komputerze z bazą wirusów i móc powiedzieć: "Ten plik wygląda dokładnie jak cyfrowa kopia szkodliwego pliku, który namierzyliśmy wczoraj".
Jednak nie mogą umieścić każdego szkodliwego programu, który wpadł w ich ręce na komputerze użytkownika - to po prostu niemożliwe. Zamiast tego korzystają z kryptografii, której efektem działania na danym pliku jest uzyskanie zestawu składającego się z bardzo wielu cyfr o ustalonym rozmiarze. Ten algorytm pozwala producentom AV na stwierdzenie, że Jeżeli kryptograficzna sygnatura to 267,947,292,070,674,700,781,823,225,417,604,638,969, plik jest zły.
Teraz musi on przechowywać tylko ten numer, a nie cały plik. Twórcy wirusów mogą próbować stworzyć program dający taki sam rezultat jak popularne dobre oprogramowanie (np. takie, które będzie cechowało się taką samą sygnaturą jak któraś z wersji Microsoft Worda) mając nadzieję, że utrudnią w ten sposób działanie dostawców AV poprzez fakt, że ich antywirus będzie wszczynał wiele fałszywych alarmów.
Na szczęście uzyskanie przez piszącego złośliwe oprogramowanie odpowiedniej sygnatury jest wręcz niemożliwe. Pozostaje mu więc liczyć na szczęśliwy przypadek i mieć nadzieję, że wśród napisanych przez niego programów znajdzie się taki, który da identyczny wynik jak jakiś legalny plik.
Dlaczego komputer potrzebuje czasu na przetwarzanie sygnatur?
Twórcy programów antywirusowych określają kryptograficzną sygnaturę sprawdzanego pliku i porównują ze swoją bazą danych, czy nie jest niebezpieczny. W rzeczywistości znane są algorytmy pozwalające, aby tego rodzaju wyszukiwanie było natychmiastowe. Powinno ono przebiegać szybciej niż określanie kryptograficznej sygnatury sprawdzanego pliku.
Jak długo trzeba czekać na wyliczenie sygnatury? W zasadzie czas ten zależy od tego jak szybko przebiega odczyt pliku z dysku twardego. Najszybsze obecnie "twardziele" potrafią odczytywać dane z prędkością około 125 MB/s. Jeżeli więc program AV rozpoczyna skanowanie np. 40 GB plików, trzeba spędzić (w idealnych warunkach) blisko pięć minut czasu czekając aż dysk "zasili" system antywirusowy. Oczywiście w momencie gdy inne programy próbują uzyskać dostęp do dysku cały proces trwa dłużej.
Jeżeli więc chcemy przeskanować cały system, co oznacza wyliczenie sygnatury dla każdego pliku, musimy się liczyć z tym, że proces ten może przebiegać bardzo wolno.
Jednak w przypadku niektórych systemów AV sprawa ma się znacznie gorzej, ponieważ wykonują one dodatkową pracę podczas skanowania każdego z plików. Zamiast po prostu umieć odpowiedzieć na pytanie, "Czy sygnatura przetwarzanego obecnie pliku znajduje się w bazie?" i otrzymać natychmiastową odpowiedź proces przebiega mniej więcej tak:
Załóżmy, że nasz AV właśnie przetwarza plik, którego sygnatura jest następująca:
267,947,292,070,674,700,781,823,225,417,604,638,969 - nazwijmy ją S.
Czy S jest równe 221,813,778,319,841,458,802,559,260,686,979,204,948?
Jeżeli tak, plik jest złośliwym oprogramowaniem.
Czy S jest równe 251,101,867,517,644,804,202,829,601,749,226,265,414?
Jeżeli tak, plik jest złośliwym oprogramowaniem.
Czy S jest równe 311,677,264,076,308,212,862,459,632,720,079,837,243?
Jeżeli tak, plik jest złośliwym oprogramowaniem.
...
Czy S jest równe 11,701,885,383,227,023,807,765,753,397,431,618,256?
Jeżeli tak, plik jest złośliwym oprogramowaniem.
W źle zoptymalizowanych systemach pytanie zadawane jest dla każdego złośliwego programu posiadającego określoną kryptograficzną sygnaturę.
Takie podejście nie jest odpowiednie w przypadku dzisiejszego problemu z niebezpiecznym oprogramowaniem. Zobaczmy dlaczego.
- ~laktozy
- 2010-02-17 10:00:58
"...dobry powód skanowania całego systemu to możliwość znalezienia złośliwego oprogramowania zanim przypadkowo prześlemy je komuś innemu. Wydaje się jednak, że nie warto się tym przejmować..." Ciekawe podejście. Tylko mało rozumne. Pamiętajmy że program programowi nie równy i wirus u mnie rozpoznany u kogoś innego przejdzie niezauważony. I wzajemnie. Raz na jakiś czas warto zatem chyba przeskanować cały system spod jakiegoś niezależnego antywira np. na liveCD żeby nie zostać nosicielem. No i warto również używać prezerwatyw;)
- ~~~
- 2010-02-17 10:37:31
Podana przez autora tekstu sposób przeszukiwania sygnatur jest najgorszym z możliwych, wymaga tyle porównań, co ilość elementów w bazie w najgorszym przypadku (średnio dla podanych danych wystarczy 1 825 000, czyli połowa bazy). Wykorzystując przykładowo zrównoważone drzewo binarne, można dla podanych danych zmniejszyć ilość porównań do 22 (dla najgorszego przypadku). Różnica jest widoczna gołym okiem ;D
- ~gość
- 2010-02-17 10:46:04
Ten.post.tego.użytkownika.został.usunięty, ponieważ.był.niewygodny.dla.autora tego."newsa". "~~~ ocena: brak oceny 17-02-2010, 10:37 - Podana przez autora tekstu sposób przeszukiwania sygnatur jest najgorszym z możliwych, wymaga tyle porównań, co ilość elementów w bazie w najgorszym przypadku (średnio dla podanych danych wystarczy 1 825 000, czyli połowa bazy). Wykorzystując przykładowo zrównoważone drzewo binarne, można dla podanych danych zmniejszyć ilość porównań do 22 (dla najgorszego przypadku). Różnica jest widoczna gołym okiem ;D" Ode mnie do autora: O rany! Człowieku! Jaka amatorka! Prowizorka! Z batcha schemat zaczerpnąłeś?
- ~wladek
- 2010-02-17 11:22:08
A jakiż to AntyWirus opisano? I kto to pisał, i w jakim celu? Pewnie jakiś gimnazjalista chciał dorobić? Przecież wirusów jest pewnie z kilkadziesiąt tysięcy (lub więcej). Taki Domowej Roboty Antek działałby z godzinę dla jednego pliku. Pogratulować ekspertów.
- ~Ja
- 2010-02-17 11:29:35
Mimo, że tekst o tym świadczy, to nie gimnazjalista, ale "John Viega is CTO of the SaaS Business Unit at McAfee."
- ~gość
- 2010-02-17 11:40:15
Amatroszczyzna Panie Autorze. Gdyby antywirusy skanowały w sposób tu opisany skanowanie trwałoby w najlepszym przypadku kilkanaście godzin. Wie Pan co to jest optymalizacja?
- ~max
- 2010-02-17 11:52:05
To jest nic nie warte pleplanie. Książka, którą przytoczono nie jest podręcznikiem dla programistów, ani nie wyjaśnia zagadnień konstrukcji antywirusów.
- ~Piotreeek
- 2010-02-17 15:46:45
Jeżeli chodzi o darmowe oprogramowanie antywirusowe to oczywiście najmniej zasobów zużywa Defender, bardzo dobry i prosty w obsłudze jest też Avast. Dużo zasobów pobiera Microsoft antywirus ale też jest prosty w obsłudze. Ja używam tylko Defender. Jakoś nic nie łapię a system chodzi szybko.
- ~derk
- 2010-02-17 21:28:04
.....a ja mam Ubuntu (linux) i o wirusach i programach antywirusowych, które doprowadzały mnie do szału - zapomniałem.
- ~nikt
- 2010-02-18 15:31:17
Widać jad Polaków, gdzieby się nie ruszyć na necie to komentarze jadem podszyte. A ja uważam, że opis ok - mniej więcej tłumaczy co i jak a szczegóły no cóż zostawmy programistom.
- ~Pscorek
- 2010-02-18 16:44:07
@ Piotreeek: Pozwolę sobie tylko zauważyć, że Windows Defender nie jest oprogramowaniem antywirusowym, tylko anti-spyware - jego główne zadanie polega na wykrywaniu oprogramowania próbującego zinfiltrować system (co nie zawsze - czytaj: prawie nigdy - jest celem działalności wirusa - dlatego właśnie podzielono malware na takie kategorie). Co do Avasta - połowicznie się zgodzę, a połowicznie nie. Kiedyś korzystałem z Avasta. Przestałem po tym, gdy napisany przeze mnie prosty programik został przez niego zidentyfikowany jako wirus... Cóż... Bywa..., aczkolwiek ostatnio mój znajomy miał podobną sytuację, tylko z Kaspersky AV. Jak widać nie ma idealnych antywirusów. @ nikt: Zgadzam się w całej rozciągłości. Z bólem serca, ale jednak...
- ~indianiec
- 2010-02-18 16:48:37
Artykuł mi sie podobał. Widzę, że niektórzy profesjonalni programiści go skrytykowali w komentarzach ale myślę, że nieco wyjaśnia szaremu użytkownikowi a autor napracował sie aby to przekazać przyjaznym zrozumiałym językiem. Pzdr.
- ~antylin
- 2010-02-20 12:36:12
Denerwuja mnie milosnicy linuxa, ktorzy smaruja ze nie maja wirusa bo maja linuxa. ja mam Winde z Nortontem i tez nie mam wirusow, a ze mam ataki - zycie. Wazne ze program mnie ratuje z opresji. Ilosc softu kompatybilnego z Winda - mnostwo. Z linuxem? hmm odrobine mniej ;)
- ~gość
- 2010-02-20 17:52:11
@antylin, oczywiście że mniej :-) Z Windowsem jest kompatybilne parę milionów wirusów. Żaden inny system nie ma tak pokaźnego źródła tychże ;-) A są lepiej napisane niż nie jeden program który przy następnej wersji Windowsa się wysypie lub będzie wymagał poprawek. Nie mniej jednak pociesz się tym. Nie wiem kto jest autorem tamtego komentarza pt "ja mam ubuntu" ale jeżeli ten ktoś całe bezpieczeństwo swojego systemu pokłada w zdaniu "ja mam Linuksa" to kiedyś gorzko się na tym przejedzie.
- ~mrcroowly
- 2010-02-25 18:11:17
Szybkość działania programów antywirusowych zależy od wielu czynników,ale największe znaczenie ma optymalizacja silnika i kodu programu. Wiele kombajnów typu G-data zapewnia dobry poziom bezpieczeństwa,ale obciąża komputer w znacznym stopniu przez co nie można normalnie z niego korzystać. Jeśli antywirus działa powoli i zamula system to należy go zmienić. Ja miałem KIS2010, później Gdatę, a teraz polskiego mks_vira 9.0 i muszę przyznać, że jest różnica w szybkości działania tych programów. Mniej więcej prezentuje się to tak: najszybszy mks_vir>kis>gdata.
- ~fruk
- 2010-02-28 13:38:43
Co trzeba brać pod uwagę wybierając program antywirusowy? Zastanawiam się nad zmianą z kiepskiej darmówki na dobry antywir.
- ~mrcroowly
- 2010-03-09 16:14:52
Najważniejsze na co musisz zwrócić uwagę to: skuteczność, szybkość działania i ogólnie wygoda użytkowania. Jaki masz darmowy program? Jeśli avasta to polecam zmienić jak najszybciej i przeskanować on-line system,bo na pewno masz wiry. Na poprzedniej stronie pisałem o programach AV, z którymi miałem do czynienia i najlepiej wypadł polski mks_vir 9.0. Jeśli masz jakieś pytania odnośnie tych programów to wal śmiało.
Bezpieczna dieta wysokobiałkowa
Depilator PHILIPS HP 6570/00
Pobierz bezpłatnego e-booka 


