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?
reference-request
security
Arjang
fuente
fuente
Respuestas:
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.
fuente
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:
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.
fuente
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:
el resultado teórico tiene suposiciones que no se aplican
el problema en la práctica no está bien modelado por el modelo teórico,
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 .
fuente