Глава 21 Схемы нападений

Глава 21

Схемы нападений

Даная была дочерью Акрисия, которому предсказали, что он умрет от руки сына своей дочери. Поэтому Акрисий заточил Данаю в бронзовой комнате, вдали от всего мужского рода. Зевс, воспылавший страстью к Данае, проник в ее комнату через крышу в виде золотого дождя. Даная родила Персея, и вы можете догадаться, чем закончилась эта история[53].

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

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

Основная идея состоит в том, что мы изображаем возможные нападения на систему в виде древовидной схемы, в которой основная цель помещается в корне, а различные пути ее достижения изображаются в виде ветвей и листьев. Приписывая каждому узлу в кроне определенное значение, мы можем выполнить некоторые основные расчеты, позволяющие сделать определенные заключения относительно различных способов нападения. Такая схема называется «деревом И/ИЛИ».

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

Основные деревья атак

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

Рис. 21.1. Узлы атак

Обратите внимание: на рисунках все, что не обозначено явно как узел И, является узлом ИЛИ. ИЛИ – это узел альтернатив, в нашем примере имеется четыре способа открыть сейф. Узлы И представляют собой отдельные шаги для достижения одной цели. Для того чтобы узнать комбинацию сейфа, взломщик должен подслушать разговор «И» вынудить владельца сейфа назвать комбинацию. Достичь цели можно лишь в том случае, если будут пройдены обе промежуточные цели.

Это – основа дерева атак. Завершив построение, полезно присвоить определенные значения различным листьям дерева (на рис. 21.1 «О» означает «осуществимо», а «Н» – «неосуществимо»). Напоминаю, это только пример для иллюстрации. Не нужно думать, что эти оценки характеризуют реальную защиту моего сейфа в офисе. Сделав оценку узлов (скорее всего, на основании тщательного изучения самого сейфа), можно рассчитать безопасность цели. Узел ИЛИ осуществим, если осуществим любой из его дочерних узлов. Узел И осуществим, если осуществимы все его дочерние узлы, и неосуществим в противном случае (рис. 21.2).

Рис. 21.2. Возможные способы взлома

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

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

Рис. 21.3. Способы взлома: потребуется или нет специальное оборудование

Присвоить узлам характеристики «дорого» или «недорого» весьма полезно, но лучше показать, сколько именно это будет стоить. Можно задать узлам численные значения. На рис. 21.4 показана схема с указанием расходов на преодоление каждого узла. Так же как и оценка «да/нет», оценка затрат может легко быть распространена по всему дереву. Узлы ИЛИ принимают наименьшее из значений дочерних узлов, а значение узлов И равно сумме значений всех дочерних узлов.

На рис. 21.4 затраты указаны по всей схеме, а также выделен самый дешевый способ взлома.

Рис. 21.4. Стоимость взлома

Опять же, эта схема может использоваться для определения уязвимых мест системы. Рисунок 21.5 показывает все возможные способы взлома, которые потребуют расходов меньше 100 000 долларов. Если вы рассматриваете только недорогие виды нападений (может, стоимость содержимого сейфа составляет как раз 100 000 долларов), тогда они вас заинтересуют.

Рис. 21.5. Способы взлома, расходы на которые не превышают 100 000 долларов

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

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

Рис. 21.6. Наиболее дешевые способы взлома, не требующие специального оборудования

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

Деревья атак также позволяют сыграть в игру «что, если?», рассматривая различные варианты мер противодействия. Например, цель на рис. 21.6 оценивается в 20 000 долларов, поскольку самый дешевый вид взлома, не требующий специального оборудования, – это взятка лицу, знающему комбинацию. Что, если принять меры предосторожности – заплатить этому человеку сумму большую, чем возможная взятка, с тем чтобы он был менее сговорчив? Если предположить, что теперь расходы на подкуп составляют 80 000 долларов (напоминаю, это только пример; в реальности придется исследовать, как именно контрмеры влияют на значение узла), то цена увеличится на 60 000 долларов (возможно, на эту сумму придется нанять головорезов для достижения соглашения).

Деревья атак PGP

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

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

Дерево атак PGP

Цель: прочитать сообщение, зашифрованное PGP (ИЛИ)

1. Прочитать сообщение, зашифрованное PGP

1.1. Расшифровать сообщение (ИЛИ)

1.1.1. Взломать асимметричное шифрование (ИЛИ)

1.1.1.1. Атаковать «в лоб» асимметричное шифрование (ИЛИ)

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

