Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 15

Київський національний університет імені Тараса Шевченка

Механіко - математичний факультет


Кафедра алгебри і комп’ютерної математики

Курсова работа
по математичній криптографії на тему:
«Схема сліпого підпису на основі RSA шифрування»

Виконала:
студентка 3 курсу,
гр. комп’ютерна математика 1
Герасименко Марія
Керівник:
Кочубінська Є. А.

Київ, 2021
Зміст
2

1.Вступ 3

2. Схема шифрування RSA 4

3.Сліпи підписи та голосування 5

4.Цифрові гроші 6

5. Приклади застосування 9

5.1 Атака методом осліплення 9

5.2 Блокчейн 10

5.3 TLS-рукостискання з використанням RSA 11

5.4 Шифрування RSA на практиці 12

Висновки 13

Список літератури

1.Вступ
3

Асиметричне шифрування або криптографія з відкритим ключем є однією з


найбільш захоплюючих ідей в криптографії за останні декілька десятиліть. Ідея
асиметричного шифрування полягає в тому, що схему шифрування можна розбити на
дві частини, щоб кодувати міг хто небудь , але розшифрувати міг лише той, хто знає
секретний ключ. Як ми знаємо, в традиційній криптографії для шифрування та
дешифрування потрібен один і той самий ключ. В цьому і полягає основна різниця між
ними.

Перший алгоритм кодування з відкритим ключем було запропоновано Вітфілдом


Діффі та Мартіном Хелманом у Стендфордському університеті. Вони, а також незалежно
від них Ральф Меркл, розробили основні його поняття у 1976 році. Перевага кодування з
відкритим ключем полягає у відсутності потреби секретної передачі ключа.Воно базується
на нерозв’язності проблеми розкладу натурального числа на прості множники.

Схема шифрування RSA належить до класу алгоритмів кодування з відкритим


ключем. Схема RSA базується на обчисленні виразів зі степенями. Відкритий текст
шифрується блоками, довжина кожного із яких менша за деяке число n.

Метою роботи був розбір схеми сліпого підпису на основі шифрування RSA. Сліпий
підпис — різновид електронного цифрового підпису, особливістю якого є те, що сторона,
яка підписує, не може точно знати вміст підписаного документа. Безпека схеми сліпого
підпису ґрунтувалася на складності факторизації великих складених чисел.

2.Схема шифрування RSA


4

Найвідомішим прикладом криптографії відкритих ключів є схема шифрування RSA,


винайдена Роном Рівестом, Аді Шаміром та Леном Адлеманом. Основна ідея RSA –
розкладати на множники великі числа важко, хоча множити їх набагато легше.

Розглянемо схему шифрування RSA на прикладі. На його основі ми можемо пояснити


саму ідею та спосіб роботи цієї схеми шифрування. Аліса хоче зашифрувати
повідомлення для Боба. Щоб зробити відкритий ключ, вона спочатку вибирає два
великі простих числа p і q і множить їх разом, щоб отримати n. Далі Аліса обирає
деяке d ∈ Uϕ(n), яке вона зберігає в таємниці, і обчислює e ∈ Uϕ(n) так щоб ed ≡ 1 (mod
ϕ (n)), який вона публікує разом із модулем n. Потім, щоб зашифрувати повідомлення
m ∈ Un для Аліси, Боб обчислює зашифрований текст c: = me(mod n). Щоб прочитати
повідомлення Боба, Аліса обчислює c d =( me )d=med =m1 +φ ( n) k ≡ m(mod n) .Це буде
працювати, тому що m φ (n) ≡1(mod n) для всіх m ∈ Un . І ніхто, крім Аліси, не знає ключа
дешифрування d, оскільки вона його не публікувала, і обчислення його з e передбачає
те,що потрібно знати φ ( n ), що, в свою чергу, вимагає знань p і q.

Ще однією поширеною схемою шифрування є шифрування Рабіна, яка базується на


