26 сентября, 2016
Лень, кибербезопасность и машинное обучение.
Так исторически и генетически сложилось, что человек ленив: если что-то можно не делать, большинство и не сделает. Как это ни парадоксально, но это хорошо, ибо лень – двигатель прогресса. Если до чего-то не дотягиваются руки, то человек ленивый (но ответственный) поручает машинам. (хомо лентяйус?)
Разумеется, есть и другие драйверы, мотивирующие делать нашу жизнь проще и комфортнее.
Но когда дело касается кибербезопасности – лень противопоказана. Здесь на первый план выходит оптимизация. Анализ миллионов вредоносных файлов и сайтов в день, разработка «таблеток» против новых угроз, «прокачка» проактивной защиты и решение десятков других критических задач просто невозможно без внедрения автоматизации. И машинное обучение, такое популярное сейчас, является одним из главных инструментов этого процесса.
Автоматизация прописалась в кибербезопасности в момент появления этой самой кибербезопасности. Помню, например, как в бородатые 2000-е своими мозгами руками писал робота по разбору входящих «самплов» – робот раскладывал детектирующиеся файлы по папочкам в вирусной коллекции в соответствии с вердиктом. Трудно представить, что раньше я делал это вручную.
Но сейчас заставить роботов делать то, что ты хочешь, просто чётко поставив им задачу, недостаточно. Задачу хочется ставить нечётко. Да, именно так!
Например, «найди на фотографии лица людей». В такой постановке не хочется описывать как эти лица выделить и чем люди отличаются от собак. Хочется показать роботу несколько фотографий и сказать: «вот здесь люди, это лица, а тут собаки; дальше сам думай». Вот такая «свобода творчества» и называется машинным обучением.
МО + КБ = Л
Без машинного обучения (МО) сегодня не выживет ни одна секюрити-компания (если, конечно, не паразитировать на чужих детектах). Забавно, что некоторые стартапы преподносят эту дисциплину как недавнюю революцию в кибербезопасности (КБ), которую они как бы затеяли и возглавляют. В действительности машинное обучение применяется на секюрити-практике уже более десяти лет, хотя и без особой помпы.
Машинное обучение — тема тысяч докторских диссертаций, которую в один пост не впихнёшь. Даже в два поста :) Да и нужны ли читателю академические подробности? Посему сейчас я доступно расскажу только о самом вкусном, практическом и захватывающем.
В начале пути мы использовали разные математические модели только для внутренних нужд. Например, для автоматизации рабочего места вирусного аналитика (выделение главного в потоке информации), кластеризации (группировка объектов по признакам), оптимизации работы краулера (определение приоритета и интенсивности обхода миллионов URL с учётом весов разных факторов).
Позднее стало ясно, что без внедрения умных технологий в продукты для защиты пользователей поток кибергадости нас похоронит. Нужны были роботы, способные быстро и точно ответить на сложные вопросы, вроде «покажи-ка мне самые подозрительные файлы, только сам догадайся, кто подозрителен, вот тебе примеры». Или: «смотри, вот так выглядят классные эвристические процедуры, которые детектят десятки тысяч объектов — тебе надо найти закономерности, разобраться и сделать такие же процедуры, но для других объектов».
Сразу немного дёгтя, чтобы вы не подумали, что всё так просто: в применении методов машинного обучения к реальным задачам есть много трудностей и тонкостей. Особенно в кибербезопасности. Сетевой андерграунд постоянно изобретает новые типы атак и какой бы хорошей ни была математическая модель, её нужно постоянно совершенствовать. Это ключевой момент – мы работаем в условиях, когда машинное обучение сталкивается с направленным и постоянным противодействием.
Во-первых, сначала нужно эти новые атаки найти. Разумеется, кибернегодяи не присылают нам свои поделки – наоборот, они стараются их скрыть, чтобы как можно дольше быть вне радара и побольше заработать. Поиск таких атак – это дорогостоящий экспертный труд с использованием сложных инструментов.
Во-вторых, аналитик должен натренировать робота правильно распознавать что важно, а что нет. Это ой как непросто, тут много проблем и одна из них — переобучение, где «пере-» — в значении «слишком».
Есть такой классический пример: математики создали модель для распознавания изображения коров, обучили её на множестве картинок и – о, чудо! – она действительно стала распознавать коров! Начали усложнять картинки, а модель вообще ничего не понимает… Попробовали разобраться – алгоритм оказался слишком «умным» и он обманул сам себя – «натренировался» на зелёную лужайку на фоне вместо коров.
Так что путь добавления «мозга» в технологии тернист – это долгий и сложный путь проб и ошибок, который требует комбинации двух экспертиз – в анализе данных и в кибербезопасности. К середине 2000-х мы накопили и то и другое и начали подключать машинное обучение к «боевым» технологиям в продуктах. С тех времен автоматизация шагнула сильно вперёд, ввысь и вглубь. Различные математические подходы были внедрены в самых разных продуктах и компонентах, больших и маленьких: в анти-спаме (классификация писем на предмет спамовости), анти-фишинге (эвристическое распознавание фишинговых страниц), родительском контроле (обнаружение нежелательного контента), анти-фроде, защите от целевых атак, мониторинге активности и других.
Нет так быстро, мистер Смит
У прочитавшего об успехах машинного обучения может возникнуть соблазн запихнуть такой вот умный машинный алгоритм прямо на компьютер клиента и забыть о нём – алгоритм же умный, вот пусть и учится. Но один в поле не воин и вот почему.
Во-первых, такой подход упирается в ограничение по производительности. Пользователю нужен разумный баланс между качеством защиты и скоростью, а развитие существующих и добавление новых, пусть даже самых умных технологий неизбежно потребует драгоценных системных ресурсов.
Во-вторых, подобная «изолированность» с отсутствием обновлений, отсутствием новой обучающей информации неизбежно снижает качество защиты. Алгоритм нужно регулярно обучать на принципиально новых типах кибератак, чтобы он не терял свои детектирующие способности, не падал уровень защиты пользователя.
В-третьих, концентрация всех «боевых» технологий на компьютере даёт кибернегодяям больше возможностей изучить особенности защиты и разработать методы противодействия.
И это самые важные, но далеко не все причины.
Что делать?
Конечно, вынести самые тяжёлые и ресурсоёмкие технологии машинного обучения в куда более продвинутое, чем компьютер пользователя, место! Создать удалённый мозг, который по признакам объектов с миллионов клиентских машин способен быстро и точно распознать атаку и доставить защиту.
Белогривая лошадка
Так, 10 лет назад мы создали KSN (17 патентов и патентных заявок), которая решила проблему – облачная технология связала каждый защищённый компьютер с передовой инфраструктурой, которая экономила ресурсы пользователя и усиливала защиту.
По сути KSN – матрёшка: «облако» содержит много других умных технологий против кибератак. Здесь у нас и «боевые» системы и постоянно развиваемые экспериментальные модели. Про одну из таких систем я уже рассказывал – с 2009-го года Astraea (патенты US7640589, US8572740, US7743419) автоматически анализирует события на защищённых компьютерах и выявляет неизвестные угрозы. Сегодня Astraea обрабатывает в сутки более сотни миллионов событий, попутно рассчитывая рейтинг для десятков миллионов объектов.
И хотя облачные технологии на практике доказали своё преимущество до сих пор есть продукты, которые продают автономные, изолированные системы, прошедшие предварительное машинное обучение и редко обновляющиеся на клиентском компьютере.
Мол, благодаря машинному обучению они могут долго, без обновлений детектить новые поколения вредоносов. Ага, «неуловимые Джо» — их детект просто никто не сбивает, потому что нет нужной поверхности для атаки экономической выгоды – слишком мало пользователей у таких продуктов, чтобы злоумышленники взялись за них всерьёз. А может и сбивают, но они не в курсе. Что-то я не слышал, что кто-то из них словил такие продвинутые шпионские атаки как Duqu, Flame или Equation.
Сейчас у нас 99,9% киберугроз анализируется инфраструктурными алгоритмами с использованием машинного обучения. Между выявлением подозрительного поведения на защищённом устройстве и выпуском «таблетки» в среднем проходит всего 10 минут. Если, конечно, мы не отловили негодяя автономной проактивной защитой (например, автоматической защитой от эксплойтов). Были случаи, когда от момента обнаружения подозрительного объекта до выпуска обновления проходило всего 40 секунд (sic!) и на андерграундных форумах начинали ныть: «Как эти сволочи так быстро нас детектят? Мы не успеваем сбивать детект!».
Результат создания облачной инфраструктуры с машинным обучением был ааафигительный! Мы и раньше редко проигрывали в тестах, но с тех пор стали вообще бесспорным №1 по качеству защиты. При этом сохраняли очень низкий уровень ложных срабатываний и давали высокую скорость – один из лучших показателей по индустрии.
Выдержанное вино vs молодая бурда
Казалось, вот она – панацея! Достаточно иметь на компьютере лёгкий клиент-перехватчик, а всю работу по анализу передавать в «облако». Но тогда при проблемах с сетевым доступом компьютер будет вообще беззащитен. Дааа, он такой – соблазн впасть в другую крайность. Практика доказала, что идеальная среда обитания умных технологий – сочетание автономного и облачного ландшафта.
Другая крайность и не меньшее заблуждение: машинное обучение может заменить все остальные подходы. Да, есть сторонники класть все яйца в одну корзину.
Но что будет, когда злоумышленник поймёт работу алгоритма (благо вся логика у него перед глазами) и научится обходить защиту? Это потребует доработки всей математической модели и обновления защищённого устройства. А пока модель дорабатывается, а обновления доставляются, пользователь остаётся наедине с кибератакой, без защиты.
Вывод очевиден: лучшая защита – это комбинация различных технологий на всех уровнях и с учётом всех векторов атак.
Наконец, самое важное: машинное обучение создаётся людьми, экспертами самого высокого класса по анализу данных и кибербезопасности. Одного без другого просто не бывает. И это длительный процесс проб и ошибок, который занимает многие годы. Это как хорошее выдержанное вино – оно всегда будет лучше молодой бурды с красивой этикеткой и пластиковым декантером в бонус. Кто раньше начал роман с машинным обучением – у того опытнее эксперты, лучше технологии и надёжнее защита. Что красноречиво подтверждают тесты, исследования и заказчики.
Бонус трэк: o tempora, o mores!
Бизнес-модель некоторых секюрити стартапов понятна: они работают в парадигме «неважно сколько ты зарабатываешь – главное сколько ты стоишь». Их цель – бурная маркетинговая деятельность, основанная на провокациях, манипуляциях и фейках для раздувания пузыря ожиданий.
Если это не чистое надувательство, эти стартапы не могут не понимать, что без многоуровневой защиты с использованием всех современных защитных технологий, без развития собственной экспертизы они обречены, ибо инвестиционные деньги (даже большие) и кредит доверия пользователей заканчиваются.
С другой стороны, сделать с нуля хороший секюрити-продукт, обладающий всеми достоинствами и качествами – сложно, если вообще возможно. Для этого нужны не столько деньги, сколько мозги и время. Но можно начать с малого и потихоньку «допиливать» разработку.
Я уверен, что рано или поздно «революционные» стартапы начнут внедрение проверенных технологий, которые сейчас демонстрируют свою эффективность. И лучшие из молодых стартапов по мере получения реального опыта, накопления собственной экспертизы начнут расширять свой защитный арсенал, закрывая всё большее число сценариев атак. Постепенно выводя свои продукты на профессиональный уровень, они докажут соответствие объективным критериям качества, принятым в кибербезопасности.
Интересный пост @e_kaspersky_ru о машинном обучении в кибербезопасности и его перспективахTweet