Алгоритм шифрування DES

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2008
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Методи та засоби криптологічних перетворень
Група:
ІБ – 44

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська політехніка” Звіт про виконання лабораторної роботи №3 На тему: „ Алгоритм шифрування DES” З курсу: “Методи і засоби криптологічних перетворень” Львів 2008 Мета: дослідити симетричні шифри на прикладі алгоритму DES. Теоретичні відомості Стандарт шифрування даних (англійською Data Encryption Standard — DES) був розроблений у 70-х роках фахівцями з IBM і у 1976 році був прийнятий через NBS та ANSI у якості федерального стандарту Сполучених Штатів для захисту комерційної та урядової інформації, не пов’язаної з національною безпекою. Цим актом увінчався цілий етап у розвитку криптографії — майже одночасно з’явилися принципово нові криптосистеми з відкритим ключем, яким присвячено більшість подальших розділів цієї книжки. Спробуємо простежити уявний шлях від шифру одноразового блокноту до криптосистеми DES. Для цього нагадаємо дві основні харак3К3стики першого. З одного боку, шифр одноразового блокноту є абсолютно надійним, а з іншого, він далеко не завжди є практичним через велику довжину ключа. Тому перший крок є таким — довжина ключа має бути фіксованою, а шифрування має відбуватися блоками. Як і шифр одноразового блокноту, DES оперує з інформацією поданою у двійковій формі, а довжина блоку і довжина ключа вибрані рівними 64. Іншими словами, двійкове повідомлення М розбивають на блоки по 64 біти і шифрують кожен блок окремо, використовуючи один і той же двійковий ключ К довжини 64. Таким чином, повідомлення М = М1М2М3 … перетворюється у криптотекст С = С1С2С3…, де d — ЕK(Мi). У стандарті DES кожен блок криптотексту Сi також є двійковою послідовністю довжини 64. Звернемося до питання вибору алгоритму Е. Апріорно він повинен задовольняти три умови: можливість дешифрування: для будь-якого ключа K різним блокам повідомлення М’ і М» відповідають різні блоки криптотексту ЕK(М’) і ЕK(М»), інакше кажучи, алгоритм ЕK з будь-яким ключем здійснює перестановку двійкових послідовностей довжини 64; ефективність: і шифрування, і дешифрування відбуваються швидко; надійність: якщо ключ невідомий, то немає способу розкриття шифру. Останній пункт потребує принципового уточнення. Зрозуміло, що як би вдало алгоритм Е не був спроектований, надійність, що давалася шифром одноразового блокноту, вже буде недосяжною. Недосяжною з тої причини, що будь-який блоковий шифр можна зламати за допомогою брутальної атаки, яка у нашому випадку полягає в переборі всіх двійкових ключів К довжини 64. Про яку ж надійність йдеться? Зауважимо, що всього двійкових ключів довжини 64 є 264. Елементарні обчислення показують, що комп’ютер із тактовою частотою 100 MHz перебиратиме всі можливі ключі 264/108 секунд, тобто довше ніж 5800 років. Звичайно, повний перебір необхідний лише у найгіршому випадку. У середньому, потрібний ключ буде знайдено вдвічі швидше — приблизно за 2900 років — час, за який таємниця втратить актуальність. Якщо для шифру невідомо методу його ламання упродовж більш реалістичного терміну, то такий шифр вважають надійним в обчислювальному сенсі. Якщо ми хочемо отримати криптосистему надійну у такому новому розумінні, зразу відмовимось від наївної спроби вдосконалити шифр одноразового блокноту і покласти ЕK(Мi) = Мi,K. Таке шифрування є дуже швидке, але вкрай ненадійне. Для розкриття досить просумувати за модулем 2 криптотекст із самим собою, але зсунутим на 64 позиції. Із рівності КК=0 випливає, що результат буде тим же, що й при сумуванні повідомлення із самим собою зсунутим на ту ж кількість позицій. Із цієї інформації, яка вже ніяк не залежить від ключа, неважко отримати саме повідомлення, запорукою чого є феномен надлишковості будь-якої природної мови. Розробники стандарту DES пропонують наступну конструкцію (подальший опис алгоритму спрощено задля акцентування найважливіших фаз його роботи). Алгоритм E приймає на вхід двійковий блок М довжини 64 та використовує ключ К, з якого виділяються 16 частин K1,…,K16 по 48 бітів кожна. Це так звані циклові ключі. Блок М розбивається на дві рівні частини по 32 біти: ліву L0 та праву R0. Відбувається 16 циклів перетворення повідомлення М=L0R0. У і-му циклі (Lі-1, Rі-1) за допомогою Кі перетворюється у (Lі, Rі) наступним чином: Lі = Rі-1, R і = Lі-1f(Rі-1, Kі), де f — деяка функція, що перетворює двійкові послідовності довжини 80 у двійкові послідовності довжини 32. Насамкінець ліва та права частини міняються місцями, що і є результатом роботи алгоритму: ЕК(М) = R16Ll6. Описана процедура різні блоки М’ і М» перетворює у різні блоки 3К(М’) і Ек(М»), незалежно від вибору функції f. Більше того, якщо Ек1,…,к16(М) = С, то М = Ек1,…, к16{С), тобто дешифруючий алгоритм ідентичний із шифруючим, варто лише взяти послідовність ключів у зворотньому порядку. Функцію f стандарт DES пропонує такої форми: f(R,Ki) = s(e(R) Кi). Функція e розширює R із 32 бітів до 48, вставляючи копії деяких 16 позицій. Функція s перетворює двійкові послідовності довжини 48 у двійкові послідовності довжини 32. Вона реалізується так. Двійковий вхід А довжини 48 розбивається на 8 блоків А1 … A8 по 6 бітів і кожен блок Аi замінюється на деякий блок із 4 бітів шляхом застосування деякої функції s,. Кожна із цих 8-ми функцій реалізована незалежно від інших. Реалізації цих функцій називаються S-блоками. Після цього отримані 32 біти перемішуються згідно із деякою перестановкою р. Таким чином, s(A) = p(s1(A1) … S8(A8)), що й завершує опис алгоритму DES. Згідно із стандартом, описана нами процедура починається із переставлення бітів блоку М відповідно до фіксованої перестановки IP і завершується застосуванням до отриманого результату оберненої перестановки IP-1. Із 64 бітів ключа К алгоритм DES насправді використовує лише 56. Решта бітів можуть служити для перевірки неушкодженості даних при пересиланні ключа — з цією метою кожен восьмий біт покладають рівним сумі за модулем 2 попередніх семи. Результат виконання шифрування Ключ ABCDEF0123456789  Відкритий текст ABCDEFABCDEF1234   Initial KEY=ABCDEF0123456789 1010101111001101111011110000000100100011010001010110011110001001 SETTING ROUND KEYS Initially C=1000011101100110010101010000 D=0101010101100110100001110000 Key for round 1 C=0000111011001100101010100001 D=1010101011001101000011100000 K0=110001010111110000010010101100001010110000011010 Key for round 2 C=0001110110011001010101000010 D=0101010110011010000111000001 K1=000001000100001101101110100100110001010110001101 Key for round 3 C=0111011001100101010100001000 D=0101011001101000011100000101 K2=101000100101000100110101100010100001001110100001 Key for round 4 C=1101100110010101010000100001 D=0101100110100001110000010101 K3=100011010000101101100001010100100110101100100101 Key for round 5 C=0110011001010101000010000111 D=0110011010000111000001010101 K4=100000110111001010111001011100100000100110011000 Key for round 6 C=1001100101010100001000011101 D=1001101000011100000101010101 K5=100111010001011111000000110000010011000100011011 Key for round 7 C=0110010101010000100001110110 D=0110100001110000010101010110 K6=010100100101101011001001011001110011001000101000 Key for round 8 C=1001010101000010000111011001 D=1010000111000001010101011001 K7=000110011111000101000100011100000001100101101110 Key for round 9 C=0010101010000100001110110011 D=0100001110000010101010110011 K8=100101110010110000011100010111101100010100000100 Key for round 10 C=1010101000010000111011001100 D=0000111000001010101011001101 K9=010011100010011010010000100010000110010111001000 Key for round 11 C=1010100001000011101100110010 D=0011100000101010101100110100 K10=010111101001110000101100111010001111001000000001 Key for round 12 C=1010000100001110110011001010 D=1110000010101010110011010000 K11=110010101010000001001010111100100100011000101010 Key for round 13 C=1000010000111011001100101010 D=1000001010101011001101000011 K12=001010001100111000101110100111000001101100001010 Key for round 14 C=0001000011101100110010101010 D=0000101010101100110100001110 K13=111000000011100100001010100101000111001001110000 Key for round 15 C=0100001110110011001010101000 D=0010101010110011010000111000 K14=001000001010111001110001011100011010101001100000 Key for round 16 C=1000011101100110010101010000 D=0101010101100110100001110000 K15=101110001101000001010100010000101100001010011101 E N C R Y P T I O N input block=ABCDEFABCDEF1234 1010101111001101111011111010101111001101111011110001001000110100 Rounds 1 L=36C0B63F R=3FAD3F6D K1=110001010111110000010010101100001010110000011010 2 L=3FAD3F6D R=5E4C3E96 K2=000001000100001101101110100100110001010110001101 3 L=5E4C3E96 R=3A47E827 K3=101000100101000100110101100010100001001110100001 4 L=3A47E827 R=42211720 K4=100011010000101101100001010100100110101100100101 5 L=42211720 R=C090DC40 K5=100000110111001010111001011100100000100110011000 6 L=C090DC40 R=9755107F K6=100111010001011111000000110000010011000100011011 7 L=9755107F R=727D1D2D K7=010100100101101011001001011001110011001000101000 8 L=727D1D2D R=F7F666D6 K8=000110011111000101000100011100000001100101101110 9 L=F7F666D6 R=7F4EC556 K9=100101110010110000011100010111101100010100000100 10 L=7F4EC556 R=1FF7999E K10=010011100010011010010000100010000110010111001000 11 L=1FF7999E R=1501B315 K11=010111101001110000101100111010001111001000000001 12 L=1501B315 R=20FDFF4C K12=110010101010000001001010111100100100011000101010 13 L=20FDFF4C R=F62B50EE K13=001010001100111000101110100111000001101100001010 14 L=F62B50EE R=9BFB4549 K14=111000000011100100001010100101000111001001110000 15 L=9BFB4549 R=C1277BBA K15=001000001010111001110001011100011010101001100000 16 L=C1277BBA R=EC9C76B7 K16=101110001101000001010100010000101100001010011101 output block=020BFEA57BCE9CA7 0000001000001011111111101010010101111011110011101001110010100111 D E C R Y P T I O N input block=020BFEA57BCE9CA7 0000001000001011111111101010010101111011110011101001110010100111 Rounds 1 L=3454EC9A R=EC9C76B7 K16=101110001101000001010100010000101100001010011101 2 L=EC9C76B7 R=C1277BBA K15=001000001010111001110001011100011010101001100000 3 L=C1277BBA R=9BFB4549 K14=111000000011100100001010100101000111001001110000 4 L=9BFB4549 R=F62B50EE K13=001010001100111000101110100111000001101100001010 5 L=F62B50EE R=20FDFF4C K12=110010101010000001001010111100100100011000101010 6 L=20FDFF4C R=1501B315 K11=010111101001110000101100111010001111001000000001 7 L=1501B315 R=1FF7999E K10=010011100010011010010000100010000110010111001000 8 L=1FF7999E R=7F4EC556 K9=100101110010110000011100010111101100010100000100 9 L=7F4EC556 R=F7F666D6 K8=000110011111000101000100011100000001100101101110 10 L=F7F666D6 R=727D1D2D K7=010100100101101011001001011001110011001000101000 11 L=727D1D2D R=9755107F K6=100111010001011111000000110000010011000100011011 12 L=9755107F R=C090DC40 K5=100000110111001010111001011100100000100110011000 13 L=C090DC40 R=42211720 K4=100011010000101101100001010100100110101100100101 14 L=42211720 R=3A47E827 K3=101000100101000100110101100010100001001110100001 15 L=3A47E827 R=5E4C3E96 K2=000001000100001101101110100100110001010110001101 16 L=5E4C3E96 R=3FAD3F6D K1=110001010111110000010010101100001010110000011010 output block=ABCDEFABCDEF1234 1010101111001101111011111010101111001101111011110001001000110100 Висновок: під час виконання даної лабораторної роботи ми ознайомилися з алгоритмом шифрвання DES та за допомогою програмної реалізації даного коду зашифрували 16-розрядне повідомлення ABCDEFABCDEF1234 за допомогою ключа ABCDEF0123456789 та отримали як результат зашифрований текст 020BFEA57BCE9CA7.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!