Gentoo Archives: gentoo-dev

From: Alec Warner <antarus@g.o>
To: Gentoo Dev <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] Trustless Infrastructure
Date: Mon, 02 Jul 2018 18:24:00
Message-Id: CAAr7Pr-xHWrBZzMxBfftx9AvN7dE892RNtKZsfjMWFAm5DdPGQ@mail.gmail.com
In Reply to: Re: [gentoo-dev] Trustless Infrastructure by "Jason A. Donenfeld"
1 On Mon, Jul 2, 2018 at 1:50 PM, Jason A. Donenfeld <zx2c4@g.o> wrote:
2
3 > On Mon, Jul 2, 2018 at 7:41 PM Rich Freeman <rich0@g.o> wrote:
4 > > To be fair, this is relying quite a bit on the last dev doing a commit
5 > > to be checking his own tree, though that would certainly be helped if
6 > > repoman/portage/etc were checking git sigs so that the starting tree
7 > > is more likely to be clean. Also, if the last dev's key is
8 > > compromised you're hosed no matter what as they can introduce anything
9 > > to the tree and everybody will trust it.
10 >
11 > Actually, no. By keeping a local keychain of trusted developer keys --
12 > Arch Linux style -- you can just remove developers you don't trust,
13 > and since the .asc files they signed will no longer verify, files from
14 > them will no longer be copied into the real portage tree. It's a nice
15 > way to make the entire process granular, yet still flexible.
16 >
17
18 Mostly re-posting my comments from irc (including typos!)
19
20 18:03 < antarus> zx2c4: my other problem with these scheme is simply a
21 QA / functionality one
22 18:04 < antarus> zx2c4: we currently have tools that operate on the entire repo
23 18:04 < antarus> I'm not convinced we can really make any gaurantees
24 about the subtree
25 18:04 < antarus> e.g. if my commits are not trusted for example; it
26 might result in a tree that can't install any packages
27 18:05 < antarus> Which I mean, from some PoV is great (because antarus
28 is a terrible human)
29 18:05 < antarus> but if at the end of the day you need to trust
30 antarus to use Gentoo; I guess this leads you back to "why am I using
31 gentoo", questoin
32 18:06 < antarus> (its nto a problem in practice because antarus
33 doesn't have commit access to ::gentoo; but as a hypothetical,
34 obviously
35 18:06 < antarus> It also means that support for anyone with this
36 'filtering' is a nightmare
37 18:06 < antarus> because who knows what subset of the tree their keyring filters
38
39 In short I'm looking for a support and QA story here (how do we tell if a
40 compilation failure is real, or just due to an incomplete tree?)
41 We have similar efforts in QA (e.g. continuous integration projects) that
42 verifies the dependency trees and those too require a consistent repo
43 snapshot of the tree.
44
45 We might reduce the complexity here by saying things like:
46
47 "We have N trust levels"
48
49 0) We believe this person is using state of the art processes.
50 ...) Some other level descriptor.
51 N) This persons security stance is unknown.
52
53 Then we can do stuff like run CI against each level (because we can compute
54 the tree users will see on every commit) and it clarifies the support story
55 somewhat.
56
57 -A
58
59
60 >
61 > > The original point zx2c4 is making is reasonably valid. IMO it is
62 > > much cleaner to just verify directly against the git history. If you
63 > > wanted to verify the whole git history via rsync you're going to have
64 > > to extract a lot more metadata from the git repo to reconstruct all of
65 > > that down to the blobs, because otherwise the commit content hashes
66 > > are referring to blobs that are no longer in the rsync tree.
67 >
68 > This kind of git-signature extraction also just sounds difficult and
69 > fiddly to do, even if you do manage to figure out which partial bits
70 > of metadata you need for reconstructing signed hashes. Whereas simply
71 > adding .asc files is a single invocation of GPG -- a pretty
72 > well-understood non fancy procedure.
73 >
74 > > I think a big question here is whether we just need to test the last
75 > > dev's commit for normal user use. If so, then that simplifies things
76 > > a lot, either for rsync or git syncing. If you want to test all the
77 > > prior history then the rsync solution gets more complex if you want to
78 > > leverage git sigs. However, I'd argue that with our current trust
79 > > model the entire history is only as good as the last dev's commit
80 > > anyway. Maybe if devs had a more limited scope of authority that a
81 > > verification tool could take into account you'd get more from looking
82 > > backwards in time (it would reject a commit to openrc by an X11 dev,
83 > > as an example).
84 >
85 > I think you assessment of the situation here is incorrect. It's not
86 > necessary to trust a developer for the entire state of the tree. You
87 > only need to trust (or distrust) a developer for the files he's
88 > changed.
89 >
90 >
91 From a user-story prospective, I'm curious how end users (e.g. people who
92 are not you) are supposed to go about vetting developer keys.
93
94 Is there a story there?
95
96 -A

Replies

Subject Author
Re: [gentoo-dev] Trustless Infrastructure Rich Freeman <rich0@g.o>