Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Лабораторна роботи №3
з дисципліни:
«Математичні методи представлення знань»
Тема: Шифрування і дешифрування текстової інформації за допомогою алгоритму RSA
Мета: Навчитись шифрування і дешифрування текстової інформації за допомогою алгоритму RSA, вивчити властивості алгоритму RSA
Короткі теоретичні відомості
Перший алгоритм кодування з відкритим ключем (Public Key Encryption, далі PKE) було запропоновано Вітфілдом Діффі та Мартіном Хелманом у Стендфордському університеті. Вони, а також незалежно від них Ральф Меркл, розробили основні його поняття у 1976 році. Перевага PKE полягає у відсутності потреби секретної передачі ключа.
PKE базується на нерозв'язності проблеми розкладу натурального числа на прості множники.
RSA схему шифрування було запропоновано у 1978 році та названо іменами трьох його винахідників: Роном Рівестом (Ron Rivest), Аді Шаміром (Adi Shamir) та Леонардом Адлеманом (Leonard Adleman). RSA належить до класу алгоритмів кодування з відкритим ключем.
У 80-х роках криптосистема переважно використовувалася для забезпечення секретності та достовірності цифрових даних. У сучасному світі RSA використовується в web - серверах та браузерах для зберігання таємності даних що передаються по мережі.
Схема RSA базується на обчисленні виразів зі степенями. Відкритий текст шифрується блоками, довжина кожного із яких менша за деяке число n.
Алгоритм генерації ключа
A повинен згенерувати відкритий та секретний ключі:
1. Вибрати два великих простих числа p та q;
2. Обчислити n = p * q;
3. Обчислити функцію Ейлера = (p - 1) * (q - 1);
4. Вибрати натуральне e, таке що 1<e<, взаємно просте з ;
5. Використовуючи розширений алгоритм Евкліда, розв'язати рівняння
d*e =1 (mod ). Тобто знайти d.
Відкритий ключ: (n, e). Секретний ключ: d. Числа p і q після генерації пари ключів можуть бути знищені, але в жодному разі не повинні бути розкриті.
Схема шифрування RSA
B шифрує повідомлення m та надсилає A.
1. Шифрування. В робить наступні дії:
а) отримати відкритий ключ (n, e) від А;
б) представити повідомлення у вигляді натурального числа m з проміжку [1..n];
в) обчислити c = me mod n;
г) надіслати шифротекст c до А.
2. Дешифрування. Для отримання повідомлення m із шифротексту c А робить наступні дії:
а) використовуючи секретний ключ d, обчислити m = cd mod n.
Як відправник, так і одержувач повинні знати значення п. Відправник знає значення е, і тільки одержувачеві відоме значення d. Отже, дана схема є алгоритмом шифрування з відкритим ключем KU = {е, п} і особистим ключем KR = {d, n}. Щоб цей алгоритм міг використатися для шифрування з відкритим ключем, повинні бути виконані наступні вимоги.
1. Повинні існувати такі значення е, d і п, що ( m (mod п) для всіх m < п.
2. Повинні відносно легко обчислюватися і для всіх значень m < п.
3. Повиннo бути практично неможливо визначити d за наявними е і п.
Хід роботи:
Шифр Віженера:
Шифруємо слово “watermelon”.
Ключове слово “ apple ”.
Ширування:
Повідомлення
W
A
T
E
R
M
E
L
O
N
Ключ
A
P
P
L
E
A
P
P
L
E
Криптотекст
W
P
I
P
V
M
T
A
Z
R
Дешифрування:
Повідомлення
W
P
I
P
V
M
T
A
Z
R
Ключ
A
P
P
L
E
A
P
P
L
E
Криптотекст
W
A
T
E
R
M
E
L
O
N
Алгоритм RSA
Шифрування
Вибрати два простих числа q = 5, p = 7
Обчислити їх добуток: n = p∙q = 35
Обчислити функцію Ейлера: (n) = (p - 1)(q - 1) = 24
Вибрати 1 < e < (n) та взаємно просте з (n): e = 7
Вибрати таке d, що e∙d ≡ 1 (mod (n)), та d ≠ e: d = 31
Шифрувати повідомлення “МАТРАС”, для цього перевести його на цифрову форму за своїм алфавітом.
Алфавіт:
А = 0, Б = 1, В = 2, Г = 3, Д = 5, Е = 6, Є = 7, Ж = 8, З = 9, И = 10, І = 11, Ї = 12, Й = 13,
К = 14, Л = 15, М = 16, Н = 17, О = 18, П = 19, Р = 20, С = 21, Т = 22, У = 23, Ф = 24,
Х = 25, Ц = 26, Ч = 27, Ш = 28, Щ = 29, Ь = 30, Ю = 31, Я = 32
Повідомлення:
| 16| 0 | 20 | 22 | 20 | 0| 21|
Далі шифрується кожне цифрове значення символу за формулою с = me (mod n) (c – зашифрований символ, (e, n) – відкритий ключ, m – цифрове значення символу):
167 (mod 35) = 268435456(mod 35) = 16
07 (mod 35) = 1 (mod 35) = 1
207 (mod 35) = 1280000000 (mod 35)= 20
227 (mod 35) = 2494357888 (mod 35)= 8
207 (mod 35) = 1280000000 (mod 35) = 20
07 (mod 35) = 1 (mod 35)= 1
217 (mod 35) = 1801088541(mod 35)=21
Отже зашифроване повідомлення: «МБРЖРБС»
| 8| 1| 18 | 21 | 18 | 1| 11|
Відкритий ключ (e, n) = (7, 35)
Закритий ключ (d, n) = (31, 35)
Дешифрування
Для дешифрування використовується закритий ключ, в даному випадку:
(d, n) = (31, 35)
Далі дешифрується кожен зашифрований символ за формулою m = cd (mod n) (c – зашифрований символ, (d, n) – закритий ключ, m – цифрове значення символу):
831 (mod 35) = 16
131 (mod 35) = 0
1831 (mod 35) = 20
2131 (mod 35) = 22
1831 (mod 35) = 20
131 (mod 35) = 0
1131 (mod 35) = 21
Отже дешифроване повідомлення:
| 16| 0 | 20 | 22 | 20 | 0| 21|
За алфавітом переводимо цифрові значення символів в символи і отримуємо повідомлення:
«МАТРАС»
Висновок: на даній лабораторній роботі я навчилася шифрувати і дешифрувати текстову інформацію за допомогою алгоритму RSA, вивчила властивості алгоритму RSA