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