aydinmercan / root-signing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This directory contains the programs needed to generate and verify Sigstore root keys and create signed TUF metadata.

TUF Repository Structure

The current published repository metadata lives in the repository subfolder of this GitHub repository. In this repository, you will find the top-level TUF metadata files, delegations, and target files.

  • root.json: This is the current root.json. It is signed by at least 3 out of the 5 current root keyholders. The top-level signing keys endorsed by the root are:
Role TUF Key ID(s) Description
Root See below The offline keyholders.
Targets See below The offline keyholders, the same as the root keyholders to minimize the number of offline keysets.
Snapshot fc61191ba8a516fe386c7d6c97d918e1d241e1589729add09b122725b8c32451 A GCP KMS snapshotting key located at projects/project-rekor/locations/global/keyRings/sigstore-root/cryptoKeys/snapshot
Timestamp b6710623a30c010738e64c5209d367df1c0a18cf90e6ab5292fb01680f83453d A GCP KMS timestamping key located at projects/project-rekor/locations/global/keyRings/sigstore-root/cryptoKeys/timestamp
  • targets.json: This is the list of trusted targets.json endorsed by the offline keyholders. It includes:
Target Description
fulcio_v1.crt.pem This is the Fulcio root certificate used to issue short-lived code signing certs. It is hosted at https://fulcio.sigstore.dev. You can curl the running root CA chain to ensure the first PEM-encoded certificate matches the TUF root using curl -v https://fulcio.sigstore.dev/api/v1/rootCert
fulcio_intermediate_v1.crt.pem This is the Fulcio intermediate certificate used to issue short-lived code signing certs. It is hosted at https://fulcio.sigstore.dev. You can curl the running CA chain to ensure the second PEM-encoded certificate matches the TUF root using curl -v https://fulcio.sigstore.dev/api/v1/rootCert
fulcio.crt.pem This is the Fulcio root certificate used with an older instance of Fulcio. We maintain this target to verify old certificates but is no longer used to sign newly issued certificates.
rekor.pub This is the Rekor public key used to sign entries and the tree head of the transparency log. You can retrieve the public key to ensure it matches with curl -H 'Content-Type: application/x-pem-file' https://rekor.sigstore.dev/api/v1/log/publicKey.
rekor.0.pub This is a dupe of rekor.pub and will be removed in the next root-signing event.
ctfe.pub Certificate Transparency log key that is used for certificates issued by Fulcio and used to verify signed certificate timestamps (SCTs) for inclusion into the log.
artifact.pub Key that signs Sigstore project (Cosign, Rekor, Fulcio) releases.
  • snapshot.json: The snapshot ensures consistency of the metadata files. It has a lifetime of 2 weeks and is re-signed by a GitHub workflow.
  • timestamp.json: The timestamp indicates the freshness of the metadata files. It has a lifetime of 2 weeks and is re-signed by a GitHub workflow.

Root locations

The current root is published on a GCS bucket located at https://storage.googleapis.com/sigstore-tuf-root.

The pre-production root is published on a GCS bucket located at https://storage.googleapis.com/sigstore-preprod-tuf-root.

Sigstore Root Keyholders

Current Keyholders

Keyholder TUF Key ID Yubikey Material Term
Joshua Lock 75e867ab10e121fdef32094af634707f43ddd79c6bab8ad6c5ab9f03f4ea8c90 18158855 July 2022 -
Bob Callaway f505595165a177a41750a8e864ed1719b1edfccd5a426fd2c0ffda33ce7ff209 15938791 June 2021 -
Dan Lorenc 2f64fb5eac0cf94dd39bb45308b98920055e9a0d8e012a7220787834c60aef97 13078778 June 2021 -
Marina Moore eaf22372f417dd618a46f6c627dbc276e9fd30a004fc94f9be946e73f8bd090b 14470876 June 2021 -
Santiago Torres-Arias f40f32044071a9365505da3d1e3be6561f6f22d0e60cf51df783999f6c3429cb 15938765 June 2021 -

Emeritus Keyholders

Keyholder TUF Key ID Yubikey Material Term
Luke Hinds bdde902f5ec668179ff5ca0dabf7657109287d690bf97e230c21d65f99155c62 14454335 June 2021 - July 2022

Ceremony Overview

At the end of the ceremony, new repository metadata will be written to a ceremony/YYYY-MM-DD/repository directory.

The ceremony will be completed in five rounds:

image

  • Round 1: Add Key
  • Round 1.5: Initialize TUF metadata
  • Round 2: Sign Root & Targets
  • Round 3: Sign Delegations
  • Round 4: Sign Snapshot & Timestamp
  • Round 5: Publish final repository.

Ceremony Instructions

Before starting the root key ceremony, the community should:

  • Designate the 5 root keyholders
  • Elect one participant (not necessarily a keyholder) as the conductor
  • Identify the targets to sign and update the targets/ directory (these may include Fulcio's CA certificate, the rekor transparency log key, the CTFE key, and SigStore's artifact signing key)
  • Identify the online keys for snapshot and timestamp roles. The key references should be updated in scripts/step-1.5.sh.

If you are a keyholder or ceremony conductor, follow instructions KEYHOLDER.md.

If you are a verifier, follow instructions at VERIFIER.md.

Acknowledgements

Special thanks to Dan Lorenc, Trishank Kuppusamy, Marina Moore, Santiago Torres-Arias, and the whole SigStore community!

Emeritus Sigstore Root Keyholders

  • None yet!

Initial Root Signing Ceremony

A recording of the signing ceremony is available here.

About


Languages

Language:Go 90.0%Language:Shell 10.0%