
НАЦІОНАЛЬНА
АКАДЕМІЯ СТАТИСТИКИ, ОБЛІКУ ТА АУДИТУ
НАСОА
ЛАБОРАТОРНА РОБОТА №2
«Шифрування даних. Електронний цифровий підпис»
з дисципліни «Електронна комерція»
для студентів
денної форми навчання
2012
Лабораторна робота «Шифрування даних. Електронний цифровий підпис» з дисципліни дисципліни «Електронна комерція» для студентів денної форми навчання /Укл.: доц.. М.Є.Сіницький– Київ: НАСОА, 2010. – 17 с.
Рецензент: зав. каф., к.т.н. В.В. Козлов.
Затверджено
на засіданні кафедри “Інформаційних систем і технологій”
Протокол № 1
від 29.08.2012
Зміст
Завдання на практичну роботу 4
Приклади виконання завдань 5
Додаток А. Символи кирилиці (альтернативна кодова таблиця ASCII) 9
Додаток Б. Алгоритм шифрування RSA 10
Додаток В. Таблиця простих чисел 13
Додаток Г. Функція хешування 14
Додаток Д. Електронний цифровий підпис 15
Питання до підсумкового контролю 17
Література 18
Завдання на практичну роботу
Завдання №1. Шифр Цезаря
Використовуючи шифр Цезаря, зашифруйте свої дані: Прізвище Ім`я По-батькові.
Завдання №2. Алгоритм шифрування RSA
Згенеруйте відкритий і закритий ключі в алгоритмі шифрування RSA, обравши прості числа p і q із перших двох сотень. При цьому число p за порядковим номером у таблиці Додаток В має відповідати Вашому порядковому номеру у груповому журналі плюс 3, а число q – бути більшим за порядковим номером не менш, як на три номери.
Зашифруйте повідомлення, що складається з ваших ініціалів: ПІБ. Вважаючи, що Ви - інша сторона спілкування, розшифруйте отримане повідомлення.
Завдання №3. Функція хешування
Знайти
хеш–образ свого
Прізвища,
використовуючи
хеш–функцію
,
де n
= pq;
p,
q
взяти
з Завдання
№3.
Завдання №4. Електронний цифровий підпис
Використовуючи хеш-образ свого Прізвища, обчисліть електронний цифровий підпис за схемою RSA.
Приклади виконання завдань
Завдання №1. Шифр Цезаря. Використовуючи шифр Цезаря, зашифруйте свої дані: Прізвище Ім`я По-батькові.
Первинний текст:
«ДАШЕВСКАЯ ВЕРОНИКА ЕВГЕНЬЕВНА»
Використовуємо алфавіт, що містить 33 літери і пробіл, який стоїть після букви Я:
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯпробіл
Ключем у шифрі Цезаря є число 3. Кожна буква у вихідному тексті зміщується за абеткою на 3 позиції. Таким чином, отримуємо:
ЖГЫЗЕФНГБВЕЗУСРЛНГВЗЕЁЗРЯЗЕРГ
Завдання №2. Алгоритм шифрування RSA.
Зашифруймо повідомлення, що складається з ПІБ.
Приклад (не за умовою завдання).
1. Генерування ключів (див. Додаток Б).
Оберемо два простих числа р = 37 і q = 79 (див. Додаток В).
Тоді модуль
n = pq=37*79 = 2923
і функція Ейлера
(n) = (p-1)(q-1) = 36*78 = 2808.
Закритий (приватний) ключ d обираємо з умов d < (n) і d - взаємно просте з (n) , тобто d і (n) не мають спільних дільників.
Нехай d = 17.
Відкритий ключ e обираємо з умов
e < (n) і de=1(mod (n)), e<2808,
17e=1(mod 2808).
Остання умова означає, що число 17e ділиться на 2808 з залишком 1, а 17e-1 має ділитись на 2808 без залишку.
Таким чином, для визначення e треба підібрати таке число k , що
17e-1 = 2808 k, або 17e-2808 k-1 = 0;
Цю задачу можна вирішити за допомогою інструмента «Поиск решения» MS Excel (див додаткові матеріали до даної роботи). Программа знаходить: k=11 і e=1817.
Тоді для нашого прикладу
(1817, 2923) – відкритий ключ,
(17, 2923) – секретний ключ.
2. Шифрування
Представимо повідомлення «ДВЕ», яке підлягає шифруванню, як послідовність цілих чисел. Нехай буква «Д» відповідає числу 5, буква «В» - числу 3 і буква «Е» - числу 6.
Зашифруємо повідомлення, використовуючи відкритий ключ (1817, 2923):
С1 = (51817) mod 2923= 762
С2 = (31817) mod 2923=469
С3 = (61817) mod 2923= 746
Таким чином, вхідному повідомленню (5, 3, 6) відповідає криптограма (762, 469, 746).
3. Дешифрування
Дешифруємо повідомлення (762, 469, 746), користуючись секретним ключем (17,2923):
М1 = (76217) mod 2923= 5
М2 = (46917) mod 2923=3
М3 = (74617) mod 2923= 6
В результаті розшифрування було одержано вихідне повідомлення (5, 3, 6), тобто "ДВЕ".
Примітки.
Ч
исла а і b порівнювані за mod n, якщо їх різниця ділиться на n:
Наприклад,
.
Обчислення можна проводити, використовуючи правила модульної алгебри:
Н
априклад:
123 = 1728 ≡ 246(mod247) = -1(mod247);
12120 = (123)40 ≡ (-1)40(mod247) = 1(mod247);
12121 ≡ 12(mod247);
44 ≡ 256(mod247) = 9(mod247);
412 ≡(44)3(mod247) = 93(mod247) = 729(mod247) = =235(mod247);
460 = (412)5 = 2355 = 716703146875 ≡ 144(mod247);
4120 = (460)2 = 1442 = 20736 ≡ 235(mod247);
4121 = 4*4120 = 235*4 = 940 ≡ 199(mod247);
і т.д.
Завдання №3. Функція хешування
Використовуючи хеш–функцію , знайти хеш–образ свого Прізвища.
Повідомлення, що хешується «ДАШЕВСКАЯ». Візьмемо два простих числа p=37, q=79. Позначимо n=pq=37*79=2923. Вектор ініціалізації обираємо рівним 10 (обираємо випадковим чином). Слово «ДАШЕВСКАЯ» можна представити послідовністю чисел (5,1,26,6,3,19,12,1,33) за номерами літер в абетці. Таким чином,
n=2923, H0=10, M1=5, M2=1, M3=26, M4=6, M5=3, M6=19, М7=12, М8=1, М9=33.
Використовуючи формулу
,
отримаємо хеш-образ повідомлення «ДАШЕВСКАЯ»:
H1=(H0+M1)2 mod n = ( 10 + 5)2 mod 2923 = 225
H2=(H1+M2)2 mod n = (225 + 1)2 mod 2923 = 1385
H3=(H2+M3)2 mod n = (1385 + 26)2 mod 2923 = 358
H4=(H3+M4)2 mod n = ( 358 + 6)2 mod 2923 = 961
H5=(H4+M5)2 mod n = ( 961 + 3)2 mod 2923 = 2705
H6=(H5+M6)2 mod n = (2705 + 19)2 mod 2923 = 1602
H7=(H6+M7)2 mod n = (1602 + 12)2 mod 2923 = 603
H8=(H7+M8)2 mod n = (603 + 1)2 mod 2923 = 2364
H9=(H8+M9)2 mod n = (2364 + 33)2 mod 2923 = 1914
В результаті отримаємо хеш-образ повідомлення «ДАШЕВСКАЯ», рівний 1914.
Завдання №4. Електронний цифровий підпис.
Використовуючи хеш-образ свого Прізвища, обчисліть електронний цифровий підпис за схемою RSA.
Нехай хеш-образ Прізвища дорівнює 1914, а закритий ключ алгоритму RSA рівний (17, 2923). Тоді електронний цифровий підпис повідомлення, що складається з Прізвища, обчислюється за правилом:
s = 191417 mod 2923 = 1565.
Для перевірки ЕЦП, використовуючи відкритий ключ (1817, 2923), знайдемо
H=1565 1817 mod 2923 = 1914.
Оскільки хеш-образ повідомлення співпадає зі знайденим значенням H, то підпис признається справжнім.
Додаток А. Символи кирилиці (альтернативна кодова таблиця ASCII)
Сим-л |
Дес. |
Двійк. |
Сим-л |
Дес. |
Двійк. |
А |
192 |
11000000 |
б |
225 |
11100001 |
Б |
193 |
11000001 |
в |
226 |
11100010 |
В |
194 |
11000010 |
г |
227 |
11100011 |
Г |
195 |
11000011 |
д |
228 |
11100100 |
Д |
196 |
11000100 |
е |
229 |
11100101 |
Е |
197 |
11000101 |
ж |
230 |
11100110 |
Ж |
198 |
11000110 |
з |
231 |
11100111 |
З |
199 |
11000111 |
и |
232 |
11101000 |
И |
200 |
11001000 |
й |
277 |
11101001 |
Й |
201 |
11001001 |
к |
234 |
11101010 |
К |
202 |
11001010 |
л |
235 |
11101011 |
Л |
203 |
11001011 |
м |
236 |
11101100 |
М |
204 |
11001100 |
н |
237 |
11101101 |
Н |
205 |
11001101 |
о |
238 |
11101110 |
О |
206 |
11001110 |
п |
239 |
11101111 |
П |
207 |
11001111 |
р |
240 |
11110000 |
Р |
208 |
11010000 |
с |
241 |
11110001 |
С |
209 |
11010001 |
т |
242 |
11110010 |
Т |
210 |
11010010 |
у |
243 |
11110011 |
У |
211 |
11010011 |
ф |
244 |
11110100 |
Ф |
212 |
11010100 |
х |
245 |
11110101 |
Х |
213 |
11010101 |
ц |
246 |
11110110 |
Ц |
214 |
11010110 |
ч |
247 |
11110111 |
Ч |
215 |
11010111 |
ш |
248 |
11111000 |
Ш |
216 |
11011000 |
щ |
249 |
11111001 |
Щ |
217 |
11011001 |
ъ |
250 |
11111010 |
Ъ |
218 |
11011010 |
ы |
251 |
11111011 |
Ы |
219 |
11011011 |
ь |
252 |
11111100 |
Ь |
220 |
11011100 |
э |
253 |
11111101 |
Э |
221 |
11011101 |
ю |
254 |
11111110 |
Ю |
222 |
11011110 |
я |
255 |
11111111 |
Я |
223 |
11011111 |
пробіл |
32 |
00010000 |
а |
224 |
11100000 |
|
|
|
Додаток Б. Алгоритм шифрування RSA
Алгоритм шифрування RSA відноситься до криптографічних систем із відкритим ключем. Криптосистеми з відкритим ключем (асиметричні криптосистеми) були розроблені в другій половині семидесятих років. В асиметричних криптосистемах процедури прямого і зворотнього криптоперетворення виконуються на різних ключах і не мають між собою очевидних і легковідсліджуваних зв`язків, що дозволяють за одним ключем визначити інший. В такій схемі знання тільки ключа зашифрування не дозволяє розшифрувати повідомлення, тому він не є секретним елементом шифру і зазвичай публікується учасником обміну для того, щоб будь-хто бажаючий міг послати йому зашифроване повідомлення.
Принцип функціонування асиметричної криптосистеми полягає в наступному:
користувач А генерує два ключі - відкритий (незасекречений) і секретний - і передає відкритий ключ по незахищеному каналу користувачеві Б;
користувач Б шифрує повідомлення, використовуючи відкритий ключ шифрування користувача А;
користувач Б посилає зашифроване повідомлення користувачеві А по незахищеному каналу;
користувач А отримує зашифроване повідомлення і дешифрує його, використовуючи свій секретний ключ.
Пари {відкритий ключ; секретний ключ} обчислюють за допомогою спеціальних криптоалгоритмів, причому жоден ключ не може бути виведений з другого.