1.1.1.2. Математически взломать асимметричное шифрование (ИЛИ)

1.1.1.2.1. Взломать RSA (ИЛИ)

На сегодня неизвестно, равнозначен ли взлом RSA разложению на множители.

1.1.1.2.2. Разложение на множители RSA или вычисление дискретного логарифма для схемы Эль-Гамаля.

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

1.1.1.3. Криптоанализ асимметричного шифрования

1.1.1.3.1. Общий криптоанализ RSA и схемы Эль-Гамаля (ИЛИ)

Способы общего криптоанализа RSA или Эль-Гамаль не известны. Криптоанализ одного зашифрованного текста даст общий подход для взламывания RSA и схемы Эль-Гамаля.

1.1.1.3.2. Использование уязвимых мест RSA и Эль-Гамаля (ИЛИ)

В RSA есть несколько уязвимых мест; тем не менее PGP устраняет большую часть угроз, с ними связанных.

1.1.1.3.3. Тайминг-атаки (атаки, основанные на сравнительных измерениях времени) на RSA и Эль-Гамале.

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

1.1.2. Взломать симметричный ключ

1.1.2.1. Взломать симметричный ключ с помощью атаки «в лоб» (ИЛИ)

Все алгоритмы шифрования с помощью симметричного ключа для PGP имеют ключи размером не менее 128 бит. Это делает нереальной лобовую атаку.

Атака «в лоб» в некоторой степени облегчается при включении избыточной информации в начало всех зашифрованных сообщений. См. OpenPGP RFC[54].

1.1.2.2. Криптоанализ шифрования с помощью симметричного ключа Алгоритмы шифрования с помощью симметричного ключа (поддерживаемые PGP 5.x): IDEA, 3-DES, CAST-5, Blowfish и SAFER-SK 128. Эффективные методы для общего криптоанализа этих алгоритмов не известны.

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

1.2.1. Вынудить (обманом) отправителя использовать открытый ключ получателя, чей закрытый ключ известен, для шифрования сообщения, (ИЛИ)

1.2.1.1. Заставить отправителя поверить, что некий подложный ключ (секретный ключ которого известен) – это ключ адресата.

1.2.1.2. Убедить отправителя зашифровать послание не одним-единственным ключом: настоящим ключом получателя и другим, секретный ключ которого известен.

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

1.2.2. Заставить получателя подписать зашифрованный симметричный ключ (ИЛИ)

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

1.2.3. Контроль памяти компьютера отправителя (ИЛИ)

1.2.4. Контроль памяти компьютера получателя (ИЛИ)

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

1.2.5. Определить ключ по генератору случайных чисел (ИЛИ)

1.2.5.1. Определить состояние генератора случайных чисел в момент шифрования послания (ИЛИ)

1.2.5.2. Внедрить программу (вирус), которая определенным образом изменит состояние генератора случайных чисел (ИЛИ)

1.2.5.3. Внедрить программу, которая непосредственно повлияет на выбор симметричных ключей

1.2.6. Внедрить вирус, который откроет симметричный ключ 1.3. Заставить получателя (помочь) расшифровать послание (ИЛИ)

1.3.1. Атаковать симметричный ключ с помощью зашифрованного текста (ИЛИ)

Шифрование в режиме обратной связи, используемое PGP, совершенно не защищено от таких атак. Пересылая адресату тот же ключ (или зашифрованный ключ) вместе с измененным текстом, можно заполучить полное содержание письма[55].

1.3.2. Атаковать открытый ключ с помощью избранного зашифрованного текста (ИЛИ)

Так как RSA и схема Эль-Гамаля достаточно гибки, можно внести определенные изменения в зашифрованный симметричный ключ. Этот измененный (зашифрованный) ключ можно переслать с подлинным сообщением. Это дает возможность атаковать симметричные алгоритмы. Или можно найти слабый зашифрованный текст, и его шифрование с помощью алгоритма симметричного ключа предоставит информацию об измененном ключе, что позволит получить сведения о подлинном ключе.

1.3.3. Отправить любое сообщение адресату (ИЛИ)

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

1.3.4. Контроль исходящей почты получателя (ИЛИ)

Если получатель отвечает на сообщение без использования шифрования, то можно собрать информацию о полученном им сообщении.

1.3.5. Сфальсифицировать поля «ответить» или «от кого» подлинного сообщения (ИЛИ)

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

