Стандарт шифрования данных ( DES / ˌ d iː ˌ iː ˈ ɛ s , d ɛ z / ) — это алгоритм с симметричным ключом для шифрования цифровых данных. Хотя его короткая длина ключа в 56 бит делает его слишком небезопасным для современных приложений, он оказал большое влияние на развитие криптографии .
Разработанный в начале 1970-х годов в IBM и основанный на более ранней разработке Хорста Фейстеля , алгоритм был представлен Национальному бюро стандартов (NBS) после приглашения агентства предложить кандидата для защиты конфиденциальных, несекретных электронных правительственных данных. В 1976 году, после консультации с Агентством национальной безопасности (АНБ), НБС выбрало слегка модифицированную версию (усиленную против дифференциального криптоанализа , но ослабленную против атак грубой силы ), которая была опубликована в качестве официального Федерального стандарта обработки информации (FIPS) для США в 1977 году. [2]
Публикация одобренного АНБ стандарта шифрования привела к его быстрому международному принятию и широкому научному изучению. Разногласия возникли из-за секретных элементов конструкции, относительно короткой длины ключа конструкции блочного шифра с симметричным ключом и участия АНБ, что вызвало подозрения в отношении бэкдора . S -блоки , вызвавшие эти подозрения, были разработаны АНБ для удаления бэкдора, о котором они тайно знали ( дифференциальный криптоанализ ). Однако АНБ также позаботилось о том, чтобы размер ключа был радикально уменьшен, чтобы можно было взломать шифр методом грубой силы. [2] Интенсивное академическое изучение алгоритма со временем привело к современному пониманию блочных шифров и их криптоанализа .
DES небезопасен из-за относительно короткого 56-битного размера ключа . В январе 1999 года компания Distributed.net и Electronic Frontier Foundation объединились и публично взломали ключ DES за 22 часа 15 минут (см. § Хронологию). Есть также некоторые аналитические результаты, которые демонстрируют теоретические недостатки шифра, хотя на практике они неосуществимы. Считается, что алгоритм в форме Triple DES практически безопасен , хотя существуют теоретические атаки. Этот шифр был заменен усовершенствованным стандартом шифрования (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 года, после консультации с АНБ, NBS запросило предложения по шифру, который соответствовал бы строгим критериям разработки. Ни одно из представлений не подходило. Второй запрос был подан 27 августа 1974 года. На этот раз IBM представила кандидата, который был признан приемлемым - шифр, разработанный в период 1973–1974 годов на основе более раннего алгоритма, шифра Люцифера Хорста Фейстеля . В команду IBM, занимавшуюся разработкой и анализом шифров, входили Фейстель, Уолтер Тачман , Дон Копперсмит , Алан Конхейм, Карл Мейер, Майк Матиас, Рой Адлер , Эдна Гроссман , Билл Нотц, Линн Смит и Брайант Такерман .
17 марта 1975 года предложенный DES был опубликован в Федеральном реестре . Были запрошены комментарии общественности, и в следующем году были проведены два открытых семинара для обсуждения предложенного стандарта. Была критика со стороны пионеров криптографии с открытым ключом Мартина Хеллмана и Уитфилда Диффи , [1] сославшихся на укороченную длину ключа и загадочные « S-блоки » как на свидетельство неправомерного вмешательства со стороны АНБ. Подозрение заключалось в том, что спецслужбы тайно ослабили алгоритм, чтобы они — и никто другой — могли легко читать зашифрованные сообщения. [7] Алан Конхейм (один из разработчиков DES) прокомментировал: «Мы отправили S-блоки в Вашингтон. Они вернулись и все были другими». [8] Специальный комитет Сената США по разведке рассмотрел действия АНБ, чтобы определить, имело ли место какое-либо неправомерное вмешательство. В несекретном резюме своих выводов, опубликованном в 1978 году, Комитет написал:
При разработке DES АНБ убедило IBM , что уменьшенного размера ключа достаточно; косвенно помогал в разработке структур S-box; и подтвердили, что окончательный алгоритм DES, насколько им известно, не имеет каких-либо статистических или математических недостатков. [9]
Однако было также обнаружено, что
АНБ никоим образом не вмешивалось в конструкцию алгоритма. IBM изобрела и разработала алгоритм, приняла все соответствующие решения по нему и согласилась с тем, что согласованный размер ключа более чем достаточен для всех коммерческих приложений, для которых был предназначен DES. [10]
Другой член команды DES, Уолтер Тачман, заявил: «Мы разработали алгоритм DES полностью внутри IBM с использованием сотрудников IBM. АНБ не диктовало ни одного провода!» [11] Напротив, в рассекреченной книге АНБ по истории криптологии говорится:
В 1973 году NBS обратилась к частному сектору с просьбой разработать стандарт шифрования данных (DES). Первые предложения оказались разочаровывающими, поэтому АНБ начало работать над собственным алгоритмом. Затем Говард Розенблюм, заместитель директора по исследованиям и разработкам, обнаружил, что Уолтер Тачман из IBM работает над модификацией Люцифера для общего использования. АНБ дало Тачману разрешение и привлекло его к совместной работе с Агентством над его модификацией Люцифера» .
и
АНБ тесно сотрудничало с IBM для усиления защиты алгоритма от всех атак, кроме перебора, а также для усиления таблиц подстановки, называемых S-box. АНБ, наоборот, пыталось убедить IBM сократить длину ключа с 64 до 48 бит. В конечном итоге они остановились на 56-битном ключе. [13] [14]
Некоторые подозрения о скрытых слабостях в S-блоках были развеяны в 1990 году, когда Эли Бихам и Ади Шамир независимо открыли и открыли открытую публикацию дифференциального криптоанализа , общего метода взлома блочных шифров. S-блоки DES были гораздо более устойчивы к атакам, чем если бы они были выбраны случайным образом, что убедительно свидетельствует о том, что IBM знала об этой технике в 1970-х годах. Это действительно было так; в 1994 году Дон Копперсмит опубликовал некоторые оригинальные критерии проектирования S-блоков. [15] По словам Стивена Леви , исследователи IBM Watson обнаружили дифференциальные криптоаналитические атаки в 1974 году, и АНБ попросило их сохранить эту технику в секрете. [16] Копперсмит объясняет решение IBM о секретности тем, что «это произошло потому, что [дифференциальный криптоанализ] может быть очень мощным инструментом, используемым против многих схем, и существовали опасения, что такая информация в открытом доступе может отрицательно повлиять на национальную безопасность». Леви цитирует Уолтера Тачмана: «[t]они попросили нас поставить печать на всех наших документах как конфиденциальные... Мы на самом деле поставили номер каждому из них и заперли их в сейфах, потому что они считались секретными правительством США. Они сказали сделать это. Итак, Я сделал это". [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 был окончательно заменен усовершенствованным стандартом шифрования (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 стало катализатором академического изучения криптографии, особенно методов взлома блочных шифров. Согласно ретроспективе DES, проведенному NIST,
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. [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 с помощью перестановочного выбора 1 ( PC-1 ) — оставшиеся восемь бит либо отбрасываются, либо используются в качестве битов проверки четности . Затем 56 бит делятся на две 28-битные половины; каждая половина после этого рассматривается отдельно. В последовательных раундах обе половины поворачиваются влево на один или два бита (указанных для каждого раунда), а затем с помощью Permuted Choice 2 ( PC-2 ) выбираются 48 битов подключа — 24 бита из левой половины и 24 из правой. . Ротация (обозначенная на диаграмме знаком «<<<») означает, что в каждом подразделе используется другой набор битов; каждый бит используется примерно в 14 из 16 подразделов.
Расписание ключей для расшифровки аналогично — дополнительные ключи расположены в обратном порядке по сравнению с шифрованием. За исключением этого изменения, процесс такой же, как и при шифровании. Те же 28 бит передаются во все блоки вращения.
Далее следует псевдокод для алгоритма DES.
// Все переменные беззнаковые 64 бита// Предварительная обработка: заполнение разницы в размере сообщения в байтах до достижения длины , кратной 64 битам var key // Ключи , заданные пользователем varkeys [ 16 ] var left , right // Генерируем ключи// Ключ PC1 (от 64 до 56 бит) := перестановка ( ключ , PC1 ) влево := ( сдвиг вправо 28 ) и 0xFFFFFFF вправо := ключ и 0xFFFFFFF для i от 0 до 16 делайте вправо := вправо влево KEY_shift [ i ] влево := влево влево KEY_shift [ i ] var concat := ( left leftshift 28 ) или вправо // PC2 (от 56 до 48 бит) клавиши [ i ] := перестановка ( concat , PC2 ) заканчивается для // Чтобы расшифровать сообщение, поменяйте порядок ключей, if decrypt do , обратные ключи end if // Шифрование или дешифрование для каждого 64 - битного фрагмента дополненного сообщения do var tmp // IP chunk := перестановка ( chunk , IP ) left := chunk rightshift 32 right := chunk и 0xFFFFFFFF для i от 0 до 16 do tmp := right // E (от 32 бит до 48 бит) right := расширение ( right , E ) right := правые клавиши xor [ i ] // Замена (48 бит на 32 бита) right := замена ( right ) // P right := перестановка ( right , P ) right := right xor left left := tmp end for // Объединить правый и левый var cipher_chunk := ( right leftshift 32 ) или left // FP cipher_chunk := перестановка ( cipher_chunk , FP ) конец для
Хотя о криптоанализе DES опубликовано больше информации, чем о любом другом блочном шифре, на сегодняшний день наиболее практичной атакой по-прежнему остается метод грубой силы. Известны различные второстепенные криптоаналитические свойства, и возможны три теоретические атаки, которые, хотя и имеют теоретическую сложность меньше, чем атака методом перебора, требуют для выполнения нереального количества известных или выбранных открытых текстов и не представляют проблемы на практике.
Для любого шифра самым основным методом атаки является грубая сила — перебор всех возможных ключей по очереди. Длина ключа определяет количество возможных ключей и, следовательно, осуществимость этого подхода. В отношении DES вопросы об адекватности размера его ключа возникали на раннем этапе, еще до того, как он был принят в качестве стандарта, и именно небольшой размер ключа, а не теоретический криптоанализ, диктовал необходимость замены алгоритма . В результате обсуждений с участием внешних консультантов, включая АНБ, размер ключа был уменьшен с 256 бит до 56 бит, чтобы его можно было разместить на одном чипе. [30]
В научных кругах выдвигались различные предложения по машине для взлома DES. В 1977 году Диффи и Хеллман предложили машину стоимостью около 20 миллионов долларов США, которая могла найти ключ DES за один день. [1] [31] К 1993 году Винер предложил машину для поиска ключей стоимостью 1 миллион долларов США, которая могла найти ключ в течение 7 часов. Однако ни одно из этих ранних предложений так и не было реализовано – или, по крайней мере, ни одна реализация не получила публичного признания. Уязвимость DES была практически продемонстрирована в конце 1990-х годов. [32] В 1997 году компания RSA Security спонсировала серию конкурсов, предложив приз в размере 10 000 долларов первой команде, которая взломает сообщение, зашифрованное с помощью DES, для конкурса. Этот конкурс выиграл проект DESCHALL Project , возглавляемый Роком Версером, Мэттом Кертином и Джастином Долске, который использовал циклы простоя тысяч компьютеров в Интернете. Возможность быстрого взлома 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 5000 FPGA Spartan-3. [35] Их модель 256 Spartan-6 LX150 на этот раз еще больше снизилась.
В 2012 году Дэвид Халтон и Мокси Марлинспайк анонсировали систему с 48 FPGA Xilinx Virtex-6 LX240T, каждая FPGA содержит 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 (Biham и другие, 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 и ФЕЛ . Большинство этих проектов сохранили 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: несколько имен: список авторов ( ссылка )(препринт).