Как двое договариваются о секрете, крича на всю площадь: алгоритм Диффи-Хеллмана без фо... — 26 июня 2026 г. в 10:00:05.099
Как двое договариваются о секрете, крича на всю площадь: алгоритм Диффи-Хеллмана без формул 👋 Приветствую в мире цифровой безопасности! Расскажу про протокол Диффи-Хеллмана - он позволяет двум сторонам получить общий секретный ключ даже когда весь обмен данными между ними виден третьим лицам: провайдеру, узлам сети, кому угодно по дороге. ⏺Суть в одной операции, которую легко провернуть вперёд и почти невозможно назад. Берём огромное простое число как циферблат, умножаем на фиксированный шаг, смотрим куда упала стрелка. Сделать N шагов вперёд тривиально, компьютер справится за микросекунды. А вот по конечной позиции восстановить число шагов - это задача дискретного логарифма, и для чисел в сотни цифр перебор не светит никому. ⏺Алиса и Коля договариваются о циферблате и шаге публично, это видит и атакующий. Каждый загадывает секретное число шагов, шагает от старта, итоговую позицию кричит на площадь открыто. Дальше каждый берёт чужую позицию и доходит от неё свои секретные шаги, оба приходят в одну точку, потому что порядок умножения неважен. ⏺ На реальных числах это выглядит так: import secrets p = int("FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1...", 16) # 2048 бит g = 2 a = secrets.randbelow(p - 2) + 1 # секрет Алисы b = secrets.randbelow(p - 2) + 1 # секрет Коли A = pow(g, a, p) # Алиса отправляет это открыто B = pow(g, b, p) # Коля отправляет это открыто print(pow(B, a, p) == pow(A, b, p)) # True, ключ совпал Общий ключ никто никуда не передавал, он родился одновременно в двух головах из чисел A и B, которые летали по проводу открыто. ⏺Главное, чего протокол сам не объясняет: с кем вы реально договорились. Если между сторонами встаёт третий и перехватывает оба сообщения, он выстраивает отдельный общий секрет с каждым по очереди и читает переписку насквозь. Математика при этом остаётся целой, дискретный логарифм никто не решал. В следующей части расскажу, почему Diffie-Hellman без сертификатов бесполезен, атаку Logjam 2015 года, и что реально крутится у вас в браузере сейчас. 🤖Бесплатный ChatGPT