ідеї, що витягувати квадратні корені за модулем n важко, якщо ви не знаєте, як
факторизувати це n.

Покажемо це на прикладі з Алісою та Бобом. Знову Аліса вибирає два великих


простих числа, p і q, яких залишає в таємниці, та множить їх разом, щоб отримати n,
яке вона публікує. Як правило, p і q приймаються як 3 (mod 4), але це не є
необхідністю. Потім, щоб зашифрувати повідомлення m ∈ Un, Боб обчислює
c:=m2(mod n). Для дешифрування Аліса обчислює квадратні корені з c в U p та Uq, а
потім використовує китайську теорему про залишок, щоб знайти чотири можливих
варіанта для m в Un. Обчислення Аліси прості, тому що якщо c - квадратичний залишок
p+ 1 p −1
за модулем p для p ≡3(mod 4),тоді за критерієм Ейлера, c 4
≡c ∙ c 2
≡c (mod 4).

Тепер уявимо ситуацію, коли Аліса хоче відправити повідомлення Бобу та


зашифрувати його так, щоб Джек – зловмисник, не зміг перехопити його та видати це
повідомлення за своє. Отже, Аліса надсилає Бобу повідомлення, зашифроване
відкритим ключем Боба, але зловмисник Джек сидить посередині. Джек перехоплює
повідомлення Аліси, яке говорить Бобу, щоб той надіслав їй гроші. Замість нього Джек
надсилає повідомлення, яке, нібито, від Аліси, і говорить Бобу, щоб той відправив
йому гроші. Боб ніяк не дізнається, що повідомлення, яке він отримує, насправді
надходить не від Аліси. Тож ми хочемо, щоб Аліса запевнила Боба, що повідомлення,
яке він отримує, справді від неї. І в цьому нам допоможе «сліпий» підпис Аліси на
своєму повідомленні.

Тобто, перед тим, як зашифрувати своє повідомлення M за допомогою відкритого


ключа Боба Eb, вона застосовує хеш-функцію f до M і розшифровує f (M) за допомогою
власного приватного ключа Da. Аліса відправляє Бобу пару (Eb(M)), Da(f(M))). Коли Боб
його отримує, він застосовує свій приватний ключ D b до першої частини
5

повідомлення, відкритий ключ Аліси E a до другої частини та перевіряє, щоб f(Db(Eb


(M))) = Ea(Da(f(M))). Оскільки ми припускаємо, що Джек не знає приватного ключа
Аліси і не може інвертувати f, Боб тепер впевнений, що повідомлення прийшло саме
від Аліси. В цьому випадку Джек міг замінити повідомлення, але він не міг створити
щось, що при зашифруванні за допомогою відкритого ключа Аліси дає повідомлення з
обраним хеш-значенням.

3.Сліпи підписи та голосування


В останньому прикладі ми розглядали алгоритм сліпого підпису і однією з його
ключових особливостей є те, що Аліса точно знає, що вона підписує, оскільки вона є
автором цього повідомлення. Але така ідея автентифікації застосовується до більшої
кількості ситуацій, коли потрібно довести те, що певна людина є автором деякого
повідомлення.

Як приклад, розглянемо ситуацію з виборами, коли виборець голосує поштою або


електронною поштою. Коли виборець ідентифікується, він насправді засвідчує дві
речі: свою особу та дійсність свого голосу. Виборець, який заходить у кабіну для
голосування, одночасно піклується про обидва ці етапи, але для особи, яка голосує
поштою або електронною поштою, може відбутися порушення таємниці її голосу.
Зрештою, якщо бюлетень надіслано конвертом із зворотною адресою, то кожен, хто
обробляє голосування, міг би просто зазначити, від кого він надійшов. Але якщо
виборча комісія дозволила надсилати бюлетені в маркованих конвертах, потенціал
шахрайства зростає. І якщо вибори проводяться анонімно в Інтернеті, то потенціал
шахрайства на них стає набагато вищий.

