← Маршрут курсуПрактики
Частина 3 · Асиметрична криптографія

2.13. Еліптичні криві — інша математична дорога

Як додавання точок допомагає домовитися про секрет, не розкриваючи приватне число?

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

Кіт Буч біля математичної сітки еліптичної кривої

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

Проблема: чому не можна просто намалювати криву?

У нашій моделі y² ≡ x³ + 2x + 2 (mod 17). Координати — цілі числа від 0 до 16, а не всі точки гладкої лінії. Наприклад, (5,1) належить кривій: 1² ≡ 5³ + 2·5 + 2 ≡ 1 (mod 17).

P = (5,1)2P = (6,3)3P = (10,6)

Це навчальна крива з малими параметрами. Її не можна використовувати для захисту реальних даних.

Як це пов’язано з секретом?

Аліса

Приватне a
Публічне A = aG

Відкритий канал

Обмін A та B
Спостерігач бачить точки

Боб

Приватне b
Публічне B = bG

Аліса обчислює aB, Боб — bA. Обидва отримують ту саму точку abG. Але без перевірки справжності відкритих точок можлива атака посередника.

01 · Сітка скінченного поля

Клацайте точки та перевіряйте рівність за модулем.

Дослідити

02 · Склади формулу

Drag-and-drop кроків додавання точок із перевіркою.

Скласти

03 · Стрибки точки

Покрокове kP та автоматичний симулятор.

Запустити

04 · Дві станції ECDH

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

Експеримент

Короткий Python

p = 17
a, b = 2, 2
def on_curve(x, y):
    return (y*y - (x*x*x + a*x + b)) % p == 0
print(on_curve(5, 1))  # True
print(on_curve(5, 2))  # False

Компетентнісне завдання

Шкільний чат обмінюється відкритими точками. Чи достатньо цього, щоб бути впевненим у співрозмовнику? Змоделюйте підміну, поясніть ризик і запропонуйте захист із перевіркою ключів.