В какой отрасли компьютерных наук изучается работа антивирусных программ?

9

В конечных автоматах это тривиальное упражнение, показывающее, что не существует алгоритма, который может обнаружить все вирусы, но есть много компаний-разработчиков, продающих антивирусное программное обеспечение.

Есть ли какая-либо часть CS, которая имеет дело с вирусами и антивирусами?

PS: Я не спрашиваю об обосновании, не связанном с CS, иметь или не иметь AV, а только о том, к какой категории / предмету в CS они относятся, если таковые имеются. Если AV не является субъектом в CS, то это также приемлемый ответ, есть ли какие-либо ссылки в контексте CS на вирусы и AV?

Arjang
источник
2
Добро пожаловать на биржу компьютерных наук! Компьютерная безопасность может быть областью, которую вы хотите исследовать. Попробуйте Википедию; Вы должны получить сопоставимую или лучшую информацию там.
Patrick87

Ответы:

12

Существует подрайон компьютерной безопасности под названием Компьютерная вирусология. Журнал компьютерной вирусологии посвящен теме. Изучение того, как работает антивирусное программное обеспечение, только царапает поверхность того, о чем идет речь.

Например, есть даже некоторая работа по применению логики к вредоносным программам: «Общее определение вредоносных программ » С. Крамера и Дж. К. Брэдфилда. Журнал компьютерной вирусологии (6) 2010.

Дэйв Кларк
источник
9

Вирусы и антивирусные технологии имеют много общего с CS. Ваш вопрос напомнил мне кое-что, что я недавно прочитал. Вот выдержка из книги Williamson & Shmoys, «Разработка алгоритмов аппроксимации», стр. 6. Она обосновывает (практическую) важность алгоритмов аппроксимации и использует хорошо известную проблему покрытия множеств в качестве примера в контексте вирусов:

Проблема с набором обложек была использована при разработке антивирусного продукта, который обнаруживает компьютерные вирусы. В этом случае было желательно найти существенные функции, которые встречаются в вирусах, предназначенных для загрузочного сектора компьютера, чтобы такие функции не встречались в типичных компьютерных приложениях. Эти функции были затем включены в другую эвристику для обнаружения этих вирусов загрузочного сектора, нейронную сеть. Элементами проблемы покрытия набора были известные вирусы загрузочного сектора (около 150 в то время). Каждый набор соответствовал некоторой трехбайтовой последовательности, встречающейся в этих вирусах, но не в типичных компьютерных программах; было около 21 000 таких последовательностей. Каждый набор содержал все вирусы загрузочного сектора, которые имели соответствующую трехбайтовую последовательность где-то в нем. Цель состояла в том, чтобы найти небольшое количество таких последовательностей (намного меньше, чем 150), которые были бы полезны для нейронной сети. Используя алгоритм аппроксимации для решения этой проблемы, был найден небольшой набор последовательностей, и нейронная сеть смогла обнаружить много ранее не проанализированных вирусов загрузочного сектора.

Удивительно или нет, но этот пример показывает, что по крайней мере полезны методы искусственного интеллекта и комбинаторной оптимизации. Прочитав это, можно легко поверить, что во многих областях CS есть вещи, которые можно применять в контексте вирусов и их обнаружения. Чтобы ответить на ваш вопрос более прямо, многие вещи в CS имеют дело с вирусами, по крайней мере, косвенно.

Юхо
источник
7

Вы должны быть осторожны при использовании теоретического результата, чтобы утверждать, что что-то не может быть сделано на практике. Есть несколько опасностей, в которые можно попасть:

  1. теоретический результат имеет предположения, которые не применяются,

  2. проблема на практике не смоделирована теоретической моделью,

  3. на практике решение не обязательно должно быть идеальным, чтобы быть полезным.

Вы не дали формального определения того, что такое вирус, поэтому расширение вашего заявления об этом тривиальном упражнении может помочь понять, что вы на самом деле имеете в виду.

Большая часть того, что делает антивирусное программное обеспечение, это обнаружение известных вирусов (и их вариантов), и это делается путем сравнения строк (в файлах, памяти и т. Д.) С конечным списком строк (сигнатуры вирусов). Поэтому нам необходимо регулярно обновлять базу антивирусных программ.

Существуют дополнительные возможности по обнаружению потенциальных вирусов на основе их «поведения», но эти методы не являются ни полными, ни здоровыми (и они не должны быть здоровыми / полными, чтобы быть полезными). Проектирование антивирусного программного обеспечения, похоже, в настоящее время в большей степени относится к компьютерной инженерии, чем к компьютерной науке (хотя компьютерная наука и компьютерная инженерия тесно связаны).

Как правило, эти исследования относятся к более прикладной части компьютерной безопасности (и в более общем смысле к системным областям: компьютерные сети, операционные системы и т. Д.) Информатики, но использование идей из других частей информатики (машинное обучение и т. Д.) типичный.

Вы можете проверить Искусство исследования компьютерных вирусов и защиты .

Кава
источник