В конечных автоматах это тривиальное упражнение, показывающее, что не существует алгоритма, который может обнаружить все вирусы, но есть много компаний-разработчиков, продающих антивирусное программное обеспечение.
Есть ли какая-либо часть CS, которая имеет дело с вирусами и антивирусами?
PS: Я не спрашиваю об обосновании, не связанном с CS, иметь или не иметь AV, а только о том, к какой категории / предмету в CS они относятся, если таковые имеются. Если AV не является субъектом в CS, то это также приемлемый ответ, есть ли какие-либо ссылки в контексте CS на вирусы и AV?
reference-request
security
Arjang
источник
источник
Ответы:
Существует подрайон компьютерной безопасности под названием Компьютерная вирусология. Журнал компьютерной вирусологии посвящен теме. Изучение того, как работает антивирусное программное обеспечение, только царапает поверхность того, о чем идет речь.
Например, есть даже некоторая работа по применению логики к вредоносным программам: «Общее определение вредоносных программ » С. Крамера и Дж. К. Брэдфилда. Журнал компьютерной вирусологии (6) 2010.
источник
Вирусы и антивирусные технологии имеют много общего с CS. Ваш вопрос напомнил мне кое-что, что я недавно прочитал. Вот выдержка из книги Williamson & Shmoys, «Разработка алгоритмов аппроксимации», стр. 6. Она обосновывает (практическую) важность алгоритмов аппроксимации и использует хорошо известную проблему покрытия множеств в качестве примера в контексте вирусов:
Удивительно или нет, но этот пример показывает, что по крайней мере полезны методы искусственного интеллекта и комбинаторной оптимизации. Прочитав это, можно легко поверить, что во многих областях CS есть вещи, которые можно применять в контексте вирусов и их обнаружения. Чтобы ответить на ваш вопрос более прямо, многие вещи в CS имеют дело с вирусами, по крайней мере, косвенно.
источник
Вы должны быть осторожны при использовании теоретического результата, чтобы утверждать, что что-то не может быть сделано на практике. Есть несколько опасностей, в которые можно попасть:
теоретический результат имеет предположения, которые не применяются,
проблема на практике не смоделирована теоретической моделью,
на практике решение не обязательно должно быть идеальным, чтобы быть полезным.
Вы не дали формального определения того, что такое вирус, поэтому расширение вашего заявления об этом тривиальном упражнении может помочь понять, что вы на самом деле имеете в виду.
Большая часть того, что делает антивирусное программное обеспечение, это обнаружение известных вирусов (и их вариантов), и это делается путем сравнения строк (в файлах, памяти и т. Д.) С конечным списком строк (сигнатуры вирусов). Поэтому нам необходимо регулярно обновлять базу антивирусных программ.
Существуют дополнительные возможности по обнаружению потенциальных вирусов на основе их «поведения», но эти методы не являются ни полными, ни здоровыми (и они не должны быть здоровыми / полными, чтобы быть полезными). Проектирование антивирусного программного обеспечения, похоже, в настоящее время в большей степени относится к компьютерной инженерии, чем к компьютерной науке (хотя компьютерная наука и компьютерная инженерия тесно связаны).
Как правило, эти исследования относятся к более прикладной части компьютерной безопасности (и в более общем смысле к системным областям: компьютерные сети, операционные системы и т. Д.) Информатики, но использование идей из других частей информатики (машинное обучение и т. Д.) типичный.
Вы можете проверить Искусство исследования компьютерных вирусов и защиты .
источник