Re: [openpgp] Overhauling User IDs / Standardizing User Attributes (was: Re: Scoped trust (signatures))

Wiktor Kwapisiewicz <wiktor@metacode.biz> Tue, 26 June 2018 19:13 UTC

Return-Path: <wiktor@metacode.biz>
X-Original-To: openpgp@ietfa.amsl.com
Delivered-To: openpgp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3945113110D for <openpgp@ietfa.amsl.com>; Tue, 26 Jun 2018 12:13:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.99
X-Spam-Level:
X-Spam-Status: No, score=-1.99 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=metacode.biz
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WWryVRfj8HfW for <openpgp@ietfa.amsl.com>; Tue, 26 Jun 2018 12:13:42 -0700 (PDT)
Received: from mail-wr0-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1502B131109 for <openpgp@ietf.org>; Tue, 26 Jun 2018 12:13:42 -0700 (PDT)
Received: by mail-wr0-x241.google.com with SMTP id p1-v6so2729149wrs.9 for <openpgp@ietf.org>; Tue, 26 Jun 2018 12:13:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=metacode.biz; s=2017; h=subject:to:references:from:openpgp:autocrypt:organization :message-id:date:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=Ue1qWgSNBIWNf0wlFDS5XOCNVws155XJ9K8LM+5VBuo=; b=2M1QBzZ7W+pdKGxWfa1Ff6wZxzopVB8OFcs+C5OeNJD4W5FqngNlkTv8h8Ilg2oMKX WYvvcwoyx/m4BnnIhO8XbVMvSao7SLuPnoH1Cbo0juKHer17MTdOn8q3puErV9CsSnqV 1+Sev2grlR6QNCYgwv9phd/rFjlYXLWqWOB3FOAQQEue1mc+bJEnkGNNQbJRpvpuiTZ5 QMDCXOa4pFs+KuZ7+FnPwTqOj63fNllOmSSQg0+xZ8fsIYEY7Lnc5erocIeY5bby17RD 5YYoGuCNX/qWD3jVor89eg7j9VgBcbqeEsub5UPuRLy7tlaLP92sL6V+JN9jWVtxNS2l QpqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:openpgp:autocrypt :organization:message-id:date:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=Ue1qWgSNBIWNf0wlFDS5XOCNVws155XJ9K8LM+5VBuo=; b=W/JC+hQjpAAmv4Ry3V28rkBBXFRzba/TFLA4w3/29wvGawB4r/o5jYl1u/Y2uoUJOF B6/VdgsLaEjmB/GLHRqPYvZZPnmLPKrZgv4VtRsWydjnFrOHrOww1abV8tc8LPr5tPdq o6tmE0zS8Y4Np11k3bjEPWh7pmMHB2bXc2eAWm+OocekZOFFfo3faX+aLWLEisGRdqQ/ 2Qd9V7iS7UuHUF+fjYEekD5GjpyINC/kZIYgNLJoTINVsyATdDamFd6grS+7cHiHrRZ/ BQodhmxceTiZMhxQaSybZvGMIOn5GWLdrndAqQEmIes2Ixvnn9I0jAbiKTbPnXaUPnUD OrlQ==
X-Gm-Message-State: APt69E1gKH5EJ4KdNN2Ti9DJLK2n4JlFhKJZ5F1B0CZ0jt445HsF0bMs OAnYiWhOaqZWU8wQAocbdSLy+8+6av8=
X-Google-Smtp-Source: AAOMgpeYbUOxsLu+2jMI4BpJ8E7iOLCPPLya0uTISECW2nyWum1tlP4YUxP0AhlgUdsBMPwfBVutkQ==
X-Received: by 2002:adf:a18f:: with SMTP id u15-v6mr2502932wru.194.1530040420298; Tue, 26 Jun 2018 12:13:40 -0700 (PDT)
Received: from ?IPv6:2a00:f41:388b:98b6:dd1c:a7e0:c7d4:84fb? ([2a00:f41:388b:98b6:dd1c:a7e0:c7d4:84fb]) by smtp.googlemail.com with ESMTPSA id x16-v6sm4174309wme.12.2018.06.26.12.13.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Jun 2018 12:13:39 -0700 (PDT)
To: Leo Gaspard <ietf@leo.gaspard.ninja>, openpgp@ietf.org
References: <39e598e1-2bc0-32c9-3489-4bb6ca2a631b@leo.gaspard.ninja> <871sdw24yd.wl-neal@walfield.org> <c2e6bbe7-0694-8193-bb76-dd50fde7d967@leo.gaspard.ninja> <d28d8f8b-b261-eb29-97bc-9c7159a62ce6@leo.gaspard.ninja>
From: Wiktor Kwapisiewicz <wiktor@metacode.biz>
Openpgp: id=653909A2F0E37C106F5FAF546C8857E0D8E8F074; url=https://metacode.biz/@wiktor/openpgp/key
Autocrypt: addr=wiktor@metacode.biz; keydata= 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
Organization: Metacode
Message-ID: <67153bb3-8ec7-5b30-3d11-22fce0681b47@metacode.biz>
Date: Tue, 26 Jun 2018 21:13:35 +0200
MIME-Version: 1.0
In-Reply-To: <d28d8f8b-b261-eb29-97bc-9c7159a62ce6@leo.gaspard.ninja>
Content-Type: text/plain; charset="iso-2022-jp"; format="flowed"; delsp="yes"
Content-Language: en-US
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/openpgp/n7KGInlEeLOXpvzeGLlNbdA8Nwc>
Subject: Re: [openpgp] Overhauling User IDs / Standardizing User Attributes (was: Re: Scoped trust (signatures))
X-BeenThere: openpgp@ietf.org
X-Mailman-Version: 2.1.26
Precedence: list
List-Id: "Ongoing discussion of OpenPGP issues." <openpgp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/openpgp>, <mailto:openpgp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/openpgp/>
List-Post: <mailto:openpgp@ietf.org>
List-Help: <mailto:openpgp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/openpgp>, <mailto:openpgp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 26 Jun 2018 19:13:46 -0000

