Обмін ключами Діффі — Геллмана — метод, що дає змогу двом сторонам домовитися про спільний секретний ключ через незахищений канал, жодного разу не передаючи сам ключ.
Як працює протокол Діффі — Геллмана
Протокол опублікували Вітфілд Діффі та Мартін Геллман у 1976 році; це перший практичний приклад криптографії з відкритим ключем. Сторони узгоджують відкриті параметри, кожна обирає секретне число й надсилає іншій обчислене з нього значення. Поєднавши свій секрет з отриманим значенням, обидві отримують однаковий результат, а перехоплювачу, який бачить лише передані значення, довелося б розв’язати задачу дискретного логарифмування. Зі спільного секрету потім виводять симетричні сеансові ключі.
Сучасні системи здебільшого використовують варіант на еліптичних кривих (ECDH), особливо X25519 (RFC 7748). Якщо для кожного сеансу генеруються нові ключі (DHE або ECDHE), подальша крадіжка довготривалого ключа сервера не розкриває минулий трафік — цю властивість називають прямою секретністю (forward secrecy).
Чому це важливо
Ефемерний обмін Діффі — Геллмана обов’язковий у TLS 1.3 і використовується в SSH, IPsec VPN, WireGuard та протоколі Signal. Його відомі слабкості добре вивчені:
- Немає власної автентифікації — зловмисник у позиції «людина посередині» може провести окремий обмін з кожною стороною, тому значення треба підписувати або прив’язувати до сертифікатів.
- Слабкі групи — атака Logjam (2015) була атакою на зниження версії, яка змушувала TLS-сервери використовувати 512-бітні «експортні» групи, що швидко зламувалися.
- Квантова загроза — алгоритм Шора зламає класичний і еліптичний варіанти, тому браузери й месенджери вже поєднують X25519 з постквантовим ML-KEM у гібридному обміні ключами.
Рекомендації
- Використовувати ECDHE з X25519 або NIST P-256 чи групи скінченних полів щонайменше на 2048 біт.
- Вимкнути експортні набори шифрів і статичний (неефемерний) обмін ключами.
- Завжди автентифікувати обмін сертифікатами або закріпленими ключами.
- Вмикати гібридний постквантовий обмін ключами там, де він підтримується.