⌘ КРИПТОГРАФІЯ← До місії 2.11
Розділ 02 · Асиметрична криптографія

Діффі—Геллман — домовитися про секрет

Місія 2.11 · Частина 3

Діффі—Геллман — домовитися про секрет

Як Аліса й Боб можуть домовитися про однаковий секрет, навіть якщо Єва бачить усе, що передається каналом?

Буч відкриває лабораторію обміну ключами. Дослідіть, що можна передавати відкрито, а що слід тримати в таємниці.

Кіт Буч пояснює обмін Діффі—Геллмана між Алісою та Бобом за присутності спостерігача

Маршрут місії

▶ Навчальне відео🤖 ВебботПрактика 1Практика 2Практика 3Практика 4📝 Форма відповідей

Проблема: як узгодити секрет відкрито?

Спочатку Аліса й Боб публічно обирають просте число p та основу g. Аліса таємно обирає a, Боб — b. Вони передають лише A = ga mod p та B = gb mod p. Обидва отримують однаковий секрет: K = Ba mod p = Ab mod p.

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

Ручний приклад

p = 23, g = 5, a = 6, b = 15. Аліса надсилає A = 8, Боб — B = 19. Обидва обчислюють K = 2.

Алісаa = 6A = 8відкрито →Бобb = 15B = 19← відкритоK = 2в обох

Єва бачить p, g, A і B, але не бачить a та b. На таких малих числах секрет легко відновити перебором — це лише навчальний приклад.

Швидкий симулятор

Що дослідимо?

1. Математичний годинник

Степені та остачі за модулем.

Почати

2. Дві станції

Передавання A і B, а також спостерігач Єва.

Почати

3. Спільний секрет

Перевірка обчислень і власні параметри.

Почати

4. Хто між нами?

Два рівні: пасивне спостереження та активна підміна.

Почати

Короткий Python

p, g = 23, 5
a, b = 6, 15
A = pow(g, a, p)
B = pow(g, b, p)
print(pow(B, a, p), pow(A, b, p))  # 2 2

Запитання: чи доводить рівність секретів, що Аліса справді спілкується з Бобом? Перевірте це в практиці 4.