[openpgp] implicit PSK key capabilities

Daniel Kahn Gillmor <dkg@fifthhorseman.net> Fri, 25 September 2026 19:10 UTC

Received: from che.mayfirst.org (che.mayfirst.org [204.19.241.122]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by mx.ietf.org (Postfix) with ESMTPS id D512D31 for <openpgp@ietf.org>; Fri, 25 Sep 2026 19:10:19 +0000 (UTC)
Authentication-Results: mx.ietf.org; dkim=pass header.d=fifthhorseman.net header.s=2019 header.b=8GGvcWM0; dkim=pass header.d=fifthhorseman.net header.s=2019rsa header.b=oKKr+smb; dmarc=pass (policy=none) header.from=fifthhorseman.net; spf=pass (mx.ietf.org: domain of dkg@fifthhorseman.net designates 204.19.241.122 as permitted sender) smtp.mailfrom=dkg@fifthhorseman.net
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019; t=1790363412; h=from : to : subject : date : message-id : mime-version : content-type : from; bh=ROXdVHYVwzWxGh/BLvB9gPr3w4p8kXp2gaJmofof2tM=; b=8GGvcWM0O0wGUHKWGuE7UhKUh5JvxQbyjGYZIFWBCXGeUmgFSe/HP9NhtsFP7GUy3+6D7 DnF+RFML+vcPwxzBQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fifthhorseman.net; i=@fifthhorseman.net; q=dns/txt; s=2019rsa; t=1790363412; h=from : to : subject : date : message-id : mime-version : content-type : from; bh=ROXdVHYVwzWxGh/BLvB9gPr3w4p8kXp2gaJmofof2tM=; b=oKKr+smbv9HiYTogKDTO8l6240gKZYJLladlWkpeHnCxZlUPdmL9gtHZtGuqJUafAIy48 02bEzC9+J4G+cfvt++r1WgF45XjyX4/iKi+siniL7Ycz6LzMNYtW+QQjKXz7/cHQOjlH3H1 BLIEhMBQeQ0Csn2GZ+0Hqpe/cCPJhwLZmVnJmF5RHQ7nfCxBzymtKbqHQqV8swh7T9W/EXi YrTUsySiZGZNBYUaP+hI26bvZc863Q9IWIkxAyvxWtHUzP9GC1x+OJrhPVWmooSiwtfRjI8 lpfaL7fey525E7A8Jir2sSxUjAIK3Ld1MtvSF7VIb1Cr1sm1Gd/45np1CPLw==
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) (No client certificate requested) by che.mayfirst.org (Postfix) with ESMTPSA id CC4A7F948 for <openpgp@ietf.org>; Fri, 25 Sep 2026 15:10:12 -0400 (EDT)
Received: by fifthhorseman.net (Postfix, from userid 1000) id A080213F703; Fri, 25 Sep 2026 14:59:55 -0400 (EDT)
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
To: openpgp@ietf.org
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, 25 Sep 2026 14:59:55 -0400
Message-ID: <87qzih40no.fsf@fifthhorseman.net>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Level: *
X-Spamd-Bar: +
Message-ID-Hash: DMH3ZFN44UTK3GEHRFWHXBP5U5JXG5Q4
X-Message-ID-Hash: DMH3ZFN44UTK3GEHRFWHXBP5U5JXG5Q4
X-MailFrom: dkg@fifthhorseman.net
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-openpgp.ietf.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.10
Precedence: list
Subject: [openpgp] implicit PSK key capabilities
List-Id: "Ongoing discussion of OpenPGP issues." <openpgp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/openpgp/0xUPJbp7AwCvcCq6gACN8p2UTQw>
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 folks--

in the interim yesterday, we had quite a bit of discussion about whether
there should be explicit annotation of PSK capabilities (and if so, how
to do that), or whether the PSK should be declared implicitly capable of
a range of operations.

I'm not sure i have a strong preference, but the latter approach
(implicit capabilities) seemed easiest to write up.  I've taken a crack
at writing it down here:

  https://gitlab.com/twisstle/openpgp-persistent-symmetric-keys/-/merge_requests/7

the proposed added text is:

+## Reasonable Use
+
+A PSK is useful only to its keyholder, not to any peer of the keyholder.
+As such, its use is limited to interoperable operations
+between the keyholder's own OpenPGP implementations.
+
+While it has no explicit usage annotation (such as a Key Flags subpacket),
+the following uses are implicitly permissible for any PSK:
+
+- Encryption:
+  For example, it may be useful to re-encrypt
+  a session key from an existing OpenPGP Message
+  by prepending the message with another PKESK.
+  See "storing session keys," above.
+- Signing data:
+  For example, to mark a draft message
+  as authentic for the drafter,
+  an implementation may use the PSK to create
+  a signature of class 0x00 or 0x01.
+  This signature can be verified by the
+  keyholder's other implementations
+  that have access to the PSK.
+- Certification:
+  For example, to mark a verifiable local association
+  between a given certificate and a User ID,
+  an implementation may use the PSK to create
+  a certification (signature class 0x10-0x13).
+  Any certification created by a PSK
+  SHOULD be marked "non-exportable"
+  (see {{Section 5.2.3.19 of RFC9580}}).
+  The keyholder's other implementations that have
+  access to the PSK can then validate
+  the certificate for use in any context
+  where the User ID is relevant.
+

Feedback welcome,

         --dkg