Нейронные сети и вирусы


Рубрика: Информационные технологии

Дата публикации: 28.11.2017 2017-11-28

Статья просмотрена: 269 раз

В этой статье будет рассмотрен метод обучения глубокой нейронной сети для автоматической генерации сигнатур вирусов, с целью дальнейшего предотвращения заражения информационных систем. Метод использует сеть глубоких убеждений, реализованную с глубоким стеком шумопонижающих автокодеровщиков, генерирующих инвариантное поведение вредоносного ПО. В отличие от обычных методов подписи, которые не могут обнаружить большинство новых вариантов, существующих вредоносных программ, подписи, сгенерированные по методу глубокого обучения, позволяют получить точную классификацию новых вариантов вирусов. Благодаря использованию набора данных, содержащего сотни вариантов для нескольких основных семейств вирусов, с помощью данного метода можно достичь почти 98 % точности в классификации вирусных сигнатур (характерных признаков вирусов).

Ключевые слова: глубокая нейронная сеть, сигнатура вируса, песочница, вредоносное ПО, сетевой трафик

Введение

Несмотря на почти экспоненциальный рост числа новых вирусов (например, по данным Panda Security в 2016 году в день появлялось почти 160 000 вредоносных программ), методы защиты от этих угроз остались неизменными. Большинство антивирусов обнаруживают вредоносное ПО, анализируют его и вручную создают специальную подпись, которую выпускают, как обновление. Ручной анализ, как правило, занимает много времени. Вредоносное ПО остается незамеченным и продолжает заражать новые компьютеры. Так же при обнаружении вирусов вносятся лишь минимальные изменения в код, так что новый вариант вируса практически невозможно обнаружить быстро.

Для автоматизации поиска вредоносного ПО было предложено несколько методов генерации сигнатур, такие как подписи на основе конкретных уязвимостей, полезная нагрузка, приманки и т. д. Основной недостаток этих методов в том, что они нацелены на конкретные аспекты вредоносного ПО, что позволяет разработчикам вирусов создавать новые варианты, изменяя малые части кода.

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

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

Обзор подходов автоматической генерации сигнатур

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

В основном все эти методы строятся на анализе трафика [1] (при условии, что трафик существенно не меняется для каждого варианта вредоносного ПО). Подпись фиксирует источник и соединение, предпринятое извне сети (входящие соединение). Внешний источник считается вредоносным, если он сделала более чем определенное количество попыток подключиться к IP-адресу сети. Подпись выбирает наиболее часто повторяющуюся последовательность байтов из трафика этого источника и использует ее в качестве своей подписи. Однако вредоносная программа может уклоняться от обнаружения, изменяя свою наиболее часто используемую последовательность байтов.

Аналогичный подход для генерации подписи на основе сетевого трафика представляют ячеистые сенсорные сети, которые используют наибольшие общие подстроки для генерации сигнатур и измерения сходства в пакетных нагрузках. Датчик контролирует поток информации в сети и пытается обнаружить вредоносные атаки с использованием аномалий. Пакеты, связанные с атаками и нулевым днем (вирусы, для которых еще не разработаны защитные механизмы) отличаются от обычного сетевого трафика. [3]

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

Большинство вирусов представляют из себя многомодульные программы, содержащие большое число подмодулей и поэтому статистического анализа недостаточно для их точной классификации. Авто-знак [3] генерирует список подписей для вредоносного ПО путем разделения его исполняемого файла на сегменты равного размера. Для каждого сегмента создается подпись. Список подписей в следствии оценивается. Этот метод более устойчив к небольшим изменениям, но вредоносное ПО может уклоняться от этого метода путем шифрования исполняемого файла. Таким образом оно уклоняется от любого метода, который сравнивает исполняемые файлы и подпись.

Предлагаемый метод генерации подписей

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

В 2014 году студенты из университета штата Пенсильвания провели эксперимент, который заключался в следующем.

С помощью глубоких автокодеровщиков было обработано больше 10000 рандомных изображений, взятых из Интернета. Для каждого из них был создан короткий двоичный код. На основе сравнения этих кодов было выяснено, что, например, изображения слонов имеют одинаковые участки кода.

