Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коды и шифры.DOC
Скачиваний:
62
Добавлен:
18.08.2019
Размер:
2.07 Mб
Скачать

Общие сведения

  1. Конструктивно алгоритм обеспечивает шифрование блоков данных по 64 разряда (бита) под управлением 64-разрядного ключа (K). Таким образом, DES-алгоритм является примером так называемых блочных шифров.

  2. Два человека, желающие связываться друг с другом с помощью DES-алгоритма, должны договориться об используемом значении (секретного) ключа K. Все остальные сведения о DES-алгоритме являются общедоступными.

  3. При задании секретного ключа K пользователи выбирают семь 8‑разрядных символов (т.е. в общей сложности 56 битов), к которым в процессе работы DES-алгоритма добавляются еще 8 проверочных разрядов. В результате получаются требуемые 64 разряда секретного ключа.

Процедура зашифрования

  1. Разряды 64-битового блока данных представляются согласно начальной перестановке (IP).

  2. 64-битовый блок данных разбивается на два 32-разрядных сегмента: левый (L) и правый (R).

  3. Сорок восемь разрядов ключа K нелинейным образом комбинируются с 48-разрядным "расширением" сегмента R ("расширение" получается повторением 16-ти из 32 разрядов R); затем полученные 48 битов редуцируются до 32-разрядной строки (обозначим ее через X).

  4. L заменяется на R, а в качестве нового 32-разрядного значения R берется сумма по модулю 2 строк X и L.

  5. Шаги (6) и (7) повторяются 16 раз, и каждый раз на шаге (6) используются разные 48-разрядные сегменты ключа K.

  6. 64 разряда, полученные в конце последнего (16-го) шага подвергаются инверсии начальной перестановки, т.е. (IP)-1.

  7. В результате получаются 64 бита шифрованного текста.

Процедура расшифрования

  1. Расшифрование осуществляется в обратном порядке с использованием того же самого ключа K.

Стойкость des-алгоритма

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

Что касается самого DES-алгоритма, то данные, зашифрованные с его помощью на большом количестве ключей, подвергались различным тестам, в том числе статистическим, и все они дали хорошие результаты. Один из самых важных тестов называется "лавина": сколько именно разрядов из 64-х изменится на выходе, если изменить один из 64-х разрядов на входе? Для слабого шифра ответ был бы "1"; в идеальной системе шифрования ответ должен быть "около 32-х" - именно так обстоит дело в DES-алгоритме (примеры см. в [13.5]).

Несмотря на это, дебаты относительно его уровня стойкости шли даже еще до введения DES-алгоритма в эксплуатацию. Так как пользователи задают 56-разрядный ключ, то противнику надо опробовать "всего лишь" 256 возможных ключей. Так как 256 составляет около 1016,86, то компьютеру, способному проверять один ключ в микросекунду, понадобится 2300 лет для их полного перебора. Ясно, что это практически невыполнимо. Однако критики DES-алгоритма заявляли, что миллион таких компьютеров, работающих параллельно, смогут найти ключ всего за один день. И так как это будет стоить огромной суммы денег и потребует больших организационных усилий, то трудно себе представить, чтобы кто-нибудь посчитал стоящим такое предприятие, если только заранее не известно, что сообщение относится к жизненно важному вопросу национальной безопасности. Также выдвигались предположения, что возможно существование тайной "лазейки", или Ахиллесовой пяты, известной разработчикам DES‑алгоритма, что позволит осведомленным о ее существовании находить ключ за приемлемое время. Это может быть правдой, но никто до сих пор не обнаружил данных, свидетельствующих о ее существовании.

Также высказывались предположения, что в DES-алгоритме надо было использовать ключ большей длины, и чаще всего при этом говорили о 128 разрядах. Это, конечно, устранило бы все сомнения по поводу его стойкости, и с тех пор 128-битовое шифрование появилось в составе других систем, но в 1977 году это не сочли необходимым.

Альтернативой использования 128-разрядного ключа могло бы быть последовательное шифрование на двух 64-разрядных ключах, но можно показать, что в этом случае стойкость возрастает всего лишь вдвое по сравнению с использованием одного 64-разрядного ключа (если у криптоаналитика в наличии имеется компьютер с огромным объемом памяти). Данный метод вскрытия требует знания открытого текста и его шифрованного эквивалента. Известный открытый текст зашифровывается на всех возможных 64-разрядных ключах, а известный шифрованный текст расшифровывается на всех возможных 64-разрядных ключах. Затем происходит сортировка и сравнение двух построенных множеств данных. Это означает, что потребуется всего лишь 257 испытаний, а не 2112. Если обнаружены два одинаковых текста, то это значит, что у нас есть возможные значения для пары неизвестных нам ключей. Будет найдено много ложных пар ключей (их окажется около 248, см. M27), их придется проверять на других известных парах открытого/шифрованного текстов. Такой метод "встречного поиска" в настоящее время невозможно реализовать практически, до и в обозримом будущем это вряд ли удастся.

Однако, стойкость DES-алгоритма чрезвычайно возрастает, если применить тройное шифрование. Потребуется всего два ключа, которые применяются следующим образом:

  1. зашифровать сообщение на 1-м ключе;

  2. расшифровать сообщение на 2-м ключе;

  3. зашифровать сообщение на 1-м ключе.

Теперь противнику необходимо опробовать 2112 возможных пар ключей, а это считается невозможным ни за какое реальное время. Такое тройное DES-преобразование считается стойким и используется в настоящее время. Такая форма тройного шифрования имеет дополнительное преимущество, состоящее в том, что для двух одинаковых ключей оно становится идентично одинарному DES‑преобразованию. Это позволяет пользователю, применяющему тройное шифрование, связываться с пользователем, применяющим одинарное, и наоборот. В другой форме тройного шифрования на всех трех стадиях используются различные ключи. И снова совместимости с другими вариантами можно добиться, положив два или более ключа одинаковыми.