Натомість ми можемо уявити протокол голосування, який відокремлює ці етапи


автентифікації. Візьмемо ситуацію, у якій Аліса є довіреною особою, а Боб голосує
поштою. Будь-який бюлетень, який засвідчить Аліса, буде врахований. Для
голосування Боб спочатку кладе свій бюлетень у конверт, застелений карбоновим
папером, запечатує його, а потім надсилає Алісі у зовнішньому конверті з його
зворотною адресою. Аліса перевіряє списки виборців, щоб переконатись, що Боб має
право голосу, дістає внутрішній конверт і підписує його (не відкриваючи), а потім
відправляє його назад Бобу (оскільки у нього є його зворотна адреса). Боб виймає
бюлетень та надсилає анонімне повідомлення до центру підрахунку голосів. А
оскільки на бюлетені є підпис Аліси, його голос підраховується. І оскільки Аліса ніколи
не бачила його бюлетеня, а особи, які підраховують голосів ніколи не бачили його
імені, ніхто не знає, як він голосував.

Давайте розглянемо ідею та припущення, які будуються на цьому прикладі:

• Боб може довести Алісі, що він є тим, ким каже, що є, і тому має право голосу.

• Ніхто не може дублювати підпис Аліси.


6

• Будь-хто може перевірити, що підпис Аліси є дійсним.

• Боб може запечатати свій конверт з копією паперу таким чином, що Аліса не зможе
його відкрити.

• Єдина різниця між бюлетенями, які Боб надіслав Алісі, і бюлетенями, які він
надіслав поштою до осіб, які підраховують голоси, є підпис Аліси.

Тепер ми можемо спробувати перекласти це на мову криптографії та електронних


транзакцій. Перша умова - це просто така схема автентифікації, яку ми вже
обговорювали. Друга та третя умови вимагають, щоб Аліса мала хорошу схему підпису
S ′ із загальнодоступним зворотним S. Четверта умова говорить, що Боб має схему
шифрування Eb, з оберненою Db, відомою тільки йому. Остання умова говорить нам,
що Eb і S ′ сумісні, тобто Db(S′(Eb(M)))=S′(M) для будь-якого повідомлення M. Коротше
кажучи, якщо існують відповідні функції шифрування та підпису, ми маємо такий
протокол:

1. Боб застосовує Eb до свого бюлетеня B і відправляє Eb(B) Алісі, використовуючи


схему автентифікації.

2. Аліса перевіряє автентичність Боба, застосовує S′ до E b(B) і відправляє S′(Eb(B)) назад


Бобу.

3. Боб застосовує Db до S′(Eb(B)), щоб отримати S′(B), і перевіряє, чи S(S′(B))=B. Це


гарантує, що шахрай Джек не замінив його бюлетень.

4. Боб анонімно надсилає S′(M) до осіб, які підраховують голоси.

Щоб запобігти багаторазовому голосуванню, виборча комісія може вимагати, щоб


бюлетені мали випадковий компонент, щоб всі можливі значення S′(B) були різними.
Тоді, якщо особи, які підраховують голоси бачать декілька копій бюлетенів, вони
знають, що хтось намагався вчинити фальсифікації голосів, і підраховують лише одну

Таким чином, ми використали алгоритм сліпих підписів, щоб відокремити


автентифікацію особи Боба від автентифікації його виборчого бюлетеня та
забезпечити чесне голосування.

4.Цифрові гроші
Таку ж ідею можна використовувати і для побудови цифрового аналога готівки.
Ключовою властивістю готівки є анонімність: коли ви берете гроші з банку, банк видає
вам готівку, не знаючи, що ви купуєте, а коли ви витрачаєте гроші, купець не уявляє,
хто ви. На відміну від цього, коли ви купуєте щось за допомогою кредитної картки в
Інтернеті, ви повинні повідомити продавцю, хто ви, а також повідомити компанії, у
якій ви робите покупку, свою кредитну. Потенціал вторгнення в приватне життя
величезний.
7