1.3.6. Прочитать послание после того, как оно будет расшифровано получателем

1.3.6.1. Скопировать сообщение с жесткого диска или из виртуальной памяти компьютера (ИЛИ)

1.3.6.2. Копировать сообщение с резервной копии, хранящейся на магнитной ленте (ИЛИ)

1.3.6.3. Контроль сетевого трафика (ИЛИ)

1.3.6.4. Использовать средства приема электромагнитного излучения для считывания сообщения, выведенного на экран (ИЛИ)

1.3.6.5. Получение сообщения с устройств вывода

1.3.6.5.1. Получить текст с бумажной распечатки

1.3.6.5.2. Получить текст с фоточувствительного барабана принтера

1.3.6.5.3. Подслушать передачу информации с компьютера на принтер

1.3.6.5.4. Получить информацию из памяти принтера.

1.4. Добыть секретный ключ получателя

1.4.1. Разложение на модули RSA или вычисление дискретного логарифма для схемы Эль-Гамаля (ИЛИ)

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

1.4.2. Получить секретный ключ получателя из его связки ключей (ИЛИ)

1.4.2.1. Добыть зашифрованную связку ключей получателя (И)

1.4.2.1.1. Скопировать его с жесткого диска пользователя (ИЛИ)

1.4.2.1.2. Скопировать его резервную копию (ИЛИ)

1.4.2.1.3. Контроль сетевого трафика (ИЛИ)

1.4.2.1.4. Внедрить вирус или закладку для раскрытия копии зашифрованного секретного ключа

Недавно созданный вирус Melissa как раз подходит для такого случая. Существуют и другие возможности: сделать файл открытым для чтения или поместить его в Интернете.

1.4.2.2. Расшифровать секретный ключ

1.4.2.2.1. Взломать зашифрованное с помощью алгоритма IDEA сообщение (ИЛИ)

1.4.2.2.1.1. Взломать IDEA с помощью атаки «в лоб» (ИЛИ)

IDEA использует 128-битовые ключи. Поэтому успешная атака «в лоб» нереальна.

1.4.2.2.1.2. Криптоанализ IDEA

Эффективные методы криптоанализа IDEA не известны

1.4.2.2.2. Узнать пароль

1.4.2.2.2.1. Контроль клавиатуры в момент введения пользователем пароля (ИЛИ)

1.4.2.2.2.2. Убедить пользователя открыть пароль (ИЛИ)

1.4.2.2.2.3. Использовать программу, запоминающую нажатия на клавиши, когда пользователь вводит пароль (ИЛИ)

1.4.2.2.2.4. Угадать пароль

1.4.3. Контроль памяти получателя (ИЛИ)

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

1.4.4. Внедрить вирус для раскрытия секретного ключа

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

1.4.5. Создать для получателя незащищенную пару ключей (открытый – закрытый)

При рассмотрении схемы сразу становится очевидным, что взлом RSA и IDEA алгоритмов шифровки – не самое выгодное нападение на PGP. Существует множество способов считывания посланий, зашифрованных PGP. Вы можете подсмотреть изображение на экране, когда получатель расшифровывает и читает послание (используя троянского коня вроде Back Orifice, приемник TEMPEST или скрытую камеру), завладеть секретным ключом, после того как пользователь введет пароль (с помощью Back Orifice или специального компьютерного вируса), получить пароль (с помощью программы, запоминающей ввод с клавиатуры, приемника TEMPEST или Back Orifice) или попытаться овладеть паролем «в лоб» (это будет в меньшей степени энтропией, чем генерировать 128-битовые ключи IDEA). Выбор алгоритма и длина ключа – наименее существенные вещи из тех, которые могут сокрушить всю систему безопасности PGP.

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

Дерево атак для чтения сообщения электронной почты

Задача: прочитать определенное сообщение электронной почты, посланное с одного компьютера, использующего Windows 98, на другой.

1. Убедить отправителя показать письмо (ИЛИ)

1.1. Подкуп

1.2. Шантаж

1.3. Принуждение с помощью угроз

1.4. Обман

2. Прочитать сообщение, когда оно вводится в компьютер (ИЛИ)

2.1. Улавливать электромагнитное излучение экрана компьютера (Мера противодействия: использовать TEMPEST)

2.2. Визуально контролировать экран компьютера

2.3. Контролировать видеопамять

2.4. Контролировать шнур для подключения дисплея

3. Прочитать сообщение, хранящееся на диске отправителя (контрмера: использовать SFS для шифрования данных на жестких дисках) (И)

