Фред Коэн
Фредерик Коэн (Фред Коен, англ. Frederick B. Cohen) — американский учёный в области информатики, разработчик первого вируса, автор определения «компьютерного вируса» и изобретатель компьютерных технологий защиты от вирусов[1].
Написал первую программу-вирус чтобы применять её на презентации докторской диссертации по проблеме безопасности компьютерных систем. Вирус предназначался для поражения систем компьютеров VAX и был скрыт внутри графической программы VD. Во время презентации вирус Коэна проник во все компоненты компьютера, пользуясь паролями разных пользователей.
Биография[править]
Фред Коэн родился в 1956 году.
Образование: Питтсбургский университет, Университет Южной Калифорнии, Школа информатики Карнеги — Меллон.
Заинтересовался проблемой компьютерных вирусов в начале 1980-х годов.
11 ноября (по другим данным, 3 ноября или 4 ноября) 1983 года продемонстрировал первый вирус: студент из Университета Южной Калифорнии Коэн составил программу, демонстрировавшую возможность заражения компьютера со скоростью размножения вируса от 5 минут до 1 часа[2].
Таким образом, в 1983 году, будучи аспирантом факультета программирования университета Калифорнии, Коэн ввёл термин компьютерный вирус. Коэн на своей презентации «демонстрационный вирус для VAX 11/750 под управлением Unix» на еженедельном семинаре по компьютерной безопасности в Университете Южной Калифорнии продемонстрировал программу, которая полностью смогла овладеть системой компьютеров VAX, скрывшись внутри графической программы VD. По результатам исследований Коэн опубликовал работу Computer Viruses: theory and experiments с подробным описанием проблемы. Вирусы Коэна были безвредными.
Именно Коэн «научил» вирусов проникать внутрь запускных моделей «exe», сжимая их. Такая форма программ получила название «вирусы сжатия».
На следующий год написал работу, в которой предвосхитил угрозы распространения вирусов по компьютерным сетям, а также предложил возможность создания антивирусных программ.
В 1984 году при поддержке своего научного руководителя Леонарда Адлемана он написал первую статью «We define a computer ‘virus’ as a program that can ‘infect’ other programs by modifying them to include a possibly evolved copy of itself».
В своей книге 1985 года и диссертации 1986 года Коэн дал уже строгое определение вируса, в котором сконцентрировался на его единственном свойстве — рекурсивной репликации.
В 1987 году Коэн, работавший в Лехайском университете, доказал, что невозможно создать алгоритм для 100% обнаружения и идентификации всех возможных компьютерных вирусов.
В 1990-е годы с развитием технологий обмена информацией вирусы, созданные на основе идеологии Коэна, распространились чрезвычайно широко, став не просто помехой, а стратегической угрозой для безопасности целых стран. К самому же Фреду у властей никогда не было претензий - вся его деятельность была направлена в образовательную сферу. Сегодня известный хакер-теоретик занимает важный пост управляющего компании, обеспечивающей информационную безопасность.
Коэну принадлежит идея о «положительном» «вирусе сжатия». КЭта программа обладает, по мнению Коэна, положительным свойством — способна инфицировать другие программы. Эти инфицированные программы требуют меньше места в памяти благодаря наличию программы сжатия.
Написал более 60 профессиональных публикаций и 11 книг.
Определение Коэном вируса[править]
Таким образом, именно Коэном впервые в академической среде был употреблён термин термин «компьютерный вирус» — в его работе «Эксперименты с компьютерными вирусами», где, правда, он сам приписывает авторство термина Леонарду Адлеману.
Формально вирус определён Коэном со ссылкой на машину Тьюринга следующим образом:
M : (SM, IM, OM : SM x IM > IM, NM : SM x IM > SM, DM : SM x IM > d)
с заданным множеством состояний SM, множеством входных символов IM и отображений (OM, NM, DM), которая на основе своего текущего состояния s ∈ SM и входного символа i ∈ IM, считанного с полубесконечной ленты, определяет: выходной символ o ∈ IM для записи на ленту, следующее состояние машины s' ∈ SM и движения по ленте d ∈ {-1,0,1}.
Для данной машины M, последовательность символов v : vi ∈ IM может быть сочтена вирусом тогда и только тогда, когда обработка последовательности v в момент времени t, влечёт за собой то, что в один из следующих моментов времени t, последовательность v′ (не пересекающаяся с v) существует на ленте, и эта последовательность v′ была записана M в точке t′, лежащей между t и t″:
∀ CM ∀ t ∀ j: SM(t) = SM0 ∧ PM(t) = j ∧ { CM(t, j) … CM(t, j + |v| - 1)} = v ⇒ ∃ v' ∃ j' ∃ t' ∃ t": t < t" < t' ∧ {j' … j' +|v'|} ∩ {j … j + |v|} = ∅ ∧ { CM(t', j') … CM(t', j' + |v'| - 1)} = v' ∧ PM(t") ∈ { j' … j' + |v'| - 1 }
где:
- t ∈ N число базовых операций «перемещения», осуществлённых машиной
- PM ∈ N номер позиции на ленте машины в момент времени t
- SM0 начальное состояние машины
- CM(t, c) содержимое ячейки c в момент времени t
Данное определение было дано в контексте вирусного множества VS = (M, V) — пары, состоящей из машины Тьюринга M и множества последовательностей символов V: v, v' ∈ V. Из данного определения следует, что понятие вируса неразрывно связано с его интерпретацией в заданном контексте, или окружении.
Коэном было показано, что «любая самовоспроизводящаяся последовательность символов: одноэлементный VS, согласно которой существует бесконечное количество VS, и не-VS, для которых существуют машины, по отношению к которым все последовательности символов является вирусом, и машин, для которых ни одна из последовательностей символов не является вирусом, даёт возможность понять, когда любая конечная последовательность символов является вирусом для какой-либо машины». Он также приводит доказательство того, что в общем виде вопрос о том, является ли данная пара (M, X) : Xi ∈ IM вирусом, неразрешим (то есть не существует алгоритма, который мог бы достоверно определить все вирусы), теми же средствами, которыми доказывается неразрешимость проблемы остановки.
Более поздние исследователи показали, что имеются такие типы вирусов (вирусы, содержащие копию программы, улавливающей вирусы), которые не могут быть безошибочно определены ни одним алгоритмом.