Теперь в нашем распоряжении имеются доказанные теоремы и масса наработанных числовых примеров. В итоге превосходство байесовских методов сегодня – факт, всесторонне продемонстрированный в сотне различных областей.
В предыдущей главе показано, что эффективность субъективной вероятности можно объективно измерить, а ее всесторонние измерения описаны в научной литературе. Субъективные априорные вероятности – отправная точка всего нашего анализа. Это оптимальный способ получить математически значимые результаты, которые будут полезны при моделировании, используя лишь специальные знания и опыт эксперта по кибербезопасности. Выражение текущей неопределенности в количественном виде позволяет обновлять вероятности согласно новым наблюдениям с помощью ряда эффективных математических методов.
Инструменты, представленные в данной главе, являются частью байесовских методов в теории вероятности и статистике. Названы методы в честь автора их основополагающей идеи, математика и священника Томаса Байеса. У них множество преимуществ, которые особенно хорошо подходят для решения проблем в сфере кибербезопасности. Во-первых, используются имеющиеся знания экспертов. Это отличает подход Байеса от традиционных методов, вероятно, знакомых читателям по университетскому курсу статистики, в которых предполагается, что до получения данных выборки о показателе буквально ничего не известно. Во-вторых, благодаря применению таких исходных знаний можно делать выводы на основе очень небольшого количества информации. Возможно, эти выводы лишь немного уменьшат неопределенность для эксперта по кибербезопасности, но они все равно могут оказать значительное влияние на принятие решений по снижению риска. Если же у вас действительно много данных, то различия между байесовским подходом и измерениями на основе базовых методов выборки, игнорирующими априорные знания, нивелируются.
В этой главе будут представлены некоторые основные байесовские рассуждения и показано, как их можно применить к одной из проблем в области кибербезопасности. Пока мы для ознакомления сосредоточимся на фундаментальных принципах. Кому-то рассматриваемая информация покажется общеизвестной. Мы исходим из того, что читатели знакомы с основами алгебры, и не более. Но при этом есть множество деталей, требующих разъяснения, так что, если информация покажется вам элементарной, смело ее пропускайте. Если же она, наоборот, выглядит слишком сложной, имейте в виду, что вам, как всегда, доступны готовые расчеты в загружаемой электронной таблице (www.howtomeasureanything.com/cybersecurity). Если вы осилите эту главу, наградой станет доступ к некоторым очень мощным инструментам в следующей.
Мы будем рассматривать материал в контексте, начав с проблемы, волнующей всех в сфере кибербезопасности, – крупной утечки данных.
Пример крупной утечки данных
Представим один гипотетический и чересчур упрощенный сценарий. Как руководитель отдела информационной безопасности компании ABC, вы оказались ответственны за сохранение большого количества программных продуктов, размещенных в облаке. Все они обрабатывают критически важные данные, которые должны быть надежно защищены. Соответствующие базы данных включают финансовые и даже конфиденциальные данные. Допустим, компания достаточно крупная, и каждое облачное приложение ежедневно обрабатывает миллионы записей критически важных данных. Также 500 разработчиков, находящихся в разных точках земного шара, регулярно обновляют код. Вдобавок ваша компания внедрила подход DevOps, позволяющий ежедневно устанавливать разнообразные обновления ПО. И наконец, вы вложили деньги в средства защиты и службу безопасности.
Иначе говоря, ваши системы связаны со множеством рисков, из-за ведущихся разработок к ним ежедневно добавляется много новых, но в то же время вы хорошо вооружены и считаете, что готовы к бою. Неожиданно вас вызвали в офис генерального директора на разговор.
Генеральный директор: Мне только что стало известно, что финансовую компанию XYZ взломали прямо через их сайт, там огромные потери данных и масса обязательств по возмещению ущерба! Каковы шансы, что какой-либо из наших сайтов смогут взломать и выкрасть данные клиентов?
Руководитель отдела информационной безопасности, достав свое мобильное устройство и открыв электронную таблицу с «наивным» байесовским калькулятором, скачанную с сайта www.howtomeasureanything.com/cybersecurity: Одна целая двадцать четыре сотых процента в течение следующего года, но я оставляю за собой право скорректировать оценку после завершения комплексного независимого теста на проникновение.
Генеральный директор: Число невероятно точное.
Руководитель отдела информационной безопасности: На самом деле это вероятность. Она отражает мою неуверенность относительно ожидаемого «точного» результата. В данном случае вероятность была выведена из других подготовленных мной субъективных оценок вероятности. Сотрудники моего отдела, включая меня, прошли калибровку, поэтому мы знаем, насколько хорошо умеем оценивать субъективные вероятности.
Генеральный директор: Теперь мне стало любопытно. Насколько сильно изменится ваше мнение, если тест что-то обнаружит? А если он ничего не обнаружит? Измените ли вы это вполне конкретное число?
Руководитель отдела информационной безопасности: Мы проводили другие тесты на проникновение, но теперь тестировщики ищут определенный набор уязвимостей, которыми можно воспользоваться удаленно. Если тестировщики найдут их в наших облачных продуктах и смогут украсть защищенные данные без нашего ведома, то, пожалуй, моя субъективная оценка возможных будущих убытков возрастет до двадцати четырех процентов. Если тестировщики ничего не добудут, то она снизится до одной целой одной сотой процента. Более важный вопрос – если им удастся нас взломать или почти взломать, какова вероятность, что нас уже не взломали ранее? И, возможно, еще более важный вопрос: когда следует проводить экспертизу, чтобы определить, понесли ли мы убытки? Экспертиза стоит очень дорого…
Генеральный директор: Пожалуйста, сообщите мне результаты тестов и рекомендуемые решения с учетом результатов. Давайте сделаем все быстро… это наш шанс. А пока покажите мне таблицу, у меня к ней много других вопросов!
Вопросы вроде тех, которые генеральный директор задавал о будущих убытках, – нормальны. Когда происходят крупные взломы таких компаний, как Sony, JPMorgan, Target и RSA, руководители, естественно, задаются вопросом: «А могло такое случиться с нами?» Они переживают из-за крайне неопределенных и, возможно, значительных будущих убытков. И разумно тогда переформулировать вопрос, введя количественную составляющую: «Какова вероятность, что у нас произойдет крупная утечка данных?»
Чтобы пример стал реалистичнее, представьте, что мы определили три конкретных термина (определили достаточно четко, чтоб они прошли наш тест на понятность), загрузили вышеупомянутую электронную таблицу и внесли в нее эти термины надлежащим образом.
Познакомимся с идеей изменения вероятности на основе условия. То есть у вас есть вероятность того, что событие произойдет, вы узнаёте что-то новое и обновляете эту вероятность. На самом деле это такой способ еще немного разложить вероятность, указав, что само условие может быть неопределенным состоянием, которое также обусловлено чем-то еще.
В нашем простом примере анализ будет сведен к трем дискретным бинарным состояниям, каждое из которых является либо истинным, либо ложным. Три определяемых нами термина следующие:
• возникновение в данном году крупной утечки данных (КУД);
• существование пока неизвестной, но возможной удаленно эксплуатируемой уязвимости (УЭУ);
• результат теста на проникновение, который указывает на наличие некой удаленно эксплуатируемой уязвимости, т. е. положительный тест на проникновение (ПТП).
Предположим, что КУД, УЭУ и ПТП были определены для нас в однозначной форме, они понятны, наблюдаемы и полезны для принятия практических решений. В этом примере генеральный директор и другие заинтересованные стороны (лица, принимающие решения) хотят оценить риск возникновения КУД, подобной тем, о которых они читают в новостях. Они согласились, что для признания утечки данных крупной необходимо, чтобы количество похищенных записей составляло не менее 1 млн. Кроме того, они согласовали конкретное определение значения УЭУ, определив типы слабых мест в своих веб-приложениях, облачной инфраструктуре и/или действий с системой безопасности, которые позволят внешнему злоумышленнику украсть данные удаленно. Наконец, тест на проникновение – это определенная кампания с потенциальными результатами, и значение этих результатов четко определено.
Когда наши заинтересованные стороны точно знают, что означают эти термины, как их увидеть и какие последствия они будут иметь для работы компании, тогда проблема разложена так, что с ней удобно работать. Попытавшись разложить этот риск на «злоумышленника уровня спецслужбы крупной страны и владеющего „уязвимостью нулевого дня“», мы бы совершили ошибку бесполезных разложений, и в этом случае наши действия и способы получения достоверной информации оказались бы неприменимы.
Байесовский пример, который мы собираемся описать, включает в себя две стадии анализа. Наличие удаленно эксплуатируемой уязвимости изменяет вероятность крупной утечки данных. А результат теста на проникновение изменяет вероятность удаленной эксплуатации уязвимости. Таким образом проводится простое разложение на составляющие вероятности крупной утечки данных. Но в целом этот пример придуман для того, чтобы максимально упростить байесовское решение.
Краткое знакомство с байесовским подходом и теорией вероятности
Часто справедливо утверждается, что уравнение Эйнштейна E = mc2 имеет первостепенное значение, поскольку на нем основано многое в физике… Я бы утверждал, что формула Байеса не менее важна, потому что она описывает, как следует реагировать на получение новой информации.
Наша модель началась с суждений руководителя отдела информационной безопасности о ключевых переменных и их взаимосвязи. В частности, он предоставил калиброванную оценку вероятности масштабной утечки данных в свете существования удаленно эксплуатируемой уязвимости.
Введя несколько условных обозначений, мы сможем избежать более длительных и потенциально более запутанных словесных объяснений. Некоторым читателям они, возможно, хорошо знакомы, но на случай, если вы что-то подзабыли, просмотрите эту статью, чтобы освежить в памяти, как писать на языке вероятностей. А начнем мы с нескольких практичных правил из теории вероятностей. Это не полный список фундаментальных аксиом и определенно не всеобъемлющий перечень всех теорем, которые могут оказаться полезными, однако, чтобы разобраться в материале главы, их будет достаточно.
1. Правило записи вероятности.
P(A) = вероятность события A. P(A) принимает некоторое значение между 0 и 1 включительно.
P(~A) = вероятность того, что событие A не наступит. Читайте знак «~» как «нет», «не» или «не будет».
Если P(КУД) – вероятность крупной утечки данных в указанном году, то P(~КУД) – вероятность, что крупной утечки данных не произойдет.
2. Правило «Какое-то суждение должно быть истинным, но противоречащие суждения не могут быть истинными одновременно».
Вероятности всех взаимоисключающих и совместно исчерпывающих событий или состояний должны в сумме давать 1. Если есть только два возможных исхода, скажем, А или не А, тогда:
P(A) + P(~A) = 1.
Например, крупная утечка данных либо произойдет, либо нет. Если мы однозначно определили термин (а по нашему предположению, в этом случае так и есть), то может быть либо один вариант, либо другой, но не оба одновременно (т. е. КУД может произойти или НЕ произойти).
3. Правило записи вероятности наступления более одного события.
P(A,B) означает, что верны и A, и B. Если A и B «независимы», т. е. вероятность одного не зависит от другого, тогда P(A,B) = P(A)P(B). Поскольку в случае КУД, УЭУ и ПТП это может быть не так, нельзя говорить, что P(КУД, УЭУ, ПТП) = P(КУД)P(УЭУ)P(ПТП).
4. Правило записи и вычисления вероятности в ситуации «это зависит от» (условная вероятность).
P(A | B) = условная вероятность A при заданном B. Например, P(КУД | УЭУ) – так можно записать вероятность возникновения крупной утечки данных при наличии удаленно эксплуатируемой уязвимости. Также верно, что P(A | B) = P(A,B) / P(B). Изменение A в зависимости от двух или более событий записывается как P(A | B,C).
5. Правило разложения вероятности наступления более одного события на ряд вероятностей «это зависит от».
Применив правило 4, можно превратить совместную вероятность двух событий в P(A,B) = P(A | B)P(B), а если речь идет о совместной вероятности трех событий, можно написать P(A,B,C) = P(A | B,C)P(B | C)P(C) и т. д. Это называется «цепным правилом».
6. Правило «возможны разные варианты развития событий».
Правило 4 можно распространить на вычисление вероятности, основанной на всех условиях, при которых событие может наступить, и вероятностей каждого из этих условий.
P(A) = P(A | B)P(B) + P(A |~B)P(~B).
Например, положительный тест на проникновение оказывает определенное влияние на вероятность крупной утечки данных. Используя это правило, вероятность крупной утечки данных можно записать следующим образом:
P(КУД) = P(КУД | ПТП)P(ПТП) + P(КУД |~ПТП) P(~ПТП).
7. Правило Байеса, или Как «перевернуть» условную вероятность.
Часто требуется «перевернуть» условную вероятность. То есть мы можем начать с P(A | B), но на самом деле нам нужна P(B | A). Оба варианта равноценны, только если P(A) = P(B), что часто не так. Поэтому, чтобы перевернуть их, надо применить формулу Байеса, которая записывается как:
P(A | B) = P(A)P(B | A) / P(B).
Иногда такую запись называют «простой» байесовской формой. P(B) вычисляется в соответствии с правилом, изложенным в пункте 3. Если рассматривать только два условия для P(B), тогда правило 4 позволит заменить P(B), так что:
P(A | B) = P(A)P(B | A)/[P(B | A)P(A) + P(B | ~A)P(~A)].
В разбираемом нами случае требуется узнать вероятность крупной утечки данных при наличии некоторой дополнительной информации, например обнаружения конкретной удаленно эксплуатируемой уязвимости. Можно записать это как:
Иными словами, формула Байеса позволяет определить P(КУД | УЭУ) из P(УЭУ | КУД) или наоборот. Это означает, что можно определить вероятность доказательств, учитывая событие, и, наоборот, вероятность наступления события, учитывая доказательства. Чтобы понять, чем они отличаются друг от друга, рассмотрим следующие примеры.
• «Какова вероятность, что у нас была утечка данных, в свете того что за последние шесть месяцев обнаружено несколько вредоносных программ, связанных с находящимися в черном списке серверами управления и контроля (C&C)?»
Записывается как: P(Утечка | Вредоносное ПО с сервера из черного списка).
• Не менее важен вопрос: «Какова вероятность наличия вредоносного ПО, отсылающего информацию на занесенные в черный список серверы, которые принадлежат организованной преступной группировке, учитывая, что, судя по появлению на черном рынке миллионов корпоративных электронных писем, идентификаторов пользователей, номеров социального страхования и других защищенных данных, у нас была утечка?»
Записывается как: P(Вредоносное ПО с сервера из черного списка | Утечка).
Заметили, чем они отличаются? Первый пример сводится к вопросу: «Какова вероятность события (утечки) с учетом имеющихся доказательств?» А во втором спрашивается: «Какова вероятность доказательства с учетом того факта, что событие произошло?» Если вам интересно изучить тему подробнее, то отметим, что путаница между смыслами подобных вопросов приводит к так называемой ошибке прокурора.
В этом «переворачивании» и кроется суть формулы Байеса, и поэтому оно служит важнейшим основанием для рассуждений в условиях неопределенности. Байесовская вероятность превращается в мерило «согласованности» при измерении ваших оценок относительно каких-либо неопределенных событий по мере получения все большего количества данных. В частности, она обосновывает процесс обновления суждений.
Для всех описанных операций нужен источник входных данных. В нашем примере для этого используются калиброванные оценки руководителя отдела информационной безопасности. Поскольку он опирается на свой предыдущий опыт и откалиброванные навыки оценки вероятности для получения исходных данных, мы называем их информативным априорным распределением. Опять же, «априорное» означает «то, в чем вы уже убеждены». Информативное априорное распределение – красивый способ сказать, что ваши данные получены от эксперта в своей области, который что-то знает, хорошо откалиброван и готов утверждать, что одни события более вероятны, чем другие.
Также можно начать с неинформативного априорного распределения. В этом случае исходное состояние предполагает максимально возможный уровень неопределенности, и любое его изменение будет зависеть только от новых данных. Такая точка отсчета считается более осторожной, поскольку на нее не могут повлиять ошибочные оценки эксперта. С другой стороны, она не учитывает и совершенно обоснованные оценки.
Можно утверждать, что неинформативное априорное распределение дискретного бинарного события составляет 50 %. Хотя по этому поводу и ведутся философские споры, в которые мы не станем углубляться, но с математической точки зрения это самая большая неопределенность, которая может возникнуть в системе, имеющей только два возможных состояния.
Конечно, выбор источника информации в каждом случае субъективен. Неинформативное априорное распределение считается более осторожным, но оно же, вероятно, и менее реалистичное, чем информативное (так как обычно у вас нет полного отсутствия предварительной информации). Каким бы ни было соотношение субъективного и объективного, теория вероятности может помочь сделать рассуждения более последовательными.
Если вы усвоили изложенное и все стало интуитивно понятно, то есть еще несколько концепций, которые можно взять на вооружение, разобравшись, откуда берется формула Байеса. Для этого расширим цепное правило (пункт 5 в базовом словаре).
Рассмотрим все возможные комбинации удаленно эксплуатируемой уязвимости и крупной утечки данных: оба события истинны (УЭУ, КУД), оба события ложны (~УЭУ, ~КУД), истинно только одно событие (~УЭУ, КУД и УЭУ, ~КУД). Воспринимайте их как ветви «дерева цепных правил», пример которого представлен на рис. 8.1.
Рис. 8.1. Дерево цепных правил
Начиная слева, на каждом новом уровне к существующей ветви добавляется еще одна, и в итоге получаются четыре нужные нам комбинации. Слева направо по верхней ветви получаем P(УЭУ)P(КУД | УЭУ) = P(УЭУ,КУД). То есть дерево отображает слева направо получение вероятностей с помощью умножения. Каждая ветвь заканчивается «элементарными вероятностями», как их называют специалисты в области теории принятия решений. Это еще один способ разложения вероятности, похожие операции мы выполняли с воздействием в главе 6. Не обязательно расписывать дерево полностью, достаточно понимать принцип как из одних его узлов выводятся другие. А теперь посмотрим, как появляется формула Байеса.
Доказательство формулы Байеса
1. P(КУД,УЭУ) = P(УЭУ,КУД) – то же самое, что 3 × 2 = 2 × 3, или «свойство коммутативности».
2. P(КУД,УЭУ) = P(КУД)P(УЭУ | КУД) – смотрите первую ветвь дерева на рис. 8.1.
3. P(УЭУ,КУД) = P(УЭУ)P(КУД | УЭУ) – верно, исходя из 1 и 2.
4. P(КУД)P(УЭУ | КУД) = P(УЭУ)P(КУД | УЭУ) – верно, исходя из 1, 2 и 3.
5. P(УЭУ | КУД) = P(УЭУ)P(КУД | УЭУ) / P(КУД) – деление № 4 на P(КУД).
6. P(КУД | УЭУ) = P(КУД)P(УЭУ | КУД) / P(УЭУ) – деление № 4 на P(УЭУ).
Пожалуйста, не думайте, что все эти формулы нужно выучить наизусть, просто считайте их подпунктами правила. Мы будем ссылаться на них в ходе анализа.
Применение формулы Байеса к ситуации взлома облачного хранилища
Теперь, когда освоены базовые операции с вероятностями, проанализируем, каким образом формируются выходные данные на основе всех представленных выше уравнений. Для облегчения понимания получения вероятностей используем более крупное дерево цепных правил. Если сумеете в этом всем разобраться, для чего достаточно школьных знаний алгебры, то будете на пути к освоению моделирования с использованием любых технологических средств. Кроме того, пример специально упрощен, чтобы можно было увидеть математические доказательства. Расчеты покажутся не такими уж сложными благодаря предлагаемым нами инструментам вычисления, которые при желании можно использовать для дальнейшего изучения взаимосвязей.
На рис. 8.2 показаны вычисления из электронной таблицы, которую можно загрузить с сайта. В столбце слева приведены входные данные, полученные от калиброванных экспертов, а в столбце справа – производные значения, рассчитанные на основе этих данных.
Прежде чем рассмотреть, как была выведена каждая из этих вероятностей, стоит прояснить, почему нам точно известны элементы в столбце «Входные данные, полученные от калиброванных экспертов», а не в столбце «Производные значения». На самом деле можно было бы выбрать множество комбинаций различных входных и выходных данных. Калиброванные эксперты просто начинают с тех величин, которые, как им кажется, смогут лучше оценить. Или, имея представление о некоторых производных величинах, они могут проверить, совпадают ли их оценки вероятностей из второй таблицы с теми, что указаны в первой.
Также можно оценить P(КУД | ПТП) напрямую, не используя УЭУ в качестве промежуточного шага. Однако мы хотели показать, как неопределенности, касающиеся разных состояний, могут быть связаны между собой. Теперь по порядку продемонстрируем математические расчеты для каждого из значений, приведенных в столбце «Производные значения» на рис. 8.2.
Рис. 8.2. Пример разложения крупной утечки данных с условными вероятностями
1. Какова вероятность того, что эту уязвимость можно эксплуатировать удаленно?
P(УЭУ) = P(ПТП)P(УЭУ | ПТП) + P(~ПТП)P(УЭУ | ~ПТП) = (0,01)(0,95) + (1–0,01)(0,0005) = 1,0 %.
2. Какова вероятность P(КУД)?
P(КУД) = P(УЭУ)P(КУД | УЭУ) + P(~УЭУ)P(КУД | ~УЭУ) = (0,01)(0,25) + (1–0,01)(0,01) = 1,24 %.
3. Какова вероятность наличия удаленно эксплуатируемой уязвимости с учетом того, что есть вероятность крупной утечки данных?
P(УЭУ | КУД) = P(КУД | УЭУ)P(УЭУ)/P(КУД) = (0,25 (0,01)/(0,0124) = 20,16 %.
Примечание. Теперь вы видите, что, как уже подчеркивалось выше, P(КУД | УЭУ) ≠ P(УЭУ | КУД).
4. Какова вероятность наличия удаленно эксплуатируемой уязвимости с учетом вероятности того, что крупной утечки данных не было?
P(УЭУ | ~КУД) = P(~КУД | УЭУ)P(УЭУ)/P(~КУД).
Используя дополнительные калиброванные вероятности, полученные от руководителя отдела информационной безопасности, а именно
P(~КУД | УЭУ) = 1 – P(КУД | УЭУ)
и
P(~КУД) = 1 – P(КУД),
мы получаем
= (1–0,25)(0,01) / (1–0,0124) = 0,76 %.
А теперь то, что мы действительно хотели узнать все это время: насколько сильно результаты теста на проникновение изменят вероятность крупной утечки данных?
5. Вероятность крупной утечки данных при положительном тесте на проникновение:
P(КУД | ПТП) = P(УЭУ | ПТП) P(КУД | УЭУ) + (1 – P(УЭУ | ПТП)) P(КУД | ~УЭУ) = (0,95)(0,25) + (0,05)(0,01) = 23,8 %.
6. Вероятность крупной утечки данных при отрицательном тесте на проникновение:
P(КУД | ~ПТП) = P(УЭУ |~ПТП)P(КУД | УЭУ) + (1 – P(УЭУ |~ПТП)) P(КУД | ~УЭУ) = (0,0005)(0,25) + (1–0,0005)(0,01) = 1,01 %.
Данные о результате теста на проникновение оказались информативны, поскольку P(КУД | ПТП) > P(КУД) > P(КУД | ~ПТП). Воспринимайте информативные условия как качели-балансир, где посередине находится исходная априорная вероятность. Если условие повышает вероятность, то противоположное условие должно ее уменьшать, и наоборот (кстати, именно поэтому правильным ответом в вопросе на проверку статистической грамотности в табл. 5.4 главы 5 является ответ А).
Таким образом, мы продемонстрировали, как можно применить байесовский анализ для обновления априорной вероятности крупной утечки данных, основываясь на результатах наблюдаемого теста на проникновение. Чтобы максимально упростить процесс, все расчеты представлены в электронной таблице, которую, как обычно, можно найти на сайте www.howtomeasureanything.com/cybersecurity. Начали мы с применения теста на понятность к трем переменным (УЭУ, КУД и ПТП), но это лишь отправная точка для продвинутых моделей, объединяющих суждения с доказательствами с целью уменьшения неопределенности.
1. Dennis V. Lindley, Understanding Uncertainty (Hoboken, NJ: John Wiley & Sons, 2006).