Gentoo Archives: gentoo-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] [RFC] GLEP 74: Full-tree verification using Manifest files
Date: Sun, 29 Oct 2017 18:47:51
Message-Id: 1509302861.14897.15.camel@gentoo.org
In Reply to: Re: [gentoo-dev] [RFC] GLEP 74: Full-tree verification using Manifest files by "Robin H. Johnson"
1 W dniu sob, 28.10.2017 o godzinie 18∶44 +0000, użytkownik Robin H.
2 Johnson napisał:
3 > On Sat, Oct 28, 2017 at 01:50:46PM +0200, Michał Górny wrote:
4 > > > A SVN or Git repo might also have dot-named directories.
5 > >
6 > > I like the implicit idea better as it is more consistent with normal
7 > > tool behavior, like 'ls' not listing the files. Dotfiles can be created
8 > > by many random tools or even the filesystem (especially in some cases
9 > > of overlay filesystems).
10 > >
11 > > That said, the case of 'lost+found' just occurred to me. I suppose this
12 > > one we will want to always IGNORE.
13 >
14 > Thought: make the package manager responsible for their own ignore list
15 > in addition to the IGNORE values; and by default it can contain a
16 > partial overlap with the IGNORE manifest entries.
17 > **/.git
18 > /lost+found # ignore at the top-level only
19 > /distfiles # ignore at the top-level only
20 > /packages # ignore at the top-level only
21 > /local # ignore at the top-level only
22 >
23 > If users need other values, it's a package-manager config knob.
24
25 We don't want pre-EAPI times where things will fail out of the box
26 unless the user choose the one tool that got the whole list right
27 and/or configure it to account for default list.
28
29 I don't mind package manager providing the ability to ignore additional
30 entries but the spec should work out of the box too.
31
32 >
33 > > Let's try:
34 > >
35 > > > 2. Start at the top-level Manifest file. Verify its OpenPGP signature.
36 > > > Optionally verify the ``TIMESTAMP`` entry if present.
37 > > > If the timestamp is significantly out of date compared to the local
38 > > > clock or a trusted source, halt or require manual intervention
39 > > > from the user. Remove the top-level Manifest from the *present* set.
40 > >
41 > > Maybe it would look better if I split it into sub-points.
42 >
43 > Yes, put 'Verifying TIMESTAMP' into a new section as you added below,
44 > including the out-of-date part there; don't detail how to verify it in
45 > this section.
46
47 I will try to do this today.
48
49 > > > GLEP61, for the transition period, required compressed & uncompressed Manifests
50 > > > in the same directory to have identical content. Include mention of that here.
51 > >
52 > > Can do. But I'll do it in 'Backwards compatibility' section:
53 > > > - if the Manifest files inside the package directory are compressed,
54 > > > a uncompressed file of identical content must coexist.
55 > > > Saying that either can be used is a potential issue.
56 > >
57 > > Why? It also says that they must be identical, so it's of no difference
58 > > to the implementation which one is used.
59 >
60 > It's safe if the identical requirement is there, and potentially unsafe otherwise.
61
62 That's why they're both put in a *single sentence*?
63
64 > > > > Timestamp field
65 > > >
66 > > > A malicious third-party may use the principles of exclusion and replay
67 > > > to deny an update to clients, while at the same time recording
68 > > > the identity of clients to attack. The timestamp field can be used
69 > > > to detect that.
70 > > >
71 > > > In order to provide a more complete protection, the Gentoo
72 > > > Infrastructure should provide an ability to obtain the timestamps
73 > > > of all Manifests from a recent timeframe over a secure channel
74 > > > for comparison.
75 > > >
76 > > > Strictly speaking, this is already provided by the various
77 > > > ``metadata/timestamp.*`` files provided already by Gentoo which are also
78 > > > covered by the Manifest. However, including the value in the Manifest
79 > > > itself has a little cost and provides the ability to perform
80 > > > the verification stand-alone.
81 >
82 > Just add in the sentence re trusted source from before, otherwise good.
83 > The rest of this thread devolved into specifics about implementing the
84 > validation; which aren't relevant to this GLEP (yes, telling the package
85 > manager that it's a known old tree, ignore the age only, is a valid use
86 > case).
87
88 Ok.
89
90 > > > Could we please note here, for the transitional period, that the
91 > > > file equivalence rule is applicable?
92 > > > During the transitional, the package Manifests may contain two entries for a
93 > > > given file: (DATA, EBUILD) or (DATA, AUX). The MISC type remains the
94 > > > same.
95 > >
96 > > Equivalence rule is applicable always. However, there's no point
97 > > in duplicating the entry for the same file as that's only going
98 > > to increase space use.
99 >
100 > This means that new verification tools (beyond Gemato) need to handle
101 > the legacy types for the moment, and can't just skip them (eg if both
102 > entries existed).
103
104 Which is the easier way forward. Otherwise, we end up having a lot of
105 duplication during the transition period (which would amount to 2 years
106 at the very least, and probably a lot more).
107
108 >
109 > > > > - the Manifest files inside the package directory can be signed
110 > > > > to provide authenticity verification.
111 > > >
112 > > > Why do we need to specify this in backwards compat, it's still permitted above.
113 > >
114 > > But it makes no sense when top-level Manifest is signed. This points out
115 > > that for tools not supporting full-tree verification smaller signatures
116 > > need to be used (skipping the fact that Portage did not ever implement
117 > > it).
118 >
119 > The Manifests might not be signed by the same entity.
120 > /metadata/glsa/Manifest might be signed by the security team,
121 > /sec-policy/Manifest might be signed by SELinux team,
122 > /Manifest should STILL be signed by Infra/tree-generation-process.
123
124 I honestly doubt this will ever happen, and even if it does, it isn't
125 really relevant to the spec at hand. My point was: if someone signs
126 the whole repository, he normally will consider it pointless to sign
127 individual package Manifests. This explains why he might consider it.
128
129 --
130 Best regards,
131 Michał Górny

Replies

Subject Author
Re: [gentoo-dev] [RFC] GLEP 74: Full-tree verification using Manifest files "Robin H. Johnson" <robbat2@g.o>