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

Jon Callas <joncallas@icloud.com> Fri, 29 June 2018 00:38 UTC

Return-Path: <joncallas@icloud.com>
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 2348A130E3F for <openpgp@ietfa.amsl.com>; Thu, 28 Jun 2018 17:38:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.7
X-Spam-Level:
X-Spam-Status: No, score=-2.7 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=icloud.com
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 W_aIcnBlIGEV for <openpgp@ietfa.amsl.com>; Thu, 28 Jun 2018 17:38:14 -0700 (PDT)
Received: from st13p27im-asmtp003.me.com (st13p27im-asmtp003.me.com [17.162.190.112]) (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 0D636130DEF for <openpgp@ietf.org>; Thu, 28 Jun 2018 17:38:14 -0700 (PDT)
Received: from process-dkim-sign-daemon.st13p27im-asmtp003.me.com by st13p27im-asmtp003.me.com (Oracle Communications Messaging Server 8.0.1.2.20170607 64bit (built Jun 7 2017)) id <0PB200C006R2EE00@st13p27im-asmtp003.me.com> for openpgp@ietf.org; Fri, 29 Jun 2018 00:38:12 +0000 (GMT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com; s=04042017; t=1530232692; bh=RmypMITspzPKcniSnVMll7ho6hqdhs4cIZ0HCAESqyM=; h=Content-type:MIME-version:Subject:From:Date:Message-id:To; b=Og6xxbCA49dLev6yvbe9OL5vL8uFJqxbow4B8CjBE8GEYEVAfHYP0nZNdRDA3rCO9 fIk6qbJbAoBtKI1COyt+HaBUvpo3/uTuD69qBJ3UWTdZ6/FlfIWToFOczBggAysn5t 0jRfYMAaPCd9kTPlzCray/0l/uc9czv5ynlPPYyZ7flAotIW6vdmg/Woxk4q72wKtJ aPhAUMoDSilfQ2mcA94q4OJ0hPXpsOVdy1uuglcQa4a02DjqW7BGPKZYLcUseNFlDi qjk+kJzuabu0g0TABdz+ldOQAUXGLVk2+9ODeoE00J+V7sAUg4zTl/g0G0t/vTSRpW be8ay1XgfBU3g==
Received: from icloud.com ([127.0.0.1]) by st13p27im-asmtp003.me.com (Oracle Communications Messaging Server 8.0.1.2.20170607 64bit (built Jun 7 2017)) with ESMTPSA id <0PB2006ZC73LKF00@st13p27im-asmtp003.me.com>; Fri, 29 Jun 2018 00:38:12 +0000 (GMT)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-06-28_09:,, signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 clxscore=1015 suspectscore=2 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000 definitions=main-1806290004
Content-type: text/plain; charset="utf-8"
MIME-version: 1.0 (Mac OS X Mail 11.4 \(3445.8.2\))
From: Jon Callas <joncallas@icloud.com>
In-reply-to: <8a608b9f-f96b-466d-a0b8-7d1aa39ab011@leo.gaspard.ninja>
Date: Thu, 28 Jun 2018 17:38:09 -0700
Cc: Jon Callas <joncallas@icloud.com>, openpgp@ietf.org
Content-transfer-encoding: quoted-printable
Message-id: <D3567617-4B9B-4BFE-AC39-11B0BEBB0B6B@icloud.com>
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> <118e5b9d-de9e-aa14-d8b4-19ef259f3d0a@ruhr-uni-bochum.de> <e63924fe-95b2-dcf8-5726-b0497945ac74@leo.gaspard.ninja> <f31349e2-e509-4e06-6db5-2ff0ffb213a5@ruhr-uni-bochum.de> <3996841a-b6ae-8769-2de8-b35351c54719@leo.gaspard.ninja> <8E4410C7-9370-492C-838F-857983CA67FC@icloud.com> <8a608b9f-f96b-466d-a0b8-7d1aa39ab011@leo.gaspard.ninja>
To: Leo Gaspard <ietf=40leo.gaspard.ninja@dmarc.ietf.org>
X-Mailer: Apple Mail (2.3445.8.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/openpgp/2WDeKZXUZZE1wK0VHo0en4F9cU8>
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: Fri, 29 Jun 2018 00:38:17 -0000


> On Jun 28, 2018, at 2:35 AM, Leo Gaspard <ietf=40leo.gaspard.ninja@dmarc.ietf.org> wrote:
> 
> On 06/28/2018 03:44 AM, Jon Callas wrote:
>> Forgive me, Leo, but I don’t understand what problem you’re trying to solve, but I’m going to say that’s my fault. Nonetheless, could you reiterate for those of us who weren’t paying proper attention before?
> 
> No problem!
> 
>> UserIDs are intentionally a huge hand wave. It’s an arbitrary UTF-8 field. Put whatever you want into it. Yes, by convention it’s an email address, but even at the time that that was common it was convention only. When I was with PGP Corporation, we made software signing keys that merely said they were software signing keys, as well as other keys that had no email address, but a text description of what they were.
> 
> Well, the idea is that User IDs are a huge hand wave indeed, and that
> seems to make exploiting this hard, esp. around signature, as that most
> often means (in my experience) that I can't sign an email address
> without signing a name and reciprocally.
> 
> So I think splitting the User IDs into orthogonal fields would make
> signing these fields (as well as setting trust signatures with
> constraints) much easier.
> 
> Currently, the fields I am thinking of would be defined as User
> Attributes, and would be:
> * name (for the real-world name of the owner)
> * email
> * role (would fit the software signing key case, or role of the owner
> of a key inside an organization)
> * pseudonym (not really sure this one would be really useful, but this
> would allow people's signing policy for pseudonyms to differ from the
> signing policy for names, eg. noticing persistent use of the same
> pseudonym vs. checking government-issued ID, without misleading
> verifiers into thinking that the pseudonym was actually a
> government-validated name)
> * free form tag=value (for eg. xmpp=foo@example.org, github=bar, etc.)
> 
> Not all of these fields would need to be filled-in, obviously, and a key
> could have any number of each.
> 
> The main point of this is to make eg. automated signature of email
> addresses possible without impacting user interface by requiring an
> email address in a separate User ID.
> 
> Also, I don't think it would reduce the freedom currently offered by
> User IDs, because there would always be the free form tag=value User
> Attribute for marginal cases. But it would incite people to put the
> right value into the right field, and would likely make life easier for
> both automated and non-automated signers.
> 
> Is what I'm thinking of more clear now? :)

Absolutely. 

You could do this with User IDs. They are, after all, generic and you could thrown XML, JSON, or whatever else you wanted. It would be ugly (because most software presumes that it’s human-readable and human-useful), but it would work. 

Or you could do it with User Attribute Packets that are explicitly designed for this sort of thing. There’s only one type of attribute defined now, a photo. Section 5.12 defines them, notes that, also says that software SHOULD ignore types that it doesn’t recognize, and beyond that notes that (as usual) types of 100-110 are for private or experimental types. 

I suggest this because there is an established framework for you to experiment and show the usefulness of what you’re doing. Make your own packet, number it 110, and go ahead. Or, write up an RFC draft, propose in it that you use 2 as the type, and get rough consensus and running code to do it for you.

If you bend User IDs into what you want, then it effectively becomes everyone’s business as you’re veering from the spirit User IDs and there’s no good way for software that doesn’t want to play along to do something sensible. But if you use User Attributes, you’re in territory where the system is tilted in your favor. The standard says that an implementation that doesn’t understand yours SHOULD ignore it. It says, "Except as noted, a User Attribute packet may be used anywhere that a User ID packet may be used,” and that means that it falls into exactly what you want. It becomes your own thing that doesn’t affect those who don’t agree. It’s a much better place to be standing.

Heck, while you’re at it, talk to the Keybase people because they explicitly now have Twitter, Facebook, Github and DNS identifies, along with Reddit, Hacker News, Bitcoin addresses, Zcash addresses, and more I’m likely missing.

	Jon