Секретность, безопасность, неясность


Основное правило криптографии – использовать открытые и опубликованные алгоритмы и протоколы. Впервые этот главный принцип был сформулирован в 1883 году Агустом Кирхгофом: в проработанной криптографической системе единственным секретом остаётся ключ, сам же алгоритм не должен быть засекречен. Современные криптологи полностью приняли этот принцип, называя всё, что ему не соответствует, "безопасностью через неясность"[link1]. Любая система, держащая в целях безопасности свои алгоритмы в секрете, просто игнорируется сообществом и обзывается "ханаанским бальзамом"[link2], а то и чем-нибудь похуже. Это оправданно для криптографии, однако общая связь между секретностью и безопасностью несколько сложнее, чем постулирует принцип Кирхгофа.

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

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

Преимущества, о которых идёт речь, – это прежде всего предметный анализ. Криптография сложна, и практически все криптографические системы ненадёжны. Научному сообществу требуются годы, чтобы как следует изучить конкретную систему. Подавляющее большинство надёжных криптосистем разрабатывались на основе открытых опубликованных алгоритмов и протоколов. И мне трудно вспомнить хотя бы одну криптографическую систему, разрабатывавшуюся закрыто, которая, будучи в конце концов опубликованной, не содержала бы ошибок и недоработок, выявленных криптологическим сообществом. Так было с алгоритмом Skipjack и с протоколом Clipper, двумя детищами АНБ[link3].

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

Это правило можно обобщить и к другим типам систем, но не всегда понятно, как это сделать. Чем меньше секретов, тем безопаснее система. К сожалению, не всегда очевидно, какие секреты должны оставаться секретами. Есть ли смысл у авиакомпании опубликовать правила, по которым происходит выбор пассажиров для более тщательного досмотра перед посадкой в самолёт? Есть ли смысл у военных опубликовать свою методологию по выбору мест для закладки наземных мин? Есть ли смысл у корпорации опубликовать топологию своей интрасети, или список защитной аппаратуры, или правила межсетевых экранов? Где секретность – требование безопасности, а где она лишь вносит неясность?

Существует спектр требований безопасности, и различные системы занимают разные места в этом спектре. Криптография, вследствие своей математической природы, позволяет разработчикам "сжать" все секреты, необходимые для защиты, в один единственный ключ (или, в некоторых случаях, в несколько ключей). С другими системами всё не так просто. Например, авиационная безопасность содержит десятки потенциальный секретов: как пройти на взлётное поле, как попасть в кабину пилотов, как устроена дверь в кабину, каковы процедуры досмотра багажа пассажиров, каковы точные настройки миноискателя или ПО автопилота и т.д. Безопасность системы авиаперевозок может быть подорвана, если любой из этих секретов окажется раскрыт.

Это значит, что авиационная безопасность "хрупка". Одной группе людей известно, как устроена защита двери в кабину пилотов. Другая группа занималась программированием критериев досмотра в системе и ПО бронирования авиабилетов. Третья группа разрабатывала различное оборудование для досмотра пассажиров. Четвёртой известно, как попасть на взлётное поле и провести техническую подготовку самолёта. Система может быть подвергнута атаке с любого из этих векторов. Но нет никакого ясного способа, чтобы применить Принцип Кирхгофа к авиабезопасности: существует слишком много секретов и нет возможности "сжать" их в единый "ключ". Это не значит, что невозможно обезопасить авиаперевозки, просто этого гораздо труднее достичь, поскольку "хрупкость" является внутреприсущим качеством авиационной безопасности.

Сходным образом можно проанализировать и другие системы. Разумеется, точное расположение наземных мин является частью "ключа" и должно храниться в тайне. Алгоритм закладки мин не является в той же степени секретом, но сохранение и его в тайне повысит надёжность всей системы. В компьютерной сети точные настройки брандмауэров и IDS более секретны, чем местоположение этих устройств в топологии сети, что, в свою очередь, более секретно, чем марки этих устройств. Системные администраторы должны решать, что конкретно хранить в тайне, а о чём можно не волноваться. Но чем больше обязательных секретов, тем более труднодостижимой и хрупкой окажется безопасность.

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

Принимая решения об иных системах безопасности важно учитывать наличие или отсутствие двух аналогичных факторов. Представьте, что в кабине пилотов есть тревожная кнопка. Допустим, что её система была задумана так, чтобы опубликование информации о ней не повлияло на общую безопасность. Стоит ли правительству опубликовать эту информацию? Ответ зависит от того, существует ли открытое сообщество профессионалов, которые могут критически проанализировать дизайн тревожных кнопок. Если такого сообщества нет, то публикация не будет иметь смысла.

Другой пример – это алгоритмы наведения ракет. Будет ли лучше для правительства опубликовать эти алгоритмы? Я думаю, что ответ здесь "нет", ведь системе недостаёт упомянутого выше второго фактора. Нет достаточно широкого сообщества людей, которые получат выгоду от этой информации, но есть потенциальное сообщество врагов, которые получат немалую выгоду от этой информации. Так что правительству будет правильнее хранить эту информацию под грифом "секретно" и раскрывать её только тем, кому её действительно следует знать.

Поскольку требования к секретности в области безопасности редко делятся только на чёрное и белое, публикация постепенно становится вопросом компромисса. Насколько выгоды от секретности перевешивают выгоды от опубликования? Весьма непросто принять решение, но само решение достаточное простое. Исторически АНБ не публиковало свои криптографические разработки. Но не потому, что режим секретности повышал безопасность, а потому, что они не хотели давать своим врагам по "холодной войне" преимущества своего собственного опыта.

Принцип Кирхгофа сводится к следующему направляющему разработки: минимизируйте количество секретов в своей системе безопасности. До той степени, до которой вы сможете этого добиться, вы повысите надёжность своей системы. В той степени, в которой вам это не удастся, вы повысите её хрупкость. Сокрытие деталей системы – это отдельное решение по защите системы независимо от её опубликования; оно зависит от наличия сообщества, которое может оценить эти детали, и на соотношении сообществ "своих" и "чужих", которые могут воспользоваться этими деталями для защиты других систем.

© 2002 Брюс Шнайер[link4]
Перевод © 2005 SATtva[link5]


Ссылки
[link1] http://www.pgpru.com/biblioteka/slovarj/%C1%E5%E7%EE%EF%E0%F1%ED%EE%F1%F2%FC%D7%E5%F0%E5%E7%CD%E5%FF%F1%ED%EE%F1%F2%FC

[link2] http://www.pgpru.com/biblioteka/statji/hanaanskijjbaljzam

[link3] http://www.pgpru.com/biblioteka/slovarj/NSA

[link4] http://www.schneier.com/crypto-gram.html

[link5] http://www.pgpru.com/proekt/poljzovateli?profile=sattva