微信号:infoqchina

介绍:有内容的技术社区媒体

OpenSSL的替代者:LibreSSL本月开发进度

2014-05-28 14:52 InfoQ

OpenSSL在数周前爆发Heartbleed漏洞之后,OpenBSD小组发起了LibreSSL项目。LibreSSL的目标是对OpenSSL进行全面的清理和重构、提供更安全更稳定的代码基、把长期遗留的bug去除、引入先进的编程实践并对可移植性进行重新设计。OpenBSD开发者Bob BeckOpenBSD基金会主席(OpenBSD基金会是非营利组织,总部位于加拿大的艾伯塔)在最近于渥太华召开的BSDCan 2014大会上介绍了该项目最近一个月的研发进度。


LibreSSL的目标是引入“更加明智的”开发模型,即仅针对OpenBSD这样成熟的操作系统进行开发,而不像OpenSSL那样需要支持Visual C 1.52这种最原始的C语言编译器或者其他古老的OSLibreSSL希望避开那堆“由#ifdef#ifndef缠绕在一起的乱麻”,为此,该项目将所有涉及平台依赖的代码都封装到一个“平台兼容层”,强制所有平台跟这个兼容层对话。这是学习了OpenSSH实现平台兼容性的思路。


LibreSSL在开发一个月以来移除了原项目中没用的代码和对现在基本没人用的老操作系统的支持,这包括EbcdicDOSMacOS ClassicOS X的前身)、Win16及其他老旧的Windows版本、VMS等。当然,Heartbleed相关的代码也已经被移除。


对于OpenSSL中最需要解决的安全问题,Bob Beck列举了LibreSSL目前已经完成的一些工作:

  • 所有OpenSSL专有的内存请求方式(malloccallocreallocsnprintfstrlcat等)都替换为标准库的请求方式

  • 之前的随机数生成器的种子获取方式有缺陷,现在改用内核自带的功能来实现熵生成

  • 添加了基于BrainpoolChaChapoly1305ANSSI FRP256v1算法的几个新的加密套件

  • 移除了对FIPS标准的支持——该标准被认为是有害的,并且不利于库的开发,而且该标准所默认使用的Dual_EC_DRBG算法被怀疑为有后门

  • 修复了很多报告给OpenSSL Request Trackerbug,而这些bug目前在OpenSSL里尚未修复


新项目启动后的一周内,LibreSSL研发团队移除了OpenSSL项目中超过90000行的C代码。所有这些密集的重构都在OpenBSD ports分支下经过了严格的API兼容性测试,测试覆盖的应用数量超过8000个。


OpenSSL Heartbleed漏洞在互联网上激起了热烈的讨论。很多批判指向了OpenSSL项目运转的方式、API和源代码的质量、难以测试、以及糟糕的文档。


这就是为什么OpenBSD小组要启动LibreSSL项目。根据Bob Beck的描述,Heartbleed并非是OpenSSL面临的唯一问题。上述提到的malloc方法一直存在很多问题,如不会释放内存——当年在OpenSSL引入重用空闲内存的LIFO回收机制造成了运行时可以从malloc获取之前在内存当中的信息。更糟糕的一点是,OpenSSL的项目团队总是将实现新特性的优先级放在修复bug之前,很多bugbug tracker里面无人理睬,多年都没有修复。而且,OpenSSL的代码自成体系,连Valgrind这样的工具都抓不到allocator出现的问题。


LibreSSL基于OpenSSL 1.0.1g的代码库做分支,后续开发将遵循OpenBSD项目的安全准则。LibreSSL的目标是跟OpenSSLAPI完全兼容,目标操作系统为OpenBSD 5.6以及其他基于POSIX的系统。在OpenBSD上运行稳定之后,研发团队会着手其他平台的移植工作。


LibreSSL项目正在募捐,希望在未来数年实现如下目标:

  • 有足够的资金支持几名开发者完成代码基主要部分重写的工作

  • 有足够的资金支持兼容性/移植工作,即跟踪ports tree的相关变更并将变更推送至上游

  • 在不影响OpenBSDOpenSSH和其他相关项目研发进度的情况下保持LibreSSL项目的开发速度


OpenBSD基金会已经向Linux基金会发送赞助请求,不过Linux基金会尚未表示赞助意向。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************


 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 Android App 线上热修复方案 码农和英语 除了JS代码,还有哪些方法能让用户秒到限量月饼 一周IT技术干货(码农周刊第17期) 我所理解的执行力