Безопасность

OpenSSL 4.0.0: квантовая защита, ECH и отказ от SSLv3

Данные под защитой
Данные под защитой • Все права принадлежат AInDev.ru

Проект OpenSSL объявил о выходе мажорного обновления 4.0.0, которое внедряет принципиально новые стандарты безопасности и существенно меняет API библиотеки. Выпуск ориентирован на подготовку инфраструктуры к постквантовой эпохе и повышение уровня конфиденциальности при установке TLS-соединений.

Квантовая устойчивость и стандартизация шифрования

Одной из ключевых вех релиза стало внедрение поддержки алгоритмов, устойчивых к атакам потенциальных квантовых компьютеров. В библиотеку добавлены средства для работы с гибридными схемами, включая поддержку групп в формате curveSM2MLKEM768 (соответствует стандарту ML-KEM). Также расширена функциональность в рамках RFC 8998, добавлены поддержка сигнатурного алгоритма sm2sig_sm3 и протокола обмена ключами curveSM2.

Кроме этого, библиотека получила поддержку функции cSHAKE (согласно спецификации SP 800-185) и алгоритма хэширования ML-DSA-MU. Для TLS 1.2 теперь доступен согласованный обмен ключами FFDHE согласно RFC 7919, что дает больше гибкости при выборе параметров шифрования в устаревающих, но все еще используемых протоколах.

Конфиденциальность через ECH

OpenSSL 4.0.0 официально внедряет протокол Encrypted Client Hello (ECH, RFC 9849). Если коротко, это позволяет шифровать метаданные на начальном этапе TLS-хендшейка, включая поле Server Name Indication (SNI). На практике это значит, что внешние наблюдатели, анализирующие сетевой трафик, больше не смогут определить, к какому именно хосту обращается клиент, что значительно затрудняет цензуру и профилирование пользовательской активности.

Радикальное очищение API и отказ от «наследия»

Версия 4.0.0 стала «чисткой» для кодовой базы. Разработчики удалили компоненты, которые десятилетиями обременяли библиотеку. Самым важным изменением стало окончательное удаление поддержки протокола SSLv3, который де-факто считается небезопасным с 2015 года. Также исключена поддержка SSLv2 Client Hello. Проще говоря, приложения, опирающиеся на эти методы, при обновлении до OpenSSL 4.0.0 перестанут работать.

Список изменений в API крайне обширен и затрагивает обратную совместимость:

  • Полностью удален движок (Engine API).
  • Библиотека больше не очищает глобально выделенные данные через atexit().
  • Структура ASN1_STRING стала непрозрачной (opaque).
  • Функции для работы с ERR_STATE теперь также скрыты за непрозрачными интерфейсами.
  • Удален инструмент c_rehash — теперь команда openssl rehash является основным методом для обновления хэшей сертификатов.
  • Удалена реализация BIO_f_reliable(), которая, по признанию самих разработчиков, была сломана еще со времен версии 3.0.
  • Отказ от устаревших функций сопоставления времени сертификатов (например, X509_cmp_time()) в пользу современных X509_check_certificate_times().

Для разработчиков это означает необходимость серьезного рефакторинга. Изменились сигнатуры многих функций, в которые добавлены квалификаторы const. Также завершена поддержка устаревших эллиптических кривых и явных EC-кривых ( explicit EC curves) — они отключены по умолчанию при сборке, но могут быть активированы специфическими флагами конфигурации.

Более подробная техническая документация и исходный код обновления доступны в репозитории проекта на GitHub. Всем интеграторам рекомендуется провести аудит кода перед переходом на новую мажорную версию, так как удаление ряда методов и изменение поведения библиотек приведет к ошибкам компиляции или времени выполнения.