Jaką gałąź informatyki bada działanie programów antywirusowych?

9

Jest to trywialne ćwiczenie w automatach skończonych, aby pokazać, że nie ma algorytmu, który mógłby wykryć wszystkie wirusy, ale wiele firm sprzedaje oprogramowanie antywirusowe.

Czy jest jakaś część CS, która zajmuje się wirusami i antywirusami?

PS: Nie pytam o niezwiązane z CS uzasadnienie posiadania AV, ale tylko o to, jaką kategorię / przedmiot w CS są objęte, jeśli w ogóle. Jeśli AV nie jest przedmiotem w CS, to jest to również akceptowalna odpowiedź, czy są jakieś odniesienia w kontekście CS do wirusów i AV?

Arjang
źródło
2
Witamy w Computer Science Stack Exchange! Bezpieczeństwo komputera może być polem, które chcesz zbadać. Spróbuj Wikipedii; powinieneś uzyskać tam porównywalne lub lepsze informacje.
Patrick87

Odpowiedzi:

12

Istnieje podobszar bezpieczeństwa komputerowego o nazwie Wirusologia komputerowa. Journal of Computer Wirusologii poświęcona jest tematem. Badanie działania oprogramowania antywirusowego jedynie rysuje powierzchnię tego obszaru.

Na przykład jest nawet trochę pracy nad logiką złośliwego oprogramowania: ogólna definicja złośliwego oprogramowania autorstwa S. Kramera i JC Bradfielda. Journal of Computer Virology (6) 2010.

Dave Clarke
źródło
9

Wirusy i technologia antywirusowa mają wiele wspólnego z CS. Twoje pytanie przypomniało mi coś, co ostatnio przeczytałem. Oto fragment książki Williamson & Shmoys, The Design of Approximation Algorytmy, strona 6. Uzasadnia to (praktyczne) znaczenie algorytmów aproksymacyjnych i wykorzystuje dobrze znany problem pokrycia zestawu jako przykład w kontekście wirusów:

Problem z zestawem okładek został wykorzystany przy opracowywaniu produktu antywirusowego, który wykrywa wirusy komputerowe. W tym przypadku pożądane było znalezienie istotnych funkcji występujących w wirusach zaprojektowanych dla sektora rozruchowego komputera, tak aby funkcje te nie występowały w typowych aplikacjach komputerowych. Funkcje te zostały następnie włączone do kolejnej heurystyki w celu wykrywania wirusów sektora rozruchowego, sieci neuronowej. Elementami problemu z zestawem pokrywającym były znane wirusy sektora rozruchowego (w tym czasie około 150). Każdy zestaw odpowiadał jakiejś trzy-bajtowej sekwencji występującej w tych wirusach, ale nie w typowych programach komputerowych; takich sekwencji było około 21 000. Każdy zestaw zawierał wszystkie wirusy sektora rozruchowego, które miały gdzieś w nim odpowiednią sekwencję trzech bajtów. Celem było znalezienie niewielkiej liczby takich sekwencji (znacznie mniejszych niż 150), które byłyby przydatne dla sieci neuronowej. Dzięki zastosowaniu algorytmu aproksymacyjnego do rozwiązania problemu znaleziono mały zestaw sekwencji, a sieć neuronowa była w stanie wykryć wiele wcześniej niezanalizowanych wirusów sektora rozruchowego.

Zaskakujące czy nie, ten przykład pokazuje, że przydatne są co najmniej techniki AI i optymalizacja kombinatoryczna. Po przeczytaniu tego można łatwo uwierzyć, że wiele obszarów CS ma rzeczy, które można zastosować w kontekście wirusów i ich wykrywania. Aby odpowiedzieć na twoje pytanie bardziej bezpośrednio, wiele rzeczy w CS radzi sobie z wirusami, przynajmniej pośrednio.

Juho
źródło
7

Należy zachować ostrożność, używając wyniku teoretycznego do argumentowania, że ​​czegoś nie można zrobić w praktyce. Istnieje kilka niebezpieczeństw, w które można wpaść:

  1. wynik teoretyczny ma założenia, które nie mają zastosowania,

  2. problem w praktyce nie jest dobrze modelowany przez model teoretyczny,

  3. w praktyce rozwiązanie nie musi być idealne, aby było przydatne.

Nie podałeś formalnej definicji wirusa, więc rozwinięcie twojego twierdzenia o trywialnym ćwiczeniu może pomóc w zrozumieniu, co naprawdę masz na myśli.

Duża część tego, co robi oprogramowanie antywirusowe, polega na wykrywaniu znanych wirusów (i ich wariantów), a odbywa się to poprzez porównywanie ciągów (w plikach, pamięci itp.) Ze skończoną listą ciągów (sygnatur wirusów). Dlatego musimy regularnie aktualizować bazę danych oprogramowania antywirusowego.

Istnieją dodatkowe możliwości wykrywania potencjalnych wirusów w oparciu o ich „zachowanie”, ale metody te nie są ani kompletne, ani dźwiękowe (i aby były przydatne, nie muszą być pełne / kompletne). Wydaje się, że projektowanie oprogramowania antywirusowego w większym stopniu dotyczy inżynierii komputerowej niż informatyki (choć informatyka i inżynieria komputerowa są ze sobą ściśle powiązane).

Ogólnie rzecz biorąc, badania te objęłyby bardziej stosowaną część bezpieczeństwa komputerowego (i bardziej ogólnie obszary systemowe: sieci komputerowe, systemy operacyjne itp.) Informatyki, ale wykorzystanie pomysłów z innych części informatyki (uczenie maszynowe itp.) Jest typowy.

Możesz sprawdzić The Art of Computer Virus Research and Defense .

Kaveh
źródło