Нехай з файлу вхідного тексту був прочитаний черговий 64-бітовий (8-байтовий) блок T. Цей блок T перетвориться за допомогою матриці початкової перестановки IP. Біти вхідного блоку (64 біта) переставляються відповідно до матриці IP[9].
Отримана послідовність бітів розділяється на 2 послідовності: L0-ліві старші біти, R0-праві молодші біти, кожна з яких містить 32 біта. Потім виконується ітеративний процес шифрування, що складається з 16 раундів. Нехай Ti- результат i-ого раунду:
Ti=LiRi,
Рис. 1 Цикл отримання підключів для кожного раунду |
де Li – перші 32 біта послідовності, Ri – останні 32 біта послідовності. Тоді результат i-ого раунду описується наступними формулами:
Li=Ri-1, i=1,2,3, …, 16,
Ri=Li-1 xor f(Ri-1, Ki), i=1,2,3, …, 16.
Функція f називається функцією шифрування. Її аргументами є послідовність Ri-1, одержувана на попередньому кроці раунду, і 48-бітовий підключ Ki, що є результатом перетворень 64-бітового ключа шифру K.
На останньому кроці раунду одержують послідовності R16 і L16, що об’єднуються в 64-бітову послідовність.[1]
По закінченні шифрування здійснюється відновлення позицій бітів за допомогою матриці зворотної перестановки IP-1.
Елементи матриць IP і IP-1 зв'язані між собою.
Процес розшифровування даних є інверсним стосовно процесу шифрування. Усі дії повинні бути виконані в зворотному порядку. Це означає, що дані, що розшифровуються, спочатку переставляються відповідно до матриці IP-1 ,а потім над послідовністю бітів R16L16 виконуються ті ж дії, що й у процесі шифрування, але в зворотному порядку.
Ітеративний процес розшифрування може бути описаний наступними формулами:
Ri=Li, i=1,2,3, …, 16,
Li-1=Ri xor f (Li, Ki), i=1,2,3, …, 16. R16L 16
Таким чином, для процесу розшифрування з переставленим вхідним блоком R16L16 на першому раунді використовується ключ K16, на другому раунді – K15 і т.д. На 16-ому раунді використовується ключ K1. на останньому кроці останнього раунду будуть отримані послідовності L0 і R0, що конкатенуються в 64-бітову послідовність L0R0. Потім у цій послідовності 64 біта переставляються відповідно до матриці IP. Результат такого перетворення – вихідна послідовність бітів.
Тепер розглянемо, що ховається під перетворенням, позначеним буквою f. Для обчислення значення функції f використовуються:
функція E (розширення 32 біт до 48);
функція S1,S2, …,S8 (перетворення 6-бітового числа в 4-бітове);
функція P (перестановка бітів у 32-бітовій послідовності).
Приведемо визначення цих функцій.
Функція розширення E приймає блок з 32 біт і породжує блок з 48 біт, відповідно до матриці E
Отриманий результат складається по модулю 2 (операція XOR) з поточним значенням ключа Ki і потім розбивається на вісім 6-бітових блоків B1,B2, …,B8... Далі кожний з цих блоків використовується як номер елемента у блоках S1,S2, …,S8, маючих 4-бітові значення.
Нехай на вхід функції Sj надходить 6-бітовий блок Bj=b1b2b3b4b5b6, тоді двохбітне число b1b6 указує номер рядка матриці, а чотирьохбітне число b2b3b4b5 – номер стовпця в наступній таблиці.
Сукупність 6-бітових блоків B1,B2, …,B8 забезпечує вибір чотирьохбітового елемента в кожній з функцій S1,S2, …,S8... У результаті одержуємо S1(B1) S2(B2) … S8(B8), або 32-бітовий блок (оскільки матриці Sj містять 4-бітові елементи). Цей 32-бітовий блок перетвориться за допомогою функції перестановки бітів P. Таким чином, функція шифрування f (Ri-1,Ki)=P (S1 (B1) S2 (B2) … S8 (B8))...
Рис 5.2. Структурна схема алгоритму DES |
На кожному раунді використовується нове значення ключа Ki (довжиною 48 біт) яке обчислюється з початкового 64-бітового ключа K з 8 бітами контролю парності, розташованими в позиціях 8,16,24,32,40,48,56,64. Для видалення контрольних бітів і підготовки ключа до роботи використовується функція PC1 первісної підготовки ключа.
Результат перетворення PC1(K) розбивається на дві половини C0 і D0 по 28 біт кожна. Перші чотири рядки матриці PC1 визначають, як вибираються біти послідовності C0, останні чотири рядки – послідовності D0. Для генерації послідовностей не використовуються біти 8,16,24,32,40,48,56 і 64 ключа шифру. Таким чином, у дійсності ключ шифру є 56-бітовим.
Після визначення С0 і D0 рекурсивно визначаються Сi і Di, i = 1, 2,..., 16.
Для цього застосовуються операції циклічного зрушення вліво на один чи два біти в залежності від номера кроку раунду, як показано в таблиці, що приведена в додатку №2.
Ключ Ki, обумовлений на кожнім кроці раунду, є результатом вибору конкретних бітів з 56-бітової послідовності Сi Di, і їхньої перестановки. Іншими словами, ключ Ki=H(Ci Di)[1].
Рис 5.3.Схема обчислення ключів Ki |
Основні режими роботи алгоритму DES
Алгоритм DES дозволяє безпосередньо перетворювати 64-бітовий вхідний відкритий текст у 64-бітовий вихідний шифрований текст, однак дані рідко обмежуються 64 розрядами. Щоб скористатися алгоритмом DES для рішення різноманітних криптографічних задач, розроблені чотири робочі режими:
· електронна кодова книга ЕСВ (Electronic Code Book);
· зчеплення блоків шифру СВС (Cipher Block Chaining);
· зворотний зв'язок по шифртексту СРВ (Cipher Feed Back);
· зворотний зв'язок по виходу OFB (Output Feed Back)[15].
Режим "Електронна кодова книга"
Довгий файл розбивають на 64-бітові відрізки (блоки) по 8 байтів. Кожний з цих блоків шифрують незалежно з використанням того ж самого ключа шифрування. Найбільша перевага – простота реалізації. Недолік – відносно слабка стійкість проти кваліфікованих кріптоаналітіков. Через фіксований характер шифрування при обмеженій довжині блоку (64 біта) можливе проведення кріптоаналізу "зі словником". Блок такого розміру може повторитися в повідомленні унаслідок великої надмірності тексту. Це приводить до того, що ідентичні блоки відкритого тексту в повідомленні будуть представлені ідентичними блоками шифртексту, що дає кріптоаналітіку деяку інформацію про зміст повідомлення.[6]
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.