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 |