Для повного розуміння алгоритму побудови цифрового протоколу готівки розглянемо


приклад. Припустимо, що всі монети є вартістю в долар. Щоб зняти долар зі свого
рахунку, Аліса генерує монету C, застосовує загальнодоступну хеш-функцію f і маскує
результат, шифруючи його за допомогою E a. Банк підписує Ea(f(C)) за допомогою S ′ і
списує рахунок з Аліси. Потім Аліса обчислює D a(S′(Ea(f(C)))), щоб позбавитися
шифрування, залишивши тільки S′(f(C)), і перевіряє, чи S(S′(f(C)))=f(C). Щоб витратити
свій долар, Аліса віддає торговцю S′(f(C)) і C. Торговець обчислює S(S′(f(C))) і порівнює
його з f(C), щоб переконатися, що монета дійсно підписана банком (без використання
f, Аліса могла просто взяти випадковий X і представити пару (X, S(X)) як пару (S′(C),C)).
Потім купець надсилає S′(f(C)) і C банку, який перевіряє дійсність підпису, платить
продавцю і ставить C у список монет, які вже були витрачені.

Ця схема зберігає анонімність Аліси і дозволяє банку виявити подвійні витрати, але не
дає можливості покарати подвійних витратників. Єдиний спосіб, коли Алісу можуть
спіймати, якщо вона намагається подвоїти свої витрати, - це якщо продавець
перебуває в Інтернеті і банк перевіряє її монети в режимі реального часу.

Такий алгоритм дозволяє Алісі зберігати свою анонімність, поки вона не обманює;
покаранням за шахрайство є розкриття її особи.

Для початку банк фіксує параметр безпеки k, який визначає, наскільки ймовірно
зловити подвійних витратників - великі k ускладнюють обман, і ймовірність того, що
обманщик буде зловлений, дуже швидко зростає до 1. Крім того, Аліса має номер
рахунку u з відповідним лічильником v (і Аліса, і банк знають номер рахунку та
лічильник), і є дві функції f, g: Zn × Zn → Zn, які важко інвертувати. Один з монети Аліси
складається з 4-кортежів k (ai, ci, di, ri) ∈ Z4, які вона вибирає навмання. Для того, щоб
отримати підписану монета, Аліса діє наступним чином:

1. Аліса обчислює k значення Bi=Ea(f(xi,yi)), де xi = g (ai, ci) та yi = g (ai ⊕ (uk || (v + i)), di),
і відправляє їх до банку. Тут ⊕ позначає побітове виключення або, а || позначає
конкатенацію. Аліса використовує рі як ключ для Еа, по одному для кожного кандидата
Bi.

2. Банк вибирає випадковий набір R з k / 2 індексів і відправляє його Алісі. Потім Аліса
виявляє (ai, ci, di, ri) для i ∈ R. Банк може перевірити, чи ці 4 кортежі дають значення
заявленої Bi Аліси (оскільки вони знають u і v), тому якщо Аліса намагалася обдурити,
то ймовірно, що банк зловить її на цьому етапі.

3. Банк надсилає Алісі підписану масковану монету S ′ (∏ B i ), дебетує її рахунок, і


i ∈R

збільшує лічильник v на k. В цьому разі П означає деяку операцію, збережену схемою


шифрування Аліси та схемою підписання. Тепер Аліса застосовує D a, щоб знайти
значення C = S ′ (∏ f ¿ ¿) , і вона може перевірити правильність цього виразу,
i ∈R

застосувавши S, тому вона збільшує v на k.


8

Тепер, коли Аліса має свою електронну монету вартістю в один долар, вона може
заплатити Бобу нею:

1. Аліса віддає С Бобу.

