[openpgp] Re: New Version Notification for draft-dkg-openpgp-stateless-cli-15.txt

Daniel Kahn Gillmor <dkg@fifthhorseman.net> Fri, 09 January 2026 22:17 UTC

Return-Path: <dkg@fifthhorseman.net>
X-Original-To: openpgp@mail2.ietf.org
Delivered-To: openpgp@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id DF83FA597597 for <openpgp@mail2.ietf.org>; Fri, 9 Jan 2026 14:17:27 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -0.201
X-Spam-Level:
X-Spam-Status: No, score=-0.201 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=neutral reason="invalid (unsupported algorithm ed25519-sha256)" header.d=fifthhorseman.net header.b="sk32lxK5"; dkim=pass (2048-bit key) header.d=fifthhorseman.net header.b="p3y8L//p"
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fs1uBqRsyy6w for <openpgp@mail2.ietf.org>; Fri, 9 Jan 2026 14:17:27 -0800 (PST)
Received: from che.mayfirst.org (che.mayfirst.org [IPv6:2001:470:1:116::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id E5C42A59725B for <openpgp@ietf.org>; Fri, 9 Jan 2026 14:16:51 -0800 (PST)
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019; t=1767997005; h=from : to : subject : in-reply-to : references : date : message-id : mime-version : content-type : from; bh=mNPhGIN49YgToKaSptrRN17LHls8BBWdICKqD6o8g48=; b=sk32lxK5vxrc/2uQE0yUEJnptIq1FxF9HRKrsqu6KTB4zPIflufhUkW/gRZn36ue5pm5u gSeSX+FrTlzvKnUDA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019rsa; t=1767997005; h=from : to : subject : in-reply-to : references : date : message-id : mime-version : content-type : from; bh=mNPhGIN49YgToKaSptrRN17LHls8BBWdICKqD6o8g48=; b=p3y8L//paljpzXEUQZFo9NB7XTp8vJRVEwrULuaAtGUcqujG7u/kPnqyUx/N1lmlF9LYB Zn7ldlVjAk8heXk/iFEc2t10O6relWOBw/f1q4cThNGpRQIwa+r8NdoDdqflBnejvl4yIy+ gtBGsFFMhdWBswWevApX/TcpPLE5DeBBvP2j7r5nPe+qMQj/mfA/lOWuALx6jElrjMHgqTU 2iQQYIEJgV5kSoOcEhytZ9O6aF5dXZHLTDltgI2KVVim1XdgykgxMPrfPFHvMw0kih93qKk cwqceHJKalwJJDOYw5DESTXt7u/OytqX0oj3t9PohVXtokIy8MCOqMxNh80w==
Received: from fifthhorseman.net (lair.fifthhorseman.net [108.58.6.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by che.mayfirst.org (Postfix) with ESMTPSA id D9016F949; Fri, 09 Jan 2026 17:16:44 -0500 (EST)
Received: by fifthhorseman.net (Postfix, from userid 1000) id B320613F6D9; Fri, 09 Jan 2026 17:16:41 -0500 (EST)
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
To: Andrew Gallagher <andrewg@andrewg.com>, openpgp@ietf.org
In-Reply-To: <0652ce2a-11d9-4dd6-8716-c43ca0031f93@andrewg.com>
References: <176738207073.2681132.11062510670078620793@dt-datatracker-5656579b89-p6k4r> <87ikdj67dt.fsf@fifthhorseman.net> <0332b138-fdb9-46ba-8e34-f92aa37e8582@andrewg.com> <87y0m82hx1.fsf@fifthhorseman.net> <0652ce2a-11d9-4dd6-8716-c43ca0031f93@andrewg.com>
Autocrypt: addr=dkg@fifthhorseman.net; prefer-encrypt=mutual; keydata= xjMEZXEJyxYJKwYBBAHaRw8BAQdA5BpbW0bpl5qCng/RiqwhQINrplDMSS5JsO/YO+5Zi7HNFzxk a2dAZmlmdGhob3JzZW1hbi5uZXQ+wsARBBMWCgB5AwsJB0cUAAAAAAAeACBzYWx0QG5vdGF0aW9u cy5zZXF1b2lhLXBncC5vcmcS78JIJ7JbALqPiKEmva7/Pp16WwXWm9hbe5+B/UvnfwMVCggCmwEC HgEWIQTUdwQMcMIValwphUm7fpEBSV5r9wUCZadfkAUJBdnwRQAKCRC7fpEBSV5r9yNXAP442N0c zvisBroQSKKpo+OWm2JpnEJWoVheeJvoRtkBGQEA+edHylby8IGcNccq7rmM2rAXdofvrU1o6qow V+mmDwbOMwRnio4OFgkrBgEEAdpHDwEBB0Cw9HzJFl9lZn3UBaUqSMSgxjcdbd0MwNVcGZ8t8wdN EcLAvwQYFgoBMQWCZ4qODgkQu36RAUlea/dHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9p YS1wZ3Aub3JnhcN+tn41cAg01Kk56zcAfpdsh8j98PDe00mqKPfFvaYCmwK+oAQZFgoAbwWCZ4qO DgkQeAuFTtnCtJZHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9pYS1wZ3Aub3JnxsD8Sk5P Wgx8c/Zseo6OlCjyDC+Ogm17gTaUUIpxjWYWIQRjrBGOWy5dZsiKhad4C4VO2cK0lgAAdcQA/1RG dmrmvVxkBY2qNPjtERNwPga8Pf4IdlenrZ03NXM4AQC+TDHMpD7d5obEvUy8GYI3oThzYItPP8vv ChY+wbaIBRYhBNR3BAxwwhVqXCmFSbt+kQFJXmv3AAAKbgD+K1MZXnRKPdmA8DgNysyGRZY8cSVH HQcC7ZAAtV3i2+wA/0CyOYrbFYbyTRALgoERR07OHFoP+fJopQLMNQARVUELzjgEZ4qN+RIKKwYB BAGXVQEFAQEHQDTGlR+Qmn334e+bPqvojJVdFsiBf0leAAHP+ESqop8NAwEIB8LAAAQYFgoAcgWC Z4qN+QkQu36RAUlea/dHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9pYS1wZ3Aub3JnA5Lw b3wOOcoodImuVNw4PYq1U65FDC1Q2JMFIcJXqF0CmwwWIQTUdwQMcMIValwphUm7fpEBSV5r9wAA 6egA/j3QANSmogZ5VTF5KlI+BBye9ud/w9j7RLcCHU6u8AA1AQC3FGaNuv+uWOSa+eeEoI/aZrGd X5el8b/m6aXDDxDjDg==
Date: Fri, 09 Jan 2026 17:16:41 -0500
Message-ID: <87pl7i2zzq.fsf@fifthhorseman.net>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
Message-ID-Hash: UVRCZRWPCLVMO5GAIMTZ7PATX3DXEQII
X-Message-ID-Hash: UVRCZRWPCLVMO5GAIMTZ7PATX3DXEQII
X-MailFrom: dkg@fifthhorseman.net
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
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [openpgp] Re: New Version Notification for draft-dkg-openpgp-stateless-cli-15.txt
List-Id: "Ongoing discussion of OpenPGP issues." <openpgp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/openpgp/MhdX0hmWo5LV4W2Ly6k2LKTkOo4>
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>

On Thu 2026-01-08 18:01:49 +0000, Andrew Gallagher wrote:
> Sure, but IMO this makes it even more important that we clearly treat 
> ephemerality as a distinct concept.
>
> Imagine for example that you have multiple storage encryption subkeys, 
> and one of them happens to expire in 6 months, but you intend to renew 
> the expiry on it beforehand. You don't want a "strictly for 6 months 
> only" encryption command to accidentally use that subkey. You also don't 
> want to accidentally extend the expiry date on a subkey that you 
> intended to be ephemeral.
>
> It is not safe to treat ephemerality as an optional extension of 
> existing encryption subkeys, because then it's too easy to accidentally 
> downgrade it to non-ephemeral.

This is true of all "ephemeral" keys, whether marked as such or not,
right?

I mean, draft-green-tls-static-dh-in-tls13 offers a way to effectively
recreate supposedly ephemeral keys in the forward-secure TLS handshake.

We can discourage it, but we can't prevent it.  Guidance that says
"please don't extend encryption-capable subkey expiration" seems like
good guidance generally, no?

>>> short-lifetime encryption subkeys will tend to accumulate in a
>>> certificate unless we have very clear rules about how to clean them
>>> up, but it is unclear how those rules could be consistently
>>> implemented using self-signatures.
>> 
>> I don't think self-signatures are a necessary component of the plan
>> here.  Given that a public encryption subkey is inherently unusable after
>> expiration, there is little to be gained from retaining it.
>
> The expiration date of a subkey is stored in a self-signature, so we 
> have to take them into account somehow...

ah ok, i think i understand your point now.  Yes, the signalling is
happening in the subkey binding signature.  Given that this is a
required element to keeping a subkey in a certificate, i think it's a
pretty reasonable place to keep it.

I actually don't think it's unclear how these rules would be
consistently implemented given the data in the self-signatures.

> Right, but many existing systems won't do this. PGP was not designed 
> with rapid subkey rotation in mind, and legacy code is unlikely to 
> handle it gracefully. Enabling it unilaterally could therefore end up 
> being a self-DoS vector.

Can you say more about how much bloat you think would cause a self-DoS?
or even what you think the self-DoS would be?  are you saying that the
keyholder would be unable to operate their own secret key to decrypt?
Or that their peer would somehow be unable to encrypt to it?

> Part of the problem is that the existing wire format offers *too many* 
> knobs. In order to tighten security, you have to remove the knobs that 
> are no longer required; otherwise you're one knob-twiddle away from a 
> downgrade attack.

I think what you're calling a "downgrade attack" is the current status
quo: a message that can't be reliably deleted.  Is that right?

what is the knob-twiddle that would cause it?  who has to twiddle the
knob to get that wrong?

> Retrofitting existing things also adds complexity. Trying not to break 
> legacy code that doesn't follow updated guidance adds complexity. Adding 
> a clean, new (and optional!) feature is often less complex overall than 
> stretching existing features to cover use cases they were not designed for.

The way i'm currently thinking about it is these certificates will work
with modern OpenPGP implementations. As long as their implementations
can handle RFC9580, the peers that access the certificate at least don't
need to implement anything other than the already-known semantics about
expiration.  In particular: don't encrypt to expired encryption-capable
subkeys.

If we were to use a distinct new critical wireformat change (new packet
type, critical signature subpacket, etc) to mark a component key as "not
renewable" (for example) then we risk being unable to even distribute
the associated certificate to a brittle RFC9580 client that might
complain about or reject the entire certificate.  On the other hand, if
we use some non-critical extension or signature subpacket (or other
similar inoffensive wireformat change) to distribute it, then we face
the same risks that i think you're describing.

      --dkg