Стандарт шифрования данных ( DES / ˌ d iː ˌ iː ˈ ɛ s , d ɛ z / ) — это алгоритм с симметричным ключом для шифрования цифровых данных. Хотя его короткая длина ключа в 56 бит делает его слишком небезопасным для современных приложений, он оказал большое влияние на развитие криптографии .
Разработанный в начале 1970-х годов в IBM и основанный на более ранней разработке Хорста Фейстеля , алгоритм был представлен в Национальное бюро стандартов (NBS) после приглашения агентства предложить кандидата для защиты конфиденциальных, несекретных электронных правительственных данных. В 1976 году, после консультаций с Агентством национальной безопасности (NSA), NBS выбрало слегка измененную версию (усиленную против дифференциального криптоанализа , но ослабленную против атак методом подбора ), которая была опубликована в качестве официального Федерального стандарта обработки информации (FIPS) для Соединенных Штатов в 1977 году. [2]
Публикация одобренного АНБ стандарта шифрования привела к его быстрому международному принятию и широкому академическому изучению. Споры возникли из- за засекреченных элементов дизайна, относительно короткой длины ключа дизайна блочного симметричного ключа и участия АНБ, что вызвало подозрения о бэкдоре . S -boxes , которые вызвали эти подозрения, были разработаны АНБ для устранения уязвимости, о которой они тайно знали ( дифференциальный криптоанализ ). Однако АНБ также гарантировало, что размер ключа был радикально уменьшен, чтобы они могли взломать шифр методом грубой силы. [2] [ неудачная проверка ] Интенсивное академическое изучение алгоритма с течением времени привело к современному пониманию блочных шифров и их криптоанализа .
DES небезопасен из-за относительно короткого размера ключа в 56 бит . В январе 1999 года distributed.net и Electronic Frontier Foundation объединились, чтобы публично взломать ключ DES за 22 часа и 15 минут (см. § Хронология). Также есть некоторые аналитические результаты, которые демонстрируют теоретические слабости шифра, хотя они неосуществимы на практике. Алгоритм считается практически безопасным в форме Triple DES , хотя существуют теоретические атаки. Этот шифр был заменен Advanced Encryption Standard (AES). DES был отозван как стандарт Национальным институтом стандартов и технологий . [3]
В некоторых документах проводится различие между стандартом DES и его алгоритмом, именуя алгоритм DEA ( алгоритм шифрования данных ).
Истоки DES относятся к 1972 году, когда исследование Национального бюро стандартов компьютерной безопасности правительства США выявило необходимость в общегосударственном стандарте для шифрования несекретной, конфиденциальной информации. [4]
Примерно в то же время инженер Мохамед Аталла в 1972 году основал Atalla Corporation и разработал первый аппаратный модуль безопасности (HSM), так называемый «Atalla Box», который был выпущен в продажу в 1973 году. Он защищал автономные устройства с помощью безопасного ключа генерации PIN-кода и имел коммерческий успех. Банки и компании, выпускающие кредитные карты, опасались, что Atalla будет доминировать на рынке, что подстегнуло разработку международного стандарта шифрования. [3] Atalla был одним из первых конкурентов IBM на банковском рынке и упоминался как источник влияния сотрудников IBM, работавших над стандартом DES. [5] IBM 3624 позже приняла систему проверки PIN-кода, похожую на более раннюю систему Atalla. [6]
15 мая 1973 года, после консультаций с NSA, NBS запросило предложения по шифру, который бы соответствовал строгим критериям проектирования. Ни одно из представленных предложений не было подходящим. Второй запрос был отправлен 27 августа 1974 года. На этот раз IBM представила кандидатуру, которая была признана приемлемой — шифр, разработанный в период 1973–1974 годов на основе более раннего алгоритма, шифра Люцифера Хорста Фейстеля . Команда IBM, занимавшаяся проектированием и анализом шифра, включала Фейстеля, Уолтера Такмана , Дона Копперсмита , Алана Конхейма, Карла Мейера, Майка Матьяса, Роя Адлера , Эдну Гроссман , Билла Нотца, Линн Смит и Брайанта Такермана .
17 марта 1975 года предложенный DES был опубликован в Федеральном реестре . Были запрошены публичные комментарии, и в следующем году были проведены два открытых семинара для обсуждения предложенного стандарта. Была получена критика от пионеров криптографии с открытым ключом Мартина Хеллмана и Уитфилда Диффи , [1] ссылающихся на укороченную длину ключа и таинственные « S-boxes » как на доказательство неправомерного вмешательства со стороны АНБ. Подозрение заключалось в том, что алгоритм был тайно ослаблен разведывательным агентством, чтобы они — но никто другой — могли легко читать зашифрованные сообщения. [7] Алан Конхейм (один из разработчиков DES) прокомментировал: «Мы отправили S-boxes в Вашингтон. Они вернулись и все были другими». [8] Специальный комитет Сената США по разведке рассмотрел действия АНБ, чтобы определить, было ли какое-либо неправомерное участие. В несекретном резюме своих выводов, опубликованном в 1978 году, комитет написал:
При разработке DES АНБ убедило IBM , что уменьшенный размер ключа достаточен; косвенно помогло в разработке структур S-box; и подтвердило, что окончательный алгоритм DES, насколько им известно, не имеет никаких статистических или математических недостатков. [9]
Однако также было установлено, что
АНБ никоим образом не вмешивалось в конструкцию алгоритма. IBM изобрела и спроектировала алгоритм, приняла все соответствующие решения относительно него и согласилась, что согласованный размер ключа был более чем достаточным для всех коммерческих приложений, для которых предназначался DES. [10]
Другой член команды DES, Уолтер Такман, заявил: «Мы разработали алгоритм DES полностью в IBM, используя сотрудников IBM. АНБ не диктовало ни единого слова!» [11] Напротив, в рассекреченной книге АНБ по истории криптографии говорится:
В 1973 году NBS обратилось к частной промышленности с просьбой о стандарте шифрования данных (DES). Первые предложения оказались разочаровывающими, поэтому NSA начало работать над собственным алгоритмом. Затем Говард Розенблюм, заместитель директора по исследованиям и инжинирингу, обнаружил, что Уолтер Такман из IBM работает над модификацией Lucifer для общего пользования. NSA выдало Такману разрешение и привлекло его к совместной работе с Агентством над его модификацией Lucifer." [12]
и
АНБ тесно сотрудничало с IBM, чтобы усилить алгоритм против всех атак, кроме атак методом грубой силы, и усилить таблицы подстановки, называемые S-boxes. С другой стороны, АНБ пыталось убедить IBM уменьшить длину ключа с 64 до 48 бит. В конечном итоге они пошли на компромисс, установив 56-битный ключ. [13] [14]
Некоторые подозрения о скрытых слабостях S-boxes были развеяны в 1990 году, когда Эли Бихам и Ади Шамир независимо открыли и опубликовали дифференциальный криптоанализ , общий метод взлома блочных шифров. S-boxes DES были гораздо более устойчивы к атакам, чем если бы они были выбраны случайным образом, что убедительно свидетельствует о том, что IBM знала об этой технике в 1970-х годах. Это было действительно так; в 1994 году Дон Копперсмит опубликовал некоторые из первоначальных критериев проектирования для S-boxes. [15] По словам Стивена Леви , исследователи IBM Watson обнаружили дифференциальные криптоаналитические атаки в 1974 году и получили от АНБ требование сохранить эту технику в секрете. [16] Копперсмит объясняет решение IBM о секретности, говоря: «это было сделано потому, что [дифференциальный криптоанализ] может быть очень мощным инструментом, используемым против многих схем, и были опасения, что такая информация в открытом доступе может негативно повлиять на национальную безопасность». Леви цитирует Уолтера Такмана: «Они попросили нас поставить на всех наших документах гриф «конфиденциально»... На самом деле, мы поместили на каждый из них номер и заперли их в сейфах, потому что они считались секретными для правительства США. Они сказали: «Сделай это». И я это сделал». [16] Брюс Шнайер заметил, что «академическому сообществу потребовалось два десятилетия, чтобы понять, что «улучшения» АНБ на самом деле повысили безопасность DES». [17]
Несмотря на критику, 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 года для конфиденциальной правительственной информации. [18]
Алгоритм также указан в ANSI X3.92 (сегодня X3 известен как INCITS , а ANSI X3.92 как ANSI INCITS 92), [19] NIST SP 800-67 [18] и ISO/IEC 18033-3 [20] (как компонент TDEA ).
Другая теоретическая атака, линейный криптоанализ, была опубликована в 1994 году, но именно взломщик DES от Electronic Frontier Foundation в 1998 году продемонстрировал, что DES можно атаковать очень практично, и подчеркнул необходимость замены алгоритма. Эти и другие методы криптоанализа более подробно обсуждаются далее в этой статье.
Введение DES считается катализатором академического изучения криптографии, в частности методов взлома блочных шифров. Согласно ретроспективе NIST о DES,
DES — это архетипический блочный шифр — алгоритм , который берет строку битов открытого текста фиксированной длины и преобразует ее с помощью ряда сложных операций в другую строку битов зашифрованного текста той же длины. В случае DES размер блока составляет 64 бита. DES также использует ключ для настройки преобразования, так что расшифровка предположительно может быть выполнена только теми, кто знает конкретный ключ, используемый для шифрования. Ключ якобы состоит из 64 бит; однако на самом деле алгоритмом используются только 56 из них. Восемь бит используются исключительно для проверки четности и впоследствии отбрасываются. Следовательно, эффективная длина ключа составляет 56 бит.
Ключ номинально хранится или передается как 8 байтов , каждый с нечетной четностью. Согласно ANSI X3.92-1981 (теперь известный как ANSI INCITS 92–1981), раздел 3.5:
Один бит в каждом 8-битном байте KEY может использоваться для обнаружения ошибок при генерации, распространении и хранении ключей. Биты 8, 16,..., 64 используются для обеспечения того, чтобы каждый байт имел нечетную четность.
Как и другие блочные шифры, DES сам по себе не является безопасным средством шифрования, а должен использоваться в режиме работы . FIPS-81 определяет несколько режимов для использования с DES. [27] Дополнительные комментарии по использованию DES содержатся в FIPS-74. [28]
Расшифровка использует ту же структуру, что и шифрование, но ключи используются в обратном порядке. (Это имеет то преимущество, что одно и то же оборудование или программное обеспечение может использоваться в обоих направлениях.)
Общая структура алгоритма показана на рисунке 1: есть 16 идентичных этапов обработки, называемых раундами . Также есть начальная и конечная перестановка , называемые IP и FP , которые являются обратными (IP «отменяет» действие FP, и наоборот). IP и FP не имеют криптографического значения, но были включены для того, чтобы облегчить загрузку блоков в и из 8-битного оборудования середины 1970-х годов. [29]
Перед основными раундами блок делится на две 32-битные половины и обрабатывается поочередно; это пересечение известно как схема Фейстеля . Структура Фейстеля гарантирует, что дешифрование и шифрование являются очень похожими процессами — единственное отличие заключается в том, что подключи применяются в обратном порядке при дешифровании. Остальная часть алгоритма идентична. Это значительно упрощает реализацию, особенно в аппаратном обеспечении, поскольку нет необходимости в отдельных алгоритмах шифрования и дешифрования.
Символ ⊕ обозначает операцию «исключающее ИЛИ» (XOR). Функция F скремблирует половину блока вместе с частью ключа. Затем вывод функции F объединяется с другой половиной блока, и половины меняются местами перед следующим раундом. После последнего раунда половины меняются местами; это особенность структуры Фейстеля, которая делает шифрование и дешифрование похожими процессами.
F-функция, изображенная на рисунке 2, обрабатывает половину блока (32 бита) за раз и состоит из четырех этапов:
Чередование подстановки из S-блоков и перестановки битов из P-блока и E-расширения обеспечивает так называемые « смешение и диффузию » соответственно, концепцию, определенную Клодом Шенноном в 1940-х годах как необходимое условие для безопасного, но практичного шифра.
Рисунок 3 иллюстрирует ключевой график для шифрования — алгоритм, который генерирует подключаемые ключи. Первоначально 56 бит ключа выбираются из начальных 64 с помощью Permuted Choice 1 ( PC-1 ) — оставшиеся восемь бит либо отбрасываются, либо используются в качестве бит проверки четности . Затем 56 бит делятся на две 28-битные половины; каждая половина затем обрабатывается отдельно. В последовательных раундах обе половины вращаются влево на один или два бита (указанных для каждого раунда), а затем 48 бит подключа выбираются с помощью Permuted Choice 2 ( PC-2 ) — 24 бита из левой половины и 24 из правой. Вращения (обозначенные как «<<<» на схеме) означают, что в каждом подключаемом ключе используется разный набор бит; каждый бит используется приблизительно в 14 из 16 подключаемых ключей.
Расписание ключей для расшифровки аналогично — подключи идут в обратном порядке по сравнению с шифрованием. За исключением этого изменения, процесс такой же, как и для шифрования. Те же 28 бит передаются во все блоки ротации.
Ниже приведен псевдокод для алгоритма DES.
// Все переменные беззнаковые 64 бита// Предварительная обработка: заполнение разницей в размере сообщения в байтах для достижения длины , кратной 64 битам var key // Ключи, заданные пользователем var keys [ 16 ] var left , right // Генерация ключей// PC1 (64 бита в 56 бит) key := permutation ( key , PC1 ) left := ( key rightshift 28 ) и 0xFFFFFFF right := key и 0xFFFFFFF для i от 1 до 16 do right := right leftrotate KEY_shift [ i ] left := left leftrotate KEY_shift [ i ] var concat := ( left leftshift 28 ) или right // PC2 (от 56 бит до 48 бит) keys [ i ] := permutation ( concat , PC2 ) end for // Чтобы расшифровать сообщение, измените порядок ключей if decrypt do reverse keys end if // Шифрование или расшифровка для каждого 64 - битного фрагмента дополненного сообщения do var tmp // IP chunk := permutation ( chunk , IP ) left := chunk rightshift 32 right := chunk и 0xFFFFFFFF для i от 1 до 16 do tmp := right // E (32 бита в 48 бит) right := expansion ( right , E ) right := right xor keys [ i ] // Подстановка (48 бит в 32 бита) right := substitution ( right ) // P right := permutation ( right , P ) right := right xor left left := tmp end for // Concat right и left var cipher_chunk := ( right leftshift 32 ) or left // FP cipher_chunk := permutation ( cipher_chunk , FP ) end for
Хотя было опубликовано больше информации о криптоанализе DES, чем о любом другом блочном шифре, наиболее практичной атакой на сегодняшний день по-прежнему является подход грубой силы. Известны различные второстепенные криптоаналитические свойства, и возможны три теоретические атаки, которые, имея теоретическую сложность меньше, чем атака грубой силы, требуют нереалистичного количества известных или выбранных открытых текстов для выполнения и не являются проблемой на практике.
Для любого шифра самым основным методом атаки является грубая сила — перебор всех возможных ключей по очереди. Длина ключа определяет количество возможных ключей и, следовательно, осуществимость этого подхода. Для DES вопросы об адекватности размера ключа поднимались на раннем этапе, еще до того, как он был принят в качестве стандарта, и именно малый размер ключа, а не теоретический криптоанализ, диктовал необходимость замены алгоритма . В результате обсуждений с участием внешних консультантов, включая АНБ, размер ключа был уменьшен с 256 бит до 56 бит, чтобы поместиться на одном чипе. [30]
В академических кругах выдвигались различные предложения по взлому DES-машины. В 1977 году Диффи и Хеллман предложили машину стоимостью около 20 миллионов долларов США, которая могла бы найти ключ DES за один день. [1] [31] К 1993 году Винер предложил машину поиска ключей стоимостью 1 миллион долларов США, которая могла бы найти ключ в течение 7 часов. Однако ни одно из этих ранних предложений так и не было реализовано — или, по крайней мере, ни одна реализация не была публично признана. Уязвимость DES была практически продемонстрирована в конце 1990-х годов. [32] В 1997 году RSA Security спонсировала серию конкурсов, предложив приз в размере 10 000 долларов США первой команде, которая взломает сообщение, зашифрованное с помощью DES, для конкурса. Этот конкурс выиграл проект DESCHALL , возглавляемый Роке Версером, Мэттом Кертином и Джастином Долске, с использованием циклов простоя тысяч компьютеров по всему Интернету. Возможность быстрого взлома DES была продемонстрирована в 1998 году, когда Electronic Frontier Foundation (EFF), группа по защите гражданских прав в киберпространстве, создала специальный взломщик DES стоимостью около 250 000 долларов США (см. Взломщик EFF DES ). Их мотивацией было показать, что DES можно взломать как на практике, так и в теории: « Многие люди не поверят в правду, пока не увидят ее своими глазами. Демонстрация им физической машины, которая может взломать DES за несколько дней, — единственный способ убедить некоторых людей, что они действительно не могут доверять свою безопасность DES ». Машина взломала ключ методом подбора всего за два дня поисков.
Следующим подтвержденным взломщиком DES стала машина COPACOBANA, созданная в 2006 году командами университетов Бохума и Киля , оба в Германии . В отличие от машины EFF, COPACOBANA состоит из коммерчески доступных, реконфигурируемых интегральных схем. 120 из этих программируемых пользователем вентильных матриц (FPGA) типа XILINX Spartan-3 1000 работают параллельно. Они сгруппированы в 20 модулей DIMM, каждый из которых содержит 6 FPGA. Использование реконфигурируемого оборудования делает машину применимой и для других задач по взлому кодов. [33] Одним из наиболее интересных аспектов COPACOBANA является ее фактор стоимости. Одна машина может быть построена примерно за 10 000 долларов. [34] Снижение стоимости примерно в 25 раз по сравнению с машиной EFF является примером непрерывного совершенствования цифрового оборудования — см. закон Мура . Поправка на инфляцию за 8 лет дает еще большее улучшение примерно в 30 раз. С 2007 года SciEngines GmbH , дочерняя компания двух партнеров проекта COPACOBANA, улучшила и разработала преемников COPACOBANA. В 2008 году их COPACOBANA RIVYERA сократила время взлома DES до менее чем одного дня, используя 128 Spartan-3 5000. SciEngines RIVYERA удерживала рекорд по взлому DES методом грубой силы, используя 128 Spartan-3 5000 FPGA. [35] Их модель 256 Spartan-6 LX150 на этот раз снизила еще больше.
В 2012 году Дэвид Халтон и Мокси Марлинспайк анонсировали систему с 48 ПЛИС Xilinx Virtex-6 LX240T, каждая ПЛИС содержит 40 полностью конвейерных ядер DES, работающих на частоте 400 МГц, с общей производительностью 768 гигаключей/сек. Система может полностью перебрать все 56-битное пространство ключей DES примерно за 26 часов, и эта услуга предлагается за плату в Интернете. [36] [37]
Известны три атаки, которые могут взломать все 16 раундов DES с меньшей сложностью, чем поиск методом грубой силы: дифференциальный криптоанализ (DC), [38] линейный криптоанализ (LC), [39] и атака Дэвиса . [40] Однако эти атаки являются теоретическими и, как правило, считаются неосуществимыми для реализации на практике; [41] эти типы атак иногда называют уязвимостями сертификации.
Также были предложены атаки против версий шифра с сокращенным числом раундов, то есть версий DES с числом раундов менее 16. Такой анализ дает представление о том, сколько раундов необходимо для безопасности и какой «запас безопасности» сохраняет полная версия.
Дифференциально-линейный криптоанализ был предложен Лэнгфордом и Хеллманом в 1994 году и объединяет дифференциальный и линейный криптоанализ в одну атаку. [46] Улучшенная версия атаки может взломать 9-раундовый DES с 2 15,8 выбранными открытыми текстами и имеет временную сложность 2 29,2 (Бихэм и др., 2002). [47]
DES проявляет свойство комплементарности, а именно, что
где — побитовое дополнение обозначает шифрование с ключом и обозначает блоки открытого текста и шифротекста соответственно. Свойство дополнения означает, что работа для атаки методом подбора может быть уменьшена в 2 раза (или на один бит) при условии выбранного открытого текста . По определению, это свойство также применимо к шифру TDES. [48]
DES также имеет четыре так называемых слабых ключа . Шифрование ( E ) и дешифрование ( D ) под слабым ключом имеют одинаковый эффект (см. инволюцию ):
Также существует шесть пар полуслабых ключей . Шифрование с одним из пары полуслабых ключей, , работает идентично расшифровке с другим, :
Достаточно легко избежать слабых и полуслабых ключей в реализации, либо явно проверяя их, либо просто выбирая ключи случайным образом; вероятность случайного выбора слабого или полуслабого ключа ничтожно мала. В любом случае, ключи на самом деле не слабее любых других ключей, поскольку они не дают атаке никаких преимуществ.
Также было доказано, что DES не является группой , или, точнее, набор (для всех возможных ключей ) при функциональной композиции не является группой и не «близок» к тому, чтобы быть группой. [49] Это был открытый вопрос в течение некоторого времени, и если бы это было так, то было бы возможно взломать DES, а множественные режимы шифрования, такие как Triple DES, не увеличили бы безопасность, поскольку повторное шифрование (и расшифровка) под разными ключами были бы эквивалентны шифрованию под другим, одним ключом. [50]
Упрощенный DES (SDES) был разработан только в образовательных целях, чтобы помочь студентам узнать о современных криптоаналитических методах. SDES имеет схожую структуру и свойства с DES, но был упрощен, чтобы сделать намного более простым выполнение шифрования и дешифрования вручную с помощью карандаша и бумаги. Некоторые люди считают, что изучение SDES дает понимание DES и других блочных шифров, а также понимание различных криптоаналитических атак против них. [51] [52] [53] [54] [55] [56] [57] [58] [59]
Опасения по поводу безопасности и относительно медленной работы 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. [60] В 2001 году после международного конкурса NIST выбрал новый шифр, Advanced Encryption Standard (AES), в качестве замены. [61] Алгоритм, который был выбран в качестве AES, был представлен его разработчиками под названием Rijndael . Другими финалистами конкурса NIST AES были RC6 , Serpent , MARS и Twofish .
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite journal}}
: CS1 maint: несколько имен: список авторов ( ссылка )(препринт){{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка )(препринт).