[openpgp] Re: persistent symmetric key asymmetry between signing/verifying and encryption/decryption

Daniel Huigens <d.huigens@protonmail.com> Wed, 21 October 2026 09:33 UTC

Received: from mail-43102.protonmail.ch (mail-43102.protonmail.ch [185.70.43.102]) (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 4143346 for <openpgp@ietf.org>; Wed, 21 Oct 2026 09:33:29 +0000 (UTC)
Authentication-Results: mx.ietf.org; dkim=pass header.d=protonmail.com header.s=protonmail3 header.b=tyiOc+st; spf=pass (mx.ietf.org: domain of d.huigens@protonmail.com designates 185.70.43.102 as permitted sender) smtp.mailfrom=d.huigens@protonmail.com; dmarc=pass (policy=quarantine) header.from=protonmail.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1792575200; x=1792834400; bh=NrLKM0VmP6SuCC21US7l3EmhJwRtQyncjrnWTQB2Qes=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=tyiOc+stHidTrUC/sPn15Hh/mbi8YTgZN29VO9x49ZumLpBtKnWjNA1uiCscv8yIi rC7MbsNT2lD5CeMQVlnSxvvLXm9Z+tZPP+aoBtct5//6bAsh2h/zFfq52ZjNzDMW08 ZG3JIvLJahv+Pucf/GEPSMIQU/WSKZthGgNYEQdJs4mgUwjfVghNkYLmD4dWVUpbTc PILO0iQR5ai1cpCpsavBrx22gW4EynbcO3Ur8k1XOXpYSkE0m4X9gtOzWYVYXok3WT Lstm9w2zZiIm05mqheeAS4SwukTGiTz4tlVocjt/6/3awH9hYhxutqlodAxEIwjV7k NrirAyTrblKbQ==
Date: Wed, 21 Oct 2026 09:33:14 +0000
To: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
From: Daniel Huigens <d.huigens@protonmail.com>
Message-ID: <2P8KEFYBjKxlIIkKtCPbcnelTJD4_aDiXP74lVH2U0WBNxKrwTQ_DMJLt5lT12W1d4DEzOotlNV3AYkf40JVQs4ia2xVem04NDFnsVX5bAo=@protonmail.com>
In-Reply-To: <87o6cw9v1e.fsf@fifthhorseman.net>
References: <87wlrqaiew.fsf@fifthhorseman.net> <5QUgvpXGVhAYCWWSuDPKwRT5heaSAvuiT2krp3iT8QsoJ957sbs_W7poI-M6ppBtpdmyM1Jxjae167IxsGfW_FJotxCrwBMxSgOv0vXOchQ=@protonmail.com> <87o6cw9v1e.fsf@fifthhorseman.net>
Feedback-ID: 2934448:user:proton
X-Pm-Message-ID: 789b713b5f9573a78be47f8314eba4d95bb80ae8
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Spamd-Bar: ----------------
Message-ID-Hash: 76PFHFRYDGODH3P43HSGOYYATVB3TG2X
X-Message-ID-Hash: 76PFHFRYDGODH3P43HSGOYYATVB3TG2X
X-MailFrom: d.huigens@protonmail.com
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
CC: openpgp@ietf.org
X-Mailman-Version: 3.3.10
Precedence: list
Subject: [openpgp] Re: persistent symmetric key asymmetry between signing/verifying and encryption/decryption
List-Id: "Ongoing discussion of OpenPGP issues." <openpgp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/openpgp/FRwAAugtmIRVNQF2vHYLR70nzF0>
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>

Hi dkg,

> You're assuming that the attacker isn't the person who sent the message,
> right?
> 
> If you're using this as an integrity mechanism, it seems like it fails
> against (at least) the original sender, (...)

Yeah. We're talking about symmetric cryptography here, so the "sender"
and recipient should either be the same person, or trust each other.
If the sender and recipient are different people, and the sender
modifying the message later is within the threat model, then you
cannot achieve security with symmetric crypto and need asymmetric
crypto instead.

> and anyone else who legitimately
> received a copy of the message (and therefore knows the session key
> because they got it from their own PKESK).

Yeah, this is what I tried to say when I wrote:

  If however you encrypt a message to yourself with a PSK and to someone
  else with an asymmetric key, and you don't sign the message, then the
  other person has access to the session key, and could potentially
  (collude with an attacker to) modify your copy in storage. That is
  indeed quite surprising. Then again, in that scenario you probably
  want to sign the message anyway - but you then still need to remember
  to verify that signature when reading your own copy, too.

> > If you need some metadata, you could store that inside the encrypted
> > data (since in this scenario, you probably have control over the
> > plaintext format / data type). We also still have the open question
> > of encryption context [1] that could be helpful in some scenarios.
> 
> But do we need an encryption context to be able to use this
> successfully? it would seem unwise to add new work items that would
> block the PSK work.  i'm trying to figure out how to safely use the
> proposed mechanism with what we already have, and provide adequate
> guidance.

I wasn't trying to propose that we block PSK on that, no.
As long as we don't have additional data, you need to include
the context in the (signed and/or) encrypted data; that's true
both for asymmetrically and symmetrically signed/encrypted data.
Being able to use additional data instead will then be a size
improvement rather than unblocking any use cases. 

> > What is potentially possible, though, is replacing the entire message
> > with an asymmetrically encrypted one. So, in this specific scenario,
> > the consumer would need to check that the message was either signed
> > or encrypted using a PSK (and know that they only encrypted it to
> > themselves).
> 
> It's this temptation to an "either signed or encrypted" shortcut that
> makes me pretty wary.  For one thing, we don't have a clear way to model
> this yet.  when trying to decrypt a ciphertext with a variety of secret
> key material, different implementations vary in the order in which they
> trial decrypt, and how (or even whether) they report which key material
> was used for a successful decryption.
> 
> How would the implementation even know that they only encrypted it for
> themselves?

I think it could be reasonable for an OpenPGP implementation to report
whether the message was symmetrically encrypted. Then, whether that
means anything for the security model of the application is very
application-dependent; only the application can know who has access
to the key.

> Furthermore, how would they know when they did the encryption?  there's
> no "signature creation date" available.

If this is something the application cares about, it should be included
in the plaintext. This is also true for asymmetrically encrypted messages,
strictly speaking, since it's not required to have a signature either,
and even if there is one, the message isn't guaranteed to have been
signed and encrypted at the same time (especially in the absence of
the Intended Recipient Fingerprint subpacket).

> i think given all the different ways that this kind of
> shortcut could fail, we're probably better off giving guidance to avoid
> the shortcut.

I'm not fully sure I agree in general but we should definitely be clear
about the scenarios where it's safe to do so and where it's not, indeed.
I'll propose some guidance.

Best,
Daniel