Anaconda 很高兴地宣布发布 conda 签名验证。此功能通过验证软件包工件和元数据与信任链相符来保留 conda 安装的完整性。
conda 签名验证的好处
当 conda 验证工件签名时,它可以确保用户即将安装的软件包与我们在安全构建网络上生产时的软件包完全相同。此验证步骤消除了软件供应链中许多潜在的单点故障 - 大大减少了可能的中途攻击、受损的镜像或内容分发网络、TLS 配置错误等对客户系统的影响。这极大地保护了我们的软件包分发系统免受成为客户端系统攻击媒介,并为用户提供了有关可能损害的信息。
Conda 签名验证可确保用户在获取软件包或有关该软件包的数据时,能够知道它是否值得信赖,以及该软件包来自可靠的来源并且未被篡改。
我们如何对工件进行签名和验证?
conda 签名验证设计基于更新框架 (TUF)。TUF 最初于 2009 年开发,旨在解决软件包管理器普遍存在的漏洞。TUF 提供了一个灵活的框架和规范,开发人员可以将其采用到任何软件更新系统中,以防御各种攻击,即使是针对破坏存储库或验证密钥的复杂攻击者。
在 Anaconda 构建软件包后,会在我们的安全构建网络上对软件包及其元数据进行签名,生成一个签名。然后将软件包和相应的签名元数据上传到 Anaconda 的高级存储库**。**
当 conda 获取这些软件包时,conda 会验证签名是否来自受信任的签名者,并且与软件包数据匹配。信任是使用与 conda 一起提供的根元数据建立的 - 将其委派给验证机构。简而言之,根元数据担保软件包签名者。根元数据还通过根链保持安全更新:conda 使用它当前信任的版本来验证根元数据的下一个版本。Anaconda 拥有严格控制的、安全的根密钥管理流程,要求多个位于不同位置的机构使用脱机密钥达成共识,每个密钥仅在硬件安全设备上创建和保存。
通过将安全责任仔细地分离到根信任机构、密钥管理器机构和软件包验证机构,我们实现了抗破坏、灵活可扩展且健壮的安全解决方案。因此,即使攻击者破坏了存储库服务器或镜像,conda 仍然可以判断我们构建软件包或其元数据是否在构建后被篡改,并且用户仍然可以拒绝修改后的软件包。此外,即使我们的安全构建网络上的验证过程本身遭到破坏,conda 也可以使用根元数据来确定要信任谁。
谁将能够访问 conda 签名验证,以及如何访问?
最初,我们的专业存储库 (repo.anaconda.cloud) 用户需要进行一些更新才能启用此功能。请参阅安装说明和预期结果 此处 以开始使用。