Этот специфический «закон», строго говоря, не является законом в определенном ранее смысле. Теоретически возможно существование безопасного криптографического алгоритма, разработанного в частном порядке, незаметно от других. Такое может быть, но только не в нашем случае. Криптографический алгоритм можно полагать безопасным только после продолжительного открытого обсуждения алгоритма и многочисленных неудачных попыток взлома алгоритма хорошими криптографами.
Брюс Шнейер (Bruce Schneier) часто заявлял, что любой может изобрести криптографический алгоритм, но не каждый – взломать его. Программисты и криптографы знают это очень хорошо. Программисты не могут эффективно протестировать собственную программу, точно так же как криптографы не могут эффективно оценить свой криптоалгоритм. Криптограф должен знать все возможные типы атак и результат их воздействия на его алгоритм. То есть он должен знать типы известных атак и атак, которые могут появиться в будущем. Ясно, что никакой криптограф не может предсказать будущее, но некоторые из них способны изобрести криптостойкий в новых условиях алгоритм в силу своего предвидения или догадки о некоторых возможных типах атак в будущем.
В прошлом это было показано уже не один раз. «Криптограф» изобретает новый алгоритм. Для новичка это уже прекрасно. Изобретя алгоритм, «криптограф» может следующее: использовать его конфиденциально, опубликовать детали алгоритма или на основе алгоритма выпустить коммерческий продукт. В случае опубликования алгоритма он, за редким исключением, часто взламывается достаточно быстро. А как насчет других двух вариантов? Если алгоритм не обеспечивает безопасности в момент его опубликования, то он небезопасен в любое время. Что еще можно добавить о личной безопасности автора или его клиентов?
Почему так получается, что почти все новые алгоритмы терпят неудачу? Один ответ состоит в том, что трудно получить хороший криптоалгоритм. Другой – сказывается недостаток соответствующих знаний. На всех хороших криптографов, которые могли бы раскрыть чей-либо алгоритм, приходится намного больше людей, желающих попробовать его написать. Авторам в области криптографии нужна богатая практика, чтобы научиться созданию хороших криптографических средств. Это означает, что им нужно раскрывать свои алгоритмы много раз, чтобы они смогли научиться на своих ошибках. Если они не смогут найти людей, взломавших их криптосредства, доказать их высокое качество становится тяжелее. Худшее, что может произойти, – это когда некоторые авторы сделают вывод о безопасности криптоалгоритма только потому, что никто его не раскрыл (вероятно, из-за недостатка времени или интереса).
В качестве примера предвидения будущего рассмотрим стандарт шифрования DES. В 1990 году Ели Бихам (Eli Biham) и Ади Шамир (Adi Shamir), два всемирно известных криптографа, обнаружили нечто, что впоследствии они назвали дифференциальным криптоанализом (differential cryptanalysis). Это произошло спустя некоторое время после изобретения DES^ и принятия его в качестве стандарта. Естественно, они испытывали новые методы дифференциального криптоанализа на DES. У них была возможность усовершенствовать атаку по типу простой грубой силы (simple brute-force attack), но при этом выяснилось, что эти улучшения не приводят к принципиальному уменьшению времени взлома DES. Оказалось, что структура блоков подстановки s-boxes в DES была почти идеальна для защиты от дифференциального криптоанализа. Казалось, что кто-то, кто разрабатывал DES, знал или подозревал о технике дифференциального криптоанализа.
Очень немногие криптографы способны изобрести алгоритмы такого качества. Как правило, они же могут и взломать хорошие алгоритмы. Авторы слышали, что несколько криптографов поддерживают попытки взлома алгоритмов других авторов, рассматривая это как способ обучения написания хороших алгоритмов. Эти мирового класса криптографы, допуская, что их алгоритмы могут быть взломаны, знакомят криптографический мир со своими работами для экспертизы. И даже в этом случае требуется время для корректной оценки. Некоторые новые алгоритмы в процессе работы используют передовые методы. В этом случае для их взлома может потребоваться новаторская техника атак, на разработку которой нужно дополнительное время. Кроме того, большинство квалифицированных специалистов в области криптографии пользуются большим спросом и весьма заняты, поэтому у них нет времени на рассмотрение каждого опубликованного алгоритма. В некоторых случаях алгоритм должен был бы, казалось, стать популярным хотя бы потому, что на его проверку потрачено значительное время. Все эти шаги по тестированию алгоритмов требуют времени – иногда на это уходят годы. Поэтому даже лучший криптограф иногда посоветует не доверять своему новому алгоритму, пока он не выдержит тщательного длительного испытания. Время от времени даже лучшие в мире криптографы изобретают слабые криптографические средства.
В настоящее время правительство Соединенных Штатов решило заменить DES новым стандартом криптографического алгоритма. Новый стандарт будет называться улучшенным стандартом шифрования AES (Advanced Encryption Standard), и национальный институт стандартов и технологии NIST (National Institute of Standards and Technology) выбрал алгоритм «рейндолл» (Rijndael) в качестве основы AES алгоритма. (Принят Министерством торговли США 12 октября 2000 года вместо устаревшего стандарта DES.) Большинство лучших мировых криптографов представили на рассмотрение свои работы на конференции продолжительностью в несколько дней. Несколько алгоритмов во время конференции были раскрыты другими криптографами.
Авторы не смогут научить читателя правилам вскрытия реальных криптографических средств. В рамках одной книги это невозможно. Хотя авторы приготовили отдельные забавные криптографические упражнения. В мире много людей, которые хотели бы создавать и продавать криптографические средства только потому, что они считают себя хорошими криптографами. Зачастую разработчики понимают невозможность использования существующих криптографических средств из-за недостатков отдельных ключей. В этом случае для скрытия своих действий они могут выбрать что-то более простое, но тогда взломать результаты их работы можно гораздо быстрее. (В главе 6 будет показано, как это сделать.)
Итак, суть этого закона заключается не в том, чтобы на его основе что-то сделать, а скорее всего в том, чтобы акцентировать внимание на этом вопросе. Вы должны применять данный закон для оценки характеристик криптографических средств. Очевидное решение заключается в использовании известных криптографических алгоритмов. Но при этом обязательно следует проводить максимально возможную проверку их разумного использования. Например, какой прок в применении алгоритма 3DES, если использовать только семисимвольный пароль? Большинство выбираемых пользователями паролей использует лишь несколько бит из возможного количества бит на букву. В этом случае семь символов гораздо меньше 56 бит.