From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 66282138334 for ; Thu, 31 Jan 2019 13:56:57 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 3DADCE0843; Thu, 31 Jan 2019 13:56:56 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id DC441E081A for ; Thu, 31 Jan 2019 13:56:55 +0000 (UTC) Received: from pomiot (d202-252.icpnet.pl [109.173.202.252]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: mgorny) by smtp.gentoo.org (Postfix) with ESMTPSA id 2CC65335CDB; Thu, 31 Jan 2019 13:56:52 +0000 (UTC) Message-ID: <1548943008.796.1.camel@gentoo.org> Subject: [gentoo-project] pre-GLEP: Gentoo OpenPGP web of trust From: =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?= To: gentoo-project Date: Thu, 31 Jan 2019 14:56:48 +0100 Organization: Gentoo Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-Uv89UDDx6t8do4v129JA" X-Mailer: Evolution 3.26.6 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Project discussion list X-BeenThere: gentoo-project@lists.gentoo.org Reply-To: gentoo-project@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply Mime-Version: 1.0 X-Archives-Salt: 3c207f43-624f-4547-a0dd-af43513bee41 X-Archives-Hash: d05ae93cac6fbac0eea07fc597519382 --=-Uv89UDDx6t8do4v129JA Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, Here's first draft of proposed GLEP for establishing a WoT inside Gentoo. It already incorporates some early feedback, so before you start the usual shooting: making it obligatory wasn't my idea. --- --- GLEP: 9999 Title: Gentoo OpenPGP web of trust Author: Micha=C5=82 G=C3=B3rny Type: Standards Track Status: Draft Version: 1 Created: 2019-01-20 Last-Modified: 2019-01-31 Post-History: 2019-01-31 Content-Type: text/x-rst --- Abstract =3D=3D=3D=3D=3D=3D=3D=3D In this GLEP the current status of establishing an OpenPGP web of trust between Gentoo developers is described, and an argument is made for pushing it forward. Advantages of a strong WoT are considered, including its usefulness for sign-off real name verification. Rules for creating key signatures are established, and an example of signing procedure is provided. Motivation =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D While Gentoo observes the status of OpenPGP web of trust for many years, there never has been a proper push to get all developers covered by it or even formalize the rules of signing one another's keys. Apparently, there are still many Gentoo developers who do not have their ``@gentoo.org`` UID signed by another active developer. Historically there were also cases of developers signing others' UIDs without actually verifying their identity. [#WOT-GRAPH]_ [#WOT-STATS]_ The web of trust is usually considered secondary to Gentoo's internal trust system based on key fingerprints stored in LDAP and distributing via the website. While this system reliably covers all Gentoo developers, it has three major drawbacks: 1. It is entirely customary and therefore requires customized software to use. In other words, it's of limited usefulness to people outside Gentoo or does not work out of the box there. 2. At least in the current form, it is entirely limited to Gentoo developers. As such, it does not facilitate trust between them and the outer world. 3. It relies on a centralized server whose authenticity is in turn proved via PKI. This model is generally considered weak. Even if this trust system is to stay being central to Gentoo's needs, it should be beneficial for Gentoo developers start to improving the OpenPGP web of trust, both for the purpose of improving Gentoo's position in it and for the purpose of enabling better trust coverage between Gentoo developers, users and other people. Furthermore, the recent copyright policy established in GLEP 76 introduces the necessity of verifying real names of developers. Given that the Foundation wishes to avoid requesting document scans or other form of direct verification, the identity verification required for UID signing can also serve the needs of verifying the name for Certificate of Origin sign-off purposes. [#GLEP76]_ Specification =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Signature requirements ---------------------- As a final goal of this GLEP, each Gentoo developer will be required to have at least one signature from another Gentoo developer or from member of one of the partner communities present on their ``@gentoo.org`` UID. Recruits will be required to obtain such a signature on one of their user identifiers containing their real name before becoming Gentoo developers. After obtaining the ``@gentoo.org`` e-mail address, they will be required to add it to their OpenPGP key and obtain a signature on it as well before obtaining commit access (this requires only e-mail exchange with previous signer). Transitional (grandfathering) period will be provided based on two milestones: - newly joining developers will be required to have their key signed prior to joining starting 2019-10-01, - all existing developers will be required to have their key signed starting 2020-07-01. If necessity arises, the Council may defer the milestones and extend the transitional period. Key signing rules ----------------- When signing an OpenPGP key belonging to another person, the following rules need to be respected: 1. Sign only those user identifiers which you have successfully verified. Do not sign all identifiers unless you have previously verified all of them. 2. For the purpose of Gentoo sign-off usage, the key must have an identifier consisting of the real name of a natural person (per GLEP 76) and the respective e-mail address to be used in ``Signed-off-by`` line. In case of Gentoo developers, this e-mail address has to be their ``@gentoo.org`` address. =20 Other user identifiers do not need to strictly follow those rules, and may be skipped for the purpose of Gentoo key signing. However, you should follow the respective rules for verifying those kind of identifiers (e.g. XMPP UIDs should be signed after verifying the working XEP-0373 or similar encryption, keybase.io UIDs should follow appropriate keybase verification). [#XEP-0373]_ [#KEYBASE.IO]_ 3. Before signing a user identifier, make sure to: a. Obtain a fingerprint of the person's primary key (for the purpose of verifying the authenticity of the key you're about to sign). Usually, a printed strip containing ``gpg --list-key`` output is used for this purpose. b. Verify the person's real name (at least for the user identifier used for copyright purposes). This is usually done through verifying an identification document with photograph. It is a good idea to ask for the document type earlier, and read on forgery protections used. In some cases, alternate methods of verifying the identity may be used if they provide equivalent or better level of reliability. This can include e.g. use of national online identification systems or bank transfers. c. Verify that the person has access to the corresponding e-mail address / web resource, e.g. by sending a block of randomly generated data and requesting sending it back, signed using the respective key. 4. Once you signed a single user identifier of a particular person, you can sign new user identifiers by just verifying the e-mail address without repeating identity verification (provided the new UIDs share the same real name). 5. If you have reasons to believe that the particular person has lost access to the respective e-mail address (e.g. due to retirement), that the real name is no longer valid or the user identifier became invalid for any other reason, you should revoke your previous signature on it. Key signing partners -------------------- In order to improve key signing accessibility to developers, Gentoo will accept signatures made by members of partner communities. The list of partner communities will be maintained in Gentoo Wiki [TODO]. New communities will be added to the list only if they have compatible key signing rules and they agree to it. Example key signing process (informative) ----------------------------------------- Let's consider that Alice is planning to meet Bob and sign his OpenPGP key. In this section, we will only consider the process of signing Bob's key from Alice's perspective. Usually, at the same time Bob would sign Alice's key =E2=80=94 with an equivalent process. Bob has printed the output of ``gpg --list-keys`` for his key, and gives it to Alice. It contains the following text:: pub rsa2048 2019-01-23 [SC] [expires: 2021-01-22] 6CDE875E9CCF01D6E5691C9561FB7991B3D45B3C uid [ultimate] Robert Someone uid [ultimate] Robert Someone sub rsa2048 2019-01-23 [E] [expires: 2021-01-22] Alice verifies the Bob's identity. He gives her his ID card, stating:: Given name: Robert Family name: Someone Ideally, Alice would have known what kind of document to expected and would have read up on verifying it. After verifying that the document looks legitimate, and the photograph reasonably matches Bob, she has confirmed Bob's real name. Afterwards, she prepares two chunks of random data, e.g. by doing:: dd if=3D/dev/urandom bs=3D1k count=3D1 | base64 She sends the first of them to ``bob@example.com``, and the second one to ``bob2@example.com``. Bob replies by quoting the received chunk, and signing his mail using his OpenPGP key. Once Alice receives the reply, she verifies the content and the fingerprint of primary key corresponding to the signature. If they match, she has confirmed Bob's e-mail addresses. At this point, she can sign both of Bob's UIDs. Rationale =3D=3D=3D=3D=3D=3D=3D=3D=3D Milestones ---------- The transitional period is provided so that developers currently missing user signatures are given time to obtain them. Initially, the period is set to roughly one and half year but can be extended if the adoption is problematic. Additionally, a half as long transitional period is provided for new developers. This is meant to avoid blocking recruitment while the key signing network is still being built. Rules ----- The rules aim to reiterate the common web of trust practices. Firstly, they emphasize the fact that signatures are done per user identifier and not per key, and therefore each identifier signed needs to be verified. Appropriately, you don't have to sign all the user identifiers immediately or at all. The policy is focused around standard user identifiers, consisting of a real name and an e-mail address. In context of those, it requires at least a single identifier that actually has a real name for GLEP 67 purposes. It also indicates that there can be other kinds of user identifiers that may require different verification rules. The actual verification of each user identifier consists of confirming three relevant parts: primary key fingerprint, real name and e-mail address (or their equivalents in other kinds of user identifiers). The primary key fingerprint is used to obtain the correct key to sign, and to prevent a malicious third party from providing you with a forged key. Real name and e-mail verification is used to confirm the authenticity of each user identifier being signed. Use of random data in e-mail makes it possible to clearly confirm that the same person is both in possession of the e-mail address and the private keys. Once an identity is verified once, there is no reason to verify it again to sign further user identifiers using the same name. This is helpful e.g. when a person obtains new e-mail addresses, and wishes to get them signed. In that case, new signatures can be added after verifying the e-mail address, and confirming match with the prior verified name. Finally, since user identifier signatures are normally non-expiring and therefore indicate perpetual trust, it is reasonable to revoke them when the identifiers stop being valid. Partner communities ------------------- Both to improve global web of trust coverage, and to avoid requiring developers to travel abroad to meet other Gentoo developers, the policy accounts for establishing partnership with other communities using OpenPGP. Those partnerships will increase the chances that Gentoo developers and recruits will be able to obtain a valid signature nearer to their locality. In order to maintain a reasonable quality of signatures, only communities respecting similar rules will be accepted (e.g. verifying identities of developers). Additionally, the communities will be contacted first to avoid adding them against their will. Web of trust in other open source projects ------------------------------------------ Debian requires all developers to obtain a signature from at least two existing developers before joining. They also explicitly note the necessity of verifying identity. In case it's really impossible to meet another developer, the Front Desk (equivalent of Recruiters) may offer an alternative way of identification. [#DEBIAN-IDENTIFICATION]_ NetBSD requires all applicants to sign the application with a key that is already signed by at least one NetBSD developer. [#NETBSD-PGP]_ Backwards Compatibility =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Gentoo does not use any particular web of trust policy at the moment. Not all of existing signatures conform to the new policy. Therefore, approving it is going to require, in some cases: a. replacing non-conformant user identifiers, b. revoking non-conformant signatures. Naturally, those actions can only be carried off by cooperating key owners. The policy specifies transitional periods for developers whose keys are not signed by anyone in the community yet. Reference Implementation =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D n/a References =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D .. [#WOT-GRAPH] Gentoo Dev Web of Trust (WoT) (https://qa-reports.gentoo.org/output/wot-graph.svg) .. [#WOT-STATS] WoT Node Stats (https://qa-reports.gentoo.org/output/wot-stats.html) .. [#GLEP76] GLEP 76: Copyright Policy (https://www.gentoo.org/glep/glep-0076.html) .. [#XEP-0373] XEP-0373: OpenPGP for XMPP (https://xmpp.org/extensions/xep-0373.html) .. [#KEYBASE.IO] Keybase (https://keybase.io/) .. [#DEBIAN-IDENTIFICATION] Debian -- Step 2: Identification (https://www.debian.org/devel/join/nm-step2.en.html) .. [#NETBSD-PGP] PGP Key Management Guide for NetBSD developers (https://www.netbsd.org/developers/pgp.html) Copyright =3D=3D=3D=3D=3D=3D=3D=3D=3D This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/. --=20 Best regards, Micha=C5=82 G=C3=B3rny --=-Uv89UDDx6t8do4v129JA Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iQKTBAABCgB9FiEEXr8g+Zb7PCLMb8pAur8dX/jIEQoFAlxS/qFfFIAAAAAALgAo aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDVF QkYyMEY5OTZGQjNDMjJDQzZGQ0E0MEJBQkYxRDVGRjhDODExMEEACgkQur8dX/jI EQrJ5g//YB7DiBKYb8is4Cjbq4ti6Eopgl7YVDPcq0bAx5UY7bEtTFtdV0/cv0ZI +b8ty1Cwo0ThhQDImwd79Q1X4Er2sUUxIWzhlysMsOfR89aKNu/w5hf/j7sVbb+6 8139l5Wmd9wjd/F1mxHmWQQa0ivf8XdNtz3F8yflzywUsv4Hem5+vZpPYA8e3vtM WFvZRBLCo/j1sLzRQkkB0q6ao4IGb9uZW8ulVXZoaECqd0OStG/VYYMUFlRLWkj9 rJoo4H3gnIh4q1z8IQzcAY4j3jYhGLi8bibI8QDN0EwTBE617mugpaoU3yNhyN3c WjSRycivzPCpdEUdBtSqU77xIjBw5trkd5S14IIAk/lZHhRz26YJCKdRT3j8D8Rv 9zSXhi0kUu30RgO6Lf/XwtX/CSZ/bbAG8p5vgoolbd6j4mtrk5UPQwr8Mdume4C2 gr6PeQ0LSGLQVWuGJ/UFzQ1ISANO5IZ2qkDPNKiw8pTOs77GQqHlaIB7J9jk6IBW KsOo6Vf3JjanrFTo1Aon+qsbfT2aJRZj680cn0NL7EGOH6Z70U/H+HihtsVoPrv8 WLgWlFLJrXZRbXAtvavw6+5qbRyesvvso4hDVouZcg9U3FlGQC8ztUQgEpWfjy6/ 70CgqvKt4s/8kUjmpZcmOVdD+JgkLXq3URIp95crVbVfKmLuIKA= =cX6A -----END PGP SIGNATURE----- --=-Uv89UDDx6t8do4v129JA--