Хакер - ИИ в ИБ. Как машинное обучение применяется в безопасности и каким оно бывает

Хакер - ИИ в ИБ. Как машинное обучение применяется в безопасности и каким оно бывает

hacker_frei

https://t.me/hacker_frei

Константин Коновалов

Содержание статьи

  • Классический кодинг vs машинное обучение
  • Задачи искусственного интеллекта
  • Чем машинлернинг может помочь в ИБ
  • Что включает в себя машинное обучение
  • Данные
  • Признаки
  • Алгоритмы
  • Чем отличаются разные алгоритмы
  • Наивный байесовский классификатор
  • Деревья решений
  • Отличия нейросетей от других алгоритмов
  • Особенности машинного обучения в ИБ
  • Подведем итоги

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

INFO

Ре­дак­ция бла­года­рит коман­ду «Ха­кер­дом» за помощь в под­готов­ке статьи.

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

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

В понятие машин­лернин­га вхо­дят раз­ные алго­рит­мы — такие как random forest («слу­чай­ный лес»), деревья решений, наив­ный бай­есов­ский клас­сифика­тор, гра­диен­тный бус­тинг и дру­гие. Ней­рон­ные сети, в том чис­ле глу­бокие, — это тоже один из алго­рит­мов машин­ного обу­чения.

Струк­тура искусс­твен­ного интеллек­та

КЛАССИЧЕСКИЙ КОДИНГ VS МАШИННОЕ ОБУЧЕНИЕ

Как про­исхо­дит прог­рамми­рова­ние в клас­сичес­ком понима­нии? Допус­тим, у челове­ка есть компь­ютер, который работа­ет по опре­делен­ному алго­рит­му. Человек вво­дит в него дан­ные, пода­ет прог­рамму, и алго­ритм выда­ет резуль­таты. В этом слу­чае все пре­дель­но понят­но. Человек может получить точ­ность до 100 про­цен­тов, осо­бен­но если зап­рос — это матема­тичес­кие опе­рации.

Схе­ма клас­сичес­кого прог­рамми­рова­ния

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

Схе­ма машин­ного обу­чения

ЗАДАЧИ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

Есть четыре основные задачи искусс­твен­ного интеллек­та:

  • клас­сифика­ция;
  • рег­рессия;
  • ран­жирова­ние;
  • клас­териза­ция.

Ма­шин­ное обу­чение сос­тоит из двух про­цес­сов. Пер­вый — это тре­ниров­ка, ког­да человек берет дан­ные, обу­чает модель и в ито­ге получа­ет некий клас­сифика­тор.

Тре­ниров­ка модели машин­ного обу­чения

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

Мо­дель исполь­зования

ЧЕМ МАШИНЛЕРНИНГ МОЖЕТ ПОМОЧЬ В ИБ

Рас­смот­рим при­мер того, как человек поль­зует­ся сво­ей элек­трон­ной поч­той. Мож­но выделить четыре пат­терна поведе­ния челове­ка, ана­лиз которых поможет опре­делить его дей­ствия.

  1. В какое вре­мя суток человек поль­зует­ся поч­той: утром, днем, вечером.
  2. Сколь­ко устрой­ств исполь­зует: телефон, компь­ютер или сра­зу нес­коль­ко устрой­ств одновре­мен­но.
  3. В каких локаци­ях человек находит­ся, ког­да поль­зует­ся поч­той.
  4. Как человек про­веря­ет пись­ма: свер­ху вниз или сни­зу вверх. Мы можем опре­делить это по тому, как он отве­чает или уда­ляет из ящи­ка рас­сылки и про­чий мусор.

От­веты на эти воп­росы соз­дает пор­трет челове­ка (на рисун­ке ниже поведе­ние такого челове­ка выделе­но крас­ным). Для машин­ного обу­чения эти дей­ствия будут пред­ска­зуемые, без каких‑либо всплес­ков.

Гра­фик поведе­ния челове­ка в нор­маль­ных усло­виях

Те­перь пред­ста­вим, что хакер взло­мал поч­ту, узнав каким‑то обра­зом пароль от нее, и зашел как поль­зователь. Его поведе­ние будет явно отли­чать­ся от поведе­ния челове­ка, который поль­зовал­ся элек­трон­ным ящи­ком до него. На гра­фике поведе­ние хакера показа­но харак­терны­ми всплес­ками.

Гра­фик поведе­ния хакера

За­дача алго­рит­ма зак­люча­ется в том, что­бы опре­делить тот момент, ког­да изме­нилось поведе­ние челове­ка, которое обра­зова­ло такой всплеск. О по­доб­ном при­мере можешь почитать в бло­ге Яндекса на Хаб­ре.

Дру­гой хороший при­мер — сорев­нования Catch me if you can на сай­те Kaggle. Это, кста­ти, очень полез­ный сайт для тех, кто хочет изу­чить машин­ное обу­чение.

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

