Выбрать главу

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

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

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

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

Глава 22

Испытание и верификация программных продуктов

Мы уже неоднократно затрагивали тему испытания средств безопасности. В главе 7 обсуждался выбор криптографических примитивов. Там же была выдвинута идея, что наилучшим способом проверки надежности криптографии является открытый криптоанализ, проводимый в течение многих лет. В главе 8 мы рассматривали различные стандарты безопасности компьютера – Оранжевую Книгу и Общие Критерии, а также проверку их соответствия этим стандартам. В главе 13 обсуждались надежность программного обеспечения и то, как ошибки оборачиваются уязвимостью. Испытания позволяют проверить работоспособность системы безопасности: одно дело смоделировать угрозы, разработать политику безопасности и применить меры противодействия, но будут ли эти меры работать на самом деле? Несомненно, вы уже приобрели солидный брандмауэр или антивирусную программу, или VPN (виртуальную частную сеть), или систему защиты от мошенничества для платного телевидения, или систему биометрического контроля, или основанную на использовании смарт-карт систему расчетов, или программу шифрования электронной почты и т. п., но достаточно ли прочна их защита? Большинство программных продуктов ненадежны, и причина кроется в недостаточности тестирования.

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

вернуться

56

Создатель PGP Филип Зиммерман в руководстве пользователя к программе говорит, что «защита от подобных нападений попадает под категорию общих мер защиты от вирусных инфекций». PGP была разработана для однопользовательского персонального компьютера, а главный ключ к работе с PGP – доверие пользователя к самому себе. – Примеч. ред.