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

Основний крок криптоперетворення по своїй суті є оператором, що визначає перетворення 64-бітового блоку даних. Додатковим параметром цього оператора є 32-бітовий блок, у якості якого використовується який-небудь елемент ключа. Схема алгоритму основного кроку приведена на малюнку 1. Нижче дані пояснення до алгоритму основного кроку:

Крок 0.  Визначає вихідні дані для основного кроку криптоперетворення:

·  N– перетворений 64-бітовий блок даних, у ході виконання кроку його молодша (N1) і старша (N2) частини обробляються як окремі 32-бітові цілі числа без знака. Таким чином, можна записати N=(N1,N2).

·  X– 32-бітовий елемент ключа;

Рис. 6.1. Основний крок криптографічного перетворення алгоритму ГОСТ 28147-89.

Крок 1.  Додавання до ключа по модулю 232. Молодша половина перетвореного блоку додається по модулю 232 до використуємого на кроці елемента ключа, результат передається на наступний крок;

Крок 2.  Поблочна заміна. 32-бітове значення, отримане на попередньому кроці, інтерпретується як масив з восьми 4-бітових блоків коду: S=(S0,S1,S2,S3,S4,S5,S6,S7). Далі значення кожного з восьми блоків заміняється на нове, котре вибирається по таблиці замін у такий спосіб: значення блоку Si заміняється на Si-тий один по одному елемент (нумерація з нуля) i-того вузла замін (тобто i-того рядка таблиці замін, нумерація також з нуля). Іншими словами, як заміна для значення блоку вибирається елемент із таблиці замін з номером рядка, рівним номеру змінюємого блоку, і номером стовпця, рівним значенню змінюємого блоку як 4-бітового цілого додатного числа. Тепер стає зрозумілим розмір таблиці замін: число рядків у ній дорівнює числу 4-бітних елементів у 32-бітному блоці даних, тобто восьми, а число стовпців дорівнює числу різних значень 4-бітного блоку даних, рівному як відомо 24, шістнадцяти;[17]

Крок 3.  Циклічне зрушення на 11 біт вліво. Результат попереднього кроку зрушується циклічно на 11 біт вбік старших розрядів і передається на наступний крок. На схемі алгоритму символом Q11 позначена функція циклічного зрушення свого аргументу на 11 біт вбік старших розрядів;

Крок 4.  Побітове додавання: значення, отримане на кроці 3, побітно складається по модулю 2 зі старшою половиною перетвореного блоку.

Крок 5.  Зміна блоків: молодша частина перетвореного блоку зрушується на місце старшої, а на її місце розміщується результат виконання попереднього кроку.

Крок 6.  Отримане значення перетвореного блоку повертається як результат виконання алгоритму основного кроку криптоперетворення[18].

Таблиця замін.

Через те, що алгоритм ГОСТ є блоковим шифром він має у своєму складі так звану таблицю замін. Однак на відміну від DES в ГОСТі інформація про таблицю замін вважається секретною, посилюючи таким чином криптостійкість усього алгоритму. Деякі фірми, що займаються програмуванням криптографічних систем, генерують таблицю замін випадковим чином. В навчальних цілях при виконанні лабораторних робіт рекомендується використовувати детерміновану таблицю замін (додаток № 3)

Базові цикли криптографічних перетворень.

Базові циклі побудовані з основних кроків криптографічного перетворення, розглянутого в попередньому розділі. У процесі виконання основного кроку використовується тільки один елемент ключа, однак ключ ГОСТ містить вісім таких елементів. Отже, щоб ключ був використаний повністю, кожний з базових циклів повинний багаторазово виконувати основний крок з різними його елементами. Разом з цим здається цілком природним, що в кожному базовому циклі всі елементи ключа повинні бути використані однакову кількість раз, з точки зору стійкості шифру це число повинне бути більше одиниці.

Базові цикли полягають у багаторазовому виконанні основного кроку з використанням різних елементів ключа і відрізняються один від одного тільки числом повторень кроку і порядком використання ключових елементів. Нижче приведений цей порядок для різних циклів[1].

1.  Цикл зашифрування:

K0,K1,K2,K3,K4,K5,K6,K7,K0,K1,K2,K3,K4,K5,K6,K7,K0,K1,K2,K3,K4,K5,K6,K7,K7,K6,K5,K4,K3,K2,K1,K0.

2.  Цикл розшифрування:

K0,K1,K2,K3,K4,K5,K6,K7,K7,K6,K5,K4,K3,K2,K1,K0,K7,K6,K5,K4,K3,K2,K1,K0,K7,K6,K5,K4,K3,K2,K1,K0.

Порядок виконання лабораторної роботи.

1.  Вивчити схему шифрування алгоритмом ГОСТ.

2.  В додатку №1 вибрати ключ та відкритий текст (подані у бінарному вигляді) відповідно до номеру студента в журналі.

3.  Зашифрувати поданий текст алгоритмом ГОСТ вручну.

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

Контрольні питання

1.  Накреслити і пояснити структуру ГОСТ.

2.  Пояснити кожен крок шифрування.

3.  Поясніть цикл зашифрування.

4.  Поясніть цикл розшифрування.

5.  Таблиця замін: її особливості, та відмінність від таблиці замін DES.


2.7.  Лабораторна робота № 7. Алгоритм шифрування даних IDEA.

Тема роботи: Алгоритм шифрування даних IDEA.

Ціль роботи: Відпрацювати навики шифрування алгоритмами IDEA. Одержання досвіду програмної реалізації алгоритму IDEA.

Загальні відомості

Алгоритм IDEA (International Data Encryption Algorithm) є блоковим шифром. Він оперує 64-бітовими блоками відкритого тексту. Безсумнівним достоїнством алгоритму IDEA є те, що його ключ має довжину 128 біт. Той самий алгоритм використовується і для шифрування, і для розшифрування.

Перша версія алгоритму IDEA була запропонована у 1990 р., її автори – Х.Лай і Дж.Мессі. Первісна назва алгоритму PES (Proposed Encryption Standard). Поліпшений варіант цього алгоритму, розроблений у 1991 р., одержав назву IPES (Improved Proposed Encryption Standard). У 1992 р. IPES змінив своє ім'я на IDEA. Як і більшість інших блокових шифрів, алгоритм IDEA використовує при шифруванні процеси змішування і розсіювання, причому всі процеси легко реалізуються апаратними і програмними засобами.

Теоретичні відомості