Здавалка
Главная | Обратная связь

Шифр взбивания. Стандарт DES



Система шифрования DES была разработана IBM под именем Lucifer в 1976 году. В ней применялся ключ длиной 56 бит. В стандарте DES применены перестановки специального вида, что и наводило на мысль об известных АНБ (Агентство национальной безопасности США) слабых местах системы. Однако принцип этого шифрования прошел самую широкую апробацию. Нарекания вызывали лишь выбранные короткими длины блока в 64 бита и ключа в 56 бит, что недостаточно для задач национальной безопасности. Свое развитие DES получил в ГОСТ 28147-89, который увеличил длину ключа до 256 бит и допустил произвольные перестановки.

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

Шифр DES принят федеральным стандартом США. Он хорош для многих коммерческих приложений, но недостаточно стоек от атак аналитиков. Например, 16-кратный DES был взломан Шамиром с помощью дифференциального криптоанализа и Матсуи с помощью линейного криптоанализа. Серьезную практическую атаку на DES осуществил Мишель Винер. Все вышесказанное означает, что DES нельзя использовать для серьезных приложений. Для исправления этого положения некоторые коммерсанты используют так называемый "тройной DES", шифруя сообщение трижды двумя различными ключами. Это увеличивает реальную длину ключа до 112 бит, но такой метод медленне обычного DES в три раза.

Схема алгоритма представлена на рис. 4.5 – 4.7.

 
 

 


Рис. 4.5. Схема алгоритма DES

Рис. 4.6. Схема шифрования (расшифрования) DES

 

Рис.4.7. Схема функции F

Описание алгоритма

Шаг 1. На i-м цикле входной блок xi длиной 64 символа

xi = (xi,0, xi,1 ..., xi,63)

делится на два блока по 32 символа X =(xi,0, xi,1 ..., xi,31) и X' = (x'i,0, x'i,1 ..., x'i,31).

Правый блок X'разбивается на восемь блоков по четыре символа:

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

Эти восемь блоков путем копирования крайних элементов преобразуются в восемь блоков из шести символов:

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

Шаг 2. На i-циклической итерации 48 разрядов ключа

(ki,0, ki,1, ... , ki,47).

поразрядно суммируются (по модулю 2) с полученными выше 48 разрядами данных.

Шаг 3. j-й блок из шести символов (0Ј j <8) подается на вход блока подстановки (S-бокс) S[j] имеет шестиразрядный вход и четырехразрядный выход и представляет собой четыре преобразования из Z2,4 в Z2,4; два крайних разряда входного блока служат для выборки одного из этих преобразований. Каждая из восьми подстановок S[0], S[1],..., S[7] осуществляется с использованием четырех строк и 16 столбцов матрицы с элементами {0,1,...,15}. Каждый из массивов размерностью 4ґ16 определяет подстановку на множестве Z2,4 следующим образом. Если входом является блок из шести символов

(z0, z1, z2, z3, z4, z5),

то две крайние позиции (z0, z5) интерпретируются как двоичное представление целых чисел из набора {0,1,2,3}.

Эти целые определяют номер строки (от 0 до 3). Оставшиеся четыре символа (z1, z2, z3, z4) интерпретируются как двоичное представление целых чисел из набора {0,1,...,15} и служат для определения столбца в массиве (от 0 до 15). Таким образом, входной блок (0,0,1,0,1,1) соответствует строке 1 и столбцу 5.

Шаг 4. 32 разряда, составляющие выход S-бокса, подаются на вход блока проволочной коммутации (P-бокс).

Шаг 5. Компоненты правого входного 32-разрядного блока X', преобразованного в T(X'), поразрядно суммируются по модулю 2 с компонентами левого входного 32-разрядного блока X.

На каждой итерации используется 48-разрядный ключ (ki,0, ki,1 ..., ki,47). Поскольку входным ключом DES является 56-разрядный блок k = = (ki,0, ki,1 ..., ki,55), то каждый его разряд используется многократно.

Какой именно из ключей используется на i-циклической итерации, определяется списком ключей. Для описания списка ключей введены дополнительные элементы.

Ключ определяется по следующему алгоритму:

§ производится начальная перестановка PC-1 ключа 56-разрядного ключа пользователя k = (ki,0, ki,1 ..., ki,55). Получаемый в результате 56-разрядный блок рассматривается как два 28-разрядных блока: левый – C0 и правый – D0;

§ производится левый циклический сдвиг блоков C0 и D0 s[1] раз для получения блоков C1 и D1;

§ из сцепления блоков (C1, D1) выбираются 48 разрядов с помощью перестановки PC-2. Эти разряды используются на первой итерации;

§ используемые на i-й циклической итерации разряды ключа определяются методом индукции. Для получения блоков Ci и Di производим левый циклический сдвиг s[i] раз блоков Ci–1 и Di–1.

Инверсией DES (обеспечивающей расшифрование зашифрованных посредством DES данных) является

DES-1 = IP-1ґpT1ґp*ґ...ґp*ґ pT16 ґIP,

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

Таков общий алгоритм DES. Попробуем проанализировать его эффективность.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.