Краткое описание

Входной блок данных, состоящий из 64 бит, преобразуется в выходной блок идентичной длины. Ключ шифрования должен быть известен, как отправляющей так и принимающей сторонам. В алгоритме широко используются перестановки битов текста.

Вводится функция f, которая работает с 32-разрядными словами исходного текста (А) и использует в качестве параметра 48-разрядный ключ (J). Схема работы функции f показана на рис. 6.4.1.1. Сначала 32 входные разряда расширяются до 48, при этом некоторые разряды повторяются. Схема этого расширения показана ниже (номера соответствуют номерам бит исходного 32-разрядного кода).

32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1

Для полученного 48-разрядного кода и ключа выполняется операция исключающее ИЛИ (XOR). Результирующий 48-разрядный код преобразуется в 32-разрядный с помощью S-матриц. На выходе S-матриц осуществляется перестановка согласно схеме показанной ниже (числа представляют собой порядковые номера бит).

16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25

Преобразование начинается с перестановки бит (IP - Initial Permutation) в 64-разрядном блоке исходных данных. 58-ой бит становится первым, 50-ый - вторым и т.д. Схема перестановки битов показана ниже.

58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7

Полученный блок делится на две 32-разрядные части L0 и R0. Далее 16 раз повторяются следующие 4 процедуры:

Преобразование ключа с учетом номера итерации i (перестановки разрядов с удалением 8 бит, в результате получается 48-разрядный ключ)

Пусть A=Li, а J - преобразованный ключ. С помощью функции f(A,J) генерируется 32-разрядный выходной код. Выполняется операция XOR для Ri f(A,J), результат обозначается Ri+1. Выполняется операция присвоения Li+1=Ri.

Инверсная перестановка разрядов предполагает следующее размещение 64 бит зашифрованных данных (первым битом становится 40-ой, вторым 8-ой и т.д.).

40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25

S-матрицы представляют собой таблицы содержащие 4-ряда и 16 столбцов. Матрица S(1) представлена ниже (эта матрица, также как и те, что приведены в ссылке 2, являются рекомендуемыми).

No. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8 2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0 3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

Исходный 48-разрядный код делится на 8 групп по 6 разрядов. Первый и последний разряд в группе используется в качестве адреса строки, а средние 4 разряда - в качестве адреса столбца. В результате каждые 6 бит кода преобразуются в 4 бита, а весь 48-разрядный код в 32-разрядный (для этого нужно 8 S-матриц). Существуют разработки, позволяющие выполнять шифрование в рамках стандарта DES аппаратным образом, что обеспечивает довольно высокое быстродействие.

DES - Data Encryption Standard, был анонсирован в 1977 году Национальным бюро стандартов США, и был официально признан как результат работы подкомитета X3.92 Национального института стандартов США в 1981 году (ANSI X3.92-1981, American National Standards Data Encryption Algorithm, © American National Standards Institute, 1981.)

В Россию DES проник и достаточно широко практически используется как неотъемлемая деталь различных программных и аппаратных средств, из которых наиболее широко известны система S.W.I.F.T., секретные модули VISA и EUROPAY, секретные модули банкоматов и торговых терминалов, и, наконец, смарт-карты. Особенное напряжение дискуссий вокруг алгоритмов шифрования данных вызвано именно смарт-картами. При этом есть серьезные основания считать, что надежность отечественных крипто-систем конверсионного происхождения будет превосходить зарубежные аналоги.

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

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

Тем не менее, обстоятельность и известный максимализм российского рынка криптосредств способствовали утверждению однозначного вывода: DES с длиной ключа 56 бит практически стойким не является.

Такой же вывод, но еще в 1988 году был сделан специалистами французской компании NET1 Products - Сержем Беламантом и Андре Мансвелтом при проектировании патентованной технологии безналичных расчетов на базе смарт-карт под названием U.E.P.S. Они же предложили и выход - двукратное последовательное применение DES на паре ключей.

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

Простой подсчет показывает, что если в спроектированной нами супер-системе каждый чип будет выполнять 10 миллионов (!) операций DES в 1 секунду, то на весь процесс уйдет 25 тысяч раз по 10 миллиардов лет. Неплохой результат? В таких случаях удовлетворенные результатом криптографы предпочитают изъясняться космическим категориями, например, в периодах жизни солнечной системы.

При этом следует акцентировать внимание на том, что последовательные шифрования на одном и том же ключе практически не увеличивают стойкость, поскольку не изменяется количество вариантов перебора ключей.

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

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

Какие же практические выводы можно сделать:

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

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

Тройной DES стал де-факто стандартом для защиты информации в банковской и финансовой сферах. В ближайшем будущем следует ожидать появления соответствующего стандарта ANSI.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: