Professional Documents
Culture Documents
Курсовая на тему криптографии
Курсовая на тему криптографии
Курсова работа
по математичній криптографії на тему:
«Схема сліпого підпису на основі RSA шифрування»
Виконала:
студентка 3 курсу,
гр. комп’ютерна математика 1
Герасименко Марія
Керівник:
Кочубінська Є. А.
Київ, 2021
Зміст
2
1.Вступ 3
4.Цифрові гроші 6
5. Приклади застосування 9
5.2 Блокчейн 10
Висновки 13
Список літератури
1.Вступ
3
Метою роботи був розбір схеми сліпого підпису на основі шифрування RSA. Сліпий
підпис — різновид електронного цифрового підпису, особливістю якого є те, що сторона,
яка підписує, не може точно знати вміст підписаного документа. Безпека схеми сліпого
підпису ґрунтувалася на складності факторизації великих складених чисел.
• Боб може довести Алісі, що він є тим, ким каже, що є, і тому має право голосу.
• Боб може запечатати свій конверт з копією паперу таким чином, що Аліса не зможе
його відкрити.
• Єдина різниця між бюлетенями, які Боб надіслав Алісі, і бюлетенями, які він
надіслав поштою до осіб, які підраховують голоси, є підпис Аліси.
4.Цифрові гроші
Таку ж ідею можна використовувати і для побудови цифрового аналога готівки.
Ключовою властивістю готівки є анонімність: коли ви берете гроші з банку, банк видає
вам готівку, не знаючи, що ви купуєте, а коли ви витрачаєте гроші, купець не уявляє,
хто ви. На відміну від цього, коли ви купуєте щось за допомогою кредитної картки в
Інтернеті, ви повинні повідомити продавцю, хто ви, а також повідомити компанії, у
якій ви робите покупку, свою кредитну. Потенціал вторгнення в приватне життя
величезний.
7
Ця схема зберігає анонімність Аліси і дозволяє банку виявити подвійні витрати, але не
дає можливості покарати подвійних витратників. Єдиний спосіб, коли Алісу можуть
спіймати, якщо вона намагається подвоїти свої витрати, - це якщо продавець
перебуває в Інтернеті і банк перевіряє її монети в режимі реального часу.
Такий алгоритм дозволяє Алісі зберігати свою анонімність, поки вона не обманює;
покаранням за шахрайство є розкриття її особи.
Для початку банк фіксує параметр безпеки 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), тому якщо Аліса намагалася обдурити,
то ймовірно, що банк зловить її на цьому етапі.
Тепер, коли Аліса має свою електронну монету вартістю в один долар, вона може
заплатити Бобу нею:
2. Боб надсилає Алісі випадковий двійковий рядок довжиною k / 2. Якщо i-й біт
дорівнює 1, то Аліса надсилає Бобу a i, ci та yi, а якщо i-й біт дорівнює 0, то Аліса
надсилає xi, ai ⊕ (u || (v + i)) та di. Боб тепер може перевірити, чи ці фрагменти даних
відповідають значенню C Аліси. Оскільки f і g вважається неможливим інвертувати, а
схему підписання банку неможливо дублювати, то якщо Аліса бреше, її, ймовірно,
спіймають.
Треба звернути увагу на те, що Аліса анонімна у своїй взаємодії з Бобом. Єдиною
ідентифікаційною інформацією, яку вона дає йому, є номер її рахунку, але це 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. Приклади застосування
Припустимо, А має секретний ключ 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.
5.2 Блокчейн
Електронний підпис також використовується і в криптовалюті, зокрема - в Bitcoin. У
кожного користувача Bitcoin є пара з секретного і відкритого ключа. Хеш-значення
відкритого ключа служить основною адресою для передачі монет. Це значення не є
таємним, і повідомляти його можна кому завгодно. Але за значенням хешу обчислити
значення відкритого ключа неможливо.
Сама пара ключів буде використана лише один раз - при передачі прав власності. На
цьому життя пари ключів закінчується.
Власник монети відкрито повідомляє хеш свого публічного ключа HASH (PUB1), це і
буде ідентифікувати біткойн.
Як тільки з'являється покупець, власник формує відкритий лист, в якому вказує адресу
біткойнів HASH (PUB1) і хеш-значення публічного ключа нового власника HASH (PUB2).
І звичайно ж, підписує лист своїм секретним ключем PRIV1, докладаючи публічний
ключ PUB1.
Після цього пара ключів власника PUB1 і PRIV1 втрачають свою актуальність.
Публічним ключем можна перевірити сам лист, дізнатися нову адресу монети.
6.Потім клієнт бере участь у створенні сеансового ключа. Особливості цього кроку
залежать від методу обміну ключами, який був обраний в початкових повідомленнях
«Hello». Так як ми розглядаємо RSA, клієнт згенерує випадковий рядок байтів, який є
секретом (pre-master secret), зашифрує її за допомогою відкритого ключа сервера і
передасть назад.
Після цих кроків SSL-рукостискання завершено. У обох сторін тепер є сеансовий ключ, і
вони можуть взаємодіяти через зашифроване і аутентифицироваться з'єднання.
480 = 7 ∙ 68 + 4,
7 = 4 ∙ 1 + 3,
4 = 3 ∙ 1 + 1,
v = 2, u = -137.
R = 18 10 = (10010) 2, S = 19 10 = (10011) 2,
A = 1 10 = (00001) 2.
Розшифрування представляється послідовністю дій D k(yi) = (yi)d = (yi) 343 (mod 527), i =
1,2.
і остаточно 474 343 (mod527) = (443 ∙ 392 ∙ 443 ∙ 237 ∙ 174 ∙ 474) (mod527) = 297.
Висновок
Список літератури