Предлагаемый метод состоит из следующих этапов:

  1. Неконтролируемый этап обучения. На этом этапе учитывается набор вредоносных программ;
  2. , Запуск каждой программы в песочнице для генерации текстового файла, содержащего поведение программы.
  3. Анализ текстового файла песочницы и преобразование его в двоичную битовую строку
  4. Передача строк в нейронную сеть.
  5. Многоуровневое обучение глубокой сети убеждений с использованием глубоких шумопонижающих автокодеров. Обучение полностью неконтролируемо, и сеть не знает метки каждого образца.

Сеть имеет восемь уровней, каждый из которых содержит 30 нейронов. Таким образом, полученная в результате глубокая сеть в основном генерирует подпись, содержащую 30 чисел с плавающей запятой для каждого программа запускается в песочнице. Песочница — это особая среда, которая позволяет вести журнал поведения программ (например, вызов функций API, их параметры и файлы созданные или удаленные). [5] Результаты сохраняются в файле (обычно текстовом). На рисунке 1 представлен фрагмент журнала, записанный в виде песочницы.


Рис. 1. Фрагмент журнала, записанный в виде песочницы

Мы используем большой набор данных, содержащий несколько основных категорий вредоносных программ и нескольких сотен вариантов подписей для каждой программы. Обученная сеть генерирует подпись для каждого образца вредоносного ПО. Качество и способность представления этих генерируемых подписей изучается путем запуска на них нескольких контролируемых методов классификации. Результаты показывают, что глубокая нейронная сеть достигает 98 % точности классификации при проверке данных, что свидетельствует о высокой степени обучаемости сети.

Самый простой способ преобразования созданной песочницы из текстового файла в строку фиксированного размера — использовать один из общих методов обработки естественного языка. Простейший из этих методов — однограммовая (1-граммовая) экстракция или извлечение. Например, учитывая набор данных для образцов текста, сначала в тексте находится 5000 наиболее частых слова (эти слова будет содержать словарь), а затем для каждого тестового примера проверяется, какие из этих 5000 слов присутствуют в строке. Таким образом, каждый образец текста представлен как бит-строка размером в 5000. В отличие от текста на языке файла, файлы песочницы содержат разнообразную информацию и требуют несколько этапов предварительной обработки для извлечения полезного содержимого (например, строка после тега содержит имя вызываемой функции, и т. д.).

Вывод

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

Предложенный новый подход вдохновлен недавним успехом в обучении глубоких нейронных сетей, которые реализуют инвариантные представления. Сначала вредоносное ПО запускается в песочнице, а затем файл журнала песочница конвертируется в длинную двоичную битовую строку. Эта битовая строка подается в глубокую 8-слойную нейронную сеть, которая производит 30 значений в своем выходном уровне. Эти значения используются в качестве сигнатуры программы. Экспериментальные результаты показывают, что сигнатуры, созданные глубокими нейронными сетями, очень удобны для обнаружения вредоносных программ. Эти подписи могут либо использоваться в полностью неконтролируемой структуре, либо использоваться для контролируемой классификации вредоносных программ.

  1. Горбань А. Н. Обучение нейронных сетей. — М.: СССР-США-СП.: Параграф, 1990. — 160 с.
  2. Хайкин С. Нейронные сети: полный курс 2-е изд. — М.: Вильямс, 2006. — 1104 с.
  3. Ясницкий Л. Н. Введение в искусственный интеллект. — М.: Академия, 2005. — 176 с.
  4. Еремин Д. М., Гарцеев И. Б. Искусственные нейронные сети в интеллектуальных системах управления. — М.: МИРЭА, 2004. — 75 с.
  5. Терехов В. А., Ефимов Д. В., Тюкин И. Ю. Нейросетевые системы управления. — М.: Высшая школа, 2002. — 184 с.

Могут ли хакеры обратить во зло искусственный интеллект

Образ хакера в современных медиа — это образ мага, чудотворца, у которого роль заклятий играют скрипты, вирусы и многое другое. Хакеры в одиночку, практически с телефона, способны взломать самую совершенную систему безопасности, пробиться через любой файерволл. Хакеры-преступники в этом контексте представляются злыми волшебниками, использующими современные инструменты во зло. Один из таких инструментов — это, разумеется, искусственный интеллект.

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

