1. Що таке BoringSSL
BoringSSL — це криптографічна бібліотека з відкритим вихідним кодом від Google, заснована на OpenSSL, спеціально розроблена для проектів Chromium та Android. Основні компоненти включають:
- Реалізація протоколів: TLS 1.2/1.3, DTLS 1.2
- Криптографічні примітиви: AES-GCM, ChaCha20-Poly1305, RSA-PSS, ECDSA
- Перевірка сертифікатів: перевірка ланцюжка X.509
- Безпечний транспорт: абстрактний рівень BIO
На відміну від OpenSSL, BoringSSL:
- Видаляє підтримку застарілих алгоритмів (SSLv3, RC4)
- Усуває вимоги щодо валідації FIPS 140-2
- Використовує статичне компонування за замовчуванням
- Реалізує суворі політики сертифікатів
2. Архітектура BoringSSL проти OpenSSL
Особливість | BoringSSL | OpenSSL |
---|---|---|
Кодова база | ~240 тис. рядків (спрощено) | ~500 тис. рядків |
Потокобезпечність | Атомарні операції | Глобальні блокування |
Пам’ять | Власний розподільник | Стандартний malloc/free |
API | Специфічний для Chromium | Загального призначення |
Оновлення | Щотижневі розгортання | Щоквартальні випуски |
Сумісність | Навмисно порушує ABI | Підтримує стабільність ABI |
Ключові архітектурні відмінності:
- BoringSSL використовує модуль BoringCrypto FIPS
- Немає підтримки API ENGINE
- Видалено 80% опцій конфігурації
- Спрощена система обробки помилок
3. Основні модулі BoringSSL
Стек TLS
- Відновлення сесії без стану сервера
- Оптимізація False Start
- Експортер ключового матеріалу
Криптографія
- Реалізації з постійним часом виконання
- Апаратне прискорення (AES-NI, PCLMULQDQ)
- Експерименти з постквантовою криптографією
X.509
- Прозорість сертифікатів
- OCSP stapling
- Обмеження імен
Керування пам’яттю
- Макрос ScopedOPENSSL
- Відсутність malloc/free на критичних шляхах
- Гарантії обнулення
Тестування
- Покриття рядків на 92%
- Фазінг за допомогою libFuzzer
- Крос-платформний CI
4. BoringSSL у сучасних додатках
Критичні ролі в стеку безпеки:
Інтеграція з Chromium
- Забезпечує QUIC та HTTP/3 у Chrome
- Перевірка сертифікатів для >1 млрд пристроїв
- Реалізація WebRTC DTLS
Оптимізація продуктивності
- У 2 рази швидше рукостискання TLS 1.3 у порівнянні з OpenSSL
- На 40% менший розмір бінарного файлу
- Криптографічні розширення ARMv8
Покращення безпеки
- Суворе зіставлення імен сертифікатів
- Автоматичний вибір EC кривої
- Завжди увімкнена прозорість сертифікатів
Досвід розробника
- Спрощені поверхні API
- Чіткі політики застарівання
- Документація для кожної функції
Вам також може сподобатися