GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||
GeezerVison is showing github.com — PoC: Release tuf with in-toto attestations and supply chain definition by lukpueh · Pull Request #2000 · theupdateframework/python-tuf Conversation
Member
Please fill in the fields below to submit a pull request. The more information Fixes #529 Description of the changes being introduced by the pull request:
See RELEASE_with_in-toto.md for details. Please verify and check that the pull request fulfills the following
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
Add a script to create two basic in-toto layouts, one for each build target (wheel + sdist) to verify their supply chains independently. See usage description in document header. Signed-off-by: Lukas Puehringer <[email protected]> Use in-toto cli to generate signed attestations for each build target (sdist and wheel) and publish on the GH release page along with the build artifacts. Signed-off-by: Lukas Puehringer <[email protected]> Add supplementatry documentation for RELEASE.md that describes how to create local maintainer attestations for 'tag' and 'build' steps of the release process, and how to verify them together with attestations from the online CD build job against an in-toto supply chain layout. Signed-off-by: Lukas Puehringer <[email protected]>
All reactions
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page.
Member
Author
All reactions
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page.
Member
Author
All reactions
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page.
Member
Author
All reactions
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page.
|
There was an error while loading. Please reload this page.
I'm still ingesting the whole thing so this is just a comment on this specifically: The build system plugin feels like a good idea but I do have a fundamental issue with injecting intoto into the python-tuf build system in general like the example does: we're adding a build dependency (an unversioned one even, although I'm sure that's because it's a PoC) for no benefit to the actual build. I'm not saying the in-toto maintainers are not trustworthy 😛, but I'm not sure that an attestation mechanism should be in the actual build pipeline. I thought I could just use it to document inputs and outputs, without giving the tool the ability to compromise our build system. Is there a real advantage to letting in-toto run the whole build? It seems to me like the build command is just another input to attest -- and in fact in our case it's already attested if cd.yml is part of the source source attestation |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Example attestations seem to be here |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
No real advantage except for easier invocation maybe, and the ability to automatically record "byproducts" such as standard streams in the attestations, which I am not doing at the moment. To record an attestation with in-toto, without having it run the command, you can do: |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Heck, yes! Now I wonder if you could use TUF (e.g., PEP 480 and/or SigStore Trust Delegations) to somehow bootstrap the whole thing (pointing to in-toto metadata inside)... |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
We should combine efforts on this and in-toto/in-toto#444 to get them both over the line, especially with bootstrapping in-toto metadata using TUF. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
I've given this feedback verbally but maybe should do it in writing too: the core requirement for any build integrity improvement is a verification process that can be and is used in the real world. If the verification is not easily usable and and understandable by humans, then the build integrity work may be cool but is in the end academic. This is the reason I've not made a proposal of e.g. sigstore signing yet: I could easily sign but what's the point if verification requires a crypto & certificate specialist? The core idea of a formal way to require CD and maintainer attestations is really cool but still, I would like to see a way to easily verify at least some of this in a practically useful way before we merge... Otherwise it feels like adding a lot of new process (and code to maintain) right now for vague potential value some time in the future. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Can you say more about what you mean by "practically useful"?
When you in-toto verify something, you use a previously validated
root-of-trust to check a (potentially updated) layout file and validate
link metadata based upon the keys contained in this. Assuming your
root-of-trust is valid, the verification process provides you cryptographic
validation that the parties with the specified keys signed link metadata
that attested to only permitted operations.
Also, FYI: this sort of validation is used in the real world now by some
organizations (e.g.,
https://www.datadoghq.com/blog/engineering/secure-publication-of-datadog-agent-integrations-with-tuf-and-in-toto/
).
…On Thu, Jun 2, 2022 at 3:18 PM Jussi Kukkonen ***@***.***> wrote:
I've given this feedback verbally but maybe should do it in writing too:
the core requirement for any build integrity improvement is a *verification
process that can be and is used in the real world*. If the verification
is not easily usable and and understandable by humans, then the build
integrity work may be cool but is in the end academic. This is the reason
I've not made a proposal of e.g. sigstore signing yet: I could easily sign
but what's the point if verification requires a crypto & certificate
specialist?
The core idea of a formal way to require CD *and* maintainer attestations
is really cool but still, I would like to see a way to easily verify at
least some of this in a practically useful way before we merge... Otherwise
it feels like adding a lot of new process (and code to maintain) right now
for vague potential value some time in the future.
—
Reply to this email directly, view it on GitHub
<#2000 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAGROD7J7CKJ5BNN2PVAUVLVNBN25ANCNFSM5VN7XXTQ>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
What I mean is that
If we merge like this, to me it looks like verification still requires a considerable amount of effort for an in-toto specialist, and is very difficult for a random developer. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Good questions, and this is precisely the kind of thing we should at least de facto standardise with, say, PEP 480. Let's actually take something like the Datadog work I did above (which partly inspired the upcoming Scudo, a variant of Uptane with in-toto attestations), and try it with a prototype of PEP 480. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
Hey just now seeing this. Yeah a build hook would work. For example, Project Jupyter & IPython are almost done switching their entire packaging ecosystem to be based on a Hatch build hook plugin. I tried to link to most of the changes here: https://hatch.pypa.io/latest/users/ One thing I added with all of you in mind was the |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
So we can validate and verify in-toto links using layout keys distributed out of band for now 🙂 |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Converted this back to draft to be used as reference for other release signing solutions discussed in #1966, most notably wrt to UX and security properties. python-tuf maintainers currently don't feel confident to merge because of the perceived potential for human error in the setup and the complexity of validating its correctness. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
for reference, we now get a minimal build attestation for free (example is tuf-on-ci but python-tuf will have the same as soon as we do next release): |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
Add in-toto metadata to python-tuf releases
There was an error while loading. Please reload this page.