Обычная нейросеть — это в первом приближении сложно устроенная математическая функция f(x, a), которая зависит от набора аргументов x и некоторого набора параметров a. Она получает на вход данные определенного формата и выдает результат.

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

Наконец, сеть тестируется, и после этого, в принципе, она готова к работе — если на всех предыдущих этапах ничего не сломалось, если выборка была хорошей, если удалось угадать правильную архитектуру сети и так далее.

Судя по всему, узкая специализация — это математическое свойство, не зависящее от физической реализации этого инструмента. Это означает, что если вам требуется решить задачу, пусть и близкую, но отличную от той, которую решает имеющаяся нейросеть, то вам придется заново разрабатывать новую.

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

Современные хакеры имеют мало общего с тем образом профессионалов-одиночек, который представлен в телевизионных сериалах. Хакеры, занимающиеся противоправными действиями, в массе своей входят в организованные преступные группировки, зачастую объединяющие большое число программистов сравнительно невысокого уровня.

Их основная цель, как и любой ОПГ, — извлечение прибыли с минимальными расходами и рисками. Этим определяются основные направления работы киберпреступников: львиная доля совершаемых ими преступлений завязана на воровстве личных данных пользователей, мошенничестве и вымогательстве.

Соответственно, можно выделить пять основных типов киберугроз.

Больше половины всех киберугроз — это заражение компьютеров вредоносным программным обеспечением. Помимо привычных всем вирусов на сайтах, хакеры давно используют более любопытные технологии — например, встраивают вредоносный код в open-source проекты или заражают серверы для автоматического обновления ПО.

В последнем случае через такую систему были заражены десятки (а возможно, и сотни) тысяч компьютеров по всему миру.

Еще один тип — индивидуальные мошеннические атаки. Они подразумевают прямой контакт с пользователем с целью убедить человека отдать данные или добровольно установить то или иное приложение, содержащее вредоносный код. В подобных атаках часто участвуют живые люди, которые могут притворяться службой поддержки, сотрудниками банка и так далее.

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

Классический взлом систем с использованием программ, скриптов и так далее. На этот вид преступлений приходится чуть меньше 17 процентов от всех киберугроз.

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

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

Наконец, последний тип — это не устаревающие DDos-атаки. В июле 2019 года им исполнилось ровно 20 лет. Основная идея здесь состоит в создании сети ботов — компьютеров, готовых по команде посылать запросы на заданный сервер, перегружая его.



Перевод Comss.ru. По материалам MIT Technology Review

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

Многие вредоносные программы умеют успешно уклоняться от антивирусных технологий защиты за счет изменения нескольких строчек кода или внедрения алгоритма мутации при каждом новом заражении.

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

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

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

Эли Давид (Eli David) является со-основателем и техническом директором стартапа Deep Instinct, а также преподавателем машинного обучения в университете имени Бар-Илана в Израиле. Он сообщил, что для обучения нейронной сети компания использует тысячи различных параметров разных файлов. Данный процесс генерации статической нейтронной сети отнимает много времени и потребляет значительное количество вычислительных ресурсов, которые запускаются на кластере графических процессоров. Затем созданная нейронная сеть должна передаваться конечным пользователям. Давид объяснил, что отправленная пользователям сеть не должна обновляться, а значит не требует слишком большого количества компьютерной мощности для работы и обнаружения новых образцов вредоносных программ.

Согласно независимой тестовой лаборатории Virus Bulletin, самые лучшие коммерческие антивирусы могут обнаружить 87 процентов всех новых угроз спустя несколько месяцев после того, как программное обеспечение было обновлено.

Давид рассказал, что в собственных инсайдерских испытаниях, их инновационная служба смогла обнаружить на 20 процентов больше вредоносных образцов, чем современные антивирусные продукты. По сути программное обеспечение сигнализирует о том, что файл имеет признаки, схожие с текущим видом вредоносных программ, что автоматически переводит файл в разряд подозрительных. Традиционные антивирусные механизмы можно обойти, если определенные строки кода, необходимые для обнаружения, были изменены. «Глубинное обучение чрезвычайно устойчиво к искажениям кода. Это одно из основных преимуществ технологии” - поясняет Давид.

