Компания Google опубликовала репозиторий с исходными текстами проекта BoringSSL, в рамках которого ведётся разработка независимого форка OpenSSL. Проект включает наработки, которые уже используется в Google для усиления безопасности OpenSSL. За годы в Google создано большое число патчей к OpenSSL, около 70 из которых не были приняты в основной состав OpenSSL, так как они носили экспериментальный характер или приводили к нарушению API или ABI. Теперь эти патчи легли в основу проекта BoringSSL. Разработку BoringSSL возглавил Адам Лэнгли (Adam Langley, agl), известный эксперт по компьютерной безопасности, отвечающий в Google за обеспечение работы инфраструктуры доступа по HTTPS и сетевой стек Chrome.

Развитию BoringSSL как открытого проекта способствовала недавняя череда серьёзных уязвимостей в OpenSSL, GnuTLS и SSL-реализации от компании Apple, которые были вызваны ошибками, находящимися в коде длительное время и остававшимися незамеченными. Всё это вызвало интерес по использованию усиливающих безопасность OpenSSL патчей в Android, Chrome и других продуктах. Поддерживать работу большого числа внешних патчей поверх OpenSSL является достаточно сложной задачей. Поэтому решено сменить модель их поддержания и вместо адаптации патчей к изменяющейся кодовой базе OpenSSL перейти к развитию самодостаточного форка, в который будут импортироваться изменения из OpenSSL.

Код BoringSSL скоро будет добавлен в репозиторий Chromium, а в дальнейшем возможно появится в составе платформы Android. Сохранение совместимости с OpenSSL на уровне API и ABI не гарантируется. При этом, BoringSSL не позиционируется как замена OpenSSL. Google продолжит передачу исправлений ошибок и важных изменений в OpenSSL и будет оказывать финансовую поддержку данному проекту. Кроме того, создатели BoringSSL намерены организовать сотрудничество с LibreSSL, форком OpenSSL от проекта OpenBSD. Для организации обмена кодом с LibreSSL компания Google уже перелицензировала часть своих патчей под лицензией ISC, что позволит наладить взаимный обмен патчами.

Из изменений можно отметить:

  • удаление нереализованных функций,
  • сокращение числа поддерживаемых форматов в ClientHello,
  • обеспечения одновременной поддержки старого и нового алгоритмов поиска сертификатов X.509,
  • реализация функции OPENSSL_str[n]casecmp,
  • удаление макросов DANE,
  • ограничение _X509_CHECK_FLAG_DOT_SUBDOMAINS только внутренним применением,
  • изменение метода проверки имени хоста по маске,
  • реализация расширения Intel SHA,
  • поддержка асинхронного поиска сеансов,
  • возможность использования только SHA-256 в клиентских сертификатах,
  • поддержка ChannelID,
  • реализация безопасных одноразовых кодов для (EC)DSA,
  • новая реализация функции tls1_change_cipher_state,
  • поддержка SSL AEAD, использование интерфейса AEAD в EVP и AES-GCM,
  • поддержка шифров ChaCha20-Poly1305, ECDHE-PSK-WITH-AES-128-GCM-SHA256,
  • рефакторинг ssl3_send_client_verify,
  • новые функции для определения принадлежности семействам шифров.


Источник: http://www.opennet.ru/opennews/art.shtml?num=40049