В OpenSSL 3.4 появились новые криптографические функции, в том числе наборы шифров только для целостности для TLS 1.3, оптимизация ECC и обновления поставщиков FIPS.
OpenSSL выпустил версию 3.4, в которой внесены некоторые важные изменения и которая в некоторых случаях потенциально несовместима с OpenSSL 3.3.
Среди основных изменений — отказ от функций «TS_VERIFY_CTX_set_*» в пользу новых «TS_VERIFY_CTX_set0_*», которые обещают улучшенную семантику.
Пользователи Windows также заметят изменения в использовании каталогов OPENSSLDIR, ENGINESDIR и MODULESDIR — теперь эти местоположения можно определять во время выполнения с помощью ключей реестра, в отличие от предыдущей конфигурации во время сборки.
Другие изменения включают обновления алгоритмов SHAKE-128 и SHAKE-256. Теперь для них требуется явное указание длины выходных данных, что делает их непригодными для использования с «EVP_DigestFinal/_ex()» без указания параметра «xoflen». В то же время реализации обмена ключами X25519 и X448 в провайдере FIPS в настоящее время не одобрены и помечены свойством «fips=no».
Процесс устаревания продолжается, и такие функции, как «SSL_SESSION_get_time(),» «SSL_SESSION_set_time(),» и «SSL_CTX_flush_sessions()», заменяются соответствующими вариантами «_ex», которые разработаны с учётом Y2038 для платформ, поддерживающих типы времени Y2038.
Также изменилось то, как происходит повторное согласование в клиентских приветствиях TLS: для соединений с минимальной версией TLS выше 1.0 вместо пустого SCSV повторного согласования будет использоваться пустое расширение повторного согласования.
В OpenSSL 3.4 также представлено несколько новых функций. В частности, добавлена поддержка алгоритмов составных подписей с прямой выборкой, таких как RSA-SHA2-256, с соответствующими новыми функциями API. В этом выпуске также расширены индикаторы FIPS в провайдере FIPS, что позволяет подготовиться к будущим требованиям FIPS 140-3.
Для PKCS#12 добавлена поддержка RFC 9579 (PBMAC1), а также дополнительный источник случайных чисел в виде генератора случайных чисел JITTER, который включается с помощью статически связанной библиотеки jitterentropy. Кроме того, новые параметры «-not_before» и «-not_after» позволяют явно задавать даты начала и окончания для сертификатов, созданных с помощью команд req и x509.
Что касается TLS 1.3, то OpenSSL теперь поддерживает наборы шифров только для проверки целостности TLS_SHA256_SHA256 и TLS_SHA384_SHA384. Также поддерживается отправка запросов CRL в CMP, дополнительные расширения X.509v3, связанные с сертификатами атрибутов, и начальная поддержка сертификатов атрибутов в соответствии с RFC 5755.
Наконец, примечательным дополнением для оптимизации производительности является возможность настроить инициализацию группы ECC с помощью предварительно вычисленных значений, которые теперь используются в реализации P-256 для снижения нагрузки на процессор.
Журнал изменений содержит подробный список всех изменений в OpenSSL 3.4.