Применение машинного обучения к автономным автомобилям и проблемам безопасности

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

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

Как я упоминал в предыдущем посте, я начал вникать во все это, потому что мы проводили серию встреч в Seattle AWS Architects & Engineers, где мы будем участвовать в виртуальной гонке AWS DeepRacers. Если вы читаете это до понедельника, 5 октября, у вас еще есть время отправить модель и выиграть призы! Как упоминалось в последнем посте, вы можете найти ссылку на нашу гонку и дополнительную информацию на последней странице встречи по машинному обучению.

Когда мы только начинали, я был новичком в машинном обучении. Я знал понятия. На нашей встрече AWS были разные замечательные эксперты по машинному обучению. Я поэкспериментировал с AWS QuickSight, который позволяет создавать информационные панели на основе информации о машинном обучении, и пошел на встречу Google по этой теме. Я знал о блокнотах Jupyter и о необходимости большого количества данных для получения точных прогнозов, но не знал точно, почему и как все это работает на практике. Вот где встреча, создание модели и чтение книги по безопасности в этом посте. Я вернусь к безопасности через минуту, но полезно увидеть варианты для автомобиля в качестве примера.

Краткое изложение шагов по созданию модели для участия в нашей гонке:

  1. Войдите в AWS и перейдите в сервис DeepRacer.
  2. Щелкните Создать модель.
  3. Введите имя (и описание, если хотите).

4. Выберите трек. Мы мчимся на трассе re:invent 2018 Wide:

5. Постройте или выберите существующий автомобиль.

  • Если вы уже построили машину, она появится в списке.
  • Чтобы построить машину, вы можете зайти в Ваш гараж на домашней странице Deep Race.

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

  • Выберите действия на следующей странице — эти действия влияют на вашу модель:

Примечание. Если вы читали мой последний пост, вы можете узнать здесь некоторые слова, такие как континуум действий (непрерывный), но мы определяем дискретный место действия здесь. Это означает, что у модели есть определенный предел действий, которые она может предпринять. Но что мне выбрать? Я понятия не имею.

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

В нашем случае AWS DeepRacer использует особый метод обучения: Обучение с подкреплением, так что мне нужно будет принять на одно решение меньше. Я не верю, что книга, которую я читал, освещала это, но я мог пропустить это, так как я прочитал это однажды! Обучение с подкреплением является альтернативой обучению с учителем и без учителя. Идея заключается в том, что автоматизированные агенты (в данном случае наша машина) будут получать вознаграждение за определенные действия и приспосабливаться к максимальному вознаграждению. Если вы хотите узнать об этом подробнее, в консоли AWS DeepRace есть ссылка с дополнительной информацией.

Ок, отлично. Так что же делать машинному обучению нубу?? Что ж, я мог бы повозиться с этим, чтобы выяснить, какие варианты работают лучше всего, и провести множество различных тестов. Я также могу попытаться ускорить процесс, просматривая множество моделей и функций автомобилей AWS DeepRacer, опубликованных другими на GitHub. Честно говоря, если бы я пытался выиграть, я бы провел много исследований о том, что сделали другие, и их результатах, чтобы попытаться улучшить свои результаты и потратить меньше денег. Но для этой гонки я нахожусь на бесплатном уровне AWS DeepRacer. У меня не так много времени, чтобы инвестировать завтра, поэтому я отсканирую некоторые из них и отправлю что-нибудь, чтобы посмотреть, как это работает.

6. Назовите свой автомобиль.

7. Выберите цвет и нажмите Готово.

Вернуться к нашей модели…

8. Выберите Time Trial (чтобы участвовать в гонках с нами) и выберите свой автомобиль. Нажмите "Далее.

9. Создайте свою функцию вознаграждения.

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

Наша первая попытка заключалась в том, что я выбрал не ту трассу, а @kolbyallen выбрал функции, которые заставляли его машину крутиться по кругу. Очевидно, что ни один из них не был полезен для достижения желаемых результатов! В моем случае я бы обучал данные работать на неправильном пути. В случае с Колби он установил противоречивые награды, которые полностью сбили с толку бедную машину! Я читал, что некоторые люди начинают с базовых параметров, а затем настраивают их. Я просто сделаю несколько предположений, но на этот раз не буду слишком сходить с ума.

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

Обратите внимание на стоимость! Есть бесплатный уровень, но потом…

10. Щелкните Создать модель. Сначала вы увидите, что он инициализируется.

11. Затем вы увидите, как ваша машина учится…

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

12. Подождите.

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

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

13. Нажмите, вы можете нажать Начать оценку, чтобы увидеть, как работает ваша модель.

14. Выберите нашу трассу и испытание на время.

15. Примите условия и отправьте заявку в общую лигу AWS, если хотите.

16. Нажмите «Начать оценку». Обратите внимание на стоимость.

Ну, моя машина даже не прошла трассу. Мне нужно внести некоторые коррективы или тренироваться дольше. Я тренировался около часа. Кажется, Дрейк сказал, что тренировался за двоих.

Примите участие в гонке архитекторов и инженеров AWS в Сиэтле

1. Нажмите на ссылку во встрече, чтобы представить свою модель.

2. Вы попадете на нашу страницу гонки. Щелкните Вступить в гонку.

3. Выберите и отправьте свою модель.

Машинное обучение и безопасность — чему мы научились?

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

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

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

Сколько вариантов методов и входных данных протестировал поставщик? Когда я создавал свою модель автомобиля на нашей первой встрече, я заметил, что могу изменить определенное количество факторов. Я не мог изменить входные категории или функции, но мог изменить их значения. Во время встречи я сразу начал догадываться, что Amazon работает над беспилотным автомобилем, и все эти тестовые данные им помогут. Оказывается, они купили такую ​​компанию под названием Zoox.

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

