2019 年 11 月摄
开源话题成为近期热点。在清理石墨文档的时候,我发现了去年 9 月份写的一篇草稿,文章正是关于开源项目、网络安全界中流砥柱 OpenSSL 的。当时的机缘是,国内公司白山云邀请 OpenSSL 团队访华(也是他们第一次来中国大陆)并在三个城市巡回交流,这是一个挺难得的事件,我们组织就做了交流。因为某些原因,文章并未在当时发布。现在看来,作为科普类型的文章,如果对于 OpenSSL 的介绍更加具体些、对于心脏出血漏洞的影响更加通俗些,这个文章会更好。我在这里做个未修订的发布。以下为原文。
OpenSSL 官网截图
2014 年 4 月,OpenSSL 的知名度达到了历史顶峰,绝对的前无古人,迄今尚未有后来者。几乎所有的互联网用户,都经由这场“自互联网允许商用以来所发现的最严重的漏洞”——心脏出血 (Heartbleed),知道了 OpenSSL。
谷歌公司用来展示全球范围内用户搜索热度的 Google Trends 显示,此后,OpenSSL 的最高热度也仅仅是 2014 年 4 月份的十分之一左右。
图片截取自 trend.google.com
以开源和免费的方式守护网络安全的 OpenSSL,却因安全漏洞而为大众所知,也实属无奈。
2017 年 9 月,OpenSSL 团队首次中国之行,OpenSSL 联合创始人之一的 Steve Marquess 在谈到这个问题的时候表示,
我在开源闭源软件开发中都工作过……软件开发人员都是人,是人就会犯错误,主要的区别在,开源中犯错是没法掩盖的,而在闭源中是可以掩盖的。
3 年时间过去了,心脏出血漏洞(Heartbleed)已经过去了,OpenSSL 依旧是我们的网络生活中不可或缺的,比如国民 APP 淘宝和微信都在一直使用着 OpenSSL 产品。
OpenSSL 的中国之缘
OpenSSL 最广为人知的中国之缘有两个。第一个是 2016 年罗永浩宣布锤子科技向 OpenSSL 捐款,第二个就是 2017 年的 OpenSSL 团队中国之行。
关于第一个,按照锤子科技的说法,因为各种不可抗力,在一段时间内,捐款未能及时到达 OpenSSL 基金会,并因此引发了围绕前者的巨大社会舆论,包括从最开始就有的被质疑为“诈捐”“只为博人眼球”“低劣的营销手段”。这一切都在 OpenSSL 官网列出捐助者 Smartisan (锤子科技) 商标的时候中止了。
关于第二个,2017 年 8 月 28 日,OpenSSL 官网发布的 OpenSSL goes to China 公告表示
过去几年,我们发现中国有特别多(至少我们感觉如此)的人对 OpenSSL 感兴趣。中国科技如此发达,此事本应不足为奇。得益于来自中国的合同和中国捐助者(尤其是锤子科技)的支持,我们现在对中国了解更多了。我们接受了白山云的邀请,将以个人身份访问中国。
OpenSSL 官网截图
不得不提的是,这次中国之行的另一个大背景是,中国开发者越来越多的参与到了 OpenSSL 的代码贡献当中——考虑到与西方国家相比,“因为语言的原因……中国的工程师要想参与到我们的工作有天然的障碍”(Tim Hudson 语),这一点就更加的难能可贵。目前来看,“就中国的公司的代码和研发贡献而言,毫无疑问,白山是最多的。”
而这,也被解读为这次中国之行背后的推动因素。
促成这次中国之行的白山工程师杨洋,在 OpenSSL 代码贡献榜排名第 18,是亚洲参与 OpenSSL 项目的代表人物。杨洋表示,自己并没有做“说服” OpenSSL 团队,此次中国之行是“两相情愿、一拍即合的事”。同时,杨洋不无遗憾的表示,
我们是希望能在今后把它做成常态……因为还有其他的一些人没到中国来。
开源社区的基本理念之一是分享交流。此次中国之行,OpenSSL 团队开诚布公地向中国开发者介绍了团队的发展历程和现状,以及未来的规划。OpenSSL 这一最坚实的网络安全守护者和中国这一最受关注的新兴科技市场,终于迎来了第一亲密接触。
同时 OpenSSL 联合创始人之一 Steve Marquess 首次用到了一个例子,来说明 OpenSSL 在网络安全中的作用。
就像电力设施,用户不会想太多里面的东西:墙里面是有电线的,外面是有绝缘体的……因为有绝缘层,电才没有到处乱跑,把人给电死。所以你把它(OpenSSL)也想像成电路,信息好像是电流,OpenSSL 就好像电线绝缘层,这样就不会跑到不该跑的地方,不会漏出来。
许可证体系背后的故事
开源许可证有多重要?简单点儿说,许可证中的 每一句话都一定会被拿来深究。
最近两周,开源界发生了一件大事,Facebook 因为开源协议中的一则“不合理”条款遭到了整个开源社区的抨击。Facebook React 是当前使用范围最广的开源前端框架之一。这则条款说的是,对于使用了 Facebook React 开源框架的任何组织,当你在起诉 Facebook 及其子公司,或者 Facebook 及其子公司起诉你的时候,你的 React 许可证自动终结——你就不能再用了。最终,这一事件以 Facebook 更改许可证的妥协而终结。
为什么一个许可证能够引起这么大的风波?
这就要提到知识产权的观念了。开源社区所有的代码是任何人都可以直接拿到的,为什么还有这么多人愿意贡献开源代码?
就是因为大家遵守相同的规则,如同红灯停、绿灯行、黄灯亮了等一等,如同过马路要走人行横道一样——这里的规则,就全部写在开源协议里;我允许你使用我的开源软件,但是你要满足我的一些要求。比如原始开发者的署名权、比如未经特殊许可不得用于商业目的——而后一条,也是很多开源和商业结合的很好的。
开源运动在最近几年如火如荼,大部分的传统商业公司也都逐渐参与到开源社区中来。
说到这里,可以给大家普及一下开源许可证方面的知识。
世界上最大的程序员同性社交网站 GitHub 的母公司专门建立了一个网站如何选择许可证() 来帮助大家了解如何抉择,官网截图如下:
开源许可证分类
想要简便宽松的,那就是 MIT 许可;比较关心专利,那就是 Apache 2.0 许可,大名鼎鼎的安卓和苹果开发语言(Android Swift)都是用的这个许可;更加关心项目改进,那就是 GPL v3 许可。
为什么改变软件许可都这么费劲? 不就是一个声明能解决的事儿吗?
有权利修改相关代码开源协议者,必须是相关代码的知识产权所有人。
这就是问题所在。在 OpenSSL 项目中,“大部分代码不是由个人、实体甚至组织所拥有的,它是由代码的原作者所拥有”。
用官方的话就是“现在的许可一团糟,但不管哪一个许可,都没有办法像 BSD、JPL 那么适用和合适。”
所以,如何联系上这些作者,本身就是一件很困难的事情——比如有的作者可能只是在 2010 年贡献了部分代码,之后就不再活跃;
比如,联系上之后,如何说服原作者同意更改许可证,这就是另一个层级的事情了。
更重要的是,他们的沟通工具只有邮件。
想想一下,在一个 500 人的微信群里发言,都经常鲜有人回复。
……
好在,经过长时间讨论,OpenSSL 委员会认为 Apache2.0 是目前最适合自己的许可体系。虽不是尽善尽美,却是目前最好的选择。
这件事情的最新进展是,Steve Marquess 讲到:
我们给代码拥有人发了邮件。大部分人都同意了,拒绝的人所写的代码影响也不太大,我们可以进行修改。目前我们正在等最后的回复。
你看,开源社区真的不那么好做。
量子破解的矛盾攻防
量子技术是新的高精尖技术,是不可阻挡的。Tim Hudson 承认,中国在量子方面的研究是走在世界前列的,尤其是有非常多的经费投入,也有很棒的研究成果,比如最近成功试验的量子通讯。
量子计算、量子加密、量子破解……这一切都将对现有的安全加密体系造成巨大的冲击。
比如,目前“地球上最重要的加密算法” RAS 算法,在量子计算面前都有可能不堪一击。
OpenSSL 团队也在研究新的算法,以抵挡量子电脑破解,寻求在量子环境下行使密码功能的软件。
守护网络安全。在这条路上,他们执意前行,从未止步。
此文首发于我的公众号不能不讲理。