Применение нейронных сетей в задачах антивирусной безопасности
Ершов Д.И., Зайков А.В., Ершов И.В.
Новосибирский государственный архитектурно-строительный университет,
ул. Ленинградская, 113, Новосибирск, Россия 630008
E-mail: i_ershov@ngs.ru
1.	Введение
Сама возможность применения нейронных сетей в задачах антивирусной безопасности является довольно логичным следствием тех целей, которые изначально ставились перед искусственным интеллектом. Само по себе существование антивирусных аналитиков говорит о том, что подобный механизм является технологически реализуемым. Однако встает вопрос о том, достаточно ли развита теоретическая база современных нечетких систем для применения в этой области.
К сожалению, в следствии исключительных особенностей нейронных сетей, становится невозможным проверить их эффективность в полной мере, ограничиваясь лишь теоретическими рамками.
2. Постановка задачи
Имеется программный код и требуется однозначно, или в рамках некоторой надежности, что более правдоподобно, определить является ли он вредоносным. Очевидно, что для вирусов, являемых в самобытной форме – компактного приложения или dll – библиотеки – возможно полностью опереться на мощности нейронной структуры. Но, к сожалению, как показывает опыт, довольно большое количество вирусных программ имеют обыкновение встраиваться в структуры сторонних приложений, библиотек, драйверов, неисполняемых файлов. Поэтому требуется совместить классический подход с инновационными элементами. В качестве классической части авторами предлагается первоначально на эвристической основе выявлять опасные фрагменты кода. Для решения этой части задачи уже достаточно хорошая проработана инженерная база и исследовательского интереса она не представляет, поэтому перейдем к следующему этапу.
3. Технологическая реализация
В качестве опытной единицы авторами был выбран классический сигмоидальный нейрон, как наиболее универсальный. Таким образом, была определена функциональная основа будущей нейронной сети, и следующим вопросом является ее топология.
Вообще, на практике, при выборе сетевой топологии львиная доля времени отводиться анализу предметной области. Излагать вариант данной работы, произведенной в рамках авторских исследований, не представляется возможным в силу того что это довольно объемный процесс, требующий для понимания значительных теоретических навыков, поэтому далее изложены основные результаты.
Во – первых, сеть для детектирования разбита на три блока, каждый из которых решает свою задачу, образуя тем самым последовательную цепь. Перечислим эти блоки:
•	Элемент сжатия, или компрессор, неравномерная нейронная сеть, предназначенная для теневого преобразования вектора входных данных из исходного пространства в вектор пространства признаков;
•	Элемент анализа, или конвертор, равномерная сеть предназначенная, для имитации комплексного анализа вектора признаков с целью повышения качества оценки программного кода.
•	Элемент экспертизы, или просто – эксперт, в отличие от предыдущих блоков основан на архитектуре нейронов WTA (Winner Takes All), поскольку сигмоидальная структура не смогла дать достаточно высоких результатов при испытаниях на этом этапе. 
Рассмотрим каждый из блоков подробнее. И первый из них – компрессор. Из соображений симметрии, закон изменения топологии этого блока от первого слоя к последнему инвариантен относительно центральной перпендикулярной оси в плоскости сети. 
Самое очевидное в структуре компрессора – это то, что размерность вектора признаков меньше чем у вектора входных данных. 
Менее ясный элемент – это огибающая сети. По существу, это аппроксимация на множестве краевых нейронов каждого слоя компрессора. Если известна функциональная зависимость, описывающая огибающую, то можно однозначно установить количество нейронов в каждом слое. При построении назначается положение нулевого слоя в начале координат, а последующих слоев в целочисленных точках, значения огибающей функции являются разницами между количествами нейронов во входном слое и слое, соответствующем конкретной точке.
Авторами было установлено следующее выражение для огибающей функции:

