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

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


23-07-2021, 00:00. Автор: Martin
Ха­кер­дом» за помощь в под­готов­ке статьи.

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


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


В понятие машин­лернин­га вхо­дят раз­ные алго­рит­мы — такие как 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);

  • обу­чение с под­креп­лени­ем.



Перейти обратно к новости