Qual é o ramo da ciência da computação que estuda como os programas antivírus funcionam?

9

É 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?

Arjang
fonte
2
Bem-vindo ao Computer Science Stack Exchange! A segurança do computador pode ser o campo que você deseja investigar. Experimente a Wikipedia; você deve obter informações comparáveis ​​ou melhores lá.
Patrick87

Respostas:

12

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.

Dave Clarke
fonte
9

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:

O problema de cobertura do conjunto foi usado no desenvolvimento de um produto antivírus, que detecta vírus de computador. Nesse caso, desejava-se encontrar recursos importantes que ocorrem em vírus projetados para o setor de inicialização de um computador, de modo que os recursos não ocorram em aplicativos típicos de computador. Esses recursos foram incorporados a outra heurística para detectar esses vírus do setor de inicialização, uma rede neural. Os elementos do problema de cobertura do conjunto foram os vírus conhecidos do setor de inicialização (cerca de 150 na época). Cada conjunto correspondia a uma sequência de três bytes ocorrendo nesses vírus, mas não em programas de computador típicos; havia cerca de 21.000 dessas seqüências. Cada conjunto continha todos os vírus do setor de inicialização que tinham a sequência de três bytes correspondente em algum lugar. O objetivo era encontrar um pequeno número dessas seqüências (muito menores que 150) que seriam úteis para a rede neural. Usando um algoritmo de aproximação para resolver o problema, um pequeno conjunto de seqüências foi encontrado e a rede neural foi capaz de detectar muitos vírus do setor de inicialização não analisados ​​anteriormente.

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.

Juho
fonte
7

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:

  1. o resultado teórico tem suposições que não se aplicam,

  2. o problema na prática não é bem modelado pelo modelo teórico,

  3. 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 .

Kaveh
fonte