Hi Leo,

 > Are there really no opinions on this idea of decoupling names and email
 > addresses through standardization of more User Attributes and removal of
 > User ID packets in v5 keys? Not having any feedback from any software
 > maintainer makes me wary of starting to write a patch for 4880bis  
right now.

Standarization and implementation of new User Attributes would take  
ages, and the existing User IDs are just good enough.

 >> When I want to sign someone's User ID, I need to both check their
 >> real-life name (with eg. a state-provided ID) and their e-mail address.
 >> And if someone has put a pseudonym on the User ID, should I sign it?

That depends on your personal key-signing policy. I - for example -  
don't sign User IDs with comments (because I can't or don't want to  
verify if your role is "super administrator" or nickname is "XYZ").

 >> This tight coupling of name and email address in User IDs is already an
 >> issue for me (in choosing what User ID(s) I should put, choosing whether
 >> to sign a User ID I only know part of…), and is now again an issue in
 >> fixing the standard to be both more simple and more usable.

You can create User ID without e-mail, actually a lot of people do just  
that. And then add one more with e-mail, works just fine.

 >> So here is my idea: drop User IDs in v5 keys, and standardize more User
 >> Attributes. In particular, standardize at least a “name”, an “email” and
 >> a “pseudonym” user attribute. (I'm not sure about the “comment” user
 >> attribute, and would prefer seeing it handled otherwise, see the
 >> “Possible extensions” section)

And how is that different from what we have in User ID? It's still up to  
the signer if they want to sign "pseudonym" user attribute or not. You  
just gain marginal benefit of having "name", "email" and "pseudonym"  
parts separated for a big effort in supporting this new scheme.

Actually I was also thinking on using User Attributes at one time (for  
Linked IDs) but luckily the idea was shot on this ML. User IDs are  
better because they have a fallback already - a human can read the  
string just fine, not be confused by "[unknown attribute of size 83]"  
(check my key).

For extensibility - notations - they are also human readable and can be  
made critical for special purposes.

Sorry if this sounds negative.

Have a nice day!

Kind regards,
Wiktor


