É um exercício trivial em autômatos finitos para mostrar que não existe um algoritmo capaz de detectar todos os vírus; no entanto, existem muitas empresas de software que vendem software antivírus.
Existe alguma parte do CS que lida com vírus e anti-vírus?
PS: Eu não estou perguntando sobre a justificativa não relacionada ao CS de ter AV ou não, mas apenas qual categoria / assunto no CS eles se enquadram, se houver. Se o AV não é um assunto dentro do CS, essa também é uma resposta aceitável, há alguma atualização no contexto do CS para vírus e AVs?
reference-request
security
Arjang
fonte
fonte
Respostas:
Há uma subárea de segurança de computadores chamada Virologia do Computador. O Journal of Computer Virology é dedicado ao tópico. O estudo de como o software antivírus funciona apenas arranha a superfície da área.
Por exemplo, há até algum trabalho que aplica lógica ao malware: uma definição geral de malware por S. Kramer e JC Bradfield. Journal of Computer Virology (6) 2010.
fonte
Os vírus e a tecnologia antivírus têm muito a ver com o CS. Sua pergunta me lembrou algo que li recentemente. Aqui está um trecho do livro de Williamson & Shmoys, The Design of Approximation Algorithms, página 6. Isso justifica a importância (prática) dos algoritmos de aproximação e usa o conhecido problema de cobertura de conjunto como exemplo no contexto de vírus:
Surpreendente ou não, este exemplo mostra que pelo menos as técnicas de IA e otimização combinatória são úteis. Depois de ler isso, pode-se acreditar facilmente que muitas áreas do CS têm coisas que podem ser aplicadas no contexto de vírus e sua detecção. Para responder sua pergunta mais diretamente, muitas coisas no CS lidam com vírus, pelo menos indiretamente.
fonte
Você deve ter cuidado ao usar o resultado teórico para argumentar que algo não pode ser feito na prática. Existem vários perigos em que se pode cair:
o resultado teórico tem suposições que não se aplicam,
o problema na prática não é bem modelado pelo modelo teórico,
na prática, uma solução não precisa ser perfeita para ser útil.
Você não forneceu uma definição formal do que é um vírus, portanto, expandir sua reivindicação sobre o exercício trivial pode ser útil para entender o que você realmente quer dizer.
Grande parte do que um software antivírus faz é detectar vírus conhecidos (e suas variantes), e isso é feito comparando cadeias (em arquivos, memória, etc.) com uma lista finita de cadeias (assinaturas de vírus). É por isso que precisamos atualizar o banco de dados do software antivírus regularmente.
Existem recursos adicionais para detectar vírus em potencial com base em seu "comportamento", mas esses métodos não são completos nem sólidos (e eles não precisam ser sólidos / completos para serem úteis). A criação de um software antivírus parece cair mais em engenharia da computação do que em ciência da computação até agora (embora a ciência da computação e a engenharia da computação estejam intimamente relacionadas).
Geralmente, esses estudos se enquadram em parte mais aplicada da segurança de computadores (e em geral áreas de sistemas: redes de computadores, sistemas operacionais etc.) da ciência da computação, mas o uso de idéias de outras partes da ciência da computação (aprendizado de máquina etc.) é típica.
Você pode querer conferir A Arte da Pesquisa e Defesa de Vírus de Computador .
fonte