3.1. Получить доступ к жесткому диску (контрмера: установить замки на все двери и окна)

3.2. Считать файл, защищенный SFS

4. Прочитать сообщение, когда оно пересылается от отправителя к получателю (контрмера: использовать PGP) (И)

4.1. Перехватить сообщение во время пересылки (контрмера: использовать программу шифрования транспортного уровня)

4.2. Прочитать сообщение, зашифрованное PGP

5. Убедить получателя показать сообщение (ИЛИ)

5.1. Подкуп

5.2. Шантаж

5.3. Принуждение с помощью угроз

5.4. Обман

6. Подсмотреть сообщение во время его прочтения (ИЛИ)

6.1. Принимать электромагнитное излучение экрана монитора (контрмера: использовать TEMPEST)

6.2. Следить за изображением на экране

7. Прочитать сообщение, хранящееся на диске получателя (ИЛИ)

7.1. Получить сообщение с жесткого диска после его расшифровки (контрмера: использовать SFS для шифровки данных на диске) (И)

7.1.1. Получить доступ к жесткому диску (контрмера: установить замки на двери и окна)

7.1.2. Считать файл, зашифрованный SFS

7.2. Получить резервную копию расшифрованного сообщения

8. Получить бумажную распечатку сообщения (контрмера: хранить бумажные копии в сейфе) (И)

8.1. Получить доступ к сейфу

8.2. Открыть сейф

9. Украсть компьютер отправителя и попытаться извлечь из него сообщение

10. Украсть компьютер получателя и попытаться извлечь из него сообщение

Создание и использование деревьев атак

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

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

Создав однажды дерево атак и проанализировав значения всех его узлов (эти значения будут меняться со временем, поскольку вы будете уточнять сведения о возможных нападениях), вы сможете использовать эту схему для принятия решений по вопросам безопасности. Значения корневого узла позволяют оценить степень уязвимости цели. Вы сможете определить, уязвима ли система для отдельных видов атак, например распределенной атаки, приводящей к отказу в обслуживании. Вы можете использовать дерево атак для того, чтобы очертить круг допущений, исходя из которых решаются вопросы безопасности системы: например, средства безопасности PGP созданы в предположении, что никто не сможет подкупить программиста[56]. Вы можете оценить последствия изменений в системе или значение вновь обнаруженного слабого места; вычислить новые значения узлов на основе полученной информации и определить, как это влияет на узел, содержащий цель. И наконец, вы можете сравнивать и классифицировать виды нападений по затратам, вероятности успеха и т. д.

Такого рода исследования приводят к удивительному выводу о том, что кажущиеся уязвимыми места на самом деле таковыми не являются. Те, кто используют PGP, обычно беспокоятся о длине ключа: что следует предпочесть – 1024-битовый RSA или 2048-битовый? Схема нападения показывает, что длина ключа RSA не имеет значения. Существует множество других видов нападений, намного более простых, чем взлом открытого ключа: внедрение программы, запоминающей ввод с клавиатуры, изменение программы на жестком диске жертвы. Увеличение длины ключа с 1024 до 2048 бит нисколько не усложняет дерево атак; гораздо более опасны нападения, направленные на преодоление мер компьютерной безопасности. Деревья атак позволяют оценить перспективы системы в целом.

Дерево атак обладает еще одним ценным свойством: содержащиеся в нем сведения остаются актуальны в дальнейшем. Однажды построив дерево атак PGP, вы сумеете использовать его в любой другой ситуации, когда речь идет о PGP. Эта схема может быть включена в другую, более обширную. Например, на рис. 21.2 представлена схема, целью которой является прочтение определенного письма, посланного с одного компьютера, использующего Windows 98, на другой. Если вы посмотрите на терминальные узлы дерева, то заметите, что целые деревья атак на PGP и на сейф вставлены в этот план нападения.

Такая возможность расширения схемы означает, что вам не обязательно знать все на свете. Если вы используете PGP, то вам не нужно знать детали дерева атак на PGP; все, что вы должны знать, – это значения корневого узла. Если вы эксперт в области компьютерной безопасности, вам не обязательно быть в курсе, насколько трудно взломать сейф определенной модели, нужна оценка значений корневого узла. Создав однажды библиотеку деревьев атак на определенные виды компьютерных программ, дверные и оконные замки, на сетевые протоколы безопасности и т п., вы можете затем использовать их где угодно.