Выпуск LibreSSL 2.6.3
Разработчики проекта OpenBSD представили выпуск переносимой редакции пакета LibreSSL 2.6.3, в рамках которого развивается форк OpenSSL, нацеленный на обеспечение более высокого уровня безопасности. Проект LibreSSL ориентирован на качественную поддержку протоколов SSL/TLS с удалением излишней функциональности, добавлением дополнительных средств защиты и проведением значительной чистки и переработки кодовой базы. LibreSSL 2.6.3 объявлен первым стабильным выпуском серии 2.6.x. Поддержка прошлой стабильной ветки LibreSSL 2.4.x прекращена.
Основные изменения в LibreSSL 2.6:
- Добавлена поддержка загрузки в libtls списков отозванных сертификатов (CRL). Как только CRL будет предоставлен в libtls через вызов функций tls_config_set_crl_file или tls_config_set_crl_mem будет включена проверка полной цепочки доверия для сертификатов;
- Код проверки имени TLS-сертификата переработан в направлении более жесткому следованию RFC 6125;
- Почищен и упрощен код для обработки обращений к серверам обмена ключами на основе эллиптических кривых (EC, Elliptic Curve), а также код для обработки конфигурации ключей EC и параметров кривых;
- Из функций BIO_get_accept_socket(), simplified BIO_get_host_ip() и BIO_accept() удалена неполноценная обработка IPv6;
- Проверка SNI упрощена для обеспечения соединения к TLS-серверу на базе libtls не соответствующих RFC клиентов, использующих внутренние IP-адреса;
- В libtls добавлена функция tls_peer_cert_chain_pem, которую можно использовать в callback-вызовах для приватной проверки сертификатов, как это делается, например, в relayd;
- Добавлены функции SSL{,_CTX}_set_{min,max}_proto_version();
- Из BoringSSL перенесена реализация HKDF (HMAC Key Derivation Function);
- Добавлена функция tls_unload_file для очистки памяти, возвращенной при вызове tls_load_file(), для того чтобы удостовериться, что осевшее в памяти содержимое недоступно после его обработки;
- Для libtls tls_config реализован подсчет ссылок, позволяющий вызвать tls_config_free как можно быстрее после финального вызова tls_configure();
- Заполнение полей со временем при генерации сертификата через команду "openssl ca" приведено в соответствие с требованиями RFC 5280;
- Прекращена поддержка наборов шифров, использующих аутентификацию на базе DSS (Digital Signature Standard);
- В libssl прекращена поддержка DSS и DSA;
- Добавлена возможность использования трех идентификаторов OID в сертификатах с расширенной проверкой EV (Extended Validation);
- Обеспечено разделение статусов самоподписанных сертификатов (self-signed) и самостоятельно выписанных сертификатов (self-issued);
- Добавлен новый фреймворк для управления расширениями TLS, созданный по аналогии с подобным фреймворком из BoringSSL. Все TLS-расширения перенесены под управление нового фреймворка и добавлен новый тестовый набор для проверки расширений;
- В libtls добавлена функция tls_config_set_ecdhecurves(), которая позволяет задавать имена эллиптических кривых для использования при обмене ключами клиентом или сервером;
- Очередная порция кода переведена на использование подсистем CBB/CBS;
- Удалена поддержка потерявшего актуальность TLS-расширения NPN, развившегося в паре с SPDY, на смену которому вместе с HTTP/2 пришло TLS-расширение ALPN;
- Удален код SSL_OP_CRYPTOPRO_TLSEXT_BUG, использовавшийся для обхода проблем в старых клиентах CryptoPro;
- Удалена поддержка TLS-расширения с методом добавочного заполнения, применявшимся для обхода ошибки в продуктах F5;
- Удалена старая реализация набора шифров chacha20-poly1305 (на смену пришла стандартизированная реализация IETF); Добавлен код для обхода ошибки в обработчике завершения TLS-соединения, проявляющейся в продуктах F5;
- Шифр ECDHE-RSA-DES-CBC3-SHA переведен из категории HIGH в MEDIUM; Добавлены новые man-руководства и расширены существующие.
- При вызове функции tls_config_parse_protocols() с указателем NULL теперь возвращается набор протоколов по умолчанию.