> Are there really no opinions on this idea of decoupling names and email
> addresses through standardization of more User Attributes and removal of
> User ID packets in v5 keys? Not having any feedback from any software
> maintainer makes me wary of starting to write a patch for 4880bis right now.
> 
> 
> On 05/28/2018 12:27 AM, Leo Gaspard wrote:
>> On 05/27/2018 10:56 PM, Neal H. Walfield wrote:
>>>> Another issue of this scheme, obviously, is that noone “in the wild”
>>>> currently uses regular expression subpackets (that I know of).
>>>
>>> Not only does almost no one use regular expressions, but regular
>>> expression support is not very widely supported (GnuPG doesn't support
>>> regular expressions on Windows), and until recently broken in GnuPG
>>> (see https://dev.gnupg.org/T2923).
>>>
>>> I would like to make a counter proposal, that Vincent and I came up
>>> with at FOSDEM: I think that we should deprecate Regular Expression
>>> support and replace it with a list of domains (optionally prefixed
>>> with "*." to indicate any subdomain).  First, most users don't
>>> understand regular expressions.  And, although it would be possible to
>>> allow users to enter one or more domains and then convert them to a
>>> regular expression, it is not easy to reverse this process, which is
>>> essential for explanatory purposes and editing.  Second, not including
>>> an RE engine reduces complexity.
>>
>> Issue
>> -----
>>
>> This is what I had in mind at the beginning, but then I came upon a
>> stumbling block: User IDs. They are not at all standardized, so it's not
>> possible to assume they are in the form “Name (Comment)
>> <email@example.org>”. And, even if assuming this, how could the
>> implementation validate the “Name” and “Comment” parts, when the Regular
>> Expression support is replaced by something to validate by domain?
>>
>> So I think there are two problems here:
>>   1. User IDs are not standardized
>>   2. User IDs contain many unrelated information
>>
>> I already explained point 1, so I'll now explain point 2. User IDs as
>> currently used tie in a name and an email (I'll omit the Comment part).
>> Which are two completely unrelated things: I have a single real-life
>> name (well -- most people do), a pseudonym, and a lot of e-mail addresses.
>>
>> When I want to sign someone's User ID, I need to both check their
>> real-life name (with eg. a state-provided ID) and their e-mail address.
>> And if someone has put a pseudonym on the User ID, should I sign it?
>> This tight coupling of name and email address in User IDs is already an
>> issue for me (in choosing what User ID(s) I should put, choosing whether
>> to sign a User ID I only know part of…), and is now again an issue in
>> fixing the standard to be both more simple and more usable.
>>
>>
>> Idea
>> ----
>>
>> So here is my idea: drop User IDs in v5 keys, and standardize more User
>> Attributes. In particular, standardize at least a “name”, an “email” and
>> a “pseudonym” user attribute. (I'm not sure about the “comment” user
>> attribute, and would prefer seeing it handled otherwise, see the
>> “Possible extensions” section)
>>
>>
>> Consequences
>> ------------
>>
>> So what would happen were this done?
>>
>> First, when picking my User IDs, I wouldn't have to think over whether I
>> really want to associate such email address with my name or with my
>> pseudonym.
>>
>> Then, when signing User Attributes, I could just sign all user
>> attributes I checked. I could sign “email” User Attributes after
>> checking I could send and receive mail to the provided email, I could
>> sign “name” attributes after checking a state-provided ID, and I could
>> sign “pseudonym” and “comment” attributes depending on my local signing
>> policy (which I haven't really determined yet).
>>
>> Finally, this would make the scoping-by-domain-name proposal possible:
>> it'd be “can only sign `email` User Attributes and the part after the
>> last @ must match this restriction”.
>>
>>
>> Possible extensions
>> -------------------
>>
>> So now with this change it would become possible to handle extensions of
>> the User IDs that have been proposed.
>>
>> First, the “[project] signing key” comment, that can be seen eg.
>> [here](https://sks-keyservers.net/pks/lookup?op=vindex&search=0x8B3F30F9C8C0C2EF).
>> This could be handled by adding a “role” User Attribute, that could be
>> “Qubes OS developer” here. And thus the organization only needs to
>> validate the keyholder is a QubesOS developer when signing this, without
>> having to also validate a name, an email address or whatever else.
>>
>> Then, the “I have this account on this website”, that can be seen eg.
>> [here](https://sks-keyservers.net/pks/lookup?op=vindex&search=0xAC6D00DB7F24B2C2),
>> and is the point that, as far as I understand, lead to the birth of
>> keybase.io (which did show some traction). It could be handled by a
>> “account-on” that would store both a domain name (for the website) and a
>> username.
>>
>> Finally, I think it would be good to stay more “open to extensions” than
>> the current scheme of (mis)using User IDs, by eg. reserving attribute
>> type 255 for “plaintext key-value user ID”, so that implementations that
>> can't reasonably fit some data in one of these User Attributes could
>> just use it with raw key/values instead of using one of the 100-110
>> reserved values, which wouldn't be displayed by implementations not
>> aware of them.
>>
>>
>> Remaining issues
>> ----------------
>>
>> The foremost issue with this change is the one of the UI to display the
>> user: currently, in Enigmail (the only end-user-oriented UI I know of),
>> the primary User ID of the key is displayed. With this change, there
>> would no longer be a primary User ID.
>>
>> I can currently think of two UIs. The first would check that the name
>> and the email address of the received mail are valid, and error-out
>> otherwise. The second one would just pick a name and an email address
>> from the list of valid ones, and display it.
>>
>> In my opinion, the first option is *way* better than the second one, and
>> it's the reason why I didn't propose an extension of the Primary User ID
>> flag to handle multiple primary User Attributes (would be one name and
>> one email, for instance).
>>
>> For instance, a problem with primary User IDs/Attributes is the
>> following: let's assume I can validate a few UIDs on the key, but not
>> the primary one. What should I display? I think there is no good answer
>> to this question apart from “validate the one it came as” or “show all
>> the valid ones”, and thus removing the Primary UID may remove some traps
>> naive implementations may fall in, like displaying a non-validated
>> primary UID.
> 
> 

-- 
*/metacode/*