[openpgp] Re: v4+v6

"Neal H. Walfield" <neal@walfield.org> Mon, 10 February 2025 14:09 UTC

Return-Path: <neal@walfield.org>
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 C044FC1E0D91; Mon, 10 Feb 2025 06:09:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.904
X-Spam-Level:
X-Spam-Status: No, score=-1.904 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id l6yjdB4gI-Wg; Mon, 10 Feb 2025 06:09:16 -0800 (PST)
Received: from mail.dasr.de (mail.dasr.de [202.61.250.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 80A2DC18DBB3; Mon, 10 Feb 2025 06:09:15 -0800 (PST)
Received: from p5de920fd.dip0.t-ipconnect.de ([93.233.32.253] helo=forster.huenfield.org) by mail.dasr.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <neal@walfield.org>) id 1thUTK-00D12h-1J; Mon, 10 Feb 2025 15:09:14 +0100
Received: from alice.huenfield.org ([192.168.20.191] helo=alice.walfield.org) by forster.huenfield.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <neal@walfield.org>) id 1thUTJ-00CbsU-18; Mon, 10 Feb 2025 15:09:14 +0100
Date: Mon, 10 Feb 2025 15:09:13 +0100
Message-ID: <877c5xgad2.wl-neal@walfield.org>
From: "Neal H. Walfield" <neal@walfield.org>
To: Daniel Huigens <d.huigens=40protonmail.com@dmarc.ietf.org>
In-Reply-To: <2TILmXlRqQuH38CSPgkT_AH9aB3GlY1QD3Ij69k1EpvBHkdE4z7KAIG1JzQqPv6z48ePIbIbRaf0dkmo88c_7kOlIjhvB5b8W8-oYG2mg4o=@protonmail.com>
References: <87h653fd5p.wl-neal@walfield.org> <2TILmXlRqQuH38CSPgkT_AH9aB3GlY1QD3Ij69k1EpvBHkdE4z7KAIG1JzQqPv6z48ePIbIbRaf0dkmo88c_7kOlIjhvB5b8W8-oYG2mg4o=@protonmail.com>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (Gojō) APEL-LB/10.8 EasyPG/1.0.0 Emacs/28.2 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO)
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset="US-ASCII"
X-SA-Exim-Connect-IP: 192.168.20.191
X-SA-Exim-Mail-From: neal@walfield.org
X-SA-Exim-Version: 4.2.1 (built Wed, 06 Jul 2022 17:57:39 +0000)
X-SA-Exim-Scanned: Yes (on forster.huenfield.org)
Message-ID-Hash: NB6ZABZAACWASDXN33Z6WAAARY3L3IB7
X-Message-ID-Hash: NB6ZABZAACWASDXN33Z6WAAARY3L3IB7
X-MailFrom: neal@walfield.org
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-openpgp.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: IETF OpenPGP <openpgp@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [openpgp] Re: v4+v6
List-Id: "Ongoing discussion of OpenPGP issues." <openpgp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/openpgp/D5yUb4cQOgYeqbvrNShfoDfzjjw>
List-Archive: <https://mailarchive.ietf.org/arch/browse/openpgp>
List-Help: <mailto:openpgp-request@ietf.org?subject=help>
List-Owner: <mailto:openpgp-owner@ietf.org>
List-Post: <mailto:openpgp@ietf.org>
List-Subscribe: <mailto:openpgp-join@ietf.org>
List-Unsubscribe: <mailto:openpgp-leave@ietf.org>

Hey Daniel,

On Mon, 10 Feb 2025 11:04:19 +0100,
Daniel Huigens wrote:
> >From my point of view, the most important use case for having a v6 key
> will be PQC. So, I'll focus on that part of your email:
> 
> On Sunday, February 9th, 2025 at 14:41, Neal H. Walfield wrote:
> > This scheme works, because it it possible to use the same key material
> > for both v4 and v6 keys. It works less well for PQC, but I think it
> > still partially works, because some PQC algorithms use a composite
> > scheme.
> > 
> > Given a certificate with an ML-DSA-65+Ed25519 primary key, (I think)
> > it is possible to extract just the Ed25519 public key, and compute the
> > corresponding v4 or v6 key. So we can go from a PQC certificate to v4
> > or v6 certificate.
> 
> The PQC draft says not to do this:
> https://www.ietf.org/archive/id/draft-ietf-openpgp-pqc-06.html#name-key-generation-2.
> Generally, reusing key material in different contexts is not advised,
> though I don't know whether there's a practical attack in this case,
> but it'd make the security analysis harder (or even fail to hold,
> formally speaking, as the text suggests).

Thanks for linking to that text.  Key reuse was my primary concern,
and that would be (is?) a K.O. argument.

> > Given a v4 or v6 key, we can't figure out the fingerprint of the
> > corresponding PQC key, because we don't have the PQC public key. But
> > if the PQC certificate is available, we can look it up by its Ed25519
> > public key.
> 
> Looking up the v6 (PQC) key from a keyserver when you only have a v4 key
> would seem like the most useful/important part of this, but this would
> only be possible if keyservers would allow looking up PQC keys by the
> Ed25519 public key, which seems complicated.

Perhaps I'm missing something, but I think this is the same level of
complexity as computing the imprint.

> Also, in general (even in the non-PQC case) this seems like a somewhat
> fragile way to look up a v6 key from a v4 key, because you don't know
> whether they reused the key material as you suggest, so the request
> might be insufficient (and conversely they might not have a v6 key
> at all, so the request might also be wasted).

Lots of update requests are wasted in the sense that they return
nothing.  For instance, how do we learn whether there is a key
replacement subpacket?  We have to periodically check for updates (or
wait for them via, e.g., an in-band signaling mechanism).  Most of
these checks return nothing, and that is okay, I think, but they do
serve a purpose: they help ensure that our local state is fresh.

> In essence, compared to this proposal, the key replacement draft places
> additional work on the key holder, to make things more straightforward
> and reliable for the key "consumers", so to speak. And I'd argue that's
> probably a good trade-off to make.

Interesting observation.  My impression is that the replacement key
subpacket introduces some complexity both for users (arranging the
cross signatures), and for the implementation (checking the various
constraints).  I think I need to play with an implementation a bit.

Thanks for your comments!

:) Neal