root-signing 项目维护用于向 Sigstore 客户端安全交付 Sigstore 信任根(trusted_root.json) 的 TUF 仓库。
该仓库发布在 https://tuf-repo-cdn.sigstore.dev/ 供 Sigstore 客户端使用。
元数据源可在 metadata/ 文件夹中找到,工件(如 trusted_root.json)在 targets/ 文件夹中。 有关如何修改这些源的更多详细信息,请参阅操作。
root-signing 的安全性依赖于密钥持有者:他们应当是受信任的社区成员,愿意并且能够 履行密钥持有者职责,例如验证新的 trusted_root.json 内容并在签名活动中进行签名。
对工件或元数据的所有更改都需要 Sigstore 密钥持有者的加密签名。当前的 密钥持有者、签名要求和签名时间表记录在 已发布的仓库中
| 密钥持有者 | 任期 |
|---|---|
| Lance Ball | 2025 年 7 月 - |
| Joshua Lock | 2022 年 7 月 - |
| Bob Callaway | 2021 年 6 月 - |
| Marina Moore | 2021 年 6 月 - |
| Santiago Torres-Arias | 2021 年 6 月 - |
| 荣誉密钥持有者 | 任期 |
|---|---|
| Luke Hinds | 2021 年 6 月 - 2022 年 7 月 |
| Dan Lorenc | 2021 年 6 月 - 2025 年 7 月 |
TUF 仓库通过两种方式进行修改:
签名活动是由 root-signing 创建和管理的拉取请求,密钥持有者在其中对提议的更改进行签名。 签名活动出于多种原因发生:
在所有情况下,触发创建签名活动 PR 的都是对 "sign/*" 分支的推送(由 维护者或工作流发起)。
有一个单独的 root-signing-staging 仓库: 任何非平凡的更改(对元数据或工件的更改)都应在 root-signing-staging 中进行测试,然后 再引入到 root-signing 签名活动中。
在线签名发生在两种情况下:
实际上,由于在线签名过期,在线签名至少每三天发生一次。
在线签名会导致在 https://sigstore.github.io/root-signing/ 进行"预生产"部署。 这是一个功能完整的 TUF 仓库,用于运行通用 TUF 客户端测试和 Sigstore 特定客户端测试(使用 cosign 和其他 sigstore 客户端)。测试成功后 会在 https://tuf-repo-cdn.sigstore.dev/ 进行生产部署。
root-signing 中的重要工作流包括:
create-signing-events 在签名临近过期时为签名事件创建分支。
按计划运行signing-event 创建并管理签名事件的拉取请求。在推送 "sign/*" 分支时运行online-sign 提交并合并在线签名,同时派发 publish。在推送 "main" 时运行(但可随时手动派发)publish 将测试仓库发布到 GitHub Pages,运行客户端测试,最后发布仓库。由 online-sign 派发时运行特别感谢 Dan Lorenc、Trishank Kuppusamy、Marina Moore、Santiago Torres-Arias,以及整个 SigStore 社区!
签名仪式的录像可在此处获取。