自行车棚

  下载本文的 PDF 版本 PDF

优质软件需要花钱 - Heartbleed 漏洞是免费的

如何为 FOSS 筹集资金


Poul-Henning Kamp


世界依靠免费和开源软件运行,简称 FOSS,并且在某种程度上,它已可预测地渗透到世界上几乎任何基于软件的产品中。

FOSS 有什么不好呢?即用型源代码,随时可以下载,无需支付许可费——只需拿去运行即可。许可证中可能有一些细则需要遵守,但没有什么过于繁重或累赘的。

你的电视?它里面有一台 Linux 或 {Net|Free}BSD 计算机。办公室里的复印机/打印机/多功能一体机,以及你车里和你孩子卧室里的娱乐游戏机也是如此。代码重用终于实现了,但有一个脚注:一分钱一分货。

今年早些时候,OpenSSL Heartbleed 漏洞摧毁了互联网安全,并且仍然有成千上万种各种嵌入式设备——可能包括你的电视——尚未升级软件修复该漏洞,并且永远不会升级。防止这种情况再次发生的最佳方法是避免此类漏洞多年未被发现,而避免这种情况的唯一方法是让有能力的人员关注该软件。

就 OpenSSL 而言,显而易见的是没有人关注它。有一个名为 OpenSSL 基金会的商业实体,但据任何人所知,它是一家 FIPS(联邦信息处理标准)测试咨询公司,这几乎是它所做的全部工作。

根据《华尔街日报》5 的一篇文章,OpenSSL 基金会每年收到约 2000 美元的捐款来维护 OpenSSL 代码。这相当于一位优秀的程序员每年大约花费 20 个小时来维护超过 50 万行的代码。这当然解释了为什么 OpenSSL 错误跟踪器是只写的,以及为什么代码仍然因为支持 VMS 和 16 位 Windows 等过时的操作系统而过于复杂。

正如预期的那样,在 Heartbleed 漏洞造成严重破坏后,资金开始涌入:IT 安全是一场你只有先输才能赢的游戏。因此,OpenSSL 的维护、测试和质量保证现在得到了资助,我们一切都好,对吧?不,我们不好!许多其他 FOSS 项目(除了 OpenSSL 之外)都严重人手不足,因为它们资金不足——我们需要解决这个问题。

为什么 FOSS 需要资金

关于软件自由,GNU 项目创始人 Richard Stallman 和我唯一能达成一致的事情是,它是“自由如言论自由,而非免费啤酒”。

我真的希望 Heartbleed 漏洞能够帮助其他社区明白,FOSS 不是凭空产生的;它是由人编写的。我们热爱我们所做的事情,这就是为什么我在星期六晚上过了午夜还坐在这里写关于它的文章;但我们也是有孩子、汽车、抵押贷款、屋顶漏水、宠物生病、年迈的父母以及各种其他完全正常的担忧的真人。

提高 FOSS 质量的唯一方法是让这些完全正常的人能够花时间在上面。他们需要时间仔细审查补丁提交,编写和运行测试用例,响应和修复错误报告,编写代码,最重要的是,需要时间思考代码以及应该对代码做什么。

要求这些人放弃与孩子玩耍或遛狗的时间,以便开发和维护驱动他人公司利润的软件,这甚至在道德上都站不住脚。正确的方法——合乎道德的方法——以及迄今为止最有效的方法是支付开发人员的工资,让他们能够靠他们热爱的软件谋生。而且不仅仅是一个月或两个月:优秀的程序员,像大多数人一样,更喜欢稳定的工作,这样他们就可以专注于工作,而不是浪费时间追逐下一个项目或下一个赞助商。

如何资助 FOSS

资助 FOSS 的一种方法是简单地雇用 FOSS 维护者,并理解他们将公司的一些时间和资源用于该项目。经验表明,这些人几乎总是有非常令人渴望的头脑,雇主喜欢将这些头脑投入到各种有趣的问题中,这往往会侵蚀“捐赠”的公司时间。许多 FOSS 已经并且仍然以这种方式开发和维护,无论是否有书面协议,甚至公司是否知道这种情况。

