Sigstore Fulcio如何以身份即密钥架构重构代码签名范式

⭐ 814

Fulcio作为Sigstore项目的加密核心,是一个专为软件供应链安全构建的免费非营利证书颁发机构(CA)。其核心创新在于用自动颁发的短期证书取代传统需人工管理的长期代码签名密钥。这些证书并非绑定静态密钥对,而是与开发者通过GitHub、Google或Microsoft等OpenID Connect(OIDC)提供商验证的身份相关联。开发者仅需通过熟悉的身份提供商完成认证,Fulcio便会颁发有效期仅10-20分钟的证书,用于签名制品(容器镜像、二进制文件或SBOM)。签名和证书随后被不可篡改地记录在Sigstore的透明日志中。

这一架构将长期密钥管理的风险转移至成熟的OIDC提供商,同时通过短期证书和透明日志实现可验证的审计追踪。Fulcio的生产环境根证书已成为整个生态系统的关键信任锚,其Go语言实现专注于安全性与简洁性。项目由Google、Red Hat和普渡大学SECURE研究实验室共同创建,现由Chainguard工程师主导开发,并得到Linux基金会及多家科技巨头的支持。从Google Cloud服务到GitHub Actions,再到Kubernetes发布流程,Fulcio正在成为现代软件工厂的基础安全层。

技术深度解析

Fulcio的架构堪称利用现有网络基础设施实现创新安全目标的典范。其本质是一个专业化的公钥基础设施(PKI),其中证书的“主体”不再是组织名称,而是OIDC身份声明。工作流程遵循精确的序列:

1. 身份验证:开发者运行`cosign sign`等命令,被重定向至OIDC提供商(如GitHub)进行认证。成功后获得OIDC ID令牌。
2. 证书颁发:客户端将包含新生成公钥的证书签名请求(CSR)与OIDC ID令牌一同发送至Fulcio。
3. 身份核验:Fulcio验证ID令牌的签名并提取预定义声明。关键声明是`email`字段,该字段必须经过OIDC提供商验证。Fulcio同时检查令牌颁发者是否在允许列表中。
4. 证书绑定:Fulcio构建X.509证书,将主题备用名称(SAN)设置为开发者邮箱(如`email:developer@company.com`)。证书的`颁发者`和`主体`也基于OIDC声明填充。CSR中的公钥被嵌入,证书由Fulcio根CA签名。
5. 短期有效:所颁发证书有效期通常为10-20分钟,仅够完成签名事务。
6. 透明日志记录:证书与制品签名被发送至Rekor,创建公开且防篡改的记录。

与证书公钥对应的私钥仅在客户端机器上短暂存在(通常在内存中),签名后即被丢弃。这正是“身份即密钥”的精髓——长期秘密并非加密密钥,而是开发者对其OIDC账户的访问权限。

Fulcio的信任根是其根证书颁发机构,其公钥已广泛分发并嵌入Cosign等客户端。项目维护测试生产两个根证书,后者是生态系统的关键信任锚。技术栈采用Go语言编写,强调简洁性与安全性。`sigstore/fulcio` GitHub仓库(⭐814)作为规范实现,积极开发的重点包括支持新OIDC提供商、完善证书配置文件以及提升可扩展性。

关键性能指标是颁发延迟和可靠性,因其位于开发者工作流的关键路径上。虽然Fulcio未发布正式基准测试,但社区观察表明证书颁发可在亚秒级完成,在整个CI/CD流水线中可忽略不计。

| 组件 | 角色 | 信任机制 | 生命周期 |
|---|---|---|---|
| OIDC提供商(GitHub) | 验证开发者身份 | 中心化、网络级认证 | 长期账户 |
| Fulcio CA | 颁发代码签名证书 | 受信任根证书 | 10-20分钟 |
| 客户端私钥 | 签署制品 | 临时性、内存存储 | 秒级(单次使用) |
| Rekor | 记录签名与证书 | 默克尔树+流言协议 | 不可变、永久 |

数据洞察:此表展示了签名过程中信任与生命周期的根本性重新分配。长期秘密(OIDC账户)由成熟的外部提供商管理,而加密秘密则是临时的。Fulcio充当了这两个世界之间关键的可信桥梁。

关键参与者与案例研究

以Fulcio为核心的Sigstore生态系统由行业领导者联盟推动,并被主要平台采用,形成了强大的网络效应。

核心维护者与支持方:项目由GoogleRed Hat普渡大学SECURE研究实验室的开发者共同创建。持续的重要贡献来自Chainguard的工程师,这家由Sigstore联合创始人创立的企业为项目提供商业支持和企业工具。Linux基金会作为项目的中立托管方,资金来自包括GoogleRed HatVMwareCisco在内的联盟。

应用案例研究
1. Google:作为主要支持者,Google将Sigstore深度集成至其服务中。Google Cloud Build原生支持使用Sigstore签名制品。更重要的是,Artifact RegistryCloud Run能够验证Sigstore签名,强制执行仅部署正确签名容器的策略,从而形成闭环的安全软件工厂。
2. GitHub Actions:官方的`sigstore/cosign-installer` Action每周运行超过150万次。这使得任何GitHub工作流都能利用运行器内置的GitHub OIDC令牌轻松签名发布制品,完全自动化来源生成,无需任何秘密配置。
3. KubernetesKubernetes发布流程

常见问题

GitHub 热点“How Sigstore's Fulcio Reinvents Code Signing with Identity-as-Key Architecture”主要讲了什么?

Fulcio stands as the cryptographic heart of the Sigstore project, operating as a free, non-profit Certificate Authority (CA) purpose-built for software supply chain security. Its c…

这个 GitHub 项目在“How to set up GitHub Actions OIDC with Cosign and Fulcio”上为什么会引发关注?

Fulcio's architecture is a masterclass in leveraging existing web infrastructure for a novel security purpose. At its core, it is a specialized Public Key Infrastructure (PKI) where the "subject" of a certificate is not…

从“Fulcio vs DigiCert code signing certificate cost and use case”看,这个 GitHub 项目的热度表现如何?

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