Я подумал, а что если ехать в гору по очень извилистой дороге или по прямому шоссе через Монтану? Что, если машина едет по центру городской улицы и перед ней падает человек на велосипеде? Что, если он находится на автостраде, и у другого автомобиля отвалится шина? Как насчет автомобиля, которому нужно ехать по тупиковой улице, которая слишком узкая, чтобы выйти, и поэтому приходится выезжать задним ходом? Что делать, если существует перекрытая дорога, которой нет на карте? Что делать, если идет сильный дождь, сильный туман или снег? Столько соображений!

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

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

Хорошо ли машинное обучение?

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

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

Мое единственное предостережение заключается в том, что само по себе машинное обучение — это не серебряная пуля, которую вы бросаете в свою среду и запускаете без какого-либо дополнительного мониторинга. Шаблоны и предсказания прекрасны, но, как предупреждает Нассим Николас Талеб в одной из моих любимых книг Одураченные случайностью, слишком большая зависимость от прошлого или конкретной модели может привести к тому, что мы упустим изменившую правила игры аномалию, которая не подходит. в любом месте модели. Кстати, кто-нибудь ожидал COVID-19? Интересно, есть ли какие-либо алгоритмы машинного обучения, рассчитывающие бизнес-риски, которые учитывали бы этот тип событий.

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

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

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

Мой WAF не был простым фильтром сопоставления или инструментом ограничения скорости. Он искал варианты определенных точек данных в веб-запросах. Например, какова длина пользовательского агента? Начинается ли блок CIDR с заведомо неверным сетевым диапазоном? Отслеживание моего собственного списка префиксов CIDR было более эффективным, чем просмотр каждого IP-адреса или вычисление блоков CIDR, диапазон соответствовал моим потребностям.

Он попытался определить некоторые шаблоны веб-атак, такие как обход каталога (.. в URL-адресе). Я уже не помню всего, что в нем было, но там было множество проверок на разные типы искаженных запросов. Я преобразовал каждый из них в XML (тогда JSON еще не существовал) и проанализировал любые аномалии или ошибки, чтобы увидеть, что происходит. Для некоторых переменных используется частичный белый список. Я также просмотрел каждый IP-адрес, чтобы определить, откуда поступают данные, если они выглядят ненормально. Да, действительно.

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

Машинное обучение определенно поможет выявлять угрозы, поражающие множество разных организаций одним и тем же образом или использующие типичное поведение. Он также может обнаруживать выбросы. Я использовал продукт под названием Cisco StealthWatch Cloud, который очень хорошо выявлял аномалии в двух разных учетных записях, где я его тестировал. Я знаю, что они используют базовые линии и аномалии. Тем не менее, если у вас есть для этого ресурсы, рекомендуется просматривать и анализировать журналы на наличие угроз, в дополнение к любым приобретенным вами продуктам машинного обучения, чтобы найти угрозы, характерные для ваших систем и рабочих процессов.

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

Тери Радичел — Следуй за мной @TeriRadichel

© 2nd Sight Lab 2020

____________________________________________

Хотите узнать больше об облачной безопасности?

Ознакомьтесь с: Кибербезопасность для руководителей в эпоху облачных вычислений.

Тестирование проникновения в облако и оценка безопасности

Защищены ли ваши облачные учетные записи и приложения? Наймите 2nd Sight Lab для теста на проникновение или оценки безопасности.

Обучение облачной безопасности

Виртуальное обучение доступно как минимум для 10 студентов в одной организации. Учебная программа: 2-й тренинг Sight Lab по облачной безопасности

Есть вопрос о кибербезопасности или облачной безопасности?

Спросите Teri Radichel, записавшись на звонок в IANS Research.

____________________________________

Подкасты по кибербезопасности и облачной безопасности за 2020 год

Атаки DOM XSS и предотвращение ~ Веб-семинар IANS, ноябрь 2020 г.

Кибербезопасность для руководителей в эпоху облачных технологий с Тери Радичел

Тери Радичел в подкасте Bring Your Own Security

Понимание того, что означает облачная безопасность, с Тери Радичел в подкасте Secure Developer

Презентации конференции Cybersecurity and Cloud Security 2020

RSA 2020 ~ Векторы бессерверных атак

День женщин AWS в технологиях 2020

Бессерверные дни в Гамбурге

Предыдущие подкасты и презентации

RSA 2018 ~ Red Team vs. Blue Team на AWS с Колби Аллен

AWS re:Invent 2018 ~ RedTeam vs. Blue Team на AWS с Колби Аллен

Microsoft Build 2019 ~ Самостоятельная оценка безопасности с помощью «SheHacksPurple

AWS re:Invent и AWS re:Inforce 2019 ~ Готовы ли вы к облачному пентесту?

Мастера данных ~ Sumo Logic Podcast

Azure для аудиторов ~ Представлено в Сиэтле ISACA и IIA

День OWASP AppSec 2019 — Мельбурн, Австралия

Bienvenue au congrès ISACA Québec 2019Основной докладКвебек, Канада (7–9 октября)

Презентации Облачная безопасность и кибербезопасность

Технические документы и отчеты об исследованиях

Безопасность без серверов: в чем отличие? Что не так?

Создание простого фаззера для Rest API

Улучшить обнаружение и предотвращение DOM XSS

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

Важнейшие элементы управления, которые могли бы предотвратить нарушение цели

Захват пакетов на AWS