Google перешел c OpenSSL на BoringSSL

Разработчики BoringSSL, форка OpenSSL от компании Google, опубликовали обзор состояния проекта. Последнее время на BoringSSL уже переведены все программные продукты Google, как внутренние сервисы, так и такие проекты как Chrome/Chromium и An­droid. BoringSSL используется как единый TLS-стек для всех продуктов Google, что позволило значительно упростить сопровождение кодовой базы.

При этом использование BoringSSL в сторонних проектах может предоставлять трудности, так как код достаточно сильно почищен, а разработчики не ставят перед собой цель полной совместимости с OpenSSL и ABI может меняться в зависимости от потребностей компании. В отличие от LibreSSL, создание BoringSSL не заключалось в копировании имеющихся исходных текстов OpenSSL для их последующей переработки и чистки. Вместо этого BoringSSL развивался путём создания пустого проекта и поэтапного переноса кода из OpenSSL, функции за функцией с проведением их аудита, документирования и переработки.

В итоге, размер BoringSSL составляет около 200 тысяч строк кода, в то время как кодовая база OpenSSL оценивается в 468 тысяч строк. Подобное уменьшение размера заметно сказывается на потреблении памяти, например, при пересборке проектов с BoringSSL их размер уменьшается на 300 Кб по сравнению минимальной конфигурацией OpenSSL.

В BoringSSL прекращена поддержка Blow­fish, Cam­l­lia, CMS, функций сжатия, движков, IDEA, JPAKE, Ker­beros, MD2, MDC2, OCSP, PKCS#7, RC5, RIPE-MD, SEED, SRP, Whirlpool. Переработаны такие механизмы, как система блокировок, поддержка многопоточности, обработка ошибок, добавлены механизмы динамического изменения размеров буферов и контроля за выходом за границы выделенных областей памяти. Вместо собственной реализации генератора псевдослучайных чисел в BoringSSL задействован штатный системный urandom. Из планов на ближайшее будущее отмечается продолжение чистки кода, реализация поддержки ChaCha20-Poly1305, Curve25519 и Ed25519, увеличение охвата функций тестовым набором.

©  OpenNet