-
Notifications
You must be signed in to change notification settings - Fork 558
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Log verification for expired targets #1273
Comments
The timestamp will be used to find a versioned TUF target metadata. This allows targets to be rotated while still being able to validate old entries that were signed by previous targets. Ref sigstore#1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
Some more thoughts to make the experience of expired target verification along with BYO TUF root:
|
The timestamp will be used to find a versioned TUF target metadata. This allows targets to be rotated while still being able to validate old entries that were signed by previous targets. Ref #1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
A few other things we'll need to consider:
|
This follows sigstore#1294 in adding the TUF timestamp to the annotations layer for attestations, when either uploading to Rekor or signing with a Fulcio cert. Ref sigstore#1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
As I was implementing verification using the TUF timestamp, I ran into an issue. As a reminder, the verification flow is roughly:
The TUF spec no longer requires that the root metadata be included with the snapshot. Recently, go-tuf removed including root.json in the snapshot. This means step (3) is not possible, because there will be no reference to a versioned root. This leaves us a few options:
To summarize, this solution is far simpler. On verification, we will simply load all targets from the target metadata. For the verification of the signature, we will load all Fulcio certs into the root pool. We will have something similar for bundle verification using the Rekor public keys. We'll keep track in custom TUF metadata of which target is active, and use that to inform users when they're verifying a signature using old targets. The main trade-off is that the targets metadata will grow over time. If we want to cap its size, we will need to decide on how long we'll keep old targets around. This can be decided later though, as we aren't frequently rotating targets. This also simplifies the revocation story. To mark a target as revoked, we simply remove it from the set of targets, which is aligned with how TUF expects revocation to occur. @asraa and I do think there's still value in tracking revocation somehow, through a TUF delegation - I have a separate doc discussing this in more detail that I'll circulate shortly. @dlorenc @bobcallaway - Y'all reviewed the original proposal, lemme know if you have any concerns with this other approach. |
This will be used to verify old entries using a set of trusted keys. No changes are needed for Fulcio, since the underlying verification library already accepts multiple trusted roots. Ref sigstore#1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
This will be used to verify old entries using a set of trusted keys. No changes are needed for Fulcio, since the underlying verification library already accepts multiple trusted roots. Ref sigstore#1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
This will be used to verify old entries using a set of trusted keys. No changes are needed for Fulcio, since the underlying verification library already accepts multiple trusted roots. Ref #1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
As described in sigstore#1273, this solution does not work because the TUF root is not included in the snapshot. Removing unused code. Confirmed that verifying images with a timestamp annotation still works. Confimed that signing and verifying works locally too. Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
As described in #1273, this solution does not work because the TUF root is not included in the snapshot. Removing unused code. Confirmed that verifying images with a timestamp annotation still works. Confimed that signing and verifying works locally too. Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
…tore#1396) This will be used to verify old entries using a set of trusted keys. No changes are needed for Fulcio, since the underlying verification library already accepts multiple trusted roots. Ref sigstore#1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
As described in sigstore#1273, this solution does not work because the TUF root is not included in the snapshot. Removing unused code. Confirmed that verifying images with a timestamp annotation still works. Confimed that signing and verifying works locally too. Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
The timestamp will be used to find a versioned TUF target metadata. This allows targets to be rotated while still being able to validate old entries that were signed by previous targets. Ref sigstore#1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
This follows sigstore#1294 in adding the TUF timestamp to the annotations layer for attestations, when either uploading to Rekor or signing with a Fulcio cert. Ref sigstore#1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
…tore#1396) This will be used to verify old entries using a set of trusted keys. No changes are needed for Fulcio, since the underlying verification library already accepts multiple trusted roots. Ref sigstore#1273 Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
As described in sigstore#1273, this solution does not work because the TUF root is not included in the snapshot. Removing unused code. Confirmed that verifying images with a timestamp annotation still works. Confimed that signing and verifying works locally too. Signed-off-by: Hayden Blauzvern <hblauzvern@google.com>
Overview
This is a tracking issue for supporting verification for expired/rotated targets. @asraa and I will be working on this.
Currently, cosign assumes the latest TUF metadata can be used to validate signatures. As the Fulcio CA certificate will expire, we will have to rotate that target at some point. This will cause cosign to not be able to validate the signatures that chain up to the expired CA certificate, since the TUF metadata will contain a different certificate.
We propose bundling a pointer to the metadata used when generating the signature. We will do this by including the snapshot or timestamp JSON in the signature bundle. Cosign will use this to find versioned TUF metadata.
Design doc
Tasks
For cosign:
There are a few tasks for the Sigstore TUF repo.
The text was updated successfully, but these errors were encountered: