Все статьи о SSL SSL и сертификаты

Что такое прямая секретность (Perfect Forward Secrecy)?

Прямая секретность (также называемая Perfect Forward Secrecy / PFS) — это свойство TLS-соединения, которое гарантирует: даже если закрытый ключ сервера будет скомпрометирован в будущем, прошлые зашифрованные коммуникации не могут быть расшифрованы.

Это работает за счёт генерации уникального эфемерного ключа для каждого соединения. После завершения соединения эфемерный ключ уничтожается. Никто — даже владелец сервера — не может его воссоздать.

Почему прямая секретность важна

Без прямой секретности (обмен ключами RSA)

Attacker records encrypted traffic today

Years later, attacker steals server's RSA private key

Attacker decrypts ALL recorded traffic — passwords, messages, everything

При статическом обмене ключами RSA (TLS 1.2 без ECDHE) один и тот же закрытый ключ сервера используется для расшифровки каждого сеанса. Если этот ключ когда-либо будет украден, все прошлые разговоры окажутся раскрыты.

С прямой секретностью (обмен ключами ECDHE)

Attacker records encrypted traffic today

Years later, attacker steals server's private key

Can't decrypt past traffic — each session used a unique ephemeral key
that was discarded after the session ended

Каждое соединение генерирует свежую пару ключей Диффи — Хеллмана, вычисляет уникальный сеансовый ключ и уничтожает эфемерный ключ по завершении. Долгосрочный закрытый ключ сервера используется только для аутентификации (подтверждения личности), но не для обмена ключами (выработки ключа шифрования).

Как это работает технически

  1. Клиент и сервер генерируют по эфемерной паре ключей ECDHE (случайные, для каждого соединения)
  2. Они обмениваются открытыми половинами этих эфемерных ключей
  3. Оба вычисляют одинаковый общий секрет, используя свой закрытый эфемерный ключ + открытый эфемерный ключ другой стороны (это математика Диффи — Хеллмана)
  4. На основе общего секрета вырабатывается сеансовый ключ, используемый для шифрования AES
  5. Эфемерные ключи уничтожаются после выработки сеансового ключа

Закрытый ключ сертификата сервера используется только для подписи сообщений рукопожатия — доказывая подлинность сервера. Он никогда не используется для расшифровки трафика.

Прямая секретность в версиях TLS

Версия TLSПрямая секретностьПримечания
SSL 3.0НедоступнаОбмен ключами только через RSA
TLS 1.0ОпциональноECDHE поддерживается, но не обязателен
TLS 1.1ОпциональноАналогично TLS 1.0
TLS 1.2Опционально (но рекомендуется)Зависит от набора шифров — ECDHE = да, RSA = нет
TLS 1.3ОбязательнаОбмен ключами RSA полностью удалён

TLS 1.3 решил эту проблему, удалив обмен ключами RSA — все соединения TLS 1.3 имеют прямую секретность по умолчанию. Никакой настройки не требуется.

Как проверить, поддерживает ли ваш сервер прямую секретность

# Check which key exchange your server uses
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep -E "Server Temp Key|Protocol"

Ищите:

  • Server Temp Key: ECDH, P-256 → Прямая секретность (ECDHE)
  • Server Temp Key: X25519 → Прямая секретность
  • Нет строки Server Temp Key → Обмен ключами RSA, нет прямой секретности

Обеспечение прямой секретности в TLS 1.2

Nginx:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
ssl_prefer_server_ciphers off;

Все наборы шифров начинаются с ECDHE — эфемерный обмен ключами.

Apache:

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305
SSLHonorCipherOrder off

Практическая значимость

Прямая секретность защищает от:

  • Государственной слежки — правительства записывают зашифрованный трафик сейчас, надеясь расшифровать позже, когда получат ключи (через судебные решения, взлом или квантовые вычисления)
  • Компрометации сервера — если злоумышленник украдёт закрытый ключ вашего сервера, он сможет только выдавать себя за сервер в будущем, но не расшифровать прошлый трафик
  • Утечки ключей — случайное раскрытие закрытых ключей (например, закоммичены в Git, включены в резервную копию)

Вот почему Let’s Encrypt рекомендует сертификаты ECDSA — они естественно сочетаются с обменом ключами ECDHE для полностью основанного на эллиптических кривых рукопожатия.

Часто задаваемые вопросы

Нужно ли моему SSL-сертификату поддерживать прямую секретность?

Сам сертификат не определяет прямую секретность — это определяет набор шифров. Любой сертификат (RSA или ECDSA) работает с обменом ключами ECDHE. Но сертификаты ECDSA более естественно сочетаются с ECDHE (оба используют эллиптические кривые), что даёт более быстрое рукопожатие.

Включена ли прямая секретность по умолчанию?

В TLS 1.3: всегда — это обязательно. В TLS 1.2: зависит от конфигурации вашего сервера. Современные настройки по умолчанию (Nginx, Apache) предпочитают наборы шифров ECDHE, но более старые конфигурации могут всё ещё допускать обмен ключами RSA.

Замедляет ли прямая секретность работу?

Незначительно. Обмен ключами ECDHE добавляет ~1 мс к рукопожатию на современном оборудовании. Преимущество безопасности значительно перевешивает затраты.

А как насчёт режима 0-RTT в TLS 1.3?

0-RTT (возобновление без дополнительного обмена) — особый случай. Ранние данные, отправленные в 0-RTT, не имеют прямой секретности против компрометации сервера (PSK, используемый для возобновления, выведен из ключей предыдущего сеанса). Вот почему 0-RTT следует использовать только для безопасных идемпотентных запросов.

Похожие статьи

SSL и сертификаты 2026-05-07
Как работает SSL/TLS: TLS-рукопожатие в деталях
Наглядное объяснение TLS-рукопожатия -- как ваш браузер и сервер устанавливают зашифрованное соединение за миллисекунды. Охватывает TLS 1.2, TLS 1.3, возобновление сеанса и прямую секретность.
SSL и сертификаты 2026-05-08
Что такое TLS 1.3? Все, что изменилось
TLS 1.3 — текущий стандарт шифрования: более быстрое рукопожатие, обязательная прямая секретность, отсутствие устаревших алгоритмов. Узнайте, что изменилось по сравнению с TLS 1.2, как его включить и стоит ли использовать только его.
SSL и сертификаты 2026-05-08
Криптография с открытым ключом: как на самом деле работает шифрование SSL
Криптография с открытым ключом использует пару ключей — один открытый, один закрытый — для защиты HTTPS-соединений. Узнайте, как асимметричное шифрование, цифровые подписи и обмен ключами делают SSL/TLS возможным.
SSL и сертификаты 2026-05-07
Сертификаты ECC и RSA: какой выбрать?
Сравнение сертификатов ECC (ECDSA P-256) и RSA (2048/4096 бит). Ключи ECC меньше и быстрее. Узнайте, почему GetHTTPS по умолчанию использует ECC и когда RSA всё ещё имеет смысл.
Получите бесплатный SSL-сертификат в браузере
Без установки, без аккаунта. Ваш приватный ключ никогда не покидает устройство.
Получить сертификат