我们现在为代码签名 - Sigstore技术解析与应用指南

本文深度解析Sigstore技术架构,介绍这个由Linux基金会主导的免费代码签名服务如何通过短期证书、透明日志等创新机制重构软件供应链安全,并详细演示Python项目的实际签名验证流程。

Sigstore是什么?

对于不熟悉的读者:Sigstore是由Linux基金会主导的项目,汇集了科技巨头和知名学术机构的贡献,其核心使命是让每个人都能进行代码签名和验证。该项目通过两大核心服务实现:

  1. Fulcio:公共根证书颁发机构,为授权身份颁发短期签名证书,并将证书提交至证书透明度日志;
  2. Rekor:为签名制品提供透明度和时间戳服务,具有强大的完整性保证。

这两个服务采用x509v3和CT等标准协议,可与现有验证方案无缝集成。例如,您现在就能使用gitsign工具通过Sigstore签署git提交,而无需修改git本身。

Sigstore的创新之处

虽然本质上是PKI生态系统,但Sigstore专为短期签名证书设计。其核心创新在于身份验证机制:

  • Fulcio作为根CA仅验证开发者或机器身份,要求每个证书签名请求必须附带OpenID Connect (OIDC)令牌
  • 目前支持的身份提供方包括GitHub(个人邮箱和工作流机器身份)、Google/Microsoft账户以及云平台Kubernetes集群

这种"身份优先"的模式颠覆了传统代码签名:

  1. 验证方只需确认特定身份是否签署过目标制品
  2. 默认采用强密码学原语
  3. 无需管理长期密钥
  4. 所有签名记录公开透明

实战:使用Sigstore签名验证

通过官方Python客户端演示完整流程:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 安装工具
$ python -m pip install sigstore

# 签署文件(自动生成临时密钥)



# 验证签名
$ python -m sigstore verify \
    --cert-email user@example.com \

签名过程包含7个自动化步骤:

  1. 生成临时密钥对
  2. 获取OIDC身份令牌
  3. 向Fulcio提交证书请求
  4. 接收并验证证书链
  5. 使用私钥签名
  6. 将签名提交至Rekor
  7. 保存验证材料

现状与未来规划

目前已有重要进展:

  • CPython官方发布包已采用Sigstore签名
  • 提供GitHub Action实现自动化发布签名

未来重点方向包括:

  • 完善sigstore-python的稳定API
  • 优化身份验证的用户体验
  • 为PyPI等仓库提供原生支持
  • 开发客户端一致性测试套件

Sigstore正在重塑软件供应链安全范式,其免密钥管理、强身份绑定的特性为开发者提供了前所未有的安全便利。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计