文章摘要
Python加密库cryptography的维护者指出,OpenSSL经历了三个阶段:早期维护不足,Heartbleed事件后有所改善,但2021年OpenSSL 3发布后,其发展方向问题日益严重,导致他们考虑减少对其依赖或要求OpenSSL进行重大改变。
文章总结
标题:pyca/cryptography项目对OpenSSL现状的声明——Cryptography 47.0.0.dev1文档
发布日期:2026年1月14日
过去12年间,我们(Paul Kehrer和Alex Gaynor)一直维护Python加密库pyca/cryptography。在此期间,OpenSSL始终是我们的核心加密算法提供方。但在2025年10月的OpenSSL大会上,我们公开指出了OpenSSL发展方向的严重问题,认为其当前的发展轨迹已迫使我们必须做出改变——要么OpenSSL自身改革,要么我们减少对其依赖。
OpenSSL的三阶段演变
- Heartbleed漏洞前(2014年前):维护不足,发展停滞
- Heartbleed漏洞后:引入代码审查、CI测试、模糊测试等改进措施
- OpenSSL 3时代(2021年后):API重构带来性能倒退、复杂度激增,而测试验证、内存安全等关键领域未见提升
核心问题剖析
性能退化
- 椭圆曲线公钥加载速度比1.1.1版本慢3倍
- 自研Rust代码实现X.509证书解析后,性能反超OpenSSL 3十倍
- 公钥解析改用Rust后,端到端验证效率提升60%
复杂性与API设计
- 新引入的
OSSL_PARAM机制导致:- 代码冗长(ML-KEM封装需37行代码 vs BoringSSL的19行)
- 性能下降
- 可读性降低
- 提供者(Provider)机制引发连锁问题:
- 不必要的动态算法替换设计
- 被迫引入缓存和RCU机制
- 最终仍无法挽回性能损失
测试与验证缺陷
- CI测试脆弱性掩盖严重漏洞(如AVX-512 CPU上的RSA缓冲区溢出漏洞)
- 缺乏针对不同CPU指令集的专项测试
- 形式化验证领域落后于BoringSSL等分支
内存安全滞后
- 在Rust等内存安全语言普及的当下,OpenSSL仍无迁移计划
- 我们通过Rust重构已成功规避多个OpenSSL CVE漏洞
未来计划
- 逐步降低依赖:
- 新功能将优先支持LibreSSL/BoringSSL/AWS-LC
- 评估静态链接OpenSSL分支的可行性
- 长期规划:
- 跟踪Graviola等新型加密库
- 不排除完全放弃OpenSSL支持
我们理解这些改变对用户的影响,但出于技术严谨性必须采取行动。建议OpenSSL用户积极参与社区改进,以避免最激进的变更方案。
(注:原文中关于具体代码示例、会议演讲细节等非核心内容已精简,保留关键论据和技术决策依据)
评论总结
以下是评论内容的总结:
OpenSSL代码复杂难读
- 多位评论者批评OpenSSL代码结构复杂,包含大量间接调用、条件编译等,导致难以理解和调试。
- 引用:"Finally, taking an OpenSSL public API and attempting to trace the implementation... has become an exercise in self-flagellation."
- 引用:"OpenSSL code was not pleasant or easy to read even in v1 though..."
性能问题显著
- 评论指出OpenSSL的密钥解析等操作存在严重性能瓶颈,替换为自定义实现后性能提升显著。
- 引用:"...moving public key parsing to our own Rust code made end-to-end X.509 path validation 60% faster."
- 引用:"...it was nuts to see how much performance was left on the ground by OpenSSL."
替代方案更优
- 用户推荐LibreSSL、BoringSSL、AWS-LC等替代方案,认为它们在代码质量和性能上更优。
- 引用:"...isn’t true in LibreSSL, BoringSSL, or AWS-LC."
- 引用:"Since that Haproxy has effectively abandoned OpenSSL in favor or AWS-LC."
转向Rust的积极态度
- 多数评论支持PyCA/cryptography库转向Rust,认为这能提升长期稳定性和开发体验。
- 引用:"I think moving the backend to Rust is probably the right move for long term stability."
- 引用:"The python-level APIs are well thought-out and well documented."
API设计问题
- 新版OpenSSL API被批评设计不佳,例如EVP接口性能比旧接口差5倍。
- 引用:"...the EVP code is slow... about 5x slower."
- 引用:"my personal 'new OpenSSL APIs suck' anecdote..."
总结观点分布:
- 负面评价占主导(代码质量差、性能低、API设计问题)
- 正面评价集中在PyCA/cryptography库的设计和转向Rust的决策
- 替代方案(如AWS-LC)获得行业认可