非常感谢那些故意这样做的雇主!

这些公司应该将他们对 FOSS 的支持添加到他们的企业社会责任清单中,以及他们对当地足球队的赞助和对奖学金的资助。他们正在为更大的共同利益做一些事情,他们应该为此感到自豪并获得适当的赞誉。

资助 FOSS 的另一种方法是让软件项目设立基金会来筹集资金并雇用开发人员。这是一项相对复杂且昂贵的 undertaking。你会直接陷入税法的最黑暗角落,因此这种方法仅适用于较大的项目。虽然有几个项目走了这条路,但他们筹集资金的能力差异很大。

Apache 基金会可能是所有这些 FOSS 基金会中规模最大的。一些实体“采用”其感兴趣领域内较小的项目。这通常运作良好,但不能轻易推广到不同的领域。

一种更简单、更便宜的方法,也是这里提倡的方法,是简单地向开发人员扔钱,就像 FreeBSD 和 Varnish 社区对我所做的那样。忘记税收减免和所有这些;只需让开发人员不时向你的公司发送发票,并将其塞进 IT 部门的某个账户,标记为“杂项软件许可证”或“专家协助”或任何可以在你的公司中蒙混过关的东西。全球只需要十几家公司就可以让一位顶尖程序员全职专注于 FOSS 项目的代码——而这些代码可能比任何人真正愿意考虑的都对公司的运营更为关键。

这是我的故事...

FreeBSD 社区资助

我第一次对 FOSS 进行众筹是在 2004 年,当时我向 FreeBSD 社区募集资金3,以便我可以投入三到六个月的时间来开发 FreeBSD 磁盘 I/O 子系统。

当时,我作为 FreeBSD 的核心和关键开发人员之一已经工作了 10 年,因此对于我的能力或胜任手头任务没有任何疑问。然而,在 2004 年,众筹尚未“流行”,我不得不弄清楚如何自己进行众筹。我的父母从小就教育我,财务是私事,但我得出的结论是,你要求陌生人向你扔钱的唯一合理方式是运行一本公开账簿,让他们可以看到这笔钱发生了什么。所以我公开了我的账簿。

下一个难题是我的费率。再说一次,我一直认为我的费率是我和我的客户之间的私事。因为我的费率大约是大多数人期望的一半(因为我不会为大多数项目工作,而只会为我真正关心的事情工作),我担心公布我的费率会削弱 FreeBSD 项目中靠咨询为生的朋友和同事的收入。然而,没有办法绕过它,所以我公布了我的费率,尽一切努力将其与常规咨询费率区分开来,而且我从未听到任何抱怨。

在仔细考虑了确切的措辞,然后在 FreeBSD 项目的几个密友身上测试过之后,我提出了这个提议并等待了。我有一个完全安全的后备计划——当你有两个孩子和抵押贷款时,你必须有后备计划——但我真的不知道接下来会发生什么。

最坏的情况,我会引发所有自行车棚之母(http://bikeshed.org/2),被踢出 FreeBSD 项目,并且我会因我对 FOSS 的“意识形态不纯洁”而受到广泛谴责。最好的情况,我预计可能会获得一到两个月的资助。

FreeBSD 社区做出了压倒性的回应。我的公司从未像 2004 年那样发送过那么多发票,我的会计师差点崩溃。突然,我发现自己处于一种我从未考虑过的情况:如何阻止人们向我汇款。我设置了一个 PayPal 账户,至少在当时,没有办法阻止人们向其中投入资金。最后,我设法足够大声地喊叫,所以我只超额资助了几个百分点。我相信我试图将盈余转移到 FreeBSD 基金会的努力也给该组织在那一年带来了一些推动。

今天,进行众筹的人有“延伸目标”来吸收超额资金,但在 2004 年,我身处未知水域;无论发生什么,我都希望将我的实验的任何影响控制在一个财政年度内。我也不确定它在项目的社会动态方面会如何运作,所以我不希望它持续超过半年。

总共,我赚了 27,000 欧元,这让我的孩子在我在该项目上工作的六个月里吃饱了饭,让我的银行很满意。

而且我确实工作了。

我从未有过比那六个月更严厉的老板,这让我惊讶于它给我带来了多大的压力。我觉得自己像是在舞台上工作,整个 FreeBSD 项目都在观众席上,想知道我是否会交付货物。因此,187 位捐赠者肯定物有所值,因为在那半年中的大部分时间里,我每周工作 80 小时,这让我决定不再继续,尽管许多捐赠者表示他们非常愿意再资助几个月。

Varnish 社区资助

五年后,在为挪威的《Verdens Gang》报纸开发了 Varnish HTTP 缓存 1.0 版,并在 Web 内容交付领域的空白中爆发后,我决定再次尝试社区资助。

从经验中变得更明智,我构建了 VML(Varnish 道德许可证)4,以解决第一次给我带来困扰的问题:先联系,后汇款,而不是反过来;还要专注于更少、更大的赞助商,而不是个人给我发送 10 或 15 欧元,甚至在一种情况下发送 1 欧元,这笔钱滞留在未使用的 PayPal 账户中。这次我运行了更加公开的账簿,在 VML 网页上你可以看到我工作了多少小时,以及自 2010 年以来我在 VML 下工作的每一天所做工作的简明扼要的单行描述。

我还决定对自己和我的捐赠者诚实:一小时的工作就是一小时的工作——没有人会从我因压力而死中受益。实际上,它并不完全像那样运作:淋浴时有很多思考,白天和夜晚的任何时候都有电子邮件和 IRC(互联网中继聊天)回复,并且有很多“只是检查细节”是在下班后发生的,因为我喜欢我的工作,而且无论如何没有什么可以阻止我。

这就是我想为其他 FOSS 项目“推销”的资助模式,因为它有效。在 2010 年、2011 年和 2013 年的每一年,除了为我的其他客户所做的工作外,我还为 Varnish 工作了大约 950 个小时(由社区资助)。2012 年,我只工作了 589 个小时,因为我正在构建一个原型计算机集群,为欧洲南方天文台的极大望远镜1 进行自适应光学实时计算(我实在无法拒绝那份合同)。

在 2014 年,我有时间做更多 Varnish 工作,但尽管我不太委婉地暗示,但目前的展望仍然是只资助 800 小时。我正在祈祷会有更多的赞助商出现,因为 Varnish 4 版已经发布了(暗示,暗示,眨眼,眨眼——他心知肚明地说)。

VML 不是一种理想的资助模式,因为除了一个例外,没有一家使用 Varnish 交付大量 HTTP 流量的大型公司参与其中。许多较小的公司维持了这个项目的活力。在一家小公司中,CEO,或者至少是 CTO,更有可能知道公司使用了哪些 FOSS 产品,并且很可能密切关注事态发展和公告。另一方面,在一个较大的组织中,更大的问题淹没了诸如筹款请求之类的“细节”,然后这些“细节”才上升到可以做出决定的层面,或者对市场部门必须参与其中的恐惧扼杀了这个想法。我可以生动地想象 Dilbert 如何未能说服他的 PHB(尖头老板)公司应该捐钱,因为它正在使用一些免费软件。

好消息是 PHB 不必理解:如果十几家中型公司每家公司每月决定花费 500 美元,那将对任何 FOSS 都大有裨益——如果这笔钱落入合适的人手中。还有那个小细节:找到合适的人。

没有捷径可走:每个 FOSS 项目、每个赞助公司、每个潜在的维护者都必须互相看着对方的眼睛,并决定他们是否认为这值得一试。会有失败和失望——这是不可避免的——但如果我们不资助优秀的人员来维护关键的 FOSS 项目,Heartbleed 漏洞将永无止境。

参考文献

1. 欧洲南方天文台。欧洲极大望远镜; http://www.eso.org/public/teles-instr/e-elt/

2. Kamp, P.-H. 1999. 我为什么要关心自行车棚是什么颜色; http://bikeshed.org/

3. Kamp, P.-H. 2004. 为 FreeBSD 开发筹款; http://people.freebsd.org/~phk/funding.html

4. Kamp, P.-H. Varnish 道德许可证; http://phk.freebsd.dk/VML

5. Yadron, D. 2014. Heartbleed 漏洞之后,争先恐后地堵住互联网漏洞。《华尔街日报》(4 月 9 日); http://online.wsj.com/news/articles/SB10001424052702303873604579491350251315132(需要登录)。

喜欢还是讨厌?请告诉我们

[email protected]

Poul-Henning Kamp ([email protected]) 是 FreeBSD 操作系统的主要开发者之一,他从一开始就参与了该操作系统的开发。他因其基于 MD5 的密码加扰器而鲜为人知,该加扰器保护了 Cisco 路由器、Juniper 路由器以及 Linux 和 BSD 系统上的密码。有些人注意到他编写了一个内存分配器、一个设备文件系统和一个实际可用的磁盘加密方法。Kamp 与他的妻子、儿子、女儿、大约十几台 FreeBSD 计算机以及世界上最精确的 NTP(网络时间协议)时钟之一住在丹麦。他以独立承包商的身份靠电脑和网络做各种各样的事情谋生。

© 2014 1542-7730/14/0600 $10.00

acmqueue

最初发表于 Queue 杂志第 12 卷,第 6 期
数字图书馆 中评论本文





更多相关文章

Jinnan Guo, Peter Pietzuch, Andrew Paverd, Kapil Vaswani - 使用机密联邦学习的可信 AI
安全性、隐私性、问责制、透明度和公平性原则是现代人工智能法规的基石。经典的 FL 设计非常强调安全性和隐私性,但以透明度和问责制为代价。CFL 通过将 FL 与 TEE 和承诺相结合,弥补了这一差距。此外,CFL 还带来了其他期望的安全属性,例如基于代码的访问控制、模型机密性和推理期间的模型保护。机密计算的最新进展(如机密容器和机密 GPU)意味着现有的 FL 框架可以无缝扩展以支持 CFL,且开销较低。


Raluca Ada Popa - 机密计算还是密码计算?
通过 MPC/同态加密与硬件飞地进行安全计算,在部署、安全性和性能方面存在权衡。关于性能,您所考虑的工作负载非常重要。对于简单的求和、低阶多项式或简单的机器学习任务等简单工作负载,这两种方法都可以在实践中随时使用,但对于复杂的 SQL 分析或训练大型机器学习模型等丰富的计算,目前只有硬件飞地方法在许多实际部署场景中足够实用。


Matthew A. Johnson, Stavros Volos, Ken Gordon, Sean T. Allen, Christoph M. Wintersteiger, Sylvan Clebsch, John Starks, Manuel Costa - 机密容器组
此处介绍的实验表明,Parma(在 Azure 容器实例上驱动机密容器的架构)增加的性能开销不到底层 TEE 增加的性能开销的百分之一。重要的是,Parma 确保了容器组在证明报告中扎根的所有可达状态上的安全不变性。这允许外部第三方与容器安全地通信,从而实现各种需要机密访问安全数据的容器化工作流程。公司获得了在云中运行其最机密工作流程的优势,而无需在其安全要求上妥协。


Charles Garcia-Tobin, Mark Knight - 使用 Arm CCA 提升安全性
机密计算具有通过将监管系统从 TCB 中移除来提高通用计算平台安全性的巨大潜力,从而减小 TCB 的大小、攻击面以及安全架构师必须考虑的攻击向量。机密计算需要在平台硬件和软件方面进行创新,但这些创新有可能增强对计算的信任,尤其是在由第三方拥有或控制的设备上。机密计算的早期消费者将需要自己决定他们选择信任的平台。





© 保留所有权利。

© . All rights reserved.