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 |
|---|---|---|
| 代码库 | ~240Kloc(简化) | ~500Kloc |
| 线程安全 | 原子操作 | 全局锁 |
| 内存 | 自定义分配器 | 标准 malloc/free |
| API | Chromium 专用 | 通用的 |
| 更新 | 每周滚动 | 季度发布 |
| 兼容性 | 故意破坏 ABI | 维护 ABI 稳定性 |
关键架构差异:
- BoringSSL 使用 BoringCrypto FIPS 模块
- 不支持 ENGINE API
- 移除 80% 的可配置选项
- 简化的错误处理系统
3. BoringSSL 的核心模块
- TLS 栈
- 无服务器状态的会话恢复
- False Start 优化
- 密钥材料导出器
- 加密
- 常量时间实现
- 硬件加速(AES-NI、PCLMULQDQ)
- 后量子加密实验
- X.509
- 证书透明度
- OCSP 钉取
- 名称约束
- 内存管理
- ScopedOPENSSL 宏
- 关键路径中无 malloc/free
- 零化保证
- 测试
- 92% 行覆盖率
- 使用 libFuzzer 模糊测试
- 跨平台 CI
4. BoringSSL 在现代应用中的作用
在安全栈中的关键作用:
- Chromium 集成
- 为 Chrome 中的 QUIC 和 HTTP/3 提供动力
- 为超过 10 亿设备提供证书验证
- WebRTC DTLS 实现
- 性能优化
- TLS 1.3 握手速度比 OpenSSL 快 2 倍
- 二进制文件大小缩小 40%
- ARMv8 加密扩展
- 安全增强
- 严格的证书名称匹配
- 自动 EC 曲线选择
- 始终开启证书透明度
- 开发者体验
- 简化的 API 表面
- 明确的弃用策略
- 每个函数的文档
您可能还喜欢

