Введение

Ранний неклассифицированный симметричный блочный шифр DES является небезопасным из-за относительно короткого 56-битного размера ключа. В январе 1999 года distributed.net и Electronic Frontier Foundation совместно публично взломали ключ DES за 22 часа 15 минут (см.). Существуют также аналитические результаты, демонстрирующие теоретические слабости шифра, хотя они непрактичны. Считается, что алгоритм практически безопасен в форме Triple DES, хотя существуют теоретические атаки. Этот шифр был вытеснен Advanced Encryption Standard (AES). DES был отозван как стандарт Национальным институтом стандартов и технологий. Примерно в то же время инженер Мохамед Аталла в 1972 году основал Atalla Corporation и разработал первый аппаратный модуль безопасности (HSM), так называемый "Atalla Box", который был коммерциализирован в 1973 году. Он защищал автономные устройства с помощью безопасного PIN-кода, генерирующего ключ, и имел коммерческий успех. Банки и кредитные компании опасались, что Atalla будет доминировать на рынке, что стимулировало разработку международного стандарта шифрования. Аталла был ранним конкурентом IBM на банковском рынке, и сотрудники IBM, работавшие над стандартом DES, упоминали его как источник влияния. IBM 3624 позже приняла аналогичную систему проверки PIN-кода, как и более ранняя система Atalla. 15 мая 1973 года, после консультаций с NSA, NBS запросила предложения по шифру, который соответствовал бы строгим критериям проектирования. Ни одно из представленных предложений не подошло. 27 августа 1974 года был сделан второй запрос. На этот раз IBM представила кандидата, который был признан приемлемым — шифр, разработанный в период 1973–1974 годов на основе более раннего алгоритма, шифра Люцифера Хорста Файстеля. В команду IBM, занимавшуюся разработкой и анализом шифров, входили Файстель, Уолтер Тухман, Дон Копперсмит, Алан Конхайм, Карл Мейер, Майк Матиас, Рой Адлер, Эдна Гроссман, Билл Нотц, Линн Смит и Брайант Такерман.

Алгоритм как стандарт

Несмотря на критику, DES был одобрен в качестве федерального стандарта в ноябре 1976 года и опубликован 15 января 1977 года как FIPS PUB 46, разрешенный для использования со всеми неклассифицированными данными. Впоследствии он был подтвержден в качестве стандарта в 1983, 1988 (пересмотрен как FIPS 46 1), 1993 (FIPS 46 2) и вновь в 1999 (FIPS 46 3), последний из которых предписывал использование "Triple DES" (см. ниже). 26 мая 2002 года DES был окончательно заменен стандартом Advanced Encryption Standard (AES) по результатам открытого конкурса. 19 мая 2005 года FIPS 46 3 был официально отозван, но NIST одобрил Triple DES до 2030 года для конфиденциальной правительственной информации. Алгоритм также специфицирован в ANSI X3.92 (в настоящее время X3 известен как INCITS, а ANSI X3.92 как ANSI INCITS 92), NIST SP 800 67 (в качестве компонента TDEA). Еще одна теоретическая атака, линейный криптоанализ, была опубликована в 1994 году, но именно взломщик DES, разработанный Electronic Frontier Foundation в 1998 году, продемонстрировал практическую возможность атаки на DES и подчеркнул необходимость в замене алгоритма. Эти и другие методы криптоанализа рассматриваются более подробно в дальнейшем в этой статье. Введение DES считается катализатором для академического изучения криптографии, в особенности методов взлома блочных шифров. Согласно ретроспективному анализу NIST о DES, можно сказать, что DES "дал толчок" невоенному изучению и разработке алгоритмов шифрования. В 1970-х годах криптографов было очень мало, за исключением тех, кто работал в военных или разведывательных организациях, и академических исследований в области криптографии проводилось немного. В настоящее время существует множество активных академических криптологов, математических факультетов с сильными программами в области криптографии, а также коммерческих компаний и консультантов по информационной безопасности. Целое поколение криптоаналитиков получило опыт, анализируя (то есть пытаясь "взломать") алгоритм DES. По словам криптографа Брюса Шнайера, "DES сделал больше для активизации области криптоанализа, чем что-либо другое. Теперь появился алгоритм для изучения". Поразительная доля открытой литературы по криптографии в 1970-х и 1980-х годах была посвящена DES, и DES является эталоном, с которым сравниваются все алгоритмы симметричного шифрования, разработанные впоследствии.

Хронология

