1. Sigstore 概述:项目背景、核心目标与软件供应链安全

1.1 软件供应链安全面临的现实挑战

现代软件开发高度依赖开源组件、第三方库和自动化构建流水线。这种复杂的供应链结构在提升效率的同时,也引入了巨大的安全风险。攻击者不再直接攻击最终应用,而是将恶意代码注入上游依赖、构建工具或分发管道,形成“供应链投毒”攻击。

关键数据: 根据 Sonatype 2023 年报告,过去三年软件供应链攻击的年均增长率超过 700%。SolarWinds、Codecov、Log4j 等重大安全事件均源于供应链环节的信任缺失。

传统安全模型依赖“信任但验证”的边界防护,但在供应链场景下,这种模式存在三个根本性缺陷:

  • 签名基础设施分散: 每个项目或组织自行管理密钥,缺乏统一的信任锚点。
  • 密钥生命周期管理脆弱: 私钥泄露、过期、轮换不当导致签名失效或伪造。
  • 验证过程不可审计: 缺乏透明、可公开验证的签名记录,事后追溯困难。

1.2 Sigstore 项目背景与诞生

Sigstore 是一个由 Linux 基金会托管的开源项目,最初由 Google、Red Hat、Purdue 大学等机构联合发起。其核心使命是解决软件供应链中“代码签名”与“身份验证”的信任难题,通过构建一套 无门槛、自动化、可公开验证 的签名基础设施,让任何开发者都能轻松对软件工件进行签名和验证。

维度 传统签名方案 Sigstore 方案
密钥管理 自建 PKI,密钥生成、存储、轮换复杂 临时密钥 + OIDC 身份绑定,无需长期保管私钥
验证方式 依赖本地信任库,验证结果不可共享 透明日志 + 公开证书,任何人均可独立验证
使用门槛 需要专业密码学知识,集成成本高 命令行工具 cosign 一键签名/验证
审计追溯 签名记录分散,难以审计 所有签名写入 Rekor 透明日志,永久可查

1.3 核心目标:让代码签名像 HTTPS 一样普及

Sigstore 的设计围绕三个核心目标展开,每个目标都对应一个关键组件:

  1. 简化签名流程(Cosign): 提供 cosign 命令行工具,支持容器镜像、二进制文件、SBOM、Blob 等多种工件的签名与验证。开发者只需一条命令即可完成签名,无需管理私钥。
  2. 建立公开可验证的信任链(Fulcio): 基于 OIDC(OpenID Connect)协议,将开发者身份(如 GitHub、Google、Microsoft 账号)与短期签名证书绑定。Fulcio 证书颁发机构自动签发证书,证书有效期通常为 10 分钟,大幅降低密钥泄露风险。
  3. 提供不可篡改的审计日志(Rekor): 所有签名元数据(包括签名、证书、工件哈希)被提交到 Rekor 透明日志。任何人都可以查询、监控和审计签名事件,确保签名行为的公开透明。
Sigstore 核心组件架构 开发者 OIDC 身份 (GitHub/Google) Cosign 签名 / 验证 CLI Fulcio 证书颁发机构 (CA) Rekor 透明日志 工件仓库 容器镜像 / 包 验证者 策略引擎 / 审计员 cosign sign 请求证书 返回证书 推送签名+工件 提交签名记录 查询日志 拉取工件+签名 Sigstore 通过 Cosign + Fulcio + Rekor 三个组件,实现从身份认证到签名验证的完整信任链

1.4 Sigstore 与软件供应链安全的关系

Sigstore 填补了软件供应链安全中“谁签的名?签名是否可信?签名是否被篡改?”这三个核心问题的空白。它与现有的安全框架(如 SLSA、SBOM)形成互补,共同构建端到端的供应链安全体系。

实践建议: 在实施 Sigstore 时,建议结合 SLSA(Supply-chain Levels for Software Artifacts)等级模型。Sigstore 提供签名与验证能力,SLSA 提供构建完整性等级,两者配合可显著提升供应链安全成熟度。

下表展示了 Sigstore 在软件供应链安全生命周期中的具体作用:

供应链阶段 安全风险 Sigstore 解决方案
开发阶段 开发者身份被冒用,恶意代码提交 OIDC 身份绑定,确保签名者身份真实
构建阶段 构建产物被篡改,依赖投毒 Cosign 对构建产物签名,验证完整性
分发阶段 镜像或包被替换,中间人攻击 签名与工件一起分发,验证者独立校验
部署阶段 未签名的恶意工件进入生产环境 策略引擎(如 Kyverno)集成 Cosign 验证,拒绝未签名镜像
审计阶段 签名记录丢失,无法追溯 Rekor 透明日志提供不可篡改的审计线索
Sigstore 在软件供应链安全中的位置 开发 构建 分发 部署 审计 Sigstore 覆盖范围:签名 + 验证 + 透明日志 身份绑定 (OIDC) 工件签名 (Cosign) 证书签发 (Fulcio) 日志记录 (Rekor) 策略验证 与现有安全框架的关系 Sigstore 提供签名基础设施,SLSA 提供构建完整性等级,SBOM 提供组件清单 三者结合可实现“可验证的构建 + 可验证的签名 + 可追溯的依赖”

1.5 本章小结

  • Sigstore 是 Linux 基金会托管的开源签名基础设施,旨在解决软件供应链中的信任问题。
  • 三大核心组件:Cosign(签名工具)、Fulcio(证书颁发机构)、Rekor(透明日志)。
  • 通过 OIDC 身份绑定 + 短期证书 + 公开日志,实现“无需管理私钥”的安全签名体验。
  • Sigstore 覆盖开发、构建、分发、部署、审计全生命周期,与 SLSA、SBOM 形成互补。
注意: 虽然 Sigstore 大幅降低了签名门槛,但它并不解决所有供应链安全问题。例如,它无法防止恶意代码在签名前被注入,也无法替代代码审查和依赖扫描。Sigstore 应作为整体安全策略的一部分,而非唯一防线。