Sigstore Cosign 以无密钥签名革新软件供应链安全

⭐ 5769

作为开源 Sigstore 项目的旗舰代码签名工具,Cosign 已成为保护软件制品安全的关键基础设施组件。其核心创新在于将身份标识与长期存在的加密密钥解耦。开发者无需再管理私钥——这一 notorious 的泄露源和运维负担——Cosign 转而利用临时密钥对,并将签名绑定到来自 GitHub、Google 和 Microsoft 等现有提供商的强、短期身份上。随后,该签名连同制品的摘要会被不可变地记录在 Sigstore 的公开、防篡改透明日志 Rekor 中。该工具与开放容器倡议(OCI)注册表(包括 Docker Hub、Google Container Registry 和 Amazon Elastic Container Registry)实现了无缝集成,使得任何具有注册表拉取权限的系统都能通过标签命名约定检索和验证签名,无需特殊 API。这极大地简化了安全实践,将操作负担从开发者/安全团队转移到了 OIDC 提供商、Fulcio 和 Rekor 之间的自动化协调上,代表了从以基础设施为中心(管理密钥)到以身份为中心的工作流安全的范式转变。

技术深度解析

Cosign 的架构优雅简洁而强大,它建立在成熟标准之上,同时在编排和可用性上进行了创新。其核心执行标准的公钥加密:生成密钥对、签署制品的加密哈希(SHA-256)并生成签名。革命性之处在于这些密钥的管理方式以及所记录的上文信息。

无密钥流程:
1. 身份质询: 开发者触发签名命令(例如 `cosign sign`)。Cosign 将其重定向到 OIDC 提供商(如 GitHub Actions 的内置 ID 令牌颁发者)进行身份验证。
2. 临时证书颁发: 验证成功后,OIDC 令牌被发送到 Sigstore 的 Fulcio 证书颁发机构。Fulcio 验证令牌并颁发一个短期(10分钟)的 X.509 代码签名证书。该证书的私钥仅在客户端内存中临时存在。
3. 签名与记录: Cosign 使用此临时密钥对签署制品。签名、证书和制品的摘要被打包成一个“捆绑包”并发送到 Rekor 透明日志。Rekor 返回一个包含证明,创建一个永久的、公开可验证的记录,证明*此身份*在*此时*签署了*此制品*。

集成机制: Cosign 利用 OCI 注册表 API,将签名、SBOM 和证明作为独立的制品存储,通过标签命名约定进行关联。对于一个镜像 `gcr.io/project/image:tag`,其签名存储为 `gcr.io/project/image:sha256-<DIGEST>.sig`。这使得任何具有注册表拉取权限的系统也无需特殊 API 即可检索和验证签名。

性能与规模: 该系统为云规模设计。Fulcio 和 Rekor 是无状态服务。Rekor 的底层数据结构是 Trillian Merkle 树——证书透明度日志技术的一个分支——它提供了高效的包含性和一致性加密证明。来自生产部署的基准测试显示,其对 CI/CD 流水线持续时间的影响微乎其微;增加的延迟主要取决于与公共 Sigstore 服务或私有部署的网络 I/O,通常仅为构建阶段增加数秒。

| 签名操作 | 传统 GPG/PKI | Cosign (无密钥) |
| :--- | :--- | :--- |
| 密钥管理 | 手动生成、安全存储、轮换、吊销列表 | 临时性;无长期私钥管理 |
| 身份绑定 | 弱(密钥中的电子邮件)或复杂(企业 PKI) | 强、短期,来自可信提供商(GitHub、Google)的 OIDC 令牌 |
| 审计追踪 | 无,或自行维护 | 自动、不可变的公共日志(Rekor) |
| 运维开销 | 高(需要安全团队介入) | 低(集成到 CI 工作流中) |
| 吊销机制 | 复杂(CRLs/OCSP) | 即时(身份提供商可使未来令牌失效) |

数据要点: 上表突显了从以基础设施为中心的安全(管理密钥)到以身份为中心的工作流安全的范式转变。操作负担从开发者/安全团队转移到了 OIDC 提供商、Fulcio 和 Rekor 之间的自动化协调。

相关 GitHub 仓库:
* `sigstore/cosign` (⭐5,769): 主要工具。最新进展包括支持签名任意二进制数据块、针对传统用例的密钥管理,以及与 Kubernetes 策略引擎的集成。
* `sigstore/rekor` (⭐1,2k+): 透明日志服务器。当前工作重点在于可扩展性、新的条目类型(用于 in-toto 证明、SPDX SBOM)以及改进查询性能。
* `sigstore/fulcio` (⭐400+): 临时代码签名的根 CA。它正在演进以支持更广泛的 OIDC 提供商和社区信任根。

关键参与者与案例研究

Cosign 和 Sigstore 并非在真空中运作。它们是更广泛生态系统运动的一部分,既面临合作也面临竞争。

核心维护者与推动者: 该项目最初由来自 Google、Red Hat 和普渡大学的工程师开发,包括 Dan Lorenc(前 Google,现 Chainguard)和 Luke Hinds(Red Hat)。他们的洞见是,现有的签名工具过于困难,导致大多数软件未签名。Linux 基金会的开源安全基金会(OpenSSF)目前托管着 Sigstore,提供治理和资金支持。

战略采用者:
* Google Cloud: 已将 Cosign 原生集成到 Google Cloud Build 和 Artifact Registry 中,提供托管验证和二进制授权服务。他们用它来签署所有自己的公共容器镜像。
* Red Hat: 在其 Red Hat Enterprise Linux 和 OpenShift 镜像的容器构建流水线中广泛使用 Cosign,并致力于推动其与 Kubernetes 生态系统的集成。
* GitHub: 在 GitHub Actions 中拥抱 Sigstore。`sigstore/cosign-installer` action 被广泛使用,且 GitHub 的 OIDC 提供商是 Fulcio 的一类身份来源。
* Chainguard: 一家由 Sigstore 联合创始人 Dan Lorenc 等人创立的公司,致力于提供基于 Sigstore 技术的安全软件供应链解决方案。

常见问题

GitHub 热点“Sigstore's Cosign Revolutionizes Software Supply Chain Security with Keyless Signatures”主要讲了什么?

Cosign, the flagship code-signing tool of the open-source Sigstore project, has emerged as a critical infrastructure component for securing software artifacts. Its core innovation…

这个 GitHub 项目在“cosign vs notary v2 performance benchmark”上为什么会引发关注?

Cosign's architecture is elegantly simple yet powerful, built on established standards while innovating in orchestration and usability. At its heart, it performs standard public-key cryptography: generating a key pair, s…

从“how to deploy private sigstore fulcio rekor cluster kubernetes”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 5769,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。