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
tl;dr - Sigstore TUF metadata has evolved, but Cosign and Scaffolding are lagging behind. We need to start ingesting the new format so we can fully deprecate the old format.
For some context, a history of Sigstore TUF targets:
Originally, TUF targets had to match expected file names, like "fulcio.crt.pem" or "ctfe.pub". You can see examples of this for Cosign. This was a problem for a lot of reasons: What happens when we need to rotate the key or cert? What happens if I want to support both a public and private deployment?
But this was not standardized across clients. No other Sigstore client supports custom metadata. And even within the Go clients, it's inconsistent. In Cosign, we ignore the URI, whereas in Scaffolding, we generate metadata with the URI
To standardize across clients, we created a Sigstore TUF client specification, and defined a spec for a trust root. Each target in a trust root would include its URI, its validity period, and any additional metadata. This also let us define additional target services, like timestamp authorities, and can easily be extended since the metadata is versioned.
Note that Cosign used to be the only Sigstore client, but now we've got Sigstore clients, and now also TUF clients, in a bunch of languages. Each of these newer clients has carefully followed the spec. There is a rewrite of the Go TUF client which aims to fix any spec deviations and API issues. We now have a Go Sigstore TUF client that uses the new API that has support for the trusted root metadata - https://github.com/sigstore/sigstore-go/tree/main/pkg/tuf.
Also note that all other clients besides Cosign (namely sigstore-python, -js, and -java, and -rs soon) are reading the trusted root file already.
So what do we need to do to get Golang Sigstore repos, namely Cosign and Scaffolding, up to date?
Update Cosign to use the new Sigstore TUF client, which requires a trusted root target
Once we stop using the old TUF client, we will stop supporting private deployments without the trusted root target. In the short term, we could have Cosign use both TUF clients, preferring the newer one when the trusted root target is available.
Update Scaffolding to generate the trusted root file.
I don't know if any changes are needed in the TUF helm chart too. Probably not? It depends on what is ingesting the trusted root file and outputting the per-service target files.
Update the public TUF repo and Scaffolding to no longer distribute the individual targets, which will require the updated Cosign. This will happen after a deprecation period.
Description
Copied from https://sigstore.slack.com/archives/C049ALX6Q83/p1709072587850229
tl;dr - Sigstore TUF metadata has evolved, but Cosign and Scaffolding are lagging behind. We need to start ingesting the new format so we can fully deprecate the old format.
For some context, a history of Sigstore TUF targets:
Note that Cosign used to be the only Sigstore client, but now we've got Sigstore clients, and now also TUF clients, in a bunch of languages. Each of these newer clients has carefully followed the spec. There is a rewrite of the Go TUF client which aims to fix any spec deviations and API issues. We now have a Go Sigstore TUF client that uses the new API that has support for the trusted root metadata - https://github.com/sigstore/sigstore-go/tree/main/pkg/tuf.
Also note that all other clients besides Cosign (namely sigstore-python, -js, and -java, and -rs soon) are reading the trusted root file already.
So what do we need to do to get Golang Sigstore repos, namely Cosign and Scaffolding, up to date?
cc @sabre1041 @lkatalin
The text was updated successfully, but these errors were encountered: