¿Cuál es la rama de la informática que estudia cómo funcionan los programas antivirus?

9

Es un ejercicio trivial en autómatas finitos para demostrar que no existe un algoritmo que pueda detectar todos los virus, sin embargo, hay muchas compañías de software que venden software antivirus.

¿Hay alguna parte de CS que se ocupe de Virus y Anti Virus?

PD: No estoy preguntando sobre la justificación no relacionada con CS de tener AV o no, sino solo a qué categoría / tema dentro de CS pertenecen, si corresponde. Si AV no es un tema dentro de CS, entonces esa también es una respuesta aceptable, ¿hay alguna referencia en el contexto de CS a los virus y AV?

Arjang
fuente
2
¡Bienvenido a Computer Science Stack Exchange! La seguridad informática puede ser el campo que desea investigar. Prueba Wikipedia debe obtener información comparable o mejor allí.
Patrick87

Respuestas:

12

Hay una subárea de seguridad informática llamada Computer Virology. El Journal of Computer Virology está dedicado al tema. Estudiar cómo funciona el software antivirus solo rasca la superficie de lo que se trata el área.

Por ejemplo, incluso hay algo de trabajo aplicando lógica al malware: una definición general de malware de S. Kramer y JC Bradfield. Journal of Computer Virology (6) 2010.

Dave Clarke
fuente
9

Los virus y la tecnología antivirus tienen mucho que ver con CS. Su pregunta me recordó algo que leí recientemente. Aquí hay un extracto del libro de Williamson & Shmoys, The Design of Approximation Algorithms, página 6. Está justificando la importancia (práctica) de los algoritmos de aproximación, y utiliza el conocido problema de cobertura de conjunto como ejemplo en el contexto de los virus:

El problema de la cobertura del conjunto se utilizó en el desarrollo de un producto antivirus, que detecta virus informáticos. En este caso, se deseaba encontrar características sobresalientes que ocurran en virus diseñados para el sector de arranque de una computadora, de modo que las características no ocurran en aplicaciones informáticas típicas. Estas características se incorporaron a otra heurística para detectar estos virus del sector de arranque, una red neuronal. Los elementos del problema de cobertura del conjunto eran los virus conocidos del sector de arranque (alrededor de 150 en ese momento). Cada conjunto corresponde a una secuencia de tres bytes que ocurre en estos virus pero no en los programas informáticos típicos; hubo alrededor de 21,000 de tales secuencias. Cada conjunto contenía todos los virus del sector de arranque que tenían la secuencia de tres bytes correspondiente en algún lugar. El objetivo era encontrar una pequeña cantidad de tales secuencias (mucho más pequeñas que 150) que serían útiles para la red neuronal. Al utilizar un algoritmo de aproximación para resolver el problema, se encontró un pequeño conjunto de secuencias y la red neuronal pudo detectar muchos virus del sector de arranque no analizados previamente.

Sorprendente o no, este ejemplo muestra que al menos las técnicas en IA y la optimización combinatoria son útiles. Después de leer esto, uno podría fácilmente creer que muchas áreas de CS tienen cosas que pueden aplicarse en el contexto de virus y su detección. Para responder su pregunta más directamente, muchas cosas en CS tratan con virus, al menos indirectamente.

Juho
fuente
7

Debe tener cuidado al usar el resultado teórico para argumentar que algo no se puede hacer en la práctica. Hay varios peligros en los que uno puede caer:

  1. el resultado teórico tiene suposiciones que no se aplican

  2. el problema en la práctica no está bien modelado por el modelo teórico,

  3. en la práctica, una solución no necesita ser perfecta para ser útil.

No ha dado una definición formal de lo que es un virus, por lo que ampliar su reclamo sobre el ejercicio trivial puede ser útil para comprender lo que realmente quiere decir.

Una gran parte de lo que hace un software antivirus es detectar virus conocidos (y sus variantes), y esto se hace comparando cadenas (en archivos, memoria, etc.) con una lista finita de cadenas (firmas de virus). Es por eso que necesitamos actualizar la base de datos del software antivirus regularmente.

Existen capacidades adicionales para detectar virus potenciales en función de su "comportamiento", pero estos métodos no son completos ni sólidos (y no necesitan ser sólidos / completos para ser útiles). El diseño de un software antivirus parece caer más en la ingeniería informática que en la informática hasta ahora (aunque la informática y la ingeniería informática están estrechamente relacionadas).

En general, estos estudios se incluirían en una parte más aplicada de la seguridad informática (y más generalmente en las áreas del sistema: redes informáticas, sistemas operativos, etc.) de la informática, pero utilizar ideas de otras partes de la informática (aprendizaje automático, etc.) es típico.

Es posible que desee consultar El arte de la investigación y defensa de virus informáticos .

Kaveh
fuente