技术深度解析
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 技术的安全软件供应链解决方案。