[openpgp] Re: SEIPDv1 algorithm obfuscation when using persistent symmetric keys

Daniel Huigens <d.huigens@protonmail.com> Tue, 10 February 2026 14:04 UTC

Return-Path: <d.huigens@protonmail.com>
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 E033EB4B8FCE for <openpgp@mail2.ietf.org>; Tue, 10 Feb 2026 06:04:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.796
X-Spam-Level:
X-Spam-Status: No, score=-2.796 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=protonmail.com
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 kdFnC0Pw5xpL for <openpgp@mail2.ietf.org>; Tue, 10 Feb 2026 06:04:18 -0800 (PST)
Received: from mail-24417.protonmail.ch (mail-24417.protonmail.ch [109.224.244.17]) (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 1D2FCB4B8B4C for <openpgp@ietf.org>; Tue, 10 Feb 2026 06:02:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1770732166; x=1770991366; bh=sNp6z6eL+8yxkJP/lHYX+IglajB3KueAvsDHuny5eCA=; h=Date:To:From:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=g19AyP/VFTSivk+1Tk0nlFYS8P4WYtW5amwQZBT9hzk0a5ni3uFs9BpIBnoS1qM0P VhVU4/tMxqmOkcgXim4GrhAHD9WsIottMpI25KzD1gMjM6PrC0nhsfVhy+ax5FgiMK hNkElULecNtIHxZCFXNsEGr0Uzcs8+e1j2pB5GaabHwg018fjP+k1Vb10rmRJ8Vs3H DhsMMyyIVNsOdrLyj+dvmVjCzZOo2jTMdXoCW+krjppnKxmN8TyKZrY4zP1PD1dFhF ttWSWkJ8GtGd3Xqf2bFPtJMZS75ygMdDsN02WTOa8cCVgx7INDHshzHiWAuHQPiNKa tNoA2zJkOs6sQ==
Date: Tue, 10 Feb 2026 14:02:44 +0000
To: IETF OpenPGP WG <openpgp@ietf.org>
From: Daniel Huigens <d.huigens@protonmail.com>
Message-ID: <1-WHKToLVe62A-6conl4dv9QRdQJFEBQiK6K7KmGylWSlgjlUevQz8xvEdTr7__mCDJKo4UzxQpFuV7ScYnQEwefp5CZZjLCr4QocDAj5fw=@protonmail.com>
In-Reply-To: <bjPZ8UJ_FSaCQGBoQyNY9UKBPeAGYvjKXNgnAAS3o2tH3EDfJ72huCjlRApuD2DYG3C3HC_dunAAIQupQ6tYYPKlvwyKY8rzD2MlK2D3ZNM=@protonmail.com>
References: <bjPZ8UJ_FSaCQGBoQyNY9UKBPeAGYvjKXNgnAAS3o2tH3EDfJ72huCjlRApuD2DYG3C3HC_dunAAIQupQ6tYYPKlvwyKY8rzD2MlK2D3ZNM=@protonmail.com>
Feedback-ID: 2934448:user:proton
X-Pm-Message-ID: 1e6006aa4bc54420eed39e4b615d42d199bb0340
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Message-ID-Hash: 4SW5OXBR437XK2ECKTDPKGO4X6WFF5Y2
X-Message-ID-Hash: 4SW5OXBR437XK2ECKTDPKGO4X6WFF5Y2
X-MailFrom: d.huigens@protonmail.com
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: SEIPDv1 algorithm obfuscation when using persistent symmetric keys
List-Id: "Ongoing discussion of OpenPGP issues." <openpgp.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/openpgp/JKvkXVo_ORTBO20I-h5O-XxjfEs>
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 all,

Due to the cacaphony of opinions on the list, I went with the option
that seemed most reasonable to me: I've added the SEIPDv1 algorithm ID
inside the encrypted session key, like ECDH and RSA do, but I've not
added the option of padding (unlike ECDH), as I don't think it's widely
used anyway. Let me know if there are any objections to this.

I've also published an updated draft (-03), with updated test vectors.
We have experimental implementations in OpenPGP.js and rpgp which now
interoperate properly :)

Best,
Daniel


On Monday, January 26th, 2026 at 18:42, Daniel Huigens <d.huigens@protonmail.com> wrote:

> Hi all,
> 
> In the meeting today I said that for v3 PKESKs using a persistent
> symmetric key, we should add a cleartext symmetric algorithm ID
> indicating the algorithm used by the following SEIPDv1 packet,
> like we did in X25519 and X448.
> 
> In those algorithms, we also mandated for this algorithm to be AES,
> to prevent algorithm confusion attacks. However, in the case of
> persistent symmetric keys, there is actually a use case for allowing
> other algorithms, namely if you're re-encrypting session keys of old
> messages that use a different algorithm. So, we should make sure that
> the algorithm ID is covered by the integrity tag, either by adding it
> to the HKDF info or additional data, or by just encrypting it together
> with the session key, as we do in ECDH and RSA.
> 
> The latter may be preferable in this case, because we may not want to
> reveal if a message is encrypted using IDEA or TripleDES or so, in case
> one of those algorithms is ever broken. There's also no significant
> downside to doing so as AEAD algorithms accept any plaintext length,
> unlike AES-KW.
> 
> In addition to that, ECDH allows you to hide the session key length
> using padding, to prevent distinguishing between AES-128 and AES-256,
> for example. Is that something we should care about here? If so,
> we could allow padding the session key with zeros, or so.
> 
> (I don't personally think that that's super important, but I'd hate for
> someone to claim that symmetrically re-encrypting a session key is ever
> a downgrade, for example.)
> 
> Best,
> Daniel
>