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 的设计围绕三个核心目标展开,每个目标都对应一个关键组件:
- 简化签名流程(Cosign): 提供
cosign命令行工具,支持容器镜像、二进制文件、SBOM、Blob 等多种工件的签名与验证。开发者只需一条命令即可完成签名,无需管理私钥。 - 建立公开可验证的信任链(Fulcio): 基于 OIDC(OpenID Connect)协议,将开发者身份(如 GitHub、Google、Microsoft 账号)与短期签名证书绑定。Fulcio 证书颁发机构自动签发证书,证书有效期通常为 10 分钟,大幅降低密钥泄露风险。
- 提供不可篡改的审计日志(Rekor): 所有签名元数据(包括签名、证书、工件哈希)被提交到 Rekor 透明日志。任何人都可以查询、监控和审计签名事件,确保签名行为的公开透明。
1.4 Sigstore 与软件供应链安全的关系
Sigstore 填补了软件供应链安全中“谁签的名?签名是否可信?签名是否被篡改?”这三个核心问题的空白。它与现有的安全框架(如 SLSA、SBOM)形成互补,共同构建端到端的供应链安全体系。
实践建议: 在实施 Sigstore 时,建议结合 SLSA(Supply-chain Levels for Software Artifacts)等级模型。Sigstore 提供签名与验证能力,SLSA 提供构建完整性等级,两者配合可显著提升供应链安全成熟度。
下表展示了 Sigstore 在软件供应链安全生命周期中的具体作用:
| 供应链阶段 | 安全风险 | Sigstore 解决方案 |
|---|---|---|
| 开发阶段 | 开发者身份被冒用,恶意代码提交 | OIDC 身份绑定,确保签名者身份真实 |
| 构建阶段 | 构建产物被篡改,依赖投毒 | Cosign 对构建产物签名,验证完整性 |
| 分发阶段 | 镜像或包被替换,中间人攻击 | 签名与工件一起分发,验证者独立校验 |
| 部署阶段 | 未签名的恶意工件进入生产环境 | 策略引擎(如 Kyverno)集成 Cosign 验证,拒绝未签名镜像 |
| 审计阶段 | 签名记录丢失,无法追溯 | Rekor 透明日志提供不可篡改的审计线索 |
1.5 本章小结
- Sigstore 是 Linux 基金会托管的开源签名基础设施,旨在解决软件供应链中的信任问题。
- 三大核心组件:Cosign(签名工具)、Fulcio(证书颁发机构)、Rekor(透明日志)。
- 通过 OIDC 身份绑定 + 短期证书 + 公开日志,实现“无需管理私钥”的安全签名体验。
- Sigstore 覆盖开发、构建、分发、部署、审计全生命周期,与 SLSA、SBOM 形成互补。
注意: 虽然 Sigstore 大幅降低了签名门槛,但它并不解决所有供应链安全问题。例如,它无法防止恶意代码在签名前被注入,也无法替代代码审查和依赖扫描。Sigstore 应作为整体安全策略的一部分,而非唯一防线。