Разработка стандарта DES (Data Encryption Standard)
В начале 70-х годов невоенные криптографические исследования были крайне редки. В этой области почти не публиковалось исследовательских работ. Большинство людей знали, что для своих коммуникаций военные используют специальную аппаратуру кодирования, но мало кто разбирался в криптографии как в науке. Заметными знаниями обладало Агентство национальной безопасности (National Security Agency, NSA), но оно даже не признавало публично своего собственного существования.
Покупатели не знали, что они покупают. Многие небольшие компании изготавливали и продавали криптографическое оборудование, преимущественно заокеанским правительствам. Все это оборудование отличалось друг от друга и не могло взаимодействовать. Никто не знал, действительно ли какое-либо из этих устройств безопасно, не существовало независимой организации, которая засвидетельствовала бы безопасность. Как говорилось в одном из правительственных докладов [441]:
Влияние соответствующего изменения ключей и принципов работы на реальную мощь аппаратуры шифрования/дешифрирования было (и фактически осталось) неизвестным почти всем покупателям, и было очень трудно принимать обоснованные решения о генерации ключей, правильном диалоговом или автономном режиме, и т.д., которые отвечали бы потребностям покупателей в безопасности.
В 1972 году Национальное бюро стандартов (National Bureau of Standards, NBS), теперь называющееся Национальным институтом стандартов и техники (National Institute of Standards and Technology, NIST), выступило инициатором программы защиты линий связи и компьютерных данных. Одной из целей этой программы была разработка единого, стандартного криптографического алгоритма. Этот алгоритм мог бы быть проверен и сертифицирован, а использующие его различные криптографические устройства могли бы взаимодействовать. Он мог бы, к тому же, быть относительно недорогим и легко доступным.
15 мая 1973 года в Federal Register NBS опубликовало требования к криптографическому алгоритму, который мог бы быть принят в качестве стандарта. Было приведено несколько критериев оценки проекта:
-
Алгоритм должен обеспечивать высокий уровень безопасности.
-
Алгоритм должен быть полностью определен и легко понятен.
-
Безопасность алгоритма должна основываться на ключе и не должна зависеть от сохранения в тайне самого алгоритма.
-
Алгоритм должен быть доступен всем пользователям.
-
Алгоритм должен позволять адаптацию к различным применениям.
-
Алгоритм должен позволять экономичную реализацию в виде электронных приборов.
-
Алгоритм должен быть эффективным в использовании.
-
Алгоритм должен предоставлять возможности проверки.
-
Алгоритм должен быть разрешен для экспорта.
Реакция общественности показала, что к криптографическому стандарту существует заметный интерес, но опыт в этой области чрезвычайно мал. Ни одно из предложений не удовлетворяло предъявленным требованиям.
27 августа 1972 года в Federal Register NBS опубликовало повторное предложение. Наконец, у Бюро появился подходящий кандидат: алгоритм под именем Люцифер, в основе которого лежала разработка компании IBM, выполненная в начале 70-х (см. раздел 13.1). В IBM существовала целая команда криптографов, работавшая в Кингстоне (Kingston) и Йорктаун Хайтс (Yorktown Heights), в которую входили Рой Адлер (Roy Adler), Дон Копперсмит (Don Coppersmith), Хорст Фейстель (Horst Feistel), Эдна Кроссман (Edna Crossman), Алан Конхейм (Alan Konheim), Карл Майер (Carl Meyer), Билл Ноц (Bill Notz), Линн Смит (Lynn Smith), Уолт Тачмен (Walt Tuchman) и Брайант Такерман (Bryant Tuckerman).
Несмотря на определенную сложность алгоритм был прямолинеен. Он использовал только простые логические операции над небольшими группами битов и мог быть довольно эффективно реализован в аппаратуре.
NBS попросило NSA помочь оценить безопасность алгоритма и определить, подходит ли он для использования в качестве федерального стандарта. IBM уже получила патент [514], но желала сделать свою интеллектуальную собственность доступной для производства, реализации и использования другими компаниями. В конце концов, NBS и IBM выработали соглашение, по которому NBS получало неисключительную, бесплатную лицензию изготавливать, использовать и продавать устройства, реализующие этот алгоритм.
Наконец, 17 марта 1975 года в Federal Register NBS опубликовало и подробности алгоритма, и заявление IBM о предоставлении неисключительной, бесплатной лицензии на алгоритм, а также предложило присылать комментарии по поводу данного алгоритма [536]. В другой заметке в Federal Register, 1 августа 1975 года, различным организациям и широкой публике снова предлагалось прокомментировать предложенный алгоритм.
И комментарии появились [721, 497, 1120). Многие настороженно относились к участию "невидимой руки" NSA в разработке алгоритма. Боялись, что NSA изменит алгоритм, вставив в него потайную дверцу. Жаловались, что NSA уменьшило длину ключей с первоначальных 128 битов до 56 (см. раздел 13.1). Жаловались на внутренние режимы работы алгоритма. Многие соображения NSA стали ясны и понятны в начале 90-х, но в 70-х они казались таинственными и тревожными.
В 1976 году NBS провело два симпозиума по оценке предложенного стандарта. На первом обсуждались математика алгоритма и возможность потайной дверцы [1139]. На втором - возможности увеличения длины ключа алгоритма [229]. Были приглашены создатели алгоритма, люди, оценивавшие алгоритм, разработчики аппаратуры, поставщики, пользователи и критики. По всем отчетам симпозиумы были весьма оживленными [1118].
Несмотря на критику Стандарт шифрования данных DES 23 ноября 1976 года был принят в качестве федерального стандарта [229] и разрешен к использованию на всех несекретных правительственных коммуникациях. Официальное описание стандарта, FIPS PUB 46, "Data Encryption Standard", было опубликовано 15 января 1977 года и вступило в действие шестью месяцами позже [1140]. FIPS PUB 81, " Modes of DES Operation" (Режимы работы DES), было опубликовано в 1980 году [1143]. FIPS PUB 74, "Guidelines for Implementing and Using the NBS Data Encryption Standard" (Руководство по реализации и использованию Стандарта шифрования данных NBS), появилось в 1981 году [1142]. NBS также опубликовало FIPS PUB 112, специфицируя DES для шифрования паролей [1144], и FIPS PUB 113, специфицируя DES для проверки подлинности компьютерных данных [1145]. (FIPS обозначает Federal Information Processing Standard.)
Эти стандарты были беспрецедентными. Никогда до этого оцененный NSA алгоритм не был опубликован. Возможно эта публикация была следствием непонимания, возникшего между NSA и NBS. NSA считало, что DES будет реализовываться только аппаратно. В стандарте требовалась именно аппаратная реализация, но NBS опубликовало достаточно информации, чтобы можно было создать и программную реализацию DES. Не для печати NSA охарактеризовало DES как одну из своих самых больших ошибок. Если бы Агентство предполагало, что раскрытые детали позволят писать программное обеспечение, оно никогда бы не согласилось на это. Для оживления криптоанализа DES сделал больше, чем что-либо другое. Теперь для исследования был доступен алгоритм, который NSA объявило безопасным. Не случайно следующий правительственный стандарт алгоритма, Skipjack (см. раздел 13.12.), был засекречен.