Дві сторони встановлюють спільний секрет через незахищений канал за допомогою модулярного піднесення до степеня. Аналогія зі змішуванням кольорів робить задачу дискретного логарифма інтуїтивною.
Аліса та Боб обирають секрети, обчислюють g^a mod p та g^b mod p публічно, потім піднесуть значення іншого до свого секрету. Обидва отримують g^(ab) mod p — спільний секрет, який Єва не може обчислити.
Слідкуйте за протоколом крок за кроком: оберіть прості p та g, виберіть секрети a та b. Спостерігайте аналогію змішування кольорів. Спробуйте обчислити секрет із публічних значень.
Діффі-Гелман (1976) — перший опублікований протокол з відкритим ключем. Уітфілд Діффі та Мартін Гелман отримали премію Тюрінга у 2015 році.
Ця симуляція показує, як дві сторони — Аліса та Боб — домовляються про спільний секрет через відкритий канал, жодного разу не передаючи сам секрет. В основі лежить модулярне піднесення до степеня у скінченній циклічній групі: з публічних значень — простого числа p та генератора g — кожна сторона обчислює g у степені свого приватного показника за модулем p. Безпека ґрунтується на задачі дискретного логарифма, яка робить цю операцію практичною односторонньою функцією.
Ви обираєте публічне просте p та генератор g зі спадних меню, а повзунками задаєте секрет Аліси a та секрет Боба b. Панель кроків обчислює A = g^a mod p, B = g^b mod p і спільний секрет g^(ab) mod p, а полотно з аналогією кольорів унаочнює ідею. Протокол Діффі-Гелмана лежить в основі узгодження ключів у HTTPS, SSH та VPN по всьому світу.
Що таке обмін ключами Діффі-Гелмана?
Це метод, опублікований 1976 року, що дозволяє двом сторонам, які ніколи не зустрічалися, домовитися про спільний секретний ключ через публічний канал. Кожна сторона зберігає приватне число та обмінюється лише похідним публічним значенням. Підслуховувач бачить публічні значення, але не може відновити секрет.
Як насправді працює протокол?
Обидві сторони домовляються про публічне просте p та генератор g. Аліса обчислює A = g^a mod p, Боб — B = g^b mod p, після чого відкрито обмінюються A та B. Аліса піднімає B до свого секрету a, Боб — A до свого секрету b, і обидва отримують однакове значення g^(ab) mod p.
Що роблять елементи керування на цій сторінці?
Спадні меню «Просте p» та «Генератор g» задають публічні параметри, доступні всім. Повзунки Аліси a та Боба b (від 2 до 20) встановлюють два приватні показники. Зміна будь-якого з них миттєво перераховує публічні ключі та спільний секрет у математичній панелі.
Тому що піднесення до степеня комутує: (g^a)^b mod p дорівнює (g^b)^a mod p, і обидва вирази рівні g^(ab) mod p. Аліса обчислює B^a, Боб — A^b, тому обидва приходять до ідентичного числа, не розкриваючи один одному приватного показника.
За заданими p, g та значенням g^a mod p відновити показник a — це і є задача дискретного логарифма. Не існує відомого ефективного алгоритму для великих простих, тому ця складність і забезпечує безпеку спільного секрету навіть за умови видимості публічних ключів.
Єва спостерігає p, g, A та B — все передається відкритим текстом. Щоб знайти секрет, їй треба розв'язати задачу дискретного логарифма й відновити a або b. З малими простими, що використовуються тут, це зробити нескладно, але для 2048-бітних простих це обчислювально неможливо на сучасному залізі.
Математика точна: використовується справжнє модулярне піднесення до степеня методом швидкого зведення у квадрат на великих цілих числах, тому A, B та спільний секрет обчислені вірно. Малі прості та обмежений діапазон повзунків обрано для наочності, а не для безпеки — реальні системи використовують значно більші параметри.
Генератор g — це основа, степені якої за модулем p пробігають великий набір лишків. Хороший генератор породжує багато різних значень, що дає більше можливих спільних секретів. На практиці g обирають так, щоб породжена ним група була великою та не мала малих підгруп, які послаблюють протокол.
Ні. Звичайний Діффі-Гелман забезпечує конфіденційність ключа, але не підтверджує особу, тому він вразливий до атаки «людина посередині». Реальні системи поєднують його з підписами або сертифікатами для автентифікації публічних значень.
Він захищає узгодження ключів у TLS для HTTPS-сайтів, у SSH-з'єднаннях, у IPsec та інших VPN, а також у месенджерах. Сучасні варіанти, зокрема ефемерний Діффі-Гелман та Діффі-Гелман на еліптичних кривих, додають пряму секретність і використовують менші та швидші ключі.