- •Методичні вказівки та варіанти контрольних завдань з курсу „Методи захисту інформації” Частина перша Вступ
- •Традиційні симетричні алгоритми шифрування
- •Шифри перестановки
- •Шифри простої заміни
- •Шифри складної заміни
- •Шифр Гронсфельда
- •Система шифрування Віжинера
- •Шифр "подвійний квадрат" Уітстона
- •Одноразова система шифрування
- •Сучасні симетричні алгоритми шифрування
- •Потокові алгоритми
- •Блочні алгоритми
- •Американський стандарт шифрування des
- •Комбінування блочних алгоритмів
- •Інші блочні алгоритми
- •Асиметричні алгоритми шифрування
- •Асиметричний алгоритм rsa
- •Алгоритм Діфі-Хелмана
- •Контрольні завдання Контрольна робота №1
- •Контрольна робота №2.
- •Контрольна робота №3.
- •Контрольна робота №4.
- •Література
- •1 Традиційні симетричні алгоритми шифрування 2
- •2 Сучасні симетричні алгоритми шифрування 10
- •3 Асиметричні алгоритми шифрування 27
Алгоритм Діфі-Хелмана
Алгоритм відкритого розподілу ключів Діфі-Хелмана був запропонований у 1976 році. Цей алгоритм був першим алгоритмом з відкритим ключем [9,10,11]. Його безпека обумовлена труднощами обчислення дискретних логарифмів у скінченному полі, на відміну від легкості дискретного зведення в степінь у тому ж скінченному полі.
Припустимо, що два користувачі А і В хочуть організувати захищений комунікаційний канал. Обидві сторони заздалегідь вибирають велике просте число N і число g (1 ≤ g ≤ N-1), яке є первісним коренем по модулю N, тобто його степені
g1, g2, g3,…,gN-1
є різними по модулю N. Наприклад. Нехай N=7. Тоді g=3 є первісним коренем по модулю 7, тому що
31=3≡3 (mod 7),
32=9≡2 (mod 7),
33=27≡6 (mod 7),
34=81≡4 (mod 7),
35=243≡5 (mod 7),
36=729≡1 (mod 7).
Ці два цілих числа N і g є спільними для всіх користувачів комп'ютерної системи і їх не треба зберігати в секреті. Алгоритм складається з наступних кроків.
1. |
Спочатку користувачі А і В незалежно один від одного вибирають власні секретні ключі KCA і KCB (KCA і KCB – випадкові великі цілі числа, що зберігаються користувачами А і В у секреті). |
2. |
Далі користувач А обчислює відкритий ключ КОA=gKCA (mod N), а користувач В – відкритий ключ КОB=gKCB (mod N).
|
3. |
Потім користувачі А і В обмінюються відкритими ключами КОA і КОB по незахищеному каналу. |
4. |
Нарешті користувачі А і В обчислюють спільний секретний ключ. Користувач А обчислює К= (КОB)КCA = (gKCB) КCA(mod N), а користувач В: К' = (КОA)КCB = (gKCA) КCB(mod N). При цьому К = К', тому що (gKCB) КCA = (gKCA) КCB(mod N).
|
Ключ К може використовуватися в якості спільного секретного ключа симетричної криптосистеми.
Зловмисник, перехопивши значення N, g, КОA і КОB, теж хотів би знайти ключ К. Очевидний шлях для вирішення цієї задачі складається в обчисленні такого значення КСA по N, g, КОA, що
gKСA mod N = КОA .
Оскільки в цьому випадку, обчисливши КСA можна знайти
К= (КОB)КСA (mod N).
Однак знаходження КСА по N, g і КОA – задача дискретного логарифмування в скінченному полі, яка вважається практично нерозв'язною [9,11].
Алгоритм відкритого розподілу ключів Діфі-Хелмана дозволяє розподіляти секретні ключі по незахищеному каналу. Однак, працюючи з цим алгоритмом, необхідно мати гарантію того, що користувач А одержав відкритий ключ саме від користувача В, і навпаки. Ця проблема вирішується за допомогою електронного цифрового підпису, яким підписуються повідомлення з відкритими ключами.
Для розподілу секретних ключів між користувачами розподіленої інформаційної системи можна використовувати і алгоритм RSA. Перевага методу Діфі-Хелмана в порівнянні з методом RSA полягає в тім, що формування загального секретного ключа відбувається в сотні разів швидше. У системі RSA генерація нових секретних і відкритих ключів заснована на генерації нових простих чисел, що займає багато часу [9,11].
Приклад. Виберемо модуль N = 19, а первісним коренем по модулю N = 19 число g = 2. Припустимо, що користувачі А і В вибрали своїми секретними ключами КCА =3 і КCB =6. Щоб мати спільний секретний ключ К, вони обчислюють спочатку значення своїх відкритих ключів:
КОA=gKCA (mod N)=23=8=8 (mod 19),
КОB=gKCB (mod N)=25=32=13 (mod 19).
Після того, як користувачі А і В обміняються значеннями КОA=8 і КОB=13, вони обчислюють спільний секретний ключ
К= (КОB)КCA (mod N)=133=2197=12 (mod 19),
К' = (КОA)КCB (mod N)=85=32768 =12 (mod 19).
Отже, спільний секретний ключ К=12.