- •6.050103 – Програмна інженерія
- •1.2.2 Перетворення мережею Фейстеля
- •1.2.3 Алгоритм des
- •Шифрування і розшифрування
- •1.3Завдання до виконання роботи
- •1.5Контрольні запитання та завдання
- •2Програмна реалізація шифрування даних за допомогою несиметричного криптоалгоритму rsa
- •3Мета роботи
- •4Теоретичні відомості
- •Алгоритм створення відкритого і секретного ключів
- •Алгоритм обміну ключами Діффі-Хеллмана
- •4.2.1 Еліптичні криві над простим полем
- •4.2.2 Правила додавання, подвоєння і скалярного множення для еліптичних кривих над простим полем
- •4.2.3 Алгоритм асиметричного шифрування на базі еліптичних кривих eces
- •12.1Завдання до виконання роботи
- •12.2Контрольні запитання та завдання
- •13Створення програмного засобу для цифрового підпису інформації з використанням стандартів гост 34.10 та dss
- •14Мета роботи
- •15Теоретичні відомості
- •5.2.1 Стандарт цифрового підпису dss
- •5.2.2 Стандарт цифрового підпису гост 34.10
- •16Завдання до виконання роботи
- •18Контрольні запитання та завдання
- •Перелік посилань
12.1Завдання до виконання роботи
Створити програмну реалізацію алгоритму асиметричного шифрування на базі еліптичних кривих ECES.
Створити приємний і зрозумілий інтерфейс для перевірки зробленої роботи.
Сформувати звіт в електронному вигляді.
4.4 Зміст звіту
1. Тексти розроблених програм.
2. Копії екранних форм з результатами.
3. Висновки.
12.2Контрольні запитання та завдання
Що вивчає еліптична криптографія?
Які еліптичні криві знаходять застосування у криптографії?
Наведіть правило додавання двох різних і не взаємно зворотних точок, які належать кривій (над простим полем).
Наведіть правило подвоєння однієї точки, яка належить кривій (над простим полем).
Як обчислюється скалярне множення числа на точку?
Чим обумовлено вирішення проблеми дискретного логарифма еліптичної кривої?
13Створення програмного засобу для цифрового підпису інформації з використанням стандартів гост 34.10 та dss
14Мета роботи
Ознайомитись з методами криптографічного забезпечення цифрового підпису, навчитись створювати програмні засоби для цифрового підпису з використанням стандартів ГОСТ 34.10 та DSS [4].
15Теоретичні відомості
Аутентифікація захищає двох учасників, які обмінюються повідом-леннями, від впливу деякої третьої сторони. Однак проста аутентифікація не захищає учасників один від одного, тоді як і між ними теж можуть виникати певні форми суперечок.
У ситуації, коли обидві сторони не довіряють одна одній, необхідне щось більше, ніж аутентифікація на основі загального секрету. Можливим вирішенням подібної проблеми є використання цифрового підпису. Цифровий підпис повинен мати такі властивості:
Має бути можливість перевірити автора, дату і час створення підпису.
Має бути можливість встановити достовірність вмісту повідомлення на час створення підпису.
Має бути можливість перевірки підпису третьою стороною для вирішення суперечок.
Таким чином, функція цифрового підпису включає функцію аутентифікації.
На підставі цих властивостей можна сформулювати такі вимоги до цифрового підпису:
Підпис має бути бітовим зразком, який залежить від повідомлення, що підписується.
Підпис має використовувати деяку унікальну інформацію відправника для запобігання підробки або відмови.
Створювати цифровий підпис має бути відносно легко.
Має бути обчислювально неможливо підробити цифровий підпис як створенням нового повідомлення для існуючого цифрового підпису, так і створенням хибного цифрового підпису для деякого повідомлення.
Цифровий підпис має бути доволі компактним і не займати багато пам'яті.
Сильна хеш-функція, зашифрована закритим ключем відправника, задовольняє перерахованим вимогам.
5.2.1 Стандарт цифрового підпису dss
Національний інститут стандартів і технології США (NIST) розробив федеральний стандарт цифрового підпису DSS. Для створення цифрового підпису використовується алгоритм DSA (Digital Signature Algorithm). Як хеш-алгоритм стандарт передбачає використання алгоритму SHA-1 (Secure Hash Algorithm). DSS спочатку був запропонований у 1991 році і переглянутий в 1993 році у відповідь на публікації, що стосуються безпеки його схеми. У 1996 році в нього були внесені незначні зміни.
DSS використовує алгоритм, який розроблявся для використання тільки як цифровий підпис. На відміну від RSA, його не можна використовувати для шифрування або обміну ключами. Тим не менше, це технологія відкритого ключа.
У підході RSA повідомлення, яке підписується, подається на вхід сильної хеш-функції, яка створює хеш-код фіксованої довжини. Для створення підпису цей хеш-код шифрується з використанням закритого ключа відправника. Потім повідомлення та підпис пересилаються одержувачу. Одержувач обчислює хеш-код повідомлення і перевіряє підпис, використовуючи відкритий ключ відправника. Якщо обчислений хеш-код дорівнює дешифрованому підпису, то вважається, що підпис коректний.
Підхід DSS також використовує сильну хеш-функцію. Хеш-код є входом функції підпису разом з випадковим числом k, створеним для цього конкретного підпису. Функція підпису також залежить від закритого ключа відправника KRa і безлічі параметрів, відомих усім учасникам. Можна вважати, що ця безліч складається з глобального відкритого ключа KUG. Результатом є підпис, що складається з двох компонент, позначених як s і r.
Для перевірки підпису одержувач також створює хеш-код отриманого повідомлення. Цей хеш-код разом з підписом є входом у функцію верифікації. Функція верифікації залежить від глобального відкритого ключа KUG і від відкритого ключа відправника KUa. Виходом функції верифікації є значення, яке має дорівнювати компоненті r підпису, якщо підпис коректний. Функція підпису така, що тільки відправник, що знає таємний ключ, може створити коректний підпис.
Рисунок 5.1 – Створення та перевірка підпису згідно зі стандартом DSS
Розглянемо детальніше алгоритм, що використовується в DSS. Цей алгоритм заснований на складності обчислення дискретних логарифмів.
Спільні компоненти групи користувачів (глобальний відкритий ключ)
Існує три параметри, які є відкритими і можуть бути спільними для великої групи користувачів:
обирається 160-бітове просте число q, тобто 2159 <q <2160;
далі обирається таке просте число р довжиною від 512 до 1024 бітів, так, щоб q було дільником (р - 1);
обирається число g = h(p-1) / q mod p, де h є цілим у проміжку від 1 до (р-1) і g має бути більше, ніж 1,10.
Знаючи ці числа, кожен користувач вибирає закритий ключ і створює відкритий ключ.
Закритий ключ відправника
Закритий ключ х має бути числом між 1 і (q-1) і має бути обраним випадково або псевдовипадковою.
x – випадкове або псевдовипадкове ціле, 0 <x <q.
Відкритий ключ відправника
Відкритий ключ обчислюється із закритого ключа як у = gx mod p. Обчислити у за відомим х досить просто. Проте, маючи відкритий ключ у, обчислювально неможливо визначити х, який є дискретним логарифмом у за основою g.
Випадкове число, унікальне для кожного підпису
k – випадкове або псевдовипадкове ціле, 0 <k <q, унікальне для кожного підписування.
Підписування
Для створення підпису відправник обчислює дві величини, r і s, які є функцією від компонент відкритого ключа (p, q, g), закритого ключа користувача (х), хеш-коду повідомлення Н (М) і цілого k, яке має бути створено випадково або псевдовипадковою і має бути унікальним при кожному підписуванні.
r = (gk mod p) mod q;
s = [k-1 (H (M) + x*r)] mod q.
Підпис = (r, s).
Перевірка підпису
Одержувач виконує перевірку підпису з використанням таких формул. Він обчислює величину v, яка є функцією від компонент загального відкритого ключа, відкритого ключа відправника і хеш-коду отриманого повідомлення. Якщо ця величина дорівнює компоненті r в підписі, то підпис вважається дійсним.
w = s-1 mod q;
u1 = [H (M)* w] mod q;
u2 = r* w mod q;
v = [(gu1 yu2) mod p] mod q.
підпис коректний, якщо v = r.
