引用《2023 年开源安全和风险分析报告》的话,开源软件(即免费分发的软件及其源代码,以便可以轻松地进行复制、添加或修改)“无处不在”。在主要行业使用的计算机程序中,96%包含开源软件,其中76%的程序由开源软件组成。但报告警告称,“包含安全漏洞的软件包比例仍然高得令人不安”。
今年早些时候从麻省理工学院电气工程和计算机科学系获得硕士学位的软件工程师凯尔西·梅里尔(Kelsey Merrill)表示,一个令人担忧的问题是,“你从你认为可靠的开发人员那里获得的软件不知何故受到了损害”。。“假设在供应链的某个地方,软件已被恶意攻击者更改。”
此类安全漏洞的风险绝不是抽象的。2020 年,举一个臭名昭著的例子,德克萨斯州的 SolarWinds 公司对其广泛使用的 Orion 程序进行了软件更新。在 SolarWinds 将最新版本的 Orion 交付给超过 18,000 家客户(包括微软、英特尔和大约 100 家其他公司)以及十几个美国政府机构(包括美国国务院)之前,黑客闯入了系统,在软件中插入了有害代码。国务院、国防部、财政部、商务部和国土安全部。
在这种情况下,被损坏的产品来自一家大型商业公司,但在开源领域可能更有可能发生失误,梅里尔说,“那里的人们背景各异,其中许多人是没有接受过任何安全培训的业余爱好者——可以发布在世界各地使用的软件。”
她和三位合作者——她的前导师凯伦·索林斯 (Karen Sollins),麻省理工学院计算机科学和人工智能实验室的首席科学家;Santiago Torres-Arias,普渡大学计算机科学助理教授;前麻省理工学院研究生、现任 Chainguard 实验室研究科学家的扎卡里·纽曼 (Zachary Newman) 开发了一种名为 Speranza 的新系统,旨在让软件消费者放心,他们获得的产品没有被篡改,并且直接来自来源他们信任。论文发表在arXiv预印本服务器上。
索林斯解释说:“我们所做的就是开发一种允许[软件]维护者保持匿名的方法,证明其正确性并证明其可行性。” 鉴于几乎每个人(包括软件开发人员)都重视其机密性,因此保护匿名显然很重要。索林斯补充道,这种新方法“同时让[软件]用户确信维护者实际上是合法的维护者,此外,下载的代码实际上是该维护者的正确代码。”
那么,用户如何确认软件包的真实性,以保证(正如 Merrill 所说)“维护者就是他们所说的那样呢?” 40 多年前发明的经典方法是通过数字签名,它类似于手写签名,尽管通过使用各种加密技术具有更高的内置安全性。
为了进行数字签名,需要同时生成两个“密钥”——每个密钥都是一个由 0 和 1 组成的数字,长度为 256 位。一个密钥被指定为“私有”,另一个被指定为“公共”,但它们构成了一对在数学上相互关联的密钥。
软件开发人员可以使用他们的私钥以及文档或计算机程序的内容来生成专门附加到该文档或程序的数字签名。然后,软件用户可以使用公钥以及开发人员的签名以及他们下载的包的内容来验证包的真实性。
验证以“是”或“否”、“1”或“0”的形式出现。“获得 1 意味着真实性得到保证,”梅里尔解释道。“该文件与签署时相同,因此没有变化。0 表示有问题,您可能不想依赖该文件。”
尽管这种已有数十年历史的方法在某种意义上是经过验证的,但它还远非完美。梅里尔指出,一个问题是“人们不擅长以安全且防止丢失的方式管理由很长的数字组成的加密密钥。” 梅里尔说,人们总是会丢失密码。“如果软件开发人员丢失了私钥,然后联系用户说,‘嘿,我有一把新密钥’,你怎么知道那人到底是谁?”
为了解决这些问题,Speranza 正在构建“Sigstore”——这是去年推出的一个系统,旨在增强软件供应链的安全性。Sigstore 由 Newman(他发起了 Speranza 项目)和 Torres-Arias 以及 Chainguard Labs 的 John Speed Meyers 开发。Sigstore 自动化并简化了数字签名流程。用户不再需要管理长加密密钥,而是获得临时密钥(一种称为“无密钥签名”的方法),这些密钥很快就会过期(可能在几分钟内),因此无需存储。
Sigstore 的一个缺点在于它放弃了持久的公钥,因此软件维护人员必须通过名为 OpenID Connect (OIDC) 的协议以一种可以链接到他们的电子邮件地址的方式来识别自己的身份。仅此一项功能就可能会阻碍 Sigstore 的广泛采用,但它是 Speranza 背后的推动因素,也是 Speranza 存在的理由。“我们采用 Sigstore 的基础设施并对其进行更改以提供隐私保证,”Merrill 解释道。
对于 Speranza,隐私是通过她和她的合作者称之为“身份共同承诺”的原创想法来实现的。简而言之,这个想法是如何运作的:软件开发人员的身份(以电子邮件地址的形式)被转换为由一个大伪随机数组成的所谓“承诺”。(伪随机数不符合“随机”的技术定义,但实际上,它与随机一样好。)同时,会生成另一个大伪随机数 - 伴随的承诺(或共同承诺),它与该开发人员创建或被授予修改权限的软件包。
为了向特定软件包的潜在用户证明谁创建了该版本的软件包并对其进行了签名,授权开发人员将发布一个证明,在代表其身份的承诺与附加的承诺之间建立明确的联系。软件产品。所执行的证明是一种特殊类型,称为零知识证明,这是一种显示两个事物具有共同界限的方式,而不会泄露这些事物的详细信息,例如开发人员的电子邮件地址——实际上是。
“Speranza 确保软件来自正确的来源,而不要求开发人员透露电子邮件地址等个人信息,”博士玛丽娜·摩尔 (Marina Moore) 评论道。纽约大学网络安全中心的候选人。“它允许验证者看到同一开发人员多次签署了一个软件包,而无需透露该开发人员是谁,甚至不透露他们正在处理的其他软件包。这比长期签名密钥提供了可用性改进,并且比其他 OIDC 具有隐私优势——基于 Sigstore 等解决方案。”
英特尔实验室安全与隐私研究小组的研究科学家 Marcela Mellara 对此表示同意。“这种方法的优点是允许软件消费者自动验证他们从支持 Speranza 的存储库获取的软件包是否来自预期的维护者,并获得他们所使用的软件是真实的信任。”