2.1
Рис. 2.1 Схема шифрування DES
Вхідний блок даних, що складається з 64 біт, перетворюється у вихідний блок ідентичною довжини. Ключ шифрування повинен бути відомий як отправляющей, так і приймаючій стороні. В алгоритмі широко використовуються бітові перестановки.
В основі алгоритму лежить ланцюг Фейстеля, чия циклова (раундова) функція f обробляє 32-розрядні слова (половину блоку) і використовує як параметр 48-розрядний підключ (J). Спочатку 32 вхідні розряду з допомогою розширює перестановки перетворюються в 48 (деякі розряди повторюються). Схема цього розширення показана нижче (номери відповідають номерам біт вхідного 32-бітового блоку).
Рис. 2.2 Розширюється перестановка
Значення на виході ключового суматора виходить в результаті побітового додавання (виключає АБО, xor) сформованого 48-розрядного блоку і поточного підключа. Результуючий 48-розрядний блок перетвориться в 32-розрядний за допомогою S-блоків. Потім виконується ще одна бітова перестановка згідно зі схемою, показаної нижче (числа являють собою порядкові номери біт).
Рис. 2.3 Бітова перестановка
Шифрування починається з перестановки біт (IP - Initial Permutation) в 64-розрядному блоці вихідних даних. П'ятьдесят восьмий біт стає першим, п'ятидесятих другим і т. д. Схема перестановки бітів показана нижче.
Рис. 2.4 Схема перестановки
Отриманий блок ділиться на дві 32-розрядні частини L0 і R0. Далі 16 разів повторюються наступні 4 процедури:
1 Перетворення ключа з урахуванням номера ітерації i (перестановки розрядів з видаленням 8 біт, в результаті виходить 48-розрядний ключ)
2 Нехай A=Li, а J - перетворений ключ. За допомогою функції генерується 32-розрядне вихідне значення циклової (раундової) функції.
Виконується операція, результат позначається Ri + 1
Виконується операція присвоєння Li + 1=Ri
Після виконання 16 циклів перетворення виробляється ще одна бітова перестановка, інверсна початковій. Вона припускає наступне розміщення 64 біт зашифрованих даних (перший бітом стає 40-му, другий 8-ий і т. д.)
Рис. 2.5?? Ітов перестановка, інверсна початковій
блоки являють собою таблиці, що містять 4 рядки і 16 стовпців. Перший S-блок S1 представлений нижче.
Рис. 2.6 Перший S-блок
Вхідний 48-розрядний блок ділиться на 8 груп по 6 розрядів. Перший і останній розряд в групі використовуються в якості адреси рядка, а середні 4 розряду - в якості адреси стовпця. В результаті, кожні 6 біт перетворюються в 4 біта, а весь 48-розрядний код в 32-розрядний (для цього потрібно 8 S-блоків). Існують апаратні реалізації стандарту DES, що забезпечують високу продуктивність.
Через малу довжини ключа (56 біт), є всього 256 різних ключів, що при нинішньому розвитку техніки неприпустимо унаслідок низького часу злому атакою типу Brute Force (всього кілька годин). Також викликає сумнів його надійність, так як в основі алгоритму DES лежать 8 таблиць підстановки (S-boxes), застосовувані в кожному раунді.
На сього...