Keyless CI signing (Mode 4)
Multiple maintainers use their OIDC identity (GitHub, Google, Okta) to jointly sign each release. No long-lived signing keys to lose, leak, or rotate.
How it works
- Each maintainer authenticates via OIDC at signing time.
- Coordinator runs ephemeral DKG → joint ephemeral public key.
- Fulcio CA issues short-lived cert binding OIDC identities.
- T-of-N maintainers threshold-sign the release.
- Cert + signature anchored to log.confium.org.
- All ephemeral keys destroyed.
The verifier’s trust decision: “this release was signed by a 3-of-5 quorum of known maintainers, recorded in the transparency log.”
Quickstart
kg = Confium::TC::Cmp20.keygen(3, 3) # ephemeral 3-of-3
sig = Confium::TC::Cmp20.sign(kg["shares"], 3, release_artifact)
# Fulcio cert + transparency log anchor produced alongside.
# All ephemeral keys destroyed after ceremony.
See the full runnable example at
examples/keyless_ci_signing.rb.