ЧТО ВКЛЮЧАЕТ В СЕБЯ МАШИННОЕ ОБУЧЕНИЕ

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

Данные

В откры­том дос­тупе есть мно­жес­тво наборов дан­ных, на которых мож­но тре­ниро­вать алго­рит­мы. Но у таких наборов есть недос­татки. Нап­ример, наборы могут быть непол­ными, пло­хо раз­мечены и неточ­ны. Если ты захочешь внед­рить решение на ML-тех­нологи­ях, нуж­но будет соб­рать набор дан­ных под опре­делен­ную задачу и готовый набор вряд ли будет хорошо соот­ветс­тво­вать. Люди готовы вык­ладывать алго­рит­мы, рас­ска­зывать, что и как они исполь­зуют, но мало кто хочет делить­ся сво­ими набора­ми дан­ных.

За­дача дата‑сай­ентиста — под­готовить набор дан­ных к исполь­зованию: соб­рать, раз­метить и вычис­тить его. Это очень тру­доем­кий про­цесс, который занима­ет при­мер­но 50–70 про­цен­тов работы.

Признаки

Рас­смот­рим прос­той веб‑зап­рос. Допус­тим, у тебя есть: дли­на зап­роса, код отве­та, URL, кон­текст, популяр­ность домена и так далее. Все­го таких приз­наков мож­но наб­рать 600 штук. В этом слу­чае воз­ника­ет два важ­ных воп­роса:

  1. Ка­кие из этих приз­наков брать, а какие не сто­ит?
  2. Где будет исполь­зовано решение — в режиме realtime или офлайн?

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

Вот еще один при­мер. Пред­положим, нам нуж­но понять, опас­ный перед нами файл или нет. Для это­го сна­чала отве­тим на сле­дующие воп­росы:

  1. Тре­бует ли файл дос­туп в интернет?
  2. Де­лает ли он что‑то похожее на ска­ниро­вание?
  3. Ка­кие IP исполь­зует файл?
  4. Хо­чет ли он дос­тучать­ся до реес­тра?
  5. Ра­бота­ет ли файл с памятью?
  6. Хо­чет ли он изме­нить фай­ловую сис­тему?
  7. Име­ет ли файл воз­можность самоко­пиро­вания или зах­вата дру­гих фай­лов?

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

Алгоритмы

Ал­горит­мы мож­но раз­делить на нес­коль­ко типов:

  • обу­чение без учи­теля;
  • обу­чение с учи­телем;
  • обу­чение с час­тичным прив­лечени­ем учи­теля (semi-supervised learning);
  • обу­чение с под­креп­лени­ем.

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

Обу­чение с час­тичным прив­лечени­ем учи­теля — это неч­то сред­нее меж­ду пер­вым и вто­рым типами. Нуж­но обу­чить алго­ритм на нераз­мечен­ных дан­ных, а затем про­верить его точ­ность на раз­мечен­ных дан­ных. Нап­ример, у нас есть некий набор дан­ных. 90% мы можем отпра­вить на обу­чение модели, а 10% — на то, что­бы про­тес­тировать его точ­ность. Эта раз­новид­ность алго­рит­ма эко­номит вре­мя.

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

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

ЧЕМ ОТЛИЧАЮТСЯ РАЗНЫЕ АЛГОРИТМЫ

Рас­смот­рим семь алго­рит­мов машин­ного обу­чения:

  • ли­ней­ная рег­рессия;
  • ло­гис­тичес­кая рег­рессия;
  • де­ревья решений;
  • ме­тод опор­ных век­торов;
  • на­ивный бай­есов­ский клас­сифика­тор;
  • слу­чай­ный лес;
  • ал­горитм гра­диен­тно­го бус­тинга.

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

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

Рас­смот­рим, как работа­ют некото­рые алго­рит­мы, на при­мере реаль­ной задачи.

Наивный байесовский классификатор

На­ивный бай­есов­ский клас­сифика­тор исполь­зовал­ся до 2010 года в спам‑филь­трах, одна­ко спа­меры ста­ли под него подс­тра­ивать­ся и сде­лали его фак­тичес­ки неп­ригод­ным. Рас­смот­рим тем не менее, как он работа­ет.

Итак, наша задача — понять, отно­сит­ся пись­мо к спа­му или нет. При обу­чении клас­сифика­тора воз­ника­ет два спис­ка: хороших слов и пло­хих — тех, что час­то попада­ются в спа­ме. В спис­ках пред­став­лены сами сло­ва и час­тота, с которой они обыч­но встре­чают­ся.

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

Деревья решений

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

