You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Even though Rekor looks like a single log, it's backed by multiple trees, so that we can periodically shard the log to prevent indefinite growth. When verifying inclusion proofs, you use a tree-specific index for example. When verifying checkpoints, you use the tree size, not the total log size.
Note the first line, rekor.sigstore.dev - 2605736670972794746, is the unique identifier for the tree. It appends the tree ID 2605736670972794746 to make the checkpoint unique.
Each signature line should start with the identifier for either the log or the witness that signs it. In this case, it's rekor.sigstore.dev, which is only the hostname, not the log origin. The first signature's identifier should match the origin string.
I'm surprised this was never noticed actually, because the log is being monitored by the omniwitness project. I guess the signature origin was never compared to the checkpoint origin.
Proposal
Change the identifier on the signature line to match the origin string.
Clients
I think we're good to make this change without any impact to clients. Looking over each client:
While out of scope for this issue, I wanted to mention that the next time we shard, we will plan to change the origin string to be more URL like as noted in #1450. Clients should not make any assumptions on the format of the string. I don't see any assumptions currently, so we're good to go.
The text was updated successfully, but these errors were encountered:
Investigating further, it appears a lot of known logs don't follow this. This might be considered a breaking change from the perspective of the witness. Looking into it...
Given this will be a breaking change to witnesses and there is nothing mandating a matched origin and signature identifier, we won't move forward with making any changes for the existing shard. We'll make this change during the next sharding.
Context
Even though Rekor looks like a single log, it's backed by multiple trees, so that we can periodically shard the log to prevent indefinite growth. When verifying inclusion proofs, you use a tree-specific index for example. When verifying checkpoints, you use the tree size, not the total log size.
Problem
Here's the current checkpoint:
Note the first line,
rekor.sigstore.dev - 2605736670972794746
, is the unique identifier for the tree. It appends the tree ID2605736670972794746
to make the checkpoint unique.Each signature line should start with the identifier for either the log or the witness that signs it. In this case, it's
rekor.sigstore.dev
, which is only the hostname, not the log origin. The first signature's identifier should match the origin string.I'm surprised this was never noticed actually, because the log is being monitored by the omniwitness project. I guess the signature origin was never compared to the checkpoint origin.
Proposal
Change the identifier on the signature line to match the origin string.
Clients
I think we're good to make this change without any impact to clients. Looking over each client:
name
is unusedname
is also unusedname
in https://github.com/sigstore/rekor/blob/main/pkg/util/signed_note.go#L173 but also do nothing with itWhile out of scope for this issue, I wanted to mention that the next time we shard, we will plan to change the origin string to be more URL like as noted in #1450. Clients should not make any assumptions on the format of the string. I don't see any assumptions currently, so we're good to go.
The text was updated successfully, but these errors were encountered: