Учбово-методичний посібник для виконання лабораторних робіт з дисципліни „Основи теорії криптографії і криптоаналізу”, страница 32

Нехай з файлу вхідного тексту був прочитаний черговий 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]