Схожая нейронная сеть, предназначенная для обнаружения вредоносных программ, была создана тремя исследователями из Microsoft совместно с Джорджем Далем (George Dahl), который на тот момент был студентом одной из передовых лабораторий глубинного обучения в Университете Торонто, а сейчас является научным сотрудником Google.

Документ, опубликованный исследователями описывает, как они подают функции, включая строки файлов и параметры интерфейса прикладного программирования в несколько специализированных сетей глубинного обучения. После обучения сети с использованием 2,6 миллионов образцов, исследователи описали, что система могла обнаруживать новые образцы вредоносных программ “с передовым уровнем производительности”.

Другой документ, опубликованный в Интернете двумя исследователями компании Invincea описывает усилия по создания еще одной системы глубинного обучения для обнаружения вредоносного ПО. Исследователи заявляют, что их система способна обнаруживать новые вредоносные программы с уровнем надежности в 95 процентов и вероятностью ошибки в 0,01 процентов.

Неудивительно, что глубинное обучение рассматривается в качестве метода улучшения антивирусного ПО. Многие крупные технологические компании и стартапы проводят агрессивные процедуры глубинного обучения. Этот подход уже позволяет улучшать производительность распознавания рукописного текста и голоса, и все чаще применяется для выполнения более сложных задач, как например понимание естественного языка.

Джордж Цыбенко (George Cybenko), профессор Дартмутского колледжа, изучает использование машинного обучения в индустрии компьютерной безопасности и считает, что идея использования нейронных сетей для сканирования на предмет вредоносных программ не нова и насчитывает более десяти лет. Однако по мнению Джорджа, появление рабочих систем глубинного обучения потребует от вендоров антивирусов подробного ознакомления с инновационным подходом.

Цыбенко говорит, что заявленная производительность систем обнаружения вирусов на базе нейронных сетей представляет настоящий “прорыв”, хотя результаты должны быть проверены на основе научных методов. Он также подчеркивает, что разработчики вредоносных программ, как известно, адаптируются под новые условия: “При появлении новых технологий обнаружения, киберпреступники могут провести собственные исследования и придумать новый подход”.