Дата Год Событие 15 мая 1973 NBS публикует первый запрос на стандартный алгоритм шифрования 27 августа 1974 NBS публикует второй запрос на алгоритмы шифрования 17 марта 1975 DES публикуется в Федеральном реестре для публичного обсуждения Август 1976 Первый семинар, посвященный DES Сентябрь 1976 Второй семинар, посвященный математическим основам DES Ноябрь 1976 DES утвержден в качестве стандарта 15 января 1977 DES опубликован как стандарт FIPS, FIPS PUB 46 Июнь 1977 Диффи и Хеллман утверждают, что шифр DES может быть взломан методом полного перебора. 19 мая 2005 NIST отзывает FIPS 46-3 (см. Федеральный реестр, том 70, номер 96) Апрель 2006 Параллельная машина COPACOBANA на базе FPGA, разработанная университетами Бохума и Киля (Германия), взламывает DES за 9 дней при стоимости аппаратного обеспечения 10 000 долларов США. В течение года улучшения программного обеспечения сократили среднее время до 6,4 дней. Ноябрь 2008 Машина RIVYERA, преемник COPACOBANA, сократила среднее время до менее чем одного дня. Август 2016 Программное обеспечение для взлома паролей с открытым исходным кодом hashcat добавило поддержку поиска методом полного перебора для DES на универсальных графических процессорах. Тестирование показало, что одна видеокарта Nvidia GeForce GTX 1080 Ti стоимостью 1000 долларов США в среднем восстанавливает ключ за 15 дней (полный исчерпывающий поиск занимает 30 дней). Системы, построенные на восьми видеокартах GTX 1080 Ti, могут восстановить ключ в среднем менее чем за 2 дня. Июль 2017 Атака с использованием выбранного открытого текста и радужной таблицы может восстановить ключ DES для одного конкретного выбранного открытого текста 1122334455667788 за 25 секунд. Для каждого открытого текста необходимо вычислять новую радужную таблицу. Ограниченный набор радужных таблиц доступен для загрузки.

Описание

DES — это архетипический блочный шифр — алгоритм, который принимает строку битов открытого текста фиксированной длины и преобразует её посредством серии сложных операций в другую строку битов шифротекста той же длины. В случае DES размер блока составляет 64 бита. DES также использует ключ для настройки преобразования, так что расшифровка предположительно может быть выполнена только теми, кто знает конкретный ключ, использованный для шифрования. Ключ номинально состоит из 64 бит; однако, только 56 из них фактически используются алгоритмом. Восемь бит используются исключительно для проверки чётности и затем отбрасываются. Следовательно, эффективная длина ключа составляет 56 бит. Ключ номинально хранится или передаётся в виде 8 байтов, каждый с нечётной чётностью. Согласно ANSI X3.92 1981 (теперь известный как ANSI INCITS 92–1981), разделу 3.5:

Один бит в каждом 8-битном байте КЛЮЧА может быть использован для обнаружения ошибок при генерации, распространении и хранении ключей. Биты 8, 16, и 64 предназначены для обеспечения нечётной чётности каждого байта. Как и другие блочные шифры, DES сам по себе не является надёжным средством шифрования, а должен использоваться в режиме работы. FIPS 81 определяет несколько режимов для использования с DES. Дополнительные комментарии по использованию DES содержатся в FIPS 74. Расшифровка использует ту же структуру, что и шифрование, но с ключами, используемыми в обратном порядке. (Это даёт преимущество в том, что одно и то же аппаратное или программное обеспечение может использоваться в обоих направлениях.)

Общая структура

Общая структура алгоритма показана на рисунке 1: она состоит из 16 идентичных стадий обработки, называемых раундами. Также присутствуют начальная и конечная перестановки, называемые IP и FP, которые являются обратными друг другу (IP "отменяет" действие FP, и наоборот). IP и FP не имеют криптографического значения, но были включены для упрощения загрузки и выгрузки блоков в аппаратное обеспечение на основе 8-битных процессоров середины 1970-х годов. Перед основными раундами блок разделяется на две 32-битные половины и обрабатывается попеременно; такое перекрестное чередование известно как схема Фейстеля. Структура Фейстеля обеспечивает высокую степень сходства процессов шифрования и расшифрования – единственное различие заключается в том, что при расшифровании подключи применяются в обратном порядке. Остальная часть алгоритма идентична. Это значительно упрощает реализацию, особенно аппаратную, поскольку не требуется разрабатывать отдельные алгоритмы для шифрования и расшифрования. Символ ⊕ обозначает операцию исключающего ИЛИ (XOR). Функция F перемешивает половину блока вместе с частью ключа. Результат работы функции F затем объединяется с другой половиной блока, после чего половины меняются местами перед следующим раундом. После завершения последнего раунда половины снова меняются местами; это особенность структуры Фейстеля, обеспечивающая сходство процессов шифрования и расшифрования.

Основная схема

