-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Description
At the recent clients and TSC meeting, we determined we would like conformant Sigstore client libraries to be able to verify protobuf bundles that were signed with managed keys, in addition to the verification we support today of signing certificates from Fulcio obtained with an OIDC token.
There's a couple of steps needed for this:
-
We need to update the conformance CLI verify protocol to include verifying with a provided public key, instead of a certificate identity and certificate OIDC issuer. We could take inspiration from / learn lessons from https://github.com/sigstore/sigstore-go/tree/main/examples/sigstore-go-verification here. Note that we should continue to accept a trusted root when verifying with a public key, in case the bundle contains transparency log entries or signed timestamps that also need to be verified.
-
Once we agree on and land the update to the conformance CLI verify protocol, we can update https://github.com/sigstore/sigstore-go/blob/main/test/conformance/main.go to support the protocol (we might want to do this in parallel to test out the proposed protocol changes).
-
We should add some conformance tests that use the CLI verify protocol with managed keys, and either protect them with a flag (like
--skip-signing) that's off by default, or includexfailinstructions in the subsequent conformance test release. -
Other clients can then add managed key verification support, and test their implementation with the new conformance tests.
Note that out of scope for these changes are verifying with a public key that's embedded in a X.509 certificate (although we may choose to add that at a later date). The way cosign / sigstore-go handle verifying with a user-managed certificate is to check it against the certificateAuthorities certificate chain in the trusted root that usually points to a Fulcio instance.
Also out of scope is having all client libraries sign with managed keys. There's a lot of complexity here around supporting various cloud HSMs (usually via REST APIs), as well as local HSMs (usually via PCKS #11). Cosign supports these use-cases today, and we encourage Sigstore users who want this functionality to use Cosign.