Closed nmiyake closed 1 year ago
While this is indeed undocumented, I wonder how we should tackle this now that ITE-5 has been accepted. @SantiagoTorres is it time to move the signature spec definition here out, or at least mark as legacy? We should probably take up GPG-specific fields in the signature in the DSSE issue tracker...
@adityasaky thanks for the information on ITE-5. Given that it has been accepted, are there any specific goals/timelines for implementation (or even for updating the actual language of the spec)? I'm looking to set up in-toto in an ecosystem that uses multiple different languages, and the simplifications that would come from using the DSSE format do sound appealing so this is of interest to me.
ecosystem that uses multiple different languages
Will you be using existing in-toto implementations, or do you plan to write your own?
So, there are DSSE implementations / developments in a few different places.
There's a library in Go maintained by the in-toto/TUF teams: https://github.com/secure-systems-lab/go-securesystemslib. The plan is for in-toto-golang to use this, and I just opened a ticket to track this: https://github.com/in-toto/in-toto-golang/issues/148.
in-toto-java is getting a significant overhaul, and this again includes DSSE support: https://github.com/in-toto/in-toto-java/pull/24.
For in-toto-python (reference implementation which has hit v1.0), the idea is for DSSE support to live in the current crypto provider, and there's an issue here: https://github.com/secure-systems-lab/securesystemslib/issues/370. There's a Python implementation in the DSSE specification itself (https://github.com/secure-systems-lab/dsse/tree/master/implementation) that securesystemslib can borrow from. After this support is present, we can likely begin by adding it as an option in the Python implementation. The switch to DSSE by default in the Python implementation in particular would necessitate bumping the major version as it follows SemVer. The timeline for this will be controlled via the in-toto roadmap.
I have left out the rust implementation for now, but we haven't had a chance to approach it there yet. I can open a ticket to track it there as well...
Thanks, that extra context is extremely helpful!
I'd like to leverage the existing in-toto implementations as much as possible, but am also making local modifications/writing my own as needed. I may be able to help with contributing to the existing implementations if things line up properly -- will engage in the appropriate issues.
Is there a timeline/plan for updating the spec to incorporate ITE-5? From a practical perspective I think there are a few interactions there -- for example, in DSSE it's made clear that the key ID is optional, but not sure if the in-toto spec side will be opinionated on this.
Noting #56 as well.
Both of these basically have to do with trying to determine the bounds between what is formally described in the spec versus the behavior in the reference implementation (and is relevant in us trying to determine what to support as we build out our deployment/implementation).
With #69, we're removing the signature wrapper altogether from the spec. That said, I'm still for adding some information about other_headers
to https://github.com/in-toto/ITE/blob/master/ITE/5/README.adoc#appendix where the legacy signature wrapper is now described.
I'm going to close this issue now in favour of opening a similar issue against ITE-5. The signature wrapper isn't in this spec anymore. Thanks, @nmiyake!
The spec indicates that signed files should have the format:
However, when I use the reference implementation to sign a link file using a GPG key, the signature object also contains an "other_headers" field:
Verification fails if this field is removed, so it is clearly important/required in some scenarios, but the spec does not provide any details on this. It also doesn't indicate that a signature object can have other arbitrary/opaque fields.
It would be helpful if the spec could be updated/fixed to properly explain this.