На рисунке 3 изображен график формирования ключей для шифрования – алгоритм, генерирующий подключи. Изначально из исходных 64 бит ключа выбираются 56 бит с помощью Permuted Choice 1 (PC 1), а оставшиеся восемь бит либо отбрасываются, либо используются как биты проверки четности. Затем эти 56 бит разделяются на две 28-битные половины, и каждая половина обрабатывается независимо. В последующих раундах обе половины циклически сдвигаются влево на один или два бита (определяется для каждого раунда), после чего с помощью Permuted Choice 2 (PC 2) выбираются 48 бит подключа – 24 бита из левой половины и 24 бита из правой. Циклические сдвиги (обозначенные "<<<" на диаграмме) обеспечивают использование различного набора битов в каждом подключе; каждый бит используется примерно в 14 из 16 подключей. График формирования ключей для расшифровки аналогичен, за исключением того, что подключи располагаются в обратном порядке по сравнению с шифрованием. Сам процесс остается таким же, как при шифровании. Одни и те же 28 бит передаются во все блоки циклического сдвига.

Псевдокод

Ниже представлен псевдокод алгоритма DES.

Безопасность и криптоанализ

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

Нападение грубой силы

Для любого шифра наиболее базовый метод атаки — это метод грубой силы, то есть перебор всех возможных ключей по очереди. Длина ключа определяет количество возможных ключей и, следовательно, реализуемость такого подхода. В отношении DES вопросы об адекватности размера ключа возникли на ранней стадии, еще до принятия стандарта, и именно небольшой размер ключа, а не теоретический криптоанализ, обусловил необходимость в замене алгоритма. В результате обсуждений с участием внешних консультантов, включая АНБ, размер ключа был уменьшен с 256 до 56 бит, чтобы его можно было разместить на одном чипе. В академических кругах было предложено несколько проектов машин для взлома DES. В 1977 году Диффи и Хеллман предложили машину стоимостью около 20 миллионов долларов США, способную найти ключ DES за один день. К 1993 году Винер предложил машину для поиска ключей стоимостью 1 миллион долларов США, которая могла бы найти ключ за 7 часов. Однако ни одно из этих ранних предложений не было реализовано, или, по крайней мере, о реализации не было публично объявлено. Практическая уязвимость DES была продемонстрирована в конце 1990-х годов. В 1997 году RSA Security спонсировала серию конкурсов, предлагая приз в размере 10 000 долларов США первой команде, которая взломает сообщение, зашифрованное DES, для конкурса. Этот конкурс выиграл проект DESCHALL, возглавляемый Роком Версером, Мэттом Кертином и Джастином Долске, используя незадействованные вычислительные ресурсы тысяч компьютеров в Интернете. Возможность быстрого взлома DES была продемонстрирована в 1998 году, когда Фонд электронных рубежей (EFF), группа по защите гражданских прав в киберпространстве, построила специализированный взломщик DES стоимостью около 250 000 долларов США (см. EFF DES cracker). Их целью было показать, что DES уязвим как на практике, так и в теории: «Многие люди не поверят правде, пока не увидят ее своими глазами. Показ им физической машины, способной взломать DES за несколько дней, — единственный способ убедить некоторых людей в том, что они действительно не могут доверять свою безопасность DES». Машина перебрала ключ чуть более чем за два дня вычислений. Следующим подтвержденным взломщиком DES стала машина COPACOBANA, построенная в 2006 году командами университетов Бохума и Киля (Германия). В отличие от машины EFF, COPACOBANA состоит из коммерчески доступных, переконфигурируемых интегральных схем. 120 этих полевых программируемых вентильных матриц (FPGA) типа XILINX Spartan 3 1000 работают параллельно. Они сгруппированы в 20 модулей DIMM, каждый из которых содержит 6 FPGA. Использование переконфигурируемого оборудования делает машину применимой и к другим задачам взлома кодов. Один из наиболее интересных аспектов COPACOBANA — это ее стоимость. Одну машину можно построить примерно за 10 000 долларов США. Снижение стоимости примерно в 25 раз по сравнению с машиной EFF является примером постоянного улучшения цифрового оборудования. С учетом инфляции за 8 лет получается еще большее улучшение — примерно в 30 раз. С 2007 года SciEngines GmbH, компания, выделившаяся из двух партнеров проекта COPACOBANA, совершенствовала и разработала преемников COPACOBANA. В 2008 году их COPACOBANA RIVYERA сократила время взлома DES до менее чем одного дня, используя 128 Spartan 3 5000. SciEngines RIVYERA установила рекорд по взлому DES методом грубой силы, используя 128 FPGA Spartan 3 5000. Их модель 256 Spartan 6 LX150 еще больше сократила это время. В 2012 году Дэвид Хултон и Мокси Марлинспайк объявили о системе с 48 FPGA Xilinx Virtex 6 LX240T, каждая из которых содержит 40 полностью конвейеризованных ядер DES, работающих на частоте 400 МГц, что обеспечивает общую производительность 768 гигаключей/сек. Система может исчерпывающе перебрать все 56-битное пространство ключей DES примерно за 26 часов, и эта услуга предлагается онлайн за плату.

