引用《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 的存储库获得的软件包是否来自预期的维护者,并获取他们所运用的软件是真正的信任。”