![]() | Ім'я файлу: Програмна реалізація шифру DES.docx Розширення: docx Розмір: 23кб. Дата: 03.04.2022 скачати Пов'язані файли: Лабораторна-6 (1).docx Лабораторна робота №10.docx ЛЕКЦІЯ 3.docx Лабораторна робота Програмна реалізація шифру DES Мета роботи - створити криптографічний систему шифрування даних, яка базується на алгоритмі шифрування DES. Алгоритм DES є першим симетричним алгоритмом блокового шифрування даних. Завдання до роботи Програмна реалізація криптографічного системи, заснованої на алгоритмі шифрування DES, повинна бути оформлена як деяка програмна оболонка. У програмній реалізації повинен бути розроблений інтерфейс, зручний для експлуатації програми, в інтерфейсі слід передбачити: • два режими формування ключа - ключ заданий, ключ формується за замовчуванням; • введення початкової інформації з сформованого заздалегідь файлу і з файлу, який створюється в оболонці програми; • режими шифрування, які передбачені в DES; • режими шифрування і дешифрування інформації. Підготувати звіт по роботі. У звіті описати алгоритм DES, описати структуру представлення даних в програмі, основні функції програми, призначення функцій, вхідні і вихідні параметри функцій. У звіт включити опис алгоритму генерації ключа, деталі програмної реалізації, які представляють інтерес з точки зору розробника. теоретичний матеріал Основні етапи алгоритму DES для шифрування тексту: 1. Генерується (задається) випадкова послідовність Q з 56 біт. 2. В послідовність Q, для контролю парності, додаються вісім контрольних бітів в позиції 8, 16, 24, ..., 64. Виходить блок U розміром в 64 біта. 3. Для видалення контрольних бітів з блоку U і формування ключа K для шифрування, блок U перетворять, використовуючи функцію G (U). Функція G визначається у вигляді стандартної таблиці, яку треба використовувати в незмінному вигляді. В результаті перетворення отримують блок K = G (U) розміром в 56 біт. Блок K розбивають на дві половини C0 і D0 по 28 біт. 4. Використовуючи C0 і D0, послідовно визначаються Ci і Di , i = 1, 2, ..., 16. Для формування Ci і Di застосовують операції циклічного зсуву вліво на один або два біта. Величина зсуву визначається стандартною таблицею. Операції зсуву для Ci і Di виконуються незалежно. Послідовність C5 виходить з C4 за допомогою циклічного зсуву вліво на 2 біти, а D5 - за допомогою циклічного зсуву вліво на 2 біта D4 (див. Таблицю зрушень для обчислення ключа). В результаті четвертого етапу формується 16 ключів для 16 раундів алгоритму DES. 5. Завершальний етап формування ключів. Використовуючи перестановку H, яка задається стандартною таблицею, кожен ключ розміром в 56 біт перетворюється в блок з 48 біт. Даним перетворенням завершується етап формування ключів. 6. Поточний блок відкритого тексту розміром в 64 біт, представлений у вигляді двох 32 бітових блоків (L0R0) перетворюється початковій перестановкою IP, яка задається фіксованою стандартної таблицею. 7. Виконується 16 раундів перетворень за такими формулами Li = Ri-1, Ri = Li _ f ( Ri-1, Ki ), i = 1.2, ..., 16. Функція f ( Ri-1, Ki ) являє собою деяку суперпозицію простих перетворень, детальний опис яких буде дано нижче. Відзначимо, що функція f ( Ri-1, Ki ) є нелінійної. Нелінійність функції f ( Ri-1, Ki ) забезпечується S-блоками. Алгоритм обчислення функції шифрування f ( Ri-1, Ki ) До блоку Ri-1 застосовують функцію розширення E (Ri-1), яка 32 бітовий блок Ri-1 перетворює в блок R'= E (Ri-1) розміром в 48 біт. Функція E (Ri-1) визначається стандартною таблицею. Алгоритм обчислення функції шифрування формулюється в такий спосіб. • Обчислюється новий блок розміром в 48 біт за формулою B = E (Ri-1) Ki . • Блок B розміром в 48 біт розбивається на вісім блоків Bj , j = 1,2, ... , 8, по шість бітів кожен B = B1B2B3B4B5B6B7B8. • Кожен блок Bj розміром в шість біт, використовуючи свою функцію Sj , перетворюється в блок Sj ( Bj ) розміром в чотири біта. В результаті виходить наступний блок даних B '= S1 (B1) S2 (B2) S3 (B3) S4 (B4) S5 (B5) S6 (B6) S7 (B7) S8 (B8) розміром в 32 біта. • Алгоритм перетворення блоку Bj розміром в шість біт в блок Sj ( Bj ) розміром в чотири біта наступний. Кожна функція Sj є стандартну таблицю, яка складається з чотирьох рядків з номерами 0, 1, 2, 3, і шістнадцяти стовпців з номерами 0, 1,2, ... , 15. Нехай, наприклад, деякий блок Bj = b1 b2 b3 b4 b5 b6 = 110010, j = 1, 2, ..., 8. Тоді має місце: біти b1b6 = 10 формують номер стовпця (двійкове число 10 одно десятковому числу 2) таблиці Sj , біти b2 b3 b4 b5 = 1001 формують номер рядка (двійкове число 1001 дорівнює десятковому числу 9) та бліц Sj . Блок Bj = b1 b2 b3 b4 b5 b6 = 110010 замінюють двійковим значенням числа таблиці Sj , яке знаходиться на перетин рядка з номером b1b6 = 10 (2) зі стовпцем з номером b2 b3 b4 b5 = 1001 (9). Перетворюючи кожне Bj , j = 1, 2, ..., 8, з блоку B, отримаємо новий блок B 'розміром в 32 біта. Контрольні питання 1. За яким принципом побудований блоковий шифр DES? 2. Який шифр передував шифру DES? 3. Вказати довжину початкового ключа в алгоритмі DES. 4. Перерахувати основні етапи формування ключів в алгоритмі DES. 5. Скільки раундів в алгоритмі DES? 6. Скільки ключів формується в алгоритмі DES для шифрування тексту? 7. Вказати довжину ключа для шифрування тексту в алгоритмі DES. 8. Скільки S-функцій визначено в алгоритмі DES? 9. Яка арифметична операції використовується при перетвореннях в алгоритмі DES. 10. Вкажіть довжину шифруємого блоку в алгоритмі DES. |