DES
DES (англ. Data Encryption Standard) — симметричный алгоритм шифрования, в котором один ключ используется как для зашифровывания, так и для расшифровывания сообщений. Также известен как алгоритм шифрования данных DEA (англ. Data Encryption Algorithm). Разработан фирмой IBM и утвержден правительством США в 1977 году как официальный стандарт. DES имеет блоки по 64 бит и 16-цикловую структуру сети Фейстеля, для шифрования использует ключ в 56 бит. Алгоритм использует комбинирование S-box и P-box. Существует несколько режимов DES, например Electronic Code Book (ECB) и Cipher Block Chaining (CBC).
История
В 1972, после проведения исследования потребностей правительства США в компьютерной безопасности, американское НБС (Национальное Бюро Стандартов) — теперь переименовано НИСТ (Национальный Институт Стандартов и Технологий) — определило необходимость в общеправительственном стандарте шифрования некритичной информации. 15 мая 1973, после консультации с УНБ (Управлением национальной безопасности), НБС объявило конкурс на шифр, который удовлетворит строгим критериям проекта, но ни один конкурсант не обеспечивал выполнение всех требований. Второй конкурс был начат 27 августа 1974. На сей раз, шифр представленный IBM и развитый в течение периода 1973—1974 сочли приемлемым, он был основан на более раннем алгоритме Хорста Фейстеля.
17 марта 1975 предложеный алгоритм DES был издан в Федеральном Регистре. В следующем году было проведено 2 открытых симпозиума по обсуждению этого стандарта, где подверглись жесткой критике изменения внесенные в алгоритм УНБ: уменьшение первоначальной длины ключа и таинственные S-перестановки. УНБ подозревалось в сознательном ослаблении алгоритма с целью, чтобы УНБ могло легко просматривать зашифрованые сообщения. После чего сенатом США была проведена проверка действий УНБ, результатом которой стало заявление опубликованное в 1978, в котором говорилось о том, что в процессе разработки DES УНБ убедило IBM, что уменьшенной длины ключа более чем достаточно для всех коммерческих приложений, использующих DES, косвенно помогало в разработке S-перестановок, а также, что окончательный алгоритм DES был лучшим, по их мнению, алгоритмом шифрования и был лишен статистической или математической слабости. Также было обнаружено, что УНБ никогда не вмешивалось в разработку этого алгоритма.
Часть подозрений в скрытой слабости S-перестановок была снята в 1990, когда были опубликованы результаты независимых исследований Эли Бьяма (Eli Biham) и Ади Шамира (Adi Shamir) по дифференциальному криптоанализу — основному методу взлома блочных алгоритмов шифрования с симметричным ключом. S-перестановки алгоритма DES оказались намного более устойчивыми к атакам чем, если бы их выбрали случайно. Это означает, что IBM была известна такая техника анализа ещё в 70-х годах XX века.
Хронология
Краткое описание
Входной блок данных, состоящий из 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 аппаратным образом, что обеспечивает довольно высокое быстродействие.
Развитие
Ссылки
http://www.delphifans.com/SoftView/SoftView_263.html
http://www.itl.nist.gov/fipspubs/fip74.htm
См. также
- AES — современный американский стандарт шифрования
- ГОСТ 28147-89 — отечественный стандарт шифрования
- 3-DES
Это заготовка статьи по математике. Помогите Википедии, дополнив её. |