On Mon, Jul 2, 2018 at 1:50 PM, Jason A. Donenfeld <zx...@gentoo.org> wrote:

> On Mon, Jul 2, 2018 at 7:41 PM Rich Freeman <ri...@gentoo.org> wrote:
> > To be fair, this is relying quite a bit on the last dev doing a commit
> > to be checking his own tree, though that would certainly be helped if
> > repoman/portage/etc were checking git sigs so that the starting tree
> > is more likely to be clean.  Also, if the last dev's key is
> > compromised you're hosed no matter what as they can introduce anything
> > to the tree and everybody will trust it.
>
> Actually, no. By keeping a local keychain of trusted developer keys --
> Arch Linux style -- you can just remove developers you don't trust,
> and since the .asc files they signed will no longer verify, files from
> them will no longer be copied into the real portage tree. It's a nice
> way to make the entire process granular, yet still flexible.
>

Mostly re-posting my comments from irc (including typos!)

18:03 < antarus> zx2c4: my other problem with these scheme is simply a
QA / functionality one
18:04 < antarus> zx2c4: we currently have tools that operate on the entire repo
18:04 < antarus> I'm not convinced we can really make any gaurantees
about the subtree
18:04 < antarus> e.g. if my commits are not trusted for example; it
might result in a tree that can't install any packages
18:05 < antarus> Which I mean, from some PoV is great (because antarus
is a terrible human)
18:05 < antarus> but if at the end of the day you need to trust
antarus to use Gentoo; I guess this leads you back to "why am I using
gentoo", questoin
18:06 < antarus> (its nto a problem in practice because antarus
doesn't have commit access to ::gentoo; but as a hypothetical,
obviously
18:06 < antarus> It also means that support for anyone with this
'filtering' is a nightmare
18:06 < antarus> because who knows what subset of the tree their keyring filters

In short I'm looking for a support and QA story here (how do we tell if a
compilation failure is real, or just due to an incomplete tree?)
We have similar efforts in QA (e.g. continuous integration projects) that
verifies the dependency trees and those too require a consistent repo
snapshot of the tree.

We might reduce the complexity here by saying things like:

"We have N trust levels"

0) We believe this person is using state of the art processes.
...) Some other level descriptor.
N) This persons security stance is unknown.

Then we can do stuff like run CI against each level (because we can compute
the tree users will see on every commit) and it clarifies the support story
somewhat.

-A


>
> > The original point zx2c4 is making is reasonably valid.  IMO it is
> > much cleaner to just verify directly against the git history.  If you
> > wanted to verify the whole git history via rsync you're going to have
> > to extract a lot more metadata from the git repo to reconstruct all of
> > that down to the blobs, because otherwise the commit content hashes
> > are referring to blobs that are no longer in the rsync tree.
>
> This kind of git-signature extraction also just sounds difficult and
> fiddly to do, even if you do manage to figure out which partial bits
> of metadata you need for reconstructing signed hashes. Whereas simply
> adding .asc files is a single invocation of GPG -- a pretty
> well-understood non fancy procedure.
>
> > I think a big question here is whether we just need to test the last
> > dev's commit for normal user use.  If so, then that simplifies things
> > a lot, either for rsync or git syncing.  If you want to test all the
> > prior history then the rsync solution gets more complex if you want to
> > leverage git sigs.  However, I'd argue that with our current trust
> > model the entire history is only as good as the last dev's commit
> > anyway.  Maybe if devs had a more limited scope of authority that a
> > verification tool could take into account you'd get more from looking
> > backwards in time (it would reject a commit to openrc by an X11 dev,
> > as an example).
>
> I think you assessment of the situation here is incorrect. It's not
> necessary to trust a developer for the entire state of the tree. You
> only need to trust (or distrust) a developer for the files he's
> changed.
>
>
>From a user-story prospective, I'm curious how end users (e.g. people who
are not you) are supposed to go about vetting developer keys.

Is there a story there?

-A

Reply via email to