Разработчики проекта OpenBSD представили выпуск переносимой редакции пакета LibreSSL 3.9.0, в рамках которого развивается форк OpenSSL, нацеленный на обеспечение более высокого уровня безопасности. Проект LibreSSL ориентирован на качественную поддержку протоколов SSL/TLS с удалением излишней функциональности, добавлением дополнительных средств защиты и проведением значительной чистки и переработки кодовой базы. Выпуск LibreSSL 3.9.0 рассматривается как экспериментальный, в котором развиваются возможности, которые войдут в состав OpenBSD 7.5.
Одновременно сформирован стабильный выпуск LibreSSL 3.8.3, в котором исправлено несколько специфичных для Windows ошибок и усилена поддержка механизма защиты CET (Control-flow Enforcement Technology).
Особенности LibreSSL 3.9.0:
- Добавлена поддержка алгоритмов цифровой подписи на базе ECDSA с хэшами SHA-3.
- Добавлена поддержка HMAC с усечёнными хэшами SHA-2 и SHA-3 в качестве PBE PRF.
- Внесены изменения для улучшения переносимости на другие платформы. Для избежания проблем при статическим связывании большая часть используемых для обеспечения совместимости экспортируемых символов LibreSSL снабжена префиксом “libressl_”. В сборках на базе CMake прекращён экспорт compat-символов libcrypto.
- Внесены изменения, нацеленные на улучшение совместимости с OpenSSL. Например, добавлены имена-псевдонимы ChaCha20 и chacha20 для алгоритма ChaCha, унифицирована работа функций SSL_library_init() и OPENSSL_init_ssl(), приведены к поведению OpenSSL вызовы EVP_{CIPHER,MD}_CTX_init().
- В утилиту openssl добавлена поддержка флагов “-new -force_pubkey”, “-multivalue-rdn”, “-set_issuer”, “-set_subject” и “-utf8”.
- Осуществлён переход с использования вызова OBJ_bsearch_() на стандартную функцию bsearch().
- Упрощена реализация функции by_file_ctrl(), EVP_Cipher{Init,Update,Final}() и API OBJ_*.
- Проведена большая реорганизация API EVP.
Удалены функции EVP_add_{cipher,digest}(). - Упрощена обработка X509_TRUST.
- Переписаны функции BIO_dump*().
- Прекращена поддержка глобальных таблиц, не адаптированных для многопоточного использования. В связи с этим теперь не поддерживается назначение псевдонимов шифрам и хэшам, добавление собственных строк, методов ASN.1, PKEY и CRL.
- Удалены функции BIO_set(), BIO_{sn,v,vsn}printf(), sk_find_ex() и OBJ_bsearch_(), а также множество устаревших функций API CRYPTO.
- Прекращён публичный доступ к API X509_CERT_AUX и X509_TRUST.
- Прекращена поддержка алгоритмов GOST и STREEBOG.
- Расширена поддержка механизма CET (Control-flow Enforcement Technology), применяемого для защиты от выполнения эксплоитов, построенных с использованием приёмов возвратно-ориентированного программирования (ROP, Return-Oriented Programming).