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 88F06138334 for ; Tue, 2 Apr 2019 13:43:08 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 92078E0B89; Tue, 2 Apr 2019 13:43:07 +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 5465EE0B89 for ; Tue, 2 Apr 2019 13:43:07 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id A7D69335C31 for ; Tue, 2 Apr 2019 13:43:05 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id A15CD503 for ; Tue, 2 Apr 2019 13:43:03 +0000 (UTC) From: "Michał Górny" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Michał Górny" Message-ID: <1554212575.9f4c0cee7c22a4af2d1b46309d375223ce729a6f.mgorny@gentoo> Subject: [gentoo-commits] data/glep:master commit in: / X-VCS-Repository: data/glep X-VCS-Files: glep-0080.rst X-VCS-Directories: / X-VCS-Committer: mgorny X-VCS-Committer-Name: Michał Górny X-VCS-Revision: 9f4c0cee7c22a4af2d1b46309d375223ce729a6f X-VCS-Branch: master Date: Tue, 2 Apr 2019 13:43:03 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 636448fa-38c7-4908-ab28-7de246a8bf18 X-Archives-Hash: faf38d18d74d260479c55e753c0106fc commit: 9f4c0cee7c22a4af2d1b46309d375223ce729a6f Author: Michał Górny gentoo org> AuthorDate: Mon Mar 4 18:57:37 2019 +0000 Commit: Michał Górny gentoo org> CommitDate: Tue Apr 2 13:42:55 2019 +0000 URL: https://gitweb.gentoo.org/data/glep.git/commit/?id=9f4c0cee glep-0080: Identity verification via OpenPGP WoT Bug: https://bugs.gentoo.org/682294 Signed-off-by: Michał Górny gentoo.org> glep-0080.rst | 291 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 291 insertions(+) diff --git a/glep-0080.rst b/glep-0080.rst new file mode 100644 index 0000000..8f492aa --- /dev/null +++ b/glep-0080.rst @@ -0,0 +1,291 @@ +--- +GLEP: 80 +Title: Identity verification via OpenPGP WoT +Author: Michał Górny +Type: Standards Track +Status: Draft +Version: 1 +Created: 2019-03-04 +Last-Modified: 2019-04-02 +Post-History: 2019-03-04 +Content-Type: text/x-rst +Requires: +Replaces: +--- + +Abstract +======== +This GLEP proposes establishing a non-obligatory, distributed identity +verification procedure that is compatible with OpenPGP web of trust. It +could be used whenever an explicit need for verifying the real name +occurs, enforced on groups of developers with elevated privileges +via a separate policy or serve as guidelines for building web of trust. +Three methods of verifying the identity are proposed: face-to-face, +via webcam or via government-controlled identification services. + + +Motivation +========== +GLEP 76 (Copyright Policy) specifies that all commits made to Gentoo +repositories must include a sign-off with a person's real name. +However, it does not specify any particular method of verifying it. +It is a standing policy that it is sufficient for contributor to +acknowledge the legitimacy of the provided name. [#GLEP76]_ + +At the same time, developers are asked not to accept contributions +if they have justified concerns as to the authenticity of the name +provided. In particular, this could happen if the developer happens +to know the contributor personally, the contributor indicated that he +is using a pseudonym or arbitrarily changed his name under the policy. +In this case, we lack a clear policy allowing the contributor +to reattain trust. + +Furthermore, enforcing higher standards for identity verification may +make sense for groups having elevated privileges or specific legal +responsibility, e.g. the Infrastructure team or Trustees. + +If a centralized identity verification model was to be introduced +in Gentoo, it would probably be necessary to perform most +of the verifications remotely. This would require transferring +sensitive personal data to a single entity which is undesirable. + +On the other hand, a distributed identity verification model is readily +provided by OpenPGP Web of Trust. In this case, verification can be +performed between individual pairs of developers, reducing the amount of +sensitive information at the disposal of a single entity and increasing +the chances of performing the verification face-to-face. + + +Specification +============= +Purpose and scope +----------------- +This specification does not enforce identity verification anywhere. +Instead, it aims to provide clear rules for whenever developers +establish such a process is necessary. Identity verification may be +enforced in specific groups of developers separately, via internal +project policies or Council-approved policies. + +If a identity is verified according to this specification, this fact +should be recorded via signing UIDs matching the verified data +on the person's OpenPGP key. Such signature cryptographically confirms +that the signer has verified that the specific signee's UID provides +legitimate real name and e-mail address of the key owner. Furthermore, +it is recommended that the signer includes the URL of this GLEP +as the certification policy URL (``--cert-policy-url`` in *gpg(1)*), +and appropriately indicates certification level (see +``--default-cert-level`` in *gpg(1)*). + +The certification level of signatures following this specification must +be either 2 or 3, depending on how minutely the signer verified signee's +identification documents. + + +Identity verification +--------------------- +Face-to-face verification +~~~~~~~~~~~~~~~~~~~~~~~~~ +The recommended procedure for identity verification is for the signer +to meet signee face-to-face. The signer must: + +1. Obtain the signee's OpenPGP key fingerprint, the complete public key + data or a stronger digest of it over a tamper-resistant channel + (preferably on paper). The signer must reliably compare this data to + verify the authenticity of the key being signed. + +2. Verify the signee's identity using a government-issued identification + document with a photograph. The verification must include, + to the best of signer's abilities: + + a. Verifying that the counter-forgery features of the verified + document are present and are correct. + + b. Verifying that the signee's face resembles the photograph + on the document. + + c. Verifying that the signee is able to issue a signature similar + to the one on the document (if present). + +3. Verify the signee's e-mail address(es), through sending an e-mail + encrypted using signee's OpenPGP key, containing either randomly + generated data, or an exported signature for the UID in question. + Each mail sent must contain unique data. + +Only once all three factors are positively verified may the particular +UID be signed according to this policy. + + +Remote webcam verification +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Alternatively to face-to-face verification, it is acceptable to perform +the verification using high-resolution real-time video stream. In this +case, the signee should perform all the actions necessary for the signer +to be able to verify the identity document in front of the camera. + + +Verification via government identity services +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Finally, it is acceptable to use one of the identity proof forms that +are considered legally meaningful in a particular country, and guarantee +the signee's identity has been verified by an official. This could +include e.g.: + +- public notaries, + +- government identity services (provided that the signer is able to + obtain a cryptographically secured proof of identity), + +- bank wire transfers. + + +GnuPG command line (informational) +---------------------------------- +In order to create a signature following this specification, +the following command-line arguments can be used:: + + gpg --cert-policy-url 'https://www.gentoo.org/glep/glep-9999.rst' \ + --ask-cert-level --cert-digest-algo SHA512 \ + --edit-key + +Alternatively, if those options should bapply to all certifications +made, they can be included in the configuration file +``~/.gnupg/gpg.conf``:: + + cert-policy-url https://www.gentoo.org/glep/glep-9999.rst + ask-cert-level + cert-digest-algo SHA512 + +.. TODO: update URL when number is assigned + +``cert-policy-url`` specifies the policy to which the certification +complies (as recommended above). ``ask-cert-level`` requests GnuPG +to query certification level interactively when signing every key. +``cert-digest-algo`` enables stronger SHA-2 512-bit digests +on certifications. + + +Rationale +========= +Non-obligatory nature +--------------------- +The previous WoT proposal made signatures obligatory. This has met with +resistance of developers, including claims that there are individuals +within Gentoo who are unable to get their key signed using any of +the proposed methods and outright rejection of real name verification. +[#WOT-JAN2019]_ + +Therefore, this proposal avoids making keysigning obligatory for +everyone. However, it does aim to provide official rule set for +keysigning that can be used by developers at their discretion, or +whenever there is a valid need of verifying contributor's identity. + +The GLEP also makes provisions for enforcing identity verification +separately, as a matter of policy. While it could propose establishing +such a policy for particular projects such as Infra, it makes little +sense to maintain a list of such projects in a GLEP, and update it +whenever it changes. Instead, individual projects can enforce name +verification on their members, or Council can enforce wider policies +if there is an agreement on them. + + +Face-to-face verification rules +------------------------------- +The verification rules follow common keysigning practices. Notably, +they are based on assumption that a single signature confirms +the combination of three elements: the signee's primary key, real name +and an e-mail address. + +Verifying the primary key fingerprint is important to ensure that +the authentic key belonging to the signee is being used. Otherwise, +a malicious third party could create a key with matching UID and signer +could sign it instead of the authentic key. + +Verifying the real name is the specific purpose of this GLEP, as well +as a standard practice for OpenPGP web of trust. The name should be +verified against documents that are expectedly hard to forge, and that +include photograph that could be used to verify the owner. Since +photograph verification is non-trivial and in some cases documents +contain outdated photos, it is supplemented with signature verification +whenever possible. In any case, this part is considered best effort. + +Verifying the e-mail address is necessary since OpenPGP does not provide +any proof of address ownership, and arbitrary user identifiers can be +added to a key. Unique data needs to be used in order to verify each +address separately. The data is encrypted to additionally confirm +that the e-mail address' owner actually has access to the key, +and to avoid accidental mistakes. + +Traditionally, it is considered sufficient to export a signature for +each e-mail address, and send it. Then, the signee can decrypt it, +import and publish the update to his key afterwards without +the necessity of any further action from the signer. Doing this +manually is non-trivial; the caff tool can help. [#CAFF]_ + +Alternatively, a simple encrypted e-mail exchange with random data +can be used instead. Afterwards, the signer signs all confirmed UIDs +and publishes the signature. This method does not require special +tooling and has the additional advantage of verifying that the signee +can send mail from claimed address. + + +Allowing webcam identification +------------------------------ +There are conflicting opinions as to whether remote identity +verification is valid. However, this method can prove helpful whenever +the signee does not live near any developer. + +The use of live, high-resolution stream aims to both reduce the risk of +forgery and copying signee's identification documents. The ability to +move freely is also necessary to provide at least partial verification +of counter-forgery measures. + + +Allowing government identification services +------------------------------------------- +Finally, whenever direct verification is inconvenient, it could be +acceptable to rely on government officials and institutions that are +expected to verify the identity of citizens. The most common case of +this are public notaries who can provide appropriate proofs of identity +for a fee. + +Besides those, if the signer and signee live in the same country, +additional national verification mechanisms may be used as long +as special care is taken to perform an authenticated exchange. + +In some cases, randomly-generated data exchange via wire transfer may be +considered sufficient, provided that the signee's bank is known to +verify identity of its customers. + + +Backwards Compatibility +======================= +The policy is non-obligatory, and therefore does not affect existing +developers. + +Existing developer signatures may be incompatible with the policy. +In order to make policy conformance clear, the GLEP recommends including +appropriate policy URL in signatures. + + +Reference Implementation +======================== +n/a + + +References +========== +.. [#GLEP76] GLEP 76: Copyright Policy + (https://www.gentoo.org/glep/glep-0076.html) + +.. [#WOT-JAN2019] [gentoo-project] pre-GLEP: Gentoo OpenPGP web of trust + (https://archives.gentoo.org/gentoo-project/message/d05ae93cac6fbac0eea07fc597519382) + +.. [#CAFF] caff - Debian Wiki + (https://wiki.debian.org/caff) + + +Copyright +========= +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/.