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

Криптография с открытым ключом: как на самом деле работает шифрование SSL

Криптография с открытым ключом (также называемая асимметричной криптографией) — это основа SSL/TLS. Она использует пару математически связанных ключей — один открытый, один закрытый — для шифрования данных, проверки личности и установления безопасных соединений. Каждое HTTPS-соединение зависит от неё.

Концепция пары ключей

Открытый ключЗакрытый ключ
Кто имеетВсе (он находится в сертификате)Только владелец сервера
Может шифровать
Может расшифроватьТолько то, что зашифровано закрытым ключомТолько то, что зашифровано открытым ключом
Можно делиться?Да — в этом весь смыслНикогда

Суть: данные, зашифрованные открытым ключом, могут быть расшифрованы только соответствующим закрытым ключом. И наоборот. Два ключа математически связаны, но вывести закрытый ключ из открытого невозможно.

Как это используется в SSL/TLS

Криптография с открытым ключом выполняет три функции в каждом HTTPS-соединении:

1. Обмен ключами — установление общего секрета

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

Решение: обмен ключами Диффи-Хеллмана (конкретно ECDHE в современном TLS). Обе стороны вносят случайные значения, и математика позволяет им вычислить один и тот же общий секрет, не передавая его. Закрытый ключ сервера подписывает его вклад, подтверждая личность сервера.

2. Аутентификация — подтверждение личности

SSL-сертификат сервера содержит его открытый ключ. Сертификат подписан удостоверяющим центром. Во время рукопожатия сервер доказывает, что владеет соответствующим закрытым ключом. Это доказывает, что сервер является тем, кем его называет сертификат.

Без этого шага кто угодно мог бы выдавать себя за google.com.

3. Цифровые подписи — подтверждение целостности данных

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

Симметричное vs асимметричное шифрование

Асимметричное (открытый ключ)Симметричное (сеансовый ключ)
КлючиДва (открытый + закрытый)Один (общий секрет)
СкоростьМедленная (~в 1000 раз медленнее)Быстрая
Используется дляОбмен ключами + аутентификацияШифрование фактических данных
АлгоритмыRSA, ECDSA, ECDHEAES-GCM, ChaCha20
В TLSТолько во время рукопожатияПосле рукопожатия (весь трафик)

HTTPS использует оба: асимметричное шифрование для рукопожатия (подтверждение личности, обмен ключами), затем симметричное шифрование для фактической передачи данных (потому что оно гораздо быстрее).

Алгоритмы, лежащие в основе SSL

RSA

Старейший алгоритм с открытым ключом, всё ещё используемый (1977). Основан на сложности факторизации больших простых чисел. Используется как для подписей, так и для обмена ключами, хотя обмен ключами RSA (без Диффи-Хеллмана) не обеспечивает прямую секретность и удалён из TLS 1.3.

ECDSA (Elliptic Curve Digital Signature Algorithm)

Современный алгоритм подписи, использующий математику эллиптических кривых. 256-битный ключ ECC обеспечивает безопасность, эквивалентную 3072-битному ключу RSA — ключи меньше, подписи быстрее. GetHTTPS по умолчанию использует ECDSA P-256.

ECDHE (Elliptic Curve Diffie-Hellman Ephemeral)

Механизм обмена ключами, используемый в современном TLS. «Ephemeral» (эфемерный) означает, что новая пара ключей генерируется для каждого соединения — обеспечивая прямую секретность. Используется как в TLS 1.2, так и в 1.3.

AES-GCM

Симметричный шифр, используемый после рукопожатия для шифрования фактического трафика. AES (Advanced Encryption Standard) с GCM (Galois/Counter Mode) обеспечивает и шифрование, и аутентификацию. Аппаратно ускоряется на современных процессорах через инструкции AES-NI.

Как GetHTTPS использует криптографию с открытым ключом

Когда вы используете GetHTTPS:

  1. Ваш браузер генерирует пару ключей с помощью Web Crypto API — тех же криптографических примитивов, которые использует сам TLS
  2. Открытый ключ помещается в CSR, отправляемый в Let’s Encrypt
  3. Закрытый ключ остаётся в памяти вашего браузера — никогда не передаётся
  4. Let’s Encrypt подписывает открытый ключ и возвращает ваш сертификат
  5. Вы скачиваете сертификат (открытый) и закрытый ключ на свой сервер

Тот факт, что закрытый ключ существует только в памяти браузера, делает GetHTTPS более конфиденциальным, чем инструменты, генерирующие ключи на удалённом сервере.

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

Могут ли квантовые компьютеры взломать криптографию с открытым ключом?

Текущие квантовые компьютеры не могут. Но достаточно мощный квантовый компьютер, выполняющий алгоритм Шора, мог бы взломать RSA и ECC. Индустрия готовится с помощью постквантовой криптографии — новых алгоритмов (ML-KEM, ML-DSA), устойчивых к квантовым атакам. TLS перейдёт на них в гибридном режиме (классический + постквантовый) без изменения принципов работы сертификатов.

Почему бы не использовать асимметричное шифрование для всего?

Скорость. Асимметричные операции примерно в 1000 раз медленнее симметричных. Шифрование веб-страницы с помощью RSA было бы непрактично медленным. Вместо этого TLS использует асимметричную криптографию только для рукопожатия (~1 мс), а затем переключается на симметричную (AES) для данных — которая работает на аппаратной скорости.

Действительно ли 256-битный ключ ECC достаточно безопасен?

256-битный ECC обеспечивает ~128 бит безопасности — это означает, что атакующему потребуется примерно 2^128 операций, чтобы его взломать. Это больше операций, чем атомов в наблюдаемой Вселенной. Он безопасен на обозримое будущее (исключая квантовые компьютеры, для которых нужны совсем другие алгоритмы).

В чём разница между шифрованием и подписью?

Шифрование: защита конфиденциальности. Шифруете открытым ключом получателя → только его закрытый ключ может расшифровать. Подпись: подтверждение подлинности. Подписываете своим закрытым ключом → любой, имеющий ваш открытый ключ, может проверить, что это пришло от вас и не было изменено. TLS-сертификаты используют подписи; передача данных TLS использует шифрование.

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

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