Выпуск криптографической библиотеки LibreSSL 2.8.1
Разработчики проекта OpenBSD представили выпуск переносимой редакции пакета LibreSSL 2.8.1, в рамках которого развивается форк OpenSSL, нацеленный на обеспечение более высокого уровня безопасности. Проект LibreSSL ориентирован на качественную поддержку протоколов SSL/TLS с удалением излишней функциональности, добавлением дополнительных средств защиты и проведением значительной чистки и переработки кодовой базы. Ветка LibreSSL 2.8.x рассматривается как экспериментальная, в которой развиваются возможности для включения в состав OpenBSD 6.4.
Особенности LibreSSL 2.8.1:
- Добавлены тестовые векторы для проверки корректности реализаций ECDH, RSASSA-PSS, AES-GCM, AES-CMAC, AES-CCM, AES-CBC-PKCS5, DSA, ChaCha20-Poly1305, ECDSA и X25519 при помощи инструментария для проверки криптографических библиотек Wycheproof;
- Упрощен код генерации и проверки цифровых подписей при обмене ключами;
- Очередная порция кода переведена на использование подсистем CBB/CBS, в том числе на CBB переведен код обработки сообщений при согласовании соединений;
- Устранено несколько утечек памяти;
- Упрощен разбор и обработка сессионных тикетов по аналогии с реализацией из BoringSSL;
- В SSL_copy_session_id, PEM_Sign, EVP_EncodeUpdate, BIO_set_cipher, X509_OBJECT_up_ref_count обеспечен возврат целочисленного кода ошибки, соответствующего OpenSSL;
- Некоторые defines-макросы заменены на функции для соответствия c ABI OpenSSL;
- Из OpenSSL перенесена функция X509_get0_serialNumber;
- Для соответствия OpenSSL удалены EVP_PKEY2PKCS8_broken и PKCS8_set_broken. Добавлены PKCS8_pkey_add1_attr_by_NID и PKCS8_pkey_get0_attrs;
- Из утилиты openssl удалена неработающая поддержка форматов pkcs8;
- Некоторые функции из публичного API переведены на использование const для аргументов;
- Добавлен не подверженный тайминг-атакам код проверки результатов верификации цифровых подписей;
- Добавлены дополнительные тесты шифровы в appstest.sh, включая все шифры для TLSv1.2;
- Из OpenSSL перенесены функции RSA_meth_get_finish и RSA_meth_set1_name;
- Добавлен новый API EVP_CIPHER_CTX_(get|set)_iv для получения вектора инициализации с целью проведения его верификации.