2. Боб надсилає Алісі випадковий двійковий рядок довжиною k / 2. Якщо i-й біт
дорівнює 1, то Аліса надсилає Бобу a i, ci та yi, а якщо i-й біт дорівнює 0, то Аліса
надсилає xi, ai ⊕ (u || (v + i)) та di. Боб тепер може перевірити, чи ці фрагменти даних
відповідають значенню C Аліси. Оскільки f і g вважається неможливим інвертувати, а
схему підписання банку неможливо дублювати, то якщо Аліса бреше, її, ймовірно,
спіймають.

3. Боб надсилає розшифровку розмови в банк, який платить йому і зберігає


розшифровку у справі.

Треба звернути увагу на те, що Аліса анонімна у своїй взаємодії з Бобом. Єдиною
ідентифікаційною інформацією, яку вона дає йому, є номер її рахунку, але це XOR із
випадковим рядком ai, тому Боб не може його бачити. Числа ci та di є такими, що
навіть якщо g є слабшою хеш-функцією, ніж очікувалось, у кожного, хто її розбиває,
все ще залишається величезна кількість можливих пар (a i, ci) та (ai ⊕ (u || (v + i)), di)
для яких g відображається на xi та yi. Тож навіть якщо Боб може інвертувати g, він не
знає, хто така Аліса. Але давайте подумаємо, що станеться, якщо Аліса спробує
витратити одну і ту ж монету двічі: банк порівняє стенограми двох покупок, де вона
використовувала монету. Через рандомізовані рядки викликів, дуже ймовірно, що
вийде таке, що i-й біт рядка випадкового виклику буде становити 0 в одній взаємодії
та 1 в іншій. Тоді банк може XOR двух її відповідей, щоб отримати вираз u || (v + i),
який повідомляє банку номер рахунку Аліси та які виведення коштів вона подвоїла.