2 Восточно-Европейский журнал передовых технологий 2/3 ( 38 ) Метод должен быть основан на анализе поведения и действовать в обход шифрования на более высоком уровне [3]. Данный метод позволит защитить компьютерные сети проактивно, без необходимости обновления антивирусного ПО, а также позволит уменьшить время реакции антивирусных компаний на появление новых вирусных эпидемий. 3. Цель и задачи исследования Рисунок 1. Ежегодный рост численности вредоносных программ Все большее количество вредоносных программ создаются с одной целью получение прибыли от различных незаконных видов деятельности, таких как похищение конфиденциальной информации, производственный шпионаж, создание и поддержка деятельности спам-бизнеса. Вредоносные программы стали частью бизнеса, их создание и поддержка были поставлены на коммерческую основу, это в свою очередь положительно повлияло на качество применяемых в них технологий скрытия от обнаружения антивирусными программами. 2. Обзор литературы Обзор литературы показал, что одна из наиболее эффективных и часто используемых технологий скрытия вредоносного кода применение шифрования. Новые модификации вредоносных программ появляются каждый день, при этом архитектура и функционал зачастую не претерпевают серьезных изменений. Различия между модификациями в большинстве случаев заключаются в использовании разных ключей и немного измененных алгоритмов шифрования [2]. Аналитикам антивирусных компаний приходится добавлять каждую новую модификацию в базы и выпускать их срочным обновлением, в то время как большое количество компьютеров уже оказывается зараженными. Это происходит по причине недостаточной эффективности применяемых сегодня эвристических анализаторов - средств распознавания неизвестных модификаций. Частично защитить от заражения новыми модификациями могут средства проактивной защиты антивирусных программ, однако и они имеют ограничения, так как настроены на распознавание некоторых общих типов вредоносного поведения. Основным способом выявления большинства компонентов таких вредоносных программ все еще является сигнатурная проверка. Таким образом, появилась необходимость в разработке нового эвристического метода, который бы смог эффективно распознавать схожие модификации вредоносных программ. Цель исследования разработка эффективного метода детектирования модифицированного вредоносного кода. Задача исследования разработка модели эвристического анализатора на основе нейронной сети. Объект исследования вредоносный код в исполняемых PE EXE файлах. 4. Система автоматического создания вирусов Система, обнаруживая факт детектирования вируса антивирусными программами, автоматически генерирует модификацию вредоносной программы с измененным алгоритмом шифрования и автоматически запускает ее в Интернет для нового заражения пользователей [3]. Таким образом, вирусописатели, всегда оказываются впереди антивирусных компаний, примером такой программы является почтовый червь -Worm. Win32.Warezov или троянская программа, предназначенная для похищения конфиденциальных данных Trojan-PSW.Win32.LdPinch. Система состоит из следующих модулей: Модуль проверки детектирования. Его функцией является определение факта детектирования конкретным антивирусом текущей модификации вируса. Полиморфный мутатор. При получении информации о том, что текущая модификация вредоноса уже добавлена в антивирусные базы, данный модуль производит мутацию вирусного кода: шифрует тело вредоносной программы новыми ключами шифрования и с применением новых алгоритмов. Новые алгоритмы генерируются автоматически на основе правил перестановки и замены операций из некоторого ограниченного набора. Таким образом, сразу после выхода обновления со стороны антивирусной компании выходит и новая модификация со стороны вирусописателей. Система доставки новых модификаций пользователям обычно является роботом для рассылки писем электронной почты содержащих во вложениях новосозданные модификации вредоносных программ [4]. Алгоритм работы данной системы приведен на рисунке 2. По данным Лаборатории Касперского, количество выпускаемых в месяц модификаций червя Worm.Win32.Warezov составляет более сотни и примерно 3-4 модификаций в день [1]. 52

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

Но ведь системы, прошедшие глубокое обучение, должны быть защищены от вмешательства человека, так? Как можно обмануть нейронную сеть, обученную на терабайтах данных?

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


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

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

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


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


Требуется выполнить эту процедуру тысячу раз с тысячами фотографий, пока модель не научится давать правильные результаты с приемлемой точностью.

В конце концов мы получим нейросеть, способную надежно классифицировать изображения:


Примечание: Если вы хотите подробнее узнать о том, как сверточные сети распознают объекты на изображениях, прочитайте Часть 3 .

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


Это означает, что мы можем сделать изображрение, на котором будет явно запрещенный товар, но при этом нейросеть будет совершенно одурачена:


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


Сейчас классификатор работает с идеальной точностью Он провел линию, которая идеально разделяет все зеленые точки и красные точки.

А что будет, если мы захотим обмануть сеть, переместив одну из красных точек в область зеленых точек? Как сильно нам нужно передвинуть красную точку, чтобы она оказалась в зеленой зоне?

Если добавить небольшое количество к значению Y для красной точки прямо рядом с границей, она попадет на зеленую территорию:


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

Другими словами, мы можем взять реальное изображение объекта и слегка изменить пиксели так, чтобы изображение обмануло нейронную сеть и заставило ее думать, что здесь изображено что-то другое — и мы даже можем сами задать желаемый выходной результат:


Мы уже говорили о том, из чего состоит процесс обучения нейронной сети для классификации фотографий:

  1. Обучение сети на выбранных фото.
  2. Проверка ответа нейронной сети и определение того, как далек данный ей ответ от правильного.
  3. Подстройка весовых коэффициентов в каждом слое сети с использованием метода обратного распространения ошибки, чтобы сделать окончательный прогноз немного ближе к правильному ответу.
  4. Повторение этих шагов тысячи раз с тысячами фотографий.

А что если вместо изменения весовых коэффициентов слоев нейронной сети мы будем изменять само входное изображение, пока мы не получим желаемый ответ?