К при­меру, если ответ отри­цатель­ный, то алго­ритм зада­ет новый воп­рос: тре­бует ли файл дос­тупа к реес­тру? Если ответ «да», зна­чит, этот файл опа­сен. В про­тив­ном слу­чае алго­ритм зада­ет воп­рос, работа­ет ли файл с памятью нап­рямую. Если нет, это нор­маль­ный файл. В слу­чае положи­тель­ного отве­та нуж­но задать новый воп­рос. Этот про­цесс длит­ся, пока не ста­нет понят­но, опа­сен файл или нет.

ОТЛИЧИЯ НЕЙРОСЕТЕЙ ОТ ДРУГИХ АЛГОРИТМОВ

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

Ней­рон­ные сети самос­тоятель­но выделя­ют приз­наки и про­изво­дят клас­сифика­цию. Одна­ко они более чувс­тви­тель­ны к нас­трой­ке и тре­бова­тель­ны к ресур­сам. При­чем в зависи­мос­ти от чис­ла сло­ев в глу­бокой ней­росети может силь­но раз­личать­ся точ­ность резуль­тата — к при­меру, от 80 до 99%.

Ней­росети пол­ностью реша­ют задачу за челове­ка, но нуж­но понимать сфе­ру их при­мене­ния. Нап­ример, в воп­росах интернет‑безопас­ности они хорошо зареко­мен­довали себя там, где рас­позна­ют речь либо работа­ют с изоб­ражени­ями или видео. К при­меру, ней­росети при­меня­ются в Face ID на iPhone, ког­да изоб­ражение с камер поз­воля­ет раз­бло­киро­вать телефон и получить дос­туп к сво­им дан­ным.

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

INFO

Под­робнее о реали­зации этой ата­ки на ней­росети читай в статье «Ис­ходный кот. Как зас­тавить ней­рон­ную сеть оши­бить­ся».

ОСОБЕННОСТИ МАШИННОГО ОБУЧЕНИЯ В ИБ

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

  1. Заг­ружа­ем, собира­ем и перера­баты­ваем дан­ные.
  2. Вы­деля­ем приз­наки.
  3. Тре­ниру­ем нес­коль­ко моделей, срав­нива­ем эти модели и выбира­ем одну из луч­ших.
  4. Внед­ряем луч­шую модель в сис­тему.
  5. По­даем дан­ные на модель и смот­рим, что она выда­ет на выходе.

Мож­но подумать, что если в осно­ве интернет‑безопас­ности лежит решение на базе машин­ного обу­чения, то алго­ритм все дела­ет сам: учит­ся, выяв­ляет ано­малии, опре­деля­ет взлом­щиков. Одна­ко это неп­равда. У работы на осно­ве машин­ного обу­чения есть два эта­па: обу­чение и исполь­зование модели. Они меж­ду собой не свя­заны. То есть сна­чала мы обу­чаем модель, а ког­да начина­ем исполь­зовать ее, модель уже не обу­чает­ся.

Нап­ример, мы обу­чили сеть рас­позна­вать кошек и собак. Если этой сети показать мор­жа, она сва­лит­ся в два сос­тояния: либо кот, либо собака. Но морж — это ни то ни дру­гое. То же может про­изой­ти и ког­да мы довери­ли сети сле­дить за каким‑то аспектом безопас­ности.

До­пус­тим, есть све­дения о том, как дей­ству­ют хакеры. Мы каким‑то обра­зом прев­ратили это в набор дан­ных и раз­метили их в сис­теме. Ког­да хакеры будут дей­ство­вать в соот­ветс­твии со схе­мой из нашего набора, клас­сифика­тор вов­ремя опоз­нает угро­зу и вов­ремя пред­при­мет какие‑то меры. Если же хакеры при­дума­ют новый метод взло­ма, которо­го нет в наборе дан­ных, то на выходе резуль­таты могут быть неп­ред­ска­зуемы­ми.

ПОДВЕДЕМ ИТОГИ

  1. Нет уни­вер­саль­ного алго­рит­ма, который будет решать все задачи. Раз­ные алго­рит­мы помога­ют решить раз­нооб­разные задачи для раз­личных дан­ных.
  2. Дан­ные нуж­но пос­тоян­но обновлять. Нель­зя нат­рениро­вать алго­ритм и наде­ять­ся на него. Нап­ример, до 2010 года наив­ный бай­есов­ский клас­сифика­тор мог филь­тро­вать спам, но потом его научи­лись обхо­дить. Теперь нель­зя исполь­зовать этот алго­ритм. Нуж­но искать новые решения.
  3. Нуж­но понимать раз­ницу и выбирать слож­ность модели в зависи­мос­ти от того, где она будет исполь­зовать­ся. Нап­ример, если нуж­на работа в режиме реаль­ного вре­мени, модель мож­но выб­рать полег­че. В режиме офлайн вре­мя не огра­ничи­вает­ся, мож­но счи­тать, сколь­ко угод­но.
  4. Ес­ли набор дан­ных непол­ный, некачес­твен­ный, то никакой алго­ритм не поможет.

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

Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei



Report Page