В данной формуле, С – константа, эффективные значения которой в результате опытов были отнесены к интервалу (1;2).
На этом описание компрессора можно завершить и перейти к следующему элементу системы – конвертору. Этот блок представляет нейронную сеть с неизменным количеством нейронов в каждом слое. При этом последний слой компрессора является первым слоем конвертера. Следует сказать, что попытки авторов подвергнуть конвертер контрастированию не увенчались успехом.
Последний блок – эксперт. Изначально авторами предполагались следующие варианты его реализации:
•	Сигмоидный фрагмент с несколькими слоями, переходящий в итоге в один или два результирующих сигнала;
•	Многослойный сигмоидный фрагмент имеющий значительное количество выходов, подвергаемых в последствии эвристической оценке;
•	Однослойный блок нейронов типа WTA.
Первые два варианта сразу же показали свою несостоятельность, однако при этом оставался вопрос о количестве WTA нейронов в эксперте. Иными словами, не было ясно, требуется ли дополнительное сжатие перед оценкой результатов. Однако, на опыте, было установлено, что даже незначительное снижение числа выходов конвертера, влечет ощутимые убытки в емкости сети: так понижение объема признаков на 10% влечет снижение количества запоминаемых образов приблизительно вдвое. Еще большее снижение вызывает нарастание так называемых ложных аттракторов, или химер.
Таким образом, окончательно было решено в качества входа на экспертный блок, подавать полный вектор признаков. При этом каждый WTA-нейрон соответствуют степени опасности предложенного системе фрагмента программного кода.
На рисунке 1 представлена полная схема сети детектирования. На этом рисунке изображены также основные параметры сети: N – объем входных данных (последовательность байт тестируемой сигнатуры), d – размер компрессора, n – объем признаков, L – размер конвертера.
И сразу же возникает вопрос о значении параметра N. Действительно, ведь вирус может быть как восьмикилобайтовым exe-файлом, так и встроенным в стороннее приложением кодом, и следовательно значение N весьма неопределенно. Из этой ситуации есть два выхода:
•	заполнять лишние входные байты кодами команды NOP, являющейся пустой мнемоникой;
•	подавать данные различного объема на разные слои компрессора

Рисунок 1 – функциональная схема сети детектирования.
Авторы предпочли сочетать эти два метода. В качестве уровня подачи было решено выбирать теневой слой в котором интенсивность снижения числа нейронов отличается от первоначальной не более чем на заданную долю . Под интенсивностью понимается в данном случае первая производная от огибающей функции. Однако s – целая величина и очевидно, что если нельзя превышать заданного значения интенсивности , то от полученного по формуле значения нужно взять нижнее целое, и окончательно выражения для s приобретает вид:

Данная формула показывает предельное значение номера слоя, который может быть выбран для подачи данных на вход системе. Теперь вычислим это значение, исходя из соображения вместимости слоя.
Согласно формуле для объема слоев компрессора:

Здесь Z – размерность вектора входных данных. Далее выражаем s:

Что бы обеспечить целое значение параметру s, нужно взять от полученного выражения верхнее целое, что позволит не нарушить вместимость искомого слоя. И тогда окончательная инженерная формула для выбора уровня подачи данных s на сеть детектирования, при известной размерности вектора входных данных Z, принимает следующий вид:

Однако в процессе исследований авторами значение α выбиралось, как правило, нулевым, и подача велась на первый слой компрессора.
Последним изложим принцип описания структуры сетей детектирования. Вообще, любая такая система описывается системой независимых величин <N,d,L>, при этом предполагается заданным вид огибающей. Однако на практике действительно важен не столько объем сети, сколько ее “форма”, а, точнее говоря, общая топология. Поэтому авторами для ведения статистики была применена система зависимых величин <N,L, ,>, где  - степень участия, а  – степень сжатия.
При заданных N и L, степени участия и сжатия в плоскости  образуют связную область, в пределах которой ошибка нейронной сети не превосходит заданного значения. Контурные графики для уровней ошибки получили название детекционных диаграмм.
4. Заключение
В испытаниях авторами использовались не обезвреженные вредоносные сигнатуры троянов семейства Trojan.Winlock. Поэтому, подводя итоги, следует отметить следующие задачи, решения которых предстоит найти:
•	Является ли форма детекционной диаграммы общей для всех известных семейств вредоносных программ;
•	Создание библиотеки диаграмм для сторонней экспертизы;
•	На основе полученной статистики выбрать наиболее оптимальные значения степеней участия и сжатия;
•	Интеграция системы ассоциативной памяти для хранения аттракторов стандартных вирусов.
Таким образом, проделанная авторами работа, предоставляет отправную точку для создания рабочего прототипа интеллектуальной антивирусной программы.