过去一年,与 Python 包索引(PyPI)合作推出了 Python 生态系统的新安全功能:索引托管数字证明,如PEP 740所规定。
- 传统 PGP 签名的改进:这些证明通过提供密钥可用性、索引可验证性、加密强度和出处属性,改进了传统 PGP 签名(已在 PyPI 上禁用),使软件供应链更接近整体、加密可验证的出处。
- 默认启用:已使用可信发布向 PyPI 发布包的,无需更改任何内容,默认启用官方 PyPI 发布工作流,从v1.11.0 及更高版本开始。
- 背景:可信发布:去年与 PyPI 合作设计并实现了可信发布,无需手动配置和范围限定的 API 令牌,通过OpenID Connect(OIDC)使用公钥加密确保请求的真实性,发布的令牌是短期且范围最小化的,在 PyPI 上取得巨大成功,其他生态系统也感兴趣。
- 从可信发布到 Sigstore:可信发布将 PyPI 托管的项目连接到处理发布的加密可验证机器身份,Sigstore 通过免费、可公开访问、可审计的证书颁发机构(Fulcio)将短期签名密钥绑定到机器身份,PyPI 的可信发布流程与 Sigstore 签名兼容,只需提交证书签名请求。
- 从 Sigstore 到证明和出处:Sigstore 通过 X.509 证书提供公开、可验证的凭据,将临时密钥对绑定到机器身份,PEP 740 将 Sigstore 和可信发布与实际包发布结合,生成的证明由临时密钥对的私钥签名,通过JSON 简单 API和PEP 503索引存储证明。
- 现状与展望:截至 10 月 29 日,通过PyPA 发布动作使用可信发布的默认启用证明,约 20,000 个包可默认证明出处,Are We PEP 740 Yet?跟踪 360 个最下载包的采用情况,目前 5%有证明,长期需要将验证引入安装客户端,如为
pip开发插件架构,遵循PEP 751,利用标准化锁文件存储和验证身份,目前研究人员、事件响应者和完全控制构建系统的用户可利用新托管的证明。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。