Was ist der Zweig der Informatik, der untersucht, wie Anti-Virus-Programme funktionieren?

9

Es ist eine triviale Übung in endlichen Automaten zu zeigen, dass es keinen Algorithmus gibt, der alle Viren erkennen kann, aber es gibt viele Softwareunternehmen, die Anti-Virus-Software verkaufen.

Gibt es einen Teil von CS, der sich mit Viren und Antiviren befasst?

PS: Ich frage nicht nach einer nicht CS-bezogenen Rechtfertigung für AV oder nicht, sondern nur nach der Kategorie / dem Thema innerhalb von CS, unter die sie gegebenenfalls fallen. Wenn AV kein Thema in CS ist, ist dies auch eine akzeptable Antwort. Gibt es im CS-Kontext Hinweise auf Viren und AVs?

Arjang
quelle
2
Willkommen bei Computer Science Stack Exchange! Computersicherheit ist möglicherweise das Feld, das Sie untersuchen möchten. Probieren Sie Wikipedia aus. Sie sollten dort vergleichbare oder bessere Informationen erhalten.
Patrick87

Antworten:

12

Es gibt einen Teilbereich der Computersicherheit, der als Computervirologie bezeichnet wird. Das Journal of Computer Virology widmet sich dem Thema. Wenn Sie untersuchen, wie Antivirensoftware funktioniert, wird nur die Oberfläche des Bereichs zerkratzt.

Zum Beispiel gibt es sogar einige Arbeiten, bei denen Logik auf Malware angewendet wird: Eine allgemeine Definition von Malware von S. Kramer und JC Bradfield. Journal of Computer Virology (6) 2010.

Dave Clarke
quelle
9

Viren und Antivirentechnologie haben viel mit CS zu tun. Ihre Frage erinnerte mich an etwas, das ich kürzlich gelesen hatte. Hier ist ein Auszug aus dem Buch von Williamson & Shmoys, Das Design von Approximationsalgorithmen, Seite 6. Es rechtfertigt die (praktische) Bedeutung von Approximationsalgorithmen und verwendet das bekannte Set-Cover-Problem als Beispiel im Zusammenhang mit Viren:

Das Set-Cover-Problem wurde bei der Entwicklung eines Antivirenprodukts verwendet, das Computerviren erkennt. In diesem Fall war es erwünscht, hervorstechende Merkmale zu finden, die in Viren auftreten, die für den Startsektor eines Computers entwickelt wurden, so dass die Merkmale in typischen Computeranwendungen nicht auftreten. Diese Funktionen wurden dann in eine andere Heuristik zum Erkennen dieser Bootsektorviren, ein neuronales Netzwerk, integriert. Die Elemente des Set-Cover-Problems waren die bekannten Bootsektor-Viren (zu dieser Zeit etwa 150). Jeder Satz entsprach einer Drei-Byte-Sequenz, die in diesen Viren auftrat, jedoch nicht in typischen Computerprogrammen. Es gab ungefähr 21.000 solcher Sequenzen. Jeder Satz enthielt alle Bootsektorviren, die irgendwo die entsprechende Drei-Byte-Sequenz enthielten. Das Ziel war es, eine kleine Anzahl solcher Sequenzen (viel kleiner als 150) zu finden, die für das neuronale Netzwerk nützlich sind. Unter Verwendung eines Approximationsalgorithmus zur Lösung des Problems wurde ein kleiner Satz von Sequenzen gefunden, und das neuronale Netzwerk konnte viele zuvor nicht analysierte Bootsektorviren erkennen.

Überraschend oder nicht, dieses Beispiel zeigt, dass zumindest Techniken der KI und der kombinatorischen Optimierung nützlich sind. Nach dem Lesen könnte man leicht glauben, dass viele Bereiche von CS Dinge haben, die im Zusammenhang mit Viren und deren Erkennung angewendet werden können. Um Ihre Frage direkter zu beantworten, befassen sich viele Dinge in CS zumindest indirekt mit Viren.

Juho
quelle
7

Sie sollten vorsichtig sein, wenn Sie theoretische Ergebnisse verwenden, um zu argumentieren, dass in der Praxis etwas nicht möglich ist. Es gibt mehrere Gefahren, in die man fallen kann:

  1. Das theoretische Ergebnis hat Annahmen, die nicht zutreffen.

  2. Das Problem in der Praxis wird durch das theoretische Modell nicht gut modelliert.

  3. In der Praxis muss eine Lösung nicht perfekt sein, um nützlich zu sein.

Sie haben keine formale Definition dessen gegeben, was ein Virus ist. Daher kann es hilfreich sein, Ihre Behauptung über die triviale Übung zu erweitern, um zu verstehen, was Sie wirklich meinen.

Ein großer Teil der Arbeit einer Antivirensoftware besteht darin, bekannte Viren (und ihre Varianten) zu erkennen. Dazu werden Zeichenfolgen (in Dateien, Speicher usw.) mit einer endlichen Liste von Zeichenfolgen (Virensignaturen) verglichen. Aus diesem Grund müssen wir die Datenbank der Antivirensoftware regelmäßig aktualisieren.

Es gibt zusätzliche Funktionen zum Erkennen potenzieller Viren anhand ihres "Verhaltens", aber diese Methoden sind weder vollständig noch solide (und sie müssen nicht vollständig sein, um nützlich zu sein). Das Entwerfen einer Antivirensoftware scheint bisher eher in der Informatik als in der Informatik zu liegen (obwohl Informatik und Computertechnik eng miteinander verbunden sind).

Im Allgemeinen würden diese Studien in einen stärker angewandten Teil der Computersicherheit (und allgemeiner in Systembereiche: Computernetzwerke, Betriebssysteme usw.) der Informatik fallen, wobei jedoch Ideen aus anderen Teilen der Informatik (maschinelles Lernen usw.) verwendet werden typisch.

Vielleicht möchten Sie die Kunst der Computervirusforschung und -abwehr überprüfen .

Kaveh
quelle