Новый алгоритм будет такой:

  1. Даем сети фото, которое нужно подделать.
  2. Проверяем, насколько далек ответ сети от желаемого.
  3. Используя метод обратного распространения ошибки, будем редактировать фотографию, чтобы результат стал чуть ближе к нужному ответу.
  4. Повторяем эти шаги тысячу раз с одной и той же фотографией пока сеть не выдаст нам требуемый результат.

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

Единственная проблема заключается в том, что, если мы не будем накладывать никаких ограничений на редактирование пикселей, полученные изменения изображения получатся слишком заметными. Это могут быть, например, обесцвеченные пятна или волнообразные линии:


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


Несмотря на то, что нам это изображение кажется таким же, как исходное, нейросеть будет обманута!

Чтобы запрограммировать такой алгоритм, нам потребуется предварительно обученная нейронная сеть, которую нужно будет обмануть. Не будем тратить время на обучение с нуля, а просто возьмем одну из сетей, созданных Google.

Keras, популярный фреймворк глубокого обучения, имеет в комплекте несколько готовых обученных нейросетей. Мы будем использовать копию глубокой нейронной сети Google Inception v3, которая была предварительно обучена на определение 1000 различных объектов на изображении.

Ниже приведен основной код Keras, отвечающий за определение объекта нейросетью. Перед запуском вам надо лишь убедиться, что у вас установлен Python 3 и Keras:

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

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

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

А вот и сам код:

Запустив этот код, мы получим на выходе изображение, которое обманет нейросеть:

Примечание: Если у вас нет GPU, процедура может занять несколько часов. Если у вас есть правильно сконфигурированный GPU с Keras и CUDA , выполнение займет всего пару минут.

Теперь давайте пропустим через исходную сеть новое изображение:

Мы сделали это! Мы обманули нейросеть, и она приняла кота за тостер!

  1. Взломанные изображения обманывают нейросети, даже если они напечатаны на бумаге! Это значит, что вы можете с помощью таких изображений обманывать камеры или сканеры, а не только системы, в которые загружается непосредственно файл изображения.
  2. Если изображение обмануло одну нейронную сеть, то оно, как правило, сможет сделать это и с другими нейросетями самых разных архитектур, если они были обучены на тех же данных.

Это значит, что мы получаем огромный простор применений взломанных изображений!

Однако, существует также большое ограничение, связанное с созданием таких изображений — нам нужен прямой доступ к самой нейронной сети. Если нам нужно обмануть сеть, нам обязательно нужна ее копия, так как обучение производится именно на основе ее классификации. В реальном мире, ни одна компания даст вам скачать код обученной нейросети, тем самым подставляя себя под риск хакерской атаки…или нет?

Применения такого типа атак поистине безграничны. Вот некоторые возможные примеры:

  • Можно заставить автопилот автомобиля принимать знак STOP за зеленый свет — это может привести к авариям!
  • Можно заставить системы фильтрации пропускать нежелательный или даже вредный контент.
  • Можно обманывать сканеры чеков, подсовывая им написанную от руки сумму, которую они примут за другую, более крупную (при этом никто не докажет умышленного обмана, это будет выглядеть просто как ошибка сканера).

Такая методика атаки не ограничивается одними лишь изображениями. Вы можете использовать такой же подход, чтобы обманывать классификаторы, работающие с другими типами данных. Например, вы можете обманывать антивирусные программы, которые будут пропускать ваш вирус как безвредный код!

Теперь мы знаем, что обмануть нейронные сети ( и все другие модели машинного обучения тоже) вполне реально. А как защититься от этого?

Суть в том, что никто пока не может дать полного и точного ответа. Предотвращение такого рода атак является на сегодняшний день предметом исследований. Лучший способ идти в ногу с последними разработками — читать блог Cleverhans, который ведут Ян Гудфеллоу и Николя Пейпернот — два наиболее влиятельных исследователя в этой области.

Но есть некоторые вещи, которые мы знаем уже сейчас:

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

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

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

Хотите узнать больше о состязательности примерах и защиты от них?

Читайте также:

Пожалуйста, не занимайтесь самолечением!
При симпотмах заболевания - обратитесь к врачу.

Copyright © Иммунитет и инфекции