Атаки быстрее, чем грубая сила

Известны три атаки, способные взломать все 16 раундов DES с меньшей сложностью, чем полный перебор: дифференциальный криптоанализ (DC), такие атаки иногда называют сертификационными уязвимостями. Дифференциальный криптоанализ был повторно открыт в конце 1980-х годов Эли Бихамом и Ади Шамиром; ранее он был известен компаниям IBM и АНБ и хранился в секрете. Для взлома всех 16 раундов дифференциальный криптоанализ требует 247 выбранных открытых текстов. DES был разработан с учетом устойчивости к DC. Линейный криптоанализ был открыт Мицуру Мацуи и требует 243 известных открытых текста (Matsui, 1993); метод был реализован (Matsui, 1994) и стал первым экспериментальным криптоанализом DES, о котором было сообщено. Нет свидетельств того, что DES был специально разработан для защиты от этого типа атак. Обобщение LC – множественный линейный криптоанализ – было предложено в 1994 году (Kaliski и Robshaw) и впоследствии усовершенствовано Бирюковым и другими (2004); их анализ показывает, что множественные линейные аппроксимации могут быть использованы для снижения требований к объему данных для атаки как минимум в 4 раза (то есть 241 вместо 243). Аналогичное снижение сложности данных можно получить в варианте линейного криптоанализа с использованием выбранных открытых текстов (Knudsen и Mathiassen, 2000). Junod (2001) провел ряд экспериментов для определения фактической временной сложности линейного криптоанализа и сообщил, что она оказалась несколько ниже прогнозируемой, требуя времени, эквивалентного 239–241 оценкам DES. Улучшенная атака Дэвиса: в то время как линейный и дифференциальный криптоанализ являются общими методами, применимыми к различным схемам, атака Дэвиса представляет собой специализированный метод для DES, впервые предложенный Дональдом Дэвисом в 1980-х годах и усовершенствованный Бихамом и Бирюковым (1997). Наиболее мощная форма атаки требует 250 известных открытых текстов, имеет вычислительную сложность 250 и вероятность успеха 51%. Также были предложены атаки на версии шифра с уменьшенным количеством раундов, то есть на версии DES, содержащие менее 16 раундов. Такой анализ позволяет оценить необходимое количество раундов для обеспечения безопасности и определить величину "запаса прочности" полной версии. Дифференциально-линейный криптоанализ был предложен Langford и Hellman в 1994 году и объединяет дифференциальный и линейный криптоанализ в единую атаку. Улучшенная версия атаки может взломать 9-раундовый DES, используя 215,8 выбранных открытых текста, и имеет временную сложность 229,2 (Biham и другие, 2002).

Упрощенный DES

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

Алгоритмы замены

Опасения по поводу безопасности и относительно медленной работы DES в программном обеспечении побудили исследователей предложить различные альтернативные конструкции блочных шифров, которые начали появляться в конце 1980-х и начале 1990-х годов: примеры включают RC5, Blowfish, IDEA, NewDES, SAFER, CAST5 и FEAL. Большинство из этих конструкций сохранили 64-битный размер блока DES и могли использоваться как замена без изменений, хотя они обычно использовали 64-битный или 128-битный ключ. В Советском Союзе был введен алгоритм ГОСТ 28147-89, с 64-битным размером блока и 256-битным ключом, который также использовался в России позднее. Сам DES может быть адаптирован и повторно использован в более безопасной схеме. Многие бывшие пользователи DES теперь используют Triple DES (TDES), который был описан и проанализирован одним из патентообладателей DES (см. FIPS Pub 46–3); он предполагает троекратное применение DES с двумя (2TDES) или тремя (3TDES) различными ключами. TDES считается достаточно безопасным, хотя и довольно медленным. Менее ресурсоемкой альтернативой является DES X, который увеличивает размер ключа путем операции XOR с дополнительным ключевым материалом до и после DES. GDES был вариантом DES, предложенным для ускорения шифрования, но было показано, что он уязвим к дифференциальному криптоанализу. 2 января 1997 года NIST объявил о намерении выбрать преемника DES. В 2001 году, после международного конкурса, NIST выбрал новый шифр, Advanced Encryption Standard (AES), в качестве замены. Алгоритм, выбранный в качестве AES, был представлен его разработчиками под названием Rijndael. Другими финалистами конкурса NIST AES были RC6, Serpent, MARS и Twofish.