Однією з проблем цієї написаної схеми є те, що, хоча банк може зрозуміти, що Аліса
намагалася їх обдурити, банк також може підробити стенограми, щоб підставити її.
Таким чином, банк не може довести нікому, що Аліса винна. Але якщо припустити, що
Аліса має власну схему цифрового підпису, легко змінити вищезазначений протокол,
щоб захистити її. Коли Аліса вибирає свої 4-кратні значення, вона випадковим чином
вибирає ще k пар цілих чисел (z 'i, z ''i ) і підписує конкатенацію g ¿, z '1' ¿ ∥… ∥ ¿, z 'k' ¿. Вона
дає цей підписаний номер банку. Крім того, коли вона обчислює значення f(x i, yi), вона
замінює u на u ∥ z 'i ∥ z 'i' (і надає банку відповідні значення на етапі випадкової
перевірки). Таким чином, якщо банк може надати k / 2 + 1 правильних пар ( z 'i, z ''i ) , він
має доказ того, що Аліса їх обдурила. Банк не може змінити задані значення g (z 'i, z ''i ),
оскільки не може порушити підпис Аліси. Навіть якщо ми припускаємо, що банк може
інвертувати g, Аліса повинна лише відобразити власну пару (z 'i, z ''i ) , щоб показати, що
g насправді було зламано.

Таким чином, криптографія дала нам протокол для безпечного витрачання грошей в
Інтернеті, щоб ці гроші функціонували так, як готівка у фізичному світі. На естетичному
рівні ця конструкція може бути кращою. На більш практичному рівні, побудована
9

конструкція дозволяє лише один номінал. Оскільки не всі ціни вказані в кратних
доларах, здається, що кількість необхідних транзакцій, а також пов'язані з цим
обчислювальні потужності та простір для зберігання даних будуть надмірними. Однак
існують варіанти цього протоколу, які передбачають цифрові гроші кількома
номіналами. Насправді, практичність на даний момент в основному спірна, оскільки
немає такої інфраструктури, що використовує цифрові готівкові кошти.

5. Приклади застосування

5.1 Атака методом осліплення

Припустимо, А має секретний ключ RSA системи, а Z – злодій, який перехопив шифр c і
хоче декодувати його. При цьому А відмовляє видати Z вихідний текст m. Тоді Z обирає
деяке значення b  Zn*, обчислює c’ = be * c і просить А дешифрувати його. А погоджується
дешифрувати c’ своїм секретним ключем d, оскільки зміст повідомлення c’ йому ні про що
не говорить і виглядає невинним. Отримавши m’ = c’d mod n, злодій Z обчислює m = m’ / b і
отримує шукане m. Шифром m дійсно є c, оскільки me = m’e / be = c’de / be = c’ / be = c.

Така атака можлива, оскільки А не знає повної інформації про шифр c’, який дає йому
злодій Z.

Приклад. Нехай А має RSA систему: p =17, q = 19, n = 323, e = 7, d = 247. Злодій Z перехопив


шифр c = 234 і хоче знайти таке m, що m7 = 234 mod 323.
1. Z обирає b = 10  Z323*, обчислює c’ = 107 * 234 mod 323 = 14 і просить А дешифрувати
його.
2. A обчислює m’ = 14247 mod 323 = 40 і передає його Z.
3. Z знаходить шукане повідомлення обчислюючи : m = 40 / 10 = 40 * 10-1 = 40 * 97 = 4 mod
323. Таким чином 47 = 234 mod 323.

5.2 Блокчейн
Електронний підпис також використовується і в криптовалюті, зокрема - в Bitcoin. У
кожного користувача Bitcoin є пара з секретного і відкритого ключа. Хеш-значення
відкритого ключа служить основною адресою для передачі монет. Це значення не є
таємним, і повідомляти його можна кому завгодно. Але за значенням хешу обчислити
значення відкритого ключа неможливо.

Сама пара ключів буде використана лише один раз - при передачі прав власності. На
цьому життя пари ключів закінчується.

PUB1 - публічний ключ;


10

PRIV1 - секретний ключ;

HASH1 або HASH (PUB1) - хеш-значення відкритого ключа (біткойн-адреса);

HASH2 або HASH (PUB2) - хеш відкритого ключа наступного власника.

Ось як влаштований сам процес передачі прав власності на біткойни.

Власник монети відкрито повідомляє хеш свого публічного ключа HASH (PUB1), це і
буде ідентифікувати біткойн.

До моменту продажу обидва ключа PUB1, PRIV1 продавця залишаються в секреті.


Відомий тільки HASH (PUB1) і відповідний йому біткойн.

Як тільки з'являється покупець, власник формує відкритий лист, в якому вказує адресу
біткойнів HASH (PUB1) і хеш-значення публічного ключа нового власника HASH (PUB2).
І звичайно ж, підписує лист своїм секретним ключем PRIV1, докладаючи публічний
ключ PUB1.

Після цього пара ключів власника PUB1 і PRIV1 втрачають свою актуальність.
Публічним ключем можна перевірити сам лист, дізнатися нову адресу монети.

Про другого власника нам нічого


не відомо, крім HASH (PUB2), до
тих пір поки він не передасть
права третьому власникові. І цей
ланцюжок може бути
нескінченним.

Підписуючи передачу прав з


використанням ЕЦП, власник
підтверджує не тільки свою
особистість, а й свою згоду на
проведення операції. Тобто
повернути монетку він вже не
може і з цим він погодився,
підписавшись електронним
підписом.

Завдяки HASH (PUB) виходить


подвійний захист. Перша загадка -
дізнатися публічний ключ по його
хешу. Друга загадка - підписатися чужим ключем.

Така технологія побудови ланцюга передачі прав і називається блокчейном. Завдяки


цій технології можна відстежити історію володіння до самих витоків, але змінити цю
історію ніяк не можна.
11

5.3 TLS-рукостискання з використанням RSA

1.Перше повідомлення називається «Client


Hello». У цьому повідомленні перераховані
можливості клієнта, щоб сервер міг вибрати
шифронабір, який буде використовувати для
зв'язку. Також повідомлення включає в себе
велике випадково обраний просте число,
зване «випадковим числом клієнта».

2.Сервер ввічливо відповідає повідомленням


«Server Hello». Там він повідомляє клієнту, які
параметри з'єднання були обрані, і повертає
своє випадково обране просте число, зване
«випадковим числом сервера». Якщо клієнт і
сервер не мають спільних шифронаборів, то
з'єднання завершується невдало.

3.У повідомленні «Certificate» сервер відправляє клієнту свій ланцюжок SSL-


сертифікатів, що включає в себе листові і проміжні сертифікати. Отримавши їх, клієнт
виконує кілька перевірок для верифікації сертифіката. Клієнт також повинен
переконатися, що сервер має закритий ключ сертифікату, що відбувається в процесі
обміну / генерації ключів.

4.Це необов'язкове повідомлення, необхідне тільки для певних методів обміну


ключами, які вимагають від сервера додаткові дані.

5.Повідомлення «Server Hello Done» повідомляє клієнта, що сервер закінчив передачу


даних.

6.Потім клієнт бере участь у створенні сеансового ключа. Особливості цього кроку
залежать від методу обміну ключами, який був обраний в початкових повідомленнях
«Hello». Так як ми розглядаємо RSA, клієнт згенерує випадковий рядок байтів, який є
секретом (pre-master secret), зашифрує її за допомогою відкритого ключа сервера і
передасть назад.

7.Повідомлення «Change Cipher Spec» дозволяє іншій стороні дізнатися, що сеансовий


ключ згенерований і можна переключитися на зашифроване з'єднання.

8.Потім відправляється повідомлення «Finished», що означає, що на стороні клієнта


рукостискання завершено. З цього моменту з'єднання захищено сесійним ключем.
Повідомлення містить дані (MAC), за допомогою яких можна переконатися, що
рукостискання не було підроблено.
12

9.Тепер сервер розшифровує pre-master secret і обчислює сеансовий ключ. Потім


відправляє повідомлення «Change Cipher Spec», щоб повідомити, що він
переключається на зашифроване з'єднання.

10.Сервер також відправляє повідомлення «Finished», використовуючи тільки що


згенерований симетричний сеансовий ключ, і перевіряє контрольну суму для
перевірки цілісності всього рукостискання.

Після цих кроків SSL-рукостискання завершено. У обох сторін тепер є сеансовий ключ, і
вони можуть взаємодіяти через зашифроване і аутентифицироваться з'єднання.

5.4 Шифрування RSA на практиці


Шифрування короткого вихідного текстового повідомлення: RSA.

Одержувач встановлює шифр з характеристиками n = pq = 527, де р = 17, q = 31 і φ (n)


= (р -1) (q - 1) = 480. В якості відкритого ключа е вибрано число, взаємно просте з φ (n),
е = 7. Для цього числа за допомогою розширеного алгоритму Евкліда знайдені цілі
числа u і v, що задовольняють співвідношенню е ∙ u + φ (n) ∙ v = 1:

480 = 7 ∙ 68 + 4,

7 = 4 ∙ 1 + 3,

4 = 3 ∙ 1 + 1,

1 = 4-3 ∙ 1 = 4 (7-4 ∙ 1) ∙ 1 = 4 ∙ 2-7 ∙ 1 = (480-7 ∙ 68) ∙ 2-7 ∙ 1 = 480 ∙ 2-7 ∙ 137,

v = 2, u = -137.

Оскільки -137≡343 (mod480), то d = 343.

Перевірка: 7 ∙ 343 = 2401≡1 (mod480).

Текстове повідомлення представляється у вигляді послідовності чисел, що містяться в


інтервалі. Для цього букви R, S і A кодуються п’ятирозрядними двійковими числами.
Використовуються порядкові номери цих букв в англійському алфавіті при їх
двійковому поданні:

R = 18 10 = (10010) 2, S = 19 10 = (10011) 2,

A = 1 10 = (00001) 2.

Тоді RSA = (100101001100001) 2. Розбиття тексту на блоки обмеженої довжини дає


уявлення з двох блоків: RSA = (100101001), (100001) = (М 1 = 297, М 2 = 33).

Послідовно шифруються блоки вихідного тексту М 1 = 297, М 2 = 33:

y1 = Еk (М1) = М1e ≡297 7 (mod527) = 474.

Тут скористалися тим, що:


13

297 7 = ((297 2) 3) 297≡ (mod527) = (200 3 (mod527) 297) (mod527) = 474,

y2 = Еk (М2) = M2e ≡33 7 (mod527) = 407.

Шифрований текст, як і вихідний, отримуємо у вигляді двох блоків: у 1 = 474; у2 = 407.

Розшифрування представляється послідовністю дій D k(yi) = (yi)d = (yi) 343 (mod 527), i =
1,2.

Обчислення зведення в ступінь d зручніше проводити, попередньо представляючи


показник ступеня сумою ступенів числа 2, а саме: 343 = 256 + 64 + 16 + 4 + 2 + 1.

Використовуючи цю виставу показника ступеня d = 343, отримуємо:

474 2 ≡174 (mod527),

474 4 ≡237 (mod527),

474 8 ≡307 (mod527),

474 16 ≡443 (mod527),

474 32 ≡205 (mod527),

474 64 ≡392 (mod527),

474 128 ≡307 (mod527),

474 256 ≡443 (mod527),

і остаточно 474 343 (mod527) = (443 ∙ 392 ∙ 443 ∙ 237 ∙ 174 ∙ 474) (mod527) = 297.

Аналогічно обчислюється значення 407 343 (mod527) = 33.

Перехід до буквенного подання розшифрованого повідомлення дає: RSA.


14

Висновок

Було розібрано схему сліпого підпису на основі шифрування RSA з використанням


складності факторизації великих складених чисел. Показано, що алгоритм RSA може бути
об'єктом атаки, завдяки якій стає можливим розшифрувати раніше підписане наосліп
повідомлення, видавши його за повідомлення, яке тільки ще треба підписати. Виходячи з
того, що процес підпису еквівалентний розшифровці підписуючою стороною (з
використанням секретного ключа), атакуючий може підкласти для підпису вже підписану
наосліп версію повідомлення m, зашифрованого за допомогою відкритого ключа
підписуючої сторони, тобто підкласти повідомлення m. Також були розібрані приклади
застосування схеми сліпого підпису , такі як: Атака методом осліплення, Блокчейн та TLS-
рукостискання. На їх основі я показала те, що ця схема шифрування достатньо
поширена у використанні та має ще багато можливостей для реалізації в різних
сферах життя.
15

Список літератури

1.Молдовян, Н. А. Теоретический минимум и алгоритмы цифровой подписи / Н. А. Молдовян. – С.


Пб. : БХВПетербург, 2010. – 304 с.
2. Алгоритмические основы эллиптической криптографии / [Болотов А. А., Гашков С. Б., Фролов А.
Б., Часовских А. А.]. – М. : Мэи, 2000. – 100 с.
3. Костин, А. А. О реализации протоколов слепой подписи и коллективной подписи на основе
стандартов цифровой подписи / Костин А. А., Молдовян Н. А.,Фаль А. М. // Материалы VI Санкт-
Петербургской межрегиональной конференции «Информационная безопасность России (ИБРР-
2009). Санкт-Петербург, 28 30 октября 2009. – С. Пб. : СПОИСУ, 2009. – С. 111.
4. Нікуліщев, Г. І. Анонімність як критерій оцінки захищеності протоколів сліпого електронного
цифрового підпису / Г. І. Нікуліщев, Г. Л. Козина // Правове, нормативне та метрологічне
забезпечення системи захисту інформації в Україні. – 2012. – № 2.– C. 52–59
5. Клюжев А., Електронне голосування, 2003 р.

You might also like