Выпуск криптографической библиотеки 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 () для получения вектора инициализации с целью проведения его верификации.

© OpenNet