1 |
On Sun, 2019-02-24 at 12:04 -0500, Alec Warner wrote: |
2 |
> On Sun, Feb 24, 2019 at 9:14 AM Michał Górny <mgorny@g.o> wrote: |
3 |
> |
4 |
> > --- |
5 |
> > glep-9999.rst | 359 ++++++++++++++++++++++++++++++++++++++++++++++++++ |
6 |
> > 1 file changed, 359 insertions(+) |
7 |
> > create mode 100644 glep-9999.rst |
8 |
> > |
9 |
> > diff --git a/glep-9999.rst b/glep-9999.rst |
10 |
> > new file mode 100644 |
11 |
> > index 0000000..d66398b |
12 |
> > --- /dev/null |
13 |
> > +++ b/glep-9999.rst |
14 |
> > @@ -0,0 +1,359 @@ |
15 |
> > +--- |
16 |
> > +GLEP: 9999 |
17 |
> > +Title: Gentoo OpenPGP Authority Keys |
18 |
> > +Author: Michał Górny <mgorny@g.o> |
19 |
> > +Type: Standards Track |
20 |
> > +Status: Draft |
21 |
> > +Version: 1 |
22 |
> > +Created: 2019-02-24 |
23 |
> > +Last-Modified: 2019-02-24 |
24 |
> > +Post-History: |
25 |
> > +Content-Type: text/x-rst |
26 |
> > +Requires: 63 |
27 |
> > +--- |
28 |
> > + |
29 |
> > +Abstract |
30 |
> > +======== |
31 |
> > +This GLEP proposes using Authority Keys to provide developer key |
32 |
> > +validity proofs that are compatible with web of trust. The signatures |
33 |
> > +on ``@gentoo.org`` UIDs are automatically maintained, and user can |
34 |
> > +follow the current set of valid keys by importing and trusting a single |
35 |
> > +Authority Key. The system operates within standard features of GnuPG |
36 |
> > +and requires only minimal setup from the user. |
37 |
> > + |
38 |
> > + |
39 |
> > +Motivation |
40 |
> > +========== |
41 |
> > +All the recent efforts on improving OpenPGP usage in Gentoo were focused |
42 |
> > +on internal usage and distribution. The existing policies and tooling |
43 |
> > +are sufficient to account for verify specific usage, including commit |
44 |
> > +signing (with both internal and user-oriented verification via custom |
45 |
> > +tools) or release media verification. However, they do not provide |
46 |
> > +for rapid OpenPGP deployment for secure communications usage. |
47 |
> > + |
48 |
> > +The Gentoo webservers distribute both convenient key bundles |
49 |
> > +and individual keys via Web Key Directory. While in both cases |
50 |
> > +the transfer is secured via HTTPS, providing authenticity verification |
51 |
> > +via PKI/DNSSEC, those channels are meant to *distribute* the keys |
52 |
> > +and not provide implicit guarantees on their *validity*. For example, |
53 |
> > +they provide no guarantees that the user identifiers on the keys are |
54 |
> > +legitimate. [#KEY-BUNDLES]_ |
55 |
> > + |
56 |
> > +Internally, Gentoo's LDAP directory serves as the canonical source |
57 |
> > +of information on key validity. It stores a list of key fingerprints |
58 |
> > +for each Gentoo developers, and therefore allows the system to establish |
59 |
> > +which keys are acceptable in context of a specific developer. However, |
60 |
> > +the LDAP directory is not available to the public and therefore is only |
61 |
> > +suitable for internal infrastructure use. [#LDAP-GUIDE]_ |
62 |
> > + |
63 |
> > +The Gentoo website is focused on service keys and not individual |
64 |
> > +developer keys. While it could easily be amended with full fingerprints |
65 |
> > +of all developer keys, the necessity of manually verifying such a large |
66 |
> > +number of keys would be inconvenient to the end user. |
67 |
> > +[#WWW-SIGNATURES]_ |
68 |
> > + |
69 |
> > +The key package provided in the Gentoo repository is also focused |
70 |
> > +on service keys, and has limited value in verifying key validity |
71 |
> > +(currently, it assumes all UIDs on all keys in the keyring are valid). |
72 |
> > +Providing a package with developer keys would both require frequent |
73 |
> > +semi-manual updates, and establishing a more precise validity model. |
74 |
> > +[#KEY-PACKAGE]_ |
75 |
> > + |
76 |
> > +Gentoo-keys project provides so-called seed files that carry enough |
77 |
> > +information to establish key validity, and are authenticated via HTTPS. |
78 |
> > +However, they rely on installing custom software that does not integrate |
79 |
> > +well with regular use of GnuPG e.g. in mail clients, and that is not |
80 |
> > +easily usable in other systems. [#GENTOO-KEYS]_ |
81 |
> > + |
82 |
> > +The Authority Key proposal aims to provide a more standard way of |
83 |
> > +establishing validity of Gentoo developer keys. It builds upon the web |
84 |
> > +of trust model, requiring no special software and minimal setup from end |
85 |
> > +users. |
86 |
> > + |
87 |
> > + |
88 |
> > +Specification |
89 |
> > +============= |
90 |
> > +Purpose and usage |
91 |
> > +----------------- |
92 |
> > +The purpose of the Authority Keys is to provide an automatically issued |
93 |
> > +signatures on Gentoo developer OpenPGP keys, based on the information |
94 |
> > +provided internally in the Gentoo LDAP directory. The service |
95 |
> > +is provided for all active Gentoo developers, from the moment of their |
96 |
> > +recruitment. |
97 |
> > + |
98 |
> > +Whenever a developer account is created, reactivated, renamed or has |
99 |
> > +a new key fingerprint added, a signature is automatically created |
100 |
> > +on the appropriate ``@gentoo.org`` UIDs and pushed to the keyservers. |
101 |
> > +Whenever an old signature expires, a new one is automatically created. |
102 |
> > +Whenever a developer account is disabled, renamed or has a fingerprint |
103 |
> > +removed, the signatures from obsolete UIDs are automatically revoked. |
104 |
> > + |
105 |
> > +The signatures are issued only on the UIDs matching the Gentoo |
106 |
> > +developer's ``@gentoo.org`` mailbox address, on keys whose primary key |
107 |
> > +fingerprints are listed in Gentoo LDAP ``gpgfingerprint`` records. Keys |
108 |
> > +missing such an UID are ignored. **Names on the relevant user |
109 |
> > +identifiers are not verified**. The signatures are issued with |
110 |
> > +an expiration date of 1 year from being issued. |
111 |
> > + |
112 |
> > + |
113 |
> > +L1 and L2 keys |
114 |
> > +-------------- |
115 |
> > +The Authority Keys are issued in two layers, appropriately called L1 |
116 |
> > +and L2. |
117 |
> > + |
118 |
> > +The single L1 Authority Key is used only to (manually) certify the L2 |
119 |
> > +Keys, and is kept securely offline following the Infrastructure policies |
120 |
> > +on protecting primary keys. The fingerprint of this key is published |
121 |
> > +on the Gentoo website and users are requested to sign this key to enable |
122 |
> > +key validity via Authority Keys. |
123 |
> > |
124 |
> |
125 |
> + |
126 |
> > +The L2 Authority Keys are used directly to sign developer keys. Since |
127 |
> > +they are used in an automated service, they are exposed to attacks. |
128 |
> > +They are trust-signed by the L1 key and can be revoked and rotated more |
129 |
> > +frequently than the L1 key. |
130 |
> > + |
131 |
> > +This dual-layer model aims to combine improved security with user |
132 |
> > +convenience. While the individual Gentoo keys are signed by the L2 key, |
133 |
> > +the users sign only the L1 key and the validity is established via chain |
134 |
> > +L1 → L2 → developer key. This makes it possible to replace the L2 key |
135 |
> > +if it ever becomes compromised without requiring the users to |
136 |
> > +reestablish trust. Since the replacement key will be also signed |
137 |
> > +by the L1 key (provided that it was not compromised), the validity |
138 |
> > +of developer keys will remain established. |
139 |
> > + |
140 |
> > + |
141 |
> > +Validating the L1 key |
142 |
> > +--------------------- |
143 |
> > +Establishing the authenticity of the L1 Authority Key is essential |
144 |
> > +to the system. Initially, the users will be able to determine |
145 |
> > +the authenticity via comparing the key fingerprint with the one |
146 |
> > +published on the website. This will shift the authenticity verification |
147 |
> > +to HTTPS (PKI/DNSSEC). |
148 |
> > + |
149 |
> > +However, at the same time users are encouraged to sign the key upon |
150 |
> > +verifying it. This will effectively make it possible to establish key's |
151 |
> > +validity via OpenPGP web of trust. |
152 |
> > |
153 |
> |
154 |
> Is the L1 specific to signing packages, or does it have other duties? |
155 |
|
156 |
"The single L1 Authority Key is used only to (manually) certify the L2 |
157 |
Keys". No more duties. |
158 |
|
159 |
> |
160 |
> |
161 |
> > + |
162 |
> > + |
163 |
> > +Rationale |
164 |
> > +========= |
165 |
> > +Authority Key model vs web of trust |
166 |
> > +----------------------------------- |
167 |
> > +The regular web of trust model relies on individuals verifying |
168 |
> > +the Gentoo developer identity and access to the particular |
169 |
> > +``@gentoo.org`` e-mail address. The particular UID is considered valid |
170 |
> > +if a sufficient number of people trusted by the user in question have |
171 |
> > +confirmed the developer's identity. This specifically relies on being |
172 |
> > +able to establish a chain of trust between the developer and user. |
173 |
> > + |
174 |
> > +At the moment, many of the existing Gentoo developers did not even |
175 |
> > +stablish a chain of trust between one another, not to mention establish |
176 |
> > |
177 |
> |
178 |
> establish |
179 |
|
180 |
Fixed. |
181 |
|
182 |
> +web of trust coverage that would make it feasible for users to reach any |
183 |
> > +specific developer. Efforts towards improving that were rejected |
184 |
> > +by the developers, mostly based on argumentation that many developers |
185 |
> > +find it impossible to meet any other community member for the purpose |
186 |
> > +of identity verification. |
187 |
> > + |
188 |
> > +The Authority Key model, on the other hand, assumes that there is |
189 |
> > +a single trusted authority that verifies Gentoo developers' keys. |
190 |
> > +The user verifies the key representing this authority and trusts it. |
191 |
> > +The validity of keys used by all developers is established via a single |
192 |
> > +point of trust. |
193 |
> > + |
194 |
> > +The procedure of establishing the validity of a specific key does not |
195 |
> > +involve the necessity of meeting anyone or verifying identity. While |
196 |
> > +the validity is exposed in a manner compatible with web of trust, it is |
197 |
> > +verified against LDAP which implicitly proves authenticity of the keys. |
198 |
> > + |
199 |
> > +Therefore, the Authority Key model is much easier to set up. The user |
200 |
> > +merely needs to verify a single key and trust it, while pure WoT would |
201 |
> > +probably require trusting multiple third party identities. It is also |
202 |
> > +more secure as it limits the attack vector to a single key rather than |
203 |
> > +one of potentially large number of keys that need to be trusted by |
204 |
> > +the user. If the user decides to stop trusting ``@gentoo.org`` UIDs, |
205 |
> > +the validity can easily be reverted by disabling the single Authority |
206 |
> > +Key. |
207 |
> > |
208 |
> |
209 |
> Yeah I like the revocation a lot better in this proposal, the previous one |
210 |
> seemed a bit impractical. |
211 |
|
212 |
Revocation is the same as in the original. Maybe worded more verbosely? |
213 |
|
214 |
-- |
215 |
Best regards, |
216 |
Michał Górny |