分类
麻省理工学院新闻

增强对开源软件真实性的信心

Abstract illustration with a laptop computer connected to question marks on its right and its left

引用《2023 年开源安全和风险分析报告》的话,开源软件——免费分发的软件及其源代码,以便随时进行复制、添加或修改——“无处不在”。主要行业使用的计算机程序中有96%包含开源软件,其中76%的程序由开源软件组成。但报告警告说,“包含安全漏洞”的软件包比例仍然高得令人不安。

一个担忧是,“你从你认为可靠的开发人员那里得到的软件在某种程度上受到了损害,”Kelsey Merrill ‘ 22,MEng ’23说,他是一名软件工程师,今年早些时候从麻省理工学院电气工程和计算机科学系获得硕士学位。“假设在供应链的某个地方,软件已被具有恶意意图的攻击者更改。

这种安全漏洞的风险绝不是抽象的。2020 年,举一个臭名昭著的例子,德克萨斯州公司 SolarWinds 对其广泛使用的名为 Orion 的程序进行了软件更新。黑客闯入了该系统,在SolarWinds向18,000多家客户(包括Microsoft,Intel和大约100家其他公司以及十几个美国政府机构(包括国务院,国防部,财政部,商务部和国土安全部)交付最新版本的Orion之前,将有害代码插入软件中。在这种情况下,被破坏的产品来自一家大型商业公司,但失误可能更有可能发生在开源领域,Merrill 说,“不同背景的人——其中许多人是没有任何安全培训的业余爱好者——可以发布在世界各地使用的软件。

现在,她和三位合作者——她的前导师、麻省理工学院计算机科学与人工智能实验室的首席研究科学家凯伦·索林斯(Karen Sollins);圣地亚哥·托雷斯-阿里亚斯(Santiago Torres-Arias),普渡大学计算机科学助理教授;Chainguard Labs 的研究科学家 Zachary Newman SM ’20 开发了一个名为 Speranza 的新系统,旨在向软件消费者保证,他们获得的产品没有被篡改,并且直接来自他们信任的来源。

“我们所做的,”Sollins解释说,“是开发、证明正确和证明一种方法的可行性,这种方法允许[软件]维护者保持匿名。保持匿名性显然很重要,因为几乎每个人——包括软件开发人员——都重视他们的机密性。Sollins补充说,这种新方法“同时允许[软件]用户确信维护者实际上是合法的维护者,此外,下载的代码实际上是该维护者的正确代码。

那么,用户如何确认软件包的真实性,以保证,正如 Merrill 所说,“维护者就是他们所说的那个人呢?40 多年前发明的经典方法是通过数字签名,它类似于手写签名——尽管通过使用各种加密技术具有更高的内置安全性。

为了进行数字签名,需要同时生成两个“密钥”——每个“密钥”都是一个数字,由零和一组成,长度为 256 位。一个密钥被指定为“私有”,另一个被指定为“公共”,但它们构成了一对在数学上链接的密钥。软件开发人员可以使用其私钥以及文档或计算机程序的内容来生成专门附加到该文档或程序的数字签名。然后,软件用户可以使用公钥(以及开发人员的签名以及他们下载的软件包的内容)来验证软件包的真实性。

验证的形式是或否、一或零。“获得一个意味着真实性得到了保证,”Merrill 解释道。“该文件与签署时相同,因此没有变化。零表示有问题,你可能不想依赖该文档。

尽管这种已有数十年历史的方法在某种意义上是久经考验的,但它远非完美。Merrill指出,一个问题是,“人们不善于管理加密密钥,这些密钥由很长的数字组成,以一种安全的方式进行管理,并防止它们丢失。Merrill 说,人们总是会丢失密码。“如果一个软件开发人员丢失了私钥,然后联系一个用户说,’嘿,我有一个新密钥’,你怎么知道那到底是谁?”

为了解决这些问题,Speranza正在构建“Sigstore”,这是一个去年推出的系统,旨在增强软件供应链的安全性。Sigstore 由 Newman(他发起了 Speranza 项目)和 Torres-Arias 以及 Chainguard Labs 的 John Speed Meyers 开发。Sigstore 自动化并简化了数字签名过程。用户不再需要管理长加密密钥,而是获得临时密钥(一种称为“无密钥签名”的方法),这些密钥会很快过期(可能在几分钟内),因此不必存储。

Sigstore的一个缺点是,它省去了持久的公钥,因此软件维护者必须通过一种称为OpenID Connect(OIDC)的协议来识别自己,以一种可以链接到他们的电子邮件地址的方式。仅这一功能就可能抑制 Sigstore 的广泛采用,它是 Speranza 背后的激励因素和存在理由。“我们采用了 Sigstore 的基础设施并对其进行更改以提供隐私保证,”Merrill 解释道。

在Speranza中,隐私是通过她和她的合作者称之为“身份共同承诺”的原创想法来实现的。简单来说,这就是这个想法的运作方式:软件开发人员的身份,以电子邮件地址的形式,被转换为由一个大的伪随机数组成的所谓“承诺”。(伪随机数不符合“随机数”的技术定义,但实际上,它与随机数差不多。

同时,会生成另一个大随机数(随附的承诺或共同承诺),该数字与该开发人员创建或被授予修改权限的软件包相关联。为了向特定软件包的潜在用户证明是谁创建了该软件包的版本并对其进行了签名,授权开发人员将发布一个证明,在代表其身份的承诺与软件产品所附的承诺之间建立明确的联系。所执行的证明是一种特殊类型,称为零知识证明,这是一种表明,例如,两件事具有共同界限的方式,而不会泄露有关这些事情的细节——例如开发人员的电子邮件地址——实际上是什么。

“Speranza 确保软件来自正确的来源,而无需开发人员透露他们的电子邮件地址等个人信息,”纽约大学网络安全中心的博士候选人 Marina Moore 评论道。“它允许验证者看到同一个开发人员多次签署一个包,而不会透露开发人员是谁,甚至不会透露他们正在处理的其他包。与长期签名密钥相比,这提供了可用性方面的改进,并且与其他基于 OIDC 的解决方案(如 Sigstore)相比,这具有隐私优势。

英特尔研究院安全与隐私研究小组的研究科学家 Marcela Mellara 表示:“这种方法的优点是允许软件消费者自动验证他们从支持 Speranza 的存储库中获得的软件包是否来自预期的维护者,并相信他们正在使用的软件是真实的。

在丹麦哥本哈根举行的计算机和通信安全会议上发表了一篇关于Speranza的论文。

新闻旨在传播有益信息,英文版原文来自https://news.mit.edu/2023/speranza-boosting-faith-authenticity-open-source-software-1211