Quelle est la branche de l'informatique qui étudie le fonctionnement des programmes antivirus?

9

C'est un exercice banal dans les automates finis de montrer qu'il n'y a pas d'algorithme capable de détecter tous les virus, mais il existe de nombreuses sociétés de logiciels vendant des logiciels antivirus.

Y a-t-il une partie de CS qui traite des virus et des antivirus?

PS: Je ne demande pas de justification non liée à CS d'avoir AV ou non, mais seulement de quelle catégorie / sujet au sein de CS ils relèvent, le cas échéant. Si l'AV n'est pas un sujet dans CS, alors c'est aussi une réponse acceptable, y a-t-il des réfractions dans le contexte CS aux virus et aux AV?

Arjang
la source
2
Bienvenue sur Computer Science Stack Exchange! La sécurité informatique pourrait être le domaine que vous souhaitez étudier. Essayez Wikipedia; vous devriez y obtenir des informations comparables ou meilleures.
Patrick87

Réponses:

12

Il existe une sous-zone de sécurité informatique appelée Virologie informatique. Le Journal of Computer Virology est consacré au sujet. L'étude du fonctionnement d'un logiciel antivirus ne fait qu'effleurer la surface de la zone.

Par exemple, il y a même du travail pour appliquer la logique aux logiciels malveillants: une définition générale des logiciels malveillants par S. Kramer et JC Bradfield. Journal of Computer Virology (6) 2010.

Dave Clarke
la source
9

Les virus et la technologie antivirus ont beaucoup à voir avec CS. Votre question m'a rappelé quelque chose que j'ai lu récemment. Voici un extrait du livre de Williamson & Shmoys, The Design of Approximation Algorithms, page 6. Il justifie l'importance (pratique) des algorithmes d'approximation et utilise le problème de couverture bien connu comme exemple dans le contexte des virus:

Le problème de couverture a été utilisé dans le développement d'un produit antivirus, qui détecte les virus informatiques. Dans ce cas, il a été souhaité de trouver les fonctionnalités saillantes qui se produisent dans les virus conçus pour le secteur de démarrage d'un ordinateur, de sorte que les fonctionnalités ne se produisent pas dans les applications informatiques typiques. Ces fonctionnalités ont ensuite été intégrées dans une autre heuristique pour détecter ces virus du secteur de démarrage, un réseau de neurones. Les éléments du problème de la couverture d'ensemble étaient les virus connus du secteur de démarrage (environ 150 à l'époque). Chaque ensemble correspondait à une séquence de trois octets se produisant dans ces virus mais pas dans les programmes informatiques typiques; il y avait environ 21 000 séquences de ce type. Chaque ensemble contenait tous les virus du secteur de démarrage qui avaient la séquence de trois octets correspondante quelque part. Le but était de trouver un petit nombre de telles séquences (beaucoup plus petites que 150) qui seraient utiles pour le réseau neuronal. En utilisant un algorithme d'approximation pour résoudre le problème, un petit ensemble de séquences a été trouvé et le réseau neuronal a pu détecter de nombreux virus du secteur de démarrage non analysés auparavant.

Étonnant ou non, cet exemple montre qu'au moins les techniques d'IA et d'optimisation combinatoire sont utiles. Après avoir lu ceci, on pourrait facilement croire que de nombreux domaines de la CS ont des choses qui peuvent être appliquées dans le contexte des virus et de leur détection. Pour répondre plus directement à votre question, de nombreux éléments de CS traitent des virus, au moins indirectement.

Juho
la source
7

Vous devez être prudent lorsque vous utilisez un résultat théorique pour affirmer que quelque chose ne peut pas être fait dans la pratique. Il y a plusieurs dangers dans lesquels on peut tomber:

  1. le résultat théorique a des hypothèses qui ne s'appliquent pas,

  2. le problème dans la pratique n'est pas bien modélisé par le modèle théorique,

  3. en pratique, une solution n'a pas besoin d'être parfaite pour être utile.

Vous n'avez pas donné de définition formelle de ce qu'est un virus, alors étendre votre affirmation sur l'exercice trivial peut être utile pour comprendre ce que vous voulez vraiment dire.

Une grande partie de ce que fait un logiciel antivirus consiste à détecter les virus connus (et leurs variantes), et cela se fait en comparant les chaînes (dans les fichiers, la mémoire, etc.) avec une liste finie de chaînes (signatures de virus). C'est pourquoi nous devons régulièrement mettre à jour la base de données du logiciel antivirus.

Il existe des capacités supplémentaires pour détecter les virus potentiels en fonction de leur "comportement", mais ces méthodes ne sont ni complètes ni sonores (et elles n'ont pas besoin d'être solides / complètes pour être utiles). La conception d'un logiciel antivirus semble relever davantage de l'ingénierie informatique que de l'informatique jusqu'à présent (bien que l'informatique et l'ingénierie informatique soient étroitement liées).

Généralement, ces études relèveraient d'une partie plus appliquée de la sécurité informatique (et plus généralement des systèmes: réseaux informatiques, systèmes d'exploitation, etc.) de l'informatique, mais l'utilisation d'idées d'autres parties de l'informatique (apprentissage automatique, etc.) est typique.

Vous voudrez peut-être vérifier L'art de la recherche et de la défense contre les virus informatiques .

Kaveh
la source