Re: including the entire fingerprint of the issuer in an OpenPGP certification

"Daniel A. Nagy" <> Tue, 18 January 2011 22:03 UTC

Received: from (localhost []) by (8.14.4/8.14.3) with ESMTP id p0IM3u1t061466 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 18 Jan 2011 15:03:57 -0700 (MST) (envelope-from
Received: (from majordom@localhost) by (8.14.4/8.13.5/Submit) id p0IM3uD1061465; Tue, 18 Jan 2011 15:03:56 -0700 (MST) (envelope-from
X-Authentication-Warning: majordom set sender to using -f
Received: from ( []) by (8.14.4/8.14.3) with ESMTP id p0IM3tui061458 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=FAIL) for <>; Tue, 18 Jan 2011 15:03:56 -0700 (MST) (envelope-from
Received: by fxm18 with SMTP id 18so143251fxm.16 for <>; Tue, 18 Jan 2011 14:03:54 -0800 (PST)
Received: by with SMTP id r12mr6777013fan.102.1295388234210; Tue, 18 Jan 2011 14:03:54 -0800 (PST)
Received: from [] ( []) by with ESMTPS id a25sm2335885fak.44.2011. (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 18 Jan 2011 14:03:53 -0800 (PST)
Message-ID: <>
Date: Tue, 18 Jan 2011 23:03:50 +0100
From: "Daniel A. Nagy" <>
User-Agent: Thunderbird (X11/20100317)
MIME-Version: 1.0
To: IETF OpenPGP Working Group <>
Subject: Re: including the entire fingerprint of the issuer in an OpenPGP certification
References: <> <> <> <> <> <>
In-Reply-To: <>
X-Enigmail-Version: 0.95.0
Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------enig5089CC478F8BBF2264BA3852"
Precedence: bulk
List-Archive: <>
List-Unsubscribe: <>
List-ID: <>


Daniel Kahn Gillmor wrote:
> On 01/18/2011 12:48 PM, Jon Callas wrote:
>> If we combine it with a hash-independent fingerprint -- e.g., first byte is an algorithm ID, others are the actual hash -- then we can put it in now and then run with it.
> Daniel Nagy suggests that we also change the material being hashed in
> the fingerprint (he wants to leave out the creation date).  If that
> proposal ends up achieving consensus then your proposal here will need
> further modification.
> Does anyone feel strongly about Nagy's proposal, by the way?  i'm not
> sure what the tradeoffs are.

There are specific use cases that I am interested in, where including the
creation date in the fingerprint hash causes problems. If anyone is interested,
I can describe them in necessary detail.

> Even without that concern, if we encourage super-flexible use like this,
> user agents who wanted to use it to test for the presence of a given key
> in an indexed keystore would need to index their keys with every
> possible digest that might be used -- that seems excessive somehow.
> (and unlikely that keyserver implementations would want a half-dozen
> indexes, for that matter)  Wouldn't it be better to just implement it
> for today's fingerprint, and then when a new fingerprint is agreed upon,
> determine (by subpacket length maybe?) whether it's the new fingerprint
> or the old one.  Compliant user agents would keep the two indexes around
> until the v4 fingerprint goes away, and then drop the old one.

I believe you mis-interpreted Jon's suggestion. He was suggesting to treat the
fingerprint field as a free-form string within the signature subpacket. Nothing
more and nothing less. This makes the change future-proof without any of the
problems that you mention above. Key servers must also eventually treat
fingerprints as (possibly limited-length, but by no means fixed-length) strings.

On the other hand, one can argue that there is no reason to move from 160-bit
fingerprints, even if we change the algorithm of their calculation for v5 keys.
Even if a different hash function is used. This would make transition a bit less
painful, without any real compromises on security.

> Alternately, we could embed the algorithm ID as you suggest, and SHOULD
> people into generating them using only the consensus fingerprint
> algorithms so that reasonable user agents only need to create indexes
> over SHA1 (now) and SHA3 (whenever that happens).

I think that there must be only ONE string called THE fingerprint of a certain
public key. Even if the algorithm is included, it should be either included in
the key itself indicating that for that particular key this particular algorithm
must be used or even mandated by the standard for all keys until further
revisions. I see no benefit in explicitly including any details of the algorithm
used to obtain it into the fingerprint itself, though.