ECC (Elliptic Curve Cryptography — криптография на эллиптических кривых) и RSA — два алгоритма, используемых для генерации пар ключей SSL-сертификатов. Оба безопасны, но ECC создаёт меньшие ключи с эквивалентной стойкостью и обеспечивает более быстрое TLS-рукопожатие. Для большинства современных развёртываний следует использовать ECC.
Краткое сравнение
| ECC (P-256) | RSA 2048 | RSA 4096 | |
|---|---|---|---|
| Размер ключа | 256 бит | 2048 бит | 4096 бит |
| Эквивалентная стойкость | ~128 бит | ~112 бит | ~128 бит |
| Скорость TLS-рукопожатия | Самая высокая | Средняя | Самая низкая |
| Размер сертификата | ~500 байт | ~1 200 байт | ~2 400 байт |
| Генерация ключа | Быстрая | Средняя | Медленная |
| Поддержка браузерами | Все современные браузеры | Универсальная | Универсальная |
| По умолчанию в Let’s Encrypt | Рекомендуется | Поддерживается | Поддерживается |
| По умолчанию в GetHTTPS | P-256 | Доступен | Не предлагается |
Почему ECC лучше для большинства случаев
Меньшие ключи — та же стойкость
256-битный ключ ECC обеспечивает стойкость, эквивалентную 3072-битному ключу RSA. Меньшие ключи означают:
- Меньшие сертификаты → меньше данных передаётся при TLS-рукопожатии
- Более быстрая проверка подписей → сниженная нагрузка на CPU
- Меньшая полоса пропускания → важно для высоконагруженных сайтов и мобильных соединений
Более быстрое рукопожатие
Операции подписи ECDSA значительно быстрее RSA, особенно на стороне сервера. Для высоконагруженных сайтов это снижает использование CPU и время до получения первого байта.
Прямая секретность
Современный TLS использует ECDHE (эфемерный протокол Диффи — Хеллмана на эллиптических кривых) для обмена ключами независимо от типа вашего сертификата. Но сертификаты ECC естественно сочетаются с ECDHE — всё рукопожатие использует математику эллиптических кривых, что более эффективно, чем смешение RSA и ECDHE.
Когда RSA всё ещё имеет смысл
Совместимость с устаревшими устройствами
Некоторые старые устройства, встраиваемые системы и IoT-оборудование не поддерживают ECC. Если вам нужна поддержка:
- Windows XP SP2 или более ранних версий
- Очень старых версий Android (< 4.0)
- Определённых встраиваемых систем или аппаратных балансировщиков нагрузки
…тогда RSA 2048 — более безопасный выбор.
Организационные требования
Некоторые стандарты соответствия или внутренние политики могут требовать RSA. Это встречается всё реже, но проверьте свои требования.
Реальное внедрение
Индустрия мигрирует с RSA на ECC:
| Организация | Тип ключа | Примечания |
|---|---|---|
| ECDSA P-256 | Все сервисы Google | |
| Cloudflare | ECDSA P-256 | По умолчанию для всех сертификатов бесплатного плана |
| Facebook / Meta | ECDSA P-256 | Продакшен-серверы |
| Let’s Encrypt | Рекомендует ECDSA | Выдаёт оба типа, рекомендует ECC |
| ZeroSSL | Рост ECDSA | Выдача ECC выросла на 51,1% (самый быстрый рост среди всех CA) |
Как проверить, что использует ваш сайт
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
| openssl x509 -noout -text | grep "Public Key Algorithm"
# ECDSA: "id-ecPublicKey"
# RSA: "rsaEncryption"
Или проверьте в браузере: замок → Сертификат → Подробности → Информация об открытом ключе субъекта.
Что использует GetHTTPS
GetHTTPS по умолчанию генерирует ключи ECDSA P-256 для сертификатов и P-256 для ключей ACME-аккаунта. При необходимости вы можете выбрать RSA 2048 для ключа сертификата.
P-256 (также называется prime256v1 или secp256r1):
- Поддерживается всеми современными браузерами и серверами
- Рекомендуется Let’s Encrypt
- Используется большинством высоконагруженных сайтов (Google, Cloudflare и др.)
- Поддерживается в Web Crypto API (который GetHTTPS использует для генерации ключей)
Постквантовые соображения
Ни ECC, ни RSA не являются квантово-устойчивыми. Достаточно мощный квантовый компьютер мог бы взломать оба алгоритма с помощью алгоритма Шора. Индустрия готовится, разрабатывая постквантовый обмен ключами (ML-KEM, ранее Kyber) для TLS, который будет использоваться совместно с существующими алгоритмами в гибридном режиме.
Это не влияет на ваш выбор сертификата сегодня — миграция на постквантовые алгоритмы произойдёт на уровне протокола (TLS), а не на уровне сертификата. Используйте ECC сейчас и позвольте стеку TLS справиться с переходом.
Часто задаваемые вопросы
Можно ли перейти с RSA на ECC (или наоборот)?
Да. Сгенерируйте новый сертификат с нужным типом ключа и замените файлы на сервере. Серверу не важно, какой алгоритм использовали предыдущие сертификаты.
Нужна ли специальная конфигурация веб-сервера для ECC?
Нет. Nginx и Apache обрабатывают сертификаты ECC так же, как RSA — те же директивы, тот же формат файлов (PEM). Сервер автоматически определяет тип ключа.
P-384 лучше, чем P-256?
P-384 обеспечивает стойкость ~192 бита по сравнению с ~128 битами у P-256. На практике 128-битная стойкость намного превышает то, что можно взломать сегодня (или в обозримом будущем). P-256 быстрее и лучше оптимизирован. Если у вас нет конкретного требования соответствия для P-384, используйте P-256.