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

Поддержка протокола SSLv3 была полностью удалена. Этот протокол был объявлен устаревшим в 2015 году, а в OpenSSL он был отключён по умолчанию начиная с версии 1.1.0 в 2016 году. Также удалена поддержка приветствия клиента по протоколу SSLv2.
API механизма Engines, который предоставлял возможность интеграции внешних аппаратных и программных реализаций криптографии, был полностью исключён. Опция сборки no-engine и макрос OPENSSL_NO_ENGINE теперь присутствуют всегда. Удалены устаревшие пользовательские методы EVP_CIPHER, EVP_MD, EVP_PKEY и EVP_PKEY_ASN1, а также устаревшие функции фиксированных версий SSL/TLS и функции состояния ошибок ERR_get_state(), ERR_remove_state() и ERR_remove_thread_state().
В выпуск добавлена поддержка Зашифрованного приветствия клиента в соответствии со стандартом RFC 9849. Эта технология позволяет шифровать сообщение приветствия клиента, чтобы сторонние наблюдатели не могли определить имя сервера, к которому подключается клиент.
В части постквантовой криптографии выпуск включает гибридную группу обмена ключами curveSM2MLKEM768, алгоритм хеширования ML-DSA-MU, функцию cSHAKE согласно стандарту NIST SP 800-185, а также поддержку согласованного обмена ключами FFDHE в TLS 1.2 по стандарту RFC 7919.
Структура ASN1_STRING стала непрозрачной. Сигнатуры множества функций API, включая те, что используются при обработке X.509, теперь содержат квалификатор const там, где это применимо. Функции X509_cmp_time(), X509_cmp_current_time() и X509_cmp_timeframe() объявлены устаревшими в пользу функции X509_check_certificate_times().
Библиотека libcrypto больше не очищает глобально выделенные данные с помощью atexit(). Функция OPENSSL_cleanup() теперь выполняется в глобальном деструкторе или, по умолчанию, не выполняется вовсе. Функция BIO_f_reliable() была удалена без замены, так как она не работала с момента выхода версии 3.0.
При установке флага X509_V_FLAG_X509_STRICT теперь применяются проверки ключа идентификации авторитета, а процесс верификации списков отзыва сертификатов был дополнен новыми проверками. Теперь также применяются проверки нижних границ при использовании функции PKCS5_PBKDF2_HMAC с провайдером FIPS.
Поддержка устаревших эллиптических кривых в TLS согласно RFC 8422, а также поддержка явных EC-кривых по умолчанию отключены на этапе компиляции, но доступны опции конфигурации для их повторного включения. Цели сборки для вариантов darwin-i386 и darwin-ppc были удалены.
Скрипт c_rehash был удалён в пользу команды openssl rehash. Самопроверки FIPS теперь можно отложить с помощью опции -defer_tests команды openssl fipsinstall. В Windows-сборках добавлена поддержка выбора между статической и динамической линковкой среды выполнения Visual C++.
OpenSSL 4.0.0 доступен на GitHub.

Обязательно к прочтению:

Подпишитесь на ежемесячную рассылку Help Net Security без рекламы, чтобы быть в курсе самых важных инструментов кибербезопасности с открытым исходным кодом. Подписаться можно здесь!
