- •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Контрольні запитання та завдання
- •Перелік посилань
4.2.1 Еліптичні криві над простим полем
Еліптична крива Е у кінцевому полі E (GF (P)) за модулем Р (еліптична крива у формі Вейерштрасса) визначається співвідношенням:
,
де:
у та х – точки на еліптичній кривій;
а та b – параметри еліптичної кривої, які обираються над полем Р;
P – просте число.
а і b мають задовольняти таким умовам:
і
Р>3.
4.2.2 Правила додавання, подвоєння і скалярного множення для еліптичних кривих над простим полем
Правило додавання двох різних і не взаємно зворотних точок, які належать кривій:
точки
мають задовольняти умові:
Правило подвоєння однієї точки, яка належить кривій:
точка
має задовольняти умові:
Скалярне множення:
Еквівалентна операція приведення у міру в групах точок еліптичної кривої, є операція скалярного множення.
де:
d – секретний ключ (еквівалентний х або Кc);
G – базова точка на еліптичній кривій з координатами, яка породжує групу точок порядку n.
Базова
точка має властивість:
.
За допомогою описаних вище правил можна обчислити точку kP для будь-якого цілого числа k і будь-якої точки Р еліптичної кривої. Однак зворотне розв’язання задачі – знаходження числа k за відомими точками Р і kP – є важкою проблемою. Вирішення проблеми дискретного логарифма еліптичної кривої є значно складнішим, ніж проблема дискретного логарифмування, на якій базуються RSA та інші подібні асиметричні криптосистеми. Складність вирішення даної проблеми обумовлена ресурсоємкістю операцій додавання і дублювання точок, за допомогою яких обчислюється kP, звідки випливає можливість застосування більш коротких ключів.
4.2.3 Алгоритм асиметричного шифрування на базі еліптичних кривих eces
В алгоритмі ECES (Elliptic Curve Encryption Scheme) на першому етапі мають бути визначені параметри, які є загальною відкритою інформацією для всіх користувачів системи:
кінцеве поле GF (p);
еліптична крива E (GF (p));
великий простий дільник кількості точок кривої n;
точка G, координати якої мають порядок, що й число n.
Кожен користувач системи генерує пару ключів так:
вибирає випадкове ціле число Kc, 1 <Kc<n - 1;
обчислює точку Ko = Kc * G.
При цьому секретним ключем користувача є число Kc, відкритим ключем – точка Ko. Крім того, повідомлення M розбивається на блоки довжиною 2L - 16 біт, де L дорівнює найближчому великому цілому від log2 p;
вибирається випадкове ціле число k, 1 <k <n - 1;
обчислюється точка (х1, у1) = k * G;
обчислюється точка (х2, у2) = k * Ko.
Відомо декілька підходів до за шифрування/розшифрування інформації, що передбачають використання еліптичних кривих. Розглянемо найбільш простий з цих підходів:
1) зашифроване повідомлення пересилається у вигляді значення (х, у) для точки Pm. Тут точка Pm являтиме зашифрований текст і згодом буде розшифрована;
2) як параметр даної криптосистеми розглядається точка G і еліптична група Еp (а, b);
3) користувачі А і В обирають секретні ключі KcА і KcB, а також генерують відкриті ключі KоA = KcА * G і KоB = KcB * G відповідно;
4) щоб зашифрувати повідомлення Pm, користувач А вибирає випадкове позитивне ціле число k і обчислює криптограму Сm за допомогою відкритого ключа сторони В (KоB), що складається з двох точок
Сm = {(kG), (Pm + k * KоB)};
5) щоб розшифрувати цю криптограму, користувач В помножує першу точку (kG) на cвій секретний ключ KcB і віднімає результат з другої точки:
(Pm + k*KоB) - KcB*(kG) = Pm + k(KcB*G) - KcB*(kG) = Pm.
Користувач А замаскував повідомлення Pm за допомогою додавання до нього маски k * KоB. Однак слід зауважити, що ніхто не зможе прибрати маску k* KоB, окрім користувача, який знає значення k і має особистий ключ KcB. Супротивнику для відновлення повідомлення доведеться обчислити k за даними G і kG, що є важким завданням.
