[openpgp] Re: on the risks of AEAD as signature [was: Re : draft-ietf-openpgp-persistent-symmetric-keys-02.txt]

Andrew Gallagher <[email protected]> Thu, 13 Nov 2025 10:24:13 +0000
Newsgroups gmane.ietf.openpgp
Message-ID <[email protected]>
Hi, Falko.

On 13/11/2025 09:24, Falko Strenzke wrote:
> We have written a short report about the applicability of MKC against 
> OpenPGP: https://github.com/crypto-security-tools/openpgp-mkc/releases/ 
> download/v1.0/openpgp-mkc.pdf
> 
> I have already summarised the basic conclusion below. However, there are 
> some other subtle aspects that the report covers, such as looking at 
> other uses of AEAD in OpenPGP.

Thanks for this! I have a concern about the hypothetical attack against 
SEIPDv1 described in section 5 though - this appears to only work if an 
implementation supports a hybrid but otherwise literal reading of 
SEIPDv1 from RFC4880 *and* the padding packet from RFC9580, which I 
think is an unlikely combination.

To recap, RFC4880 requires the plaintext contents of SEIPDv1 to be 
terminated with an MDC packet containing the modification detection 
code. If we were to apply RFC9580's padding requirement "MUST accept 
padding at any position" directly to the definition of SEIPDv1 from 
RFC4880, then yes it would appear to be possible to hide trailing 
parasitic data in a padding packet.

But RFC9580 also redefines SEIPDv1 to exclude the MDC packet from the 
"content" of the encrypted data, and instead defines it as part of the 
enclosing SEIPDv1 packet. This results in the same overall wire format 
under normal usage, but means that a conformant RF9580 implementation 
cannot accept a padding packet after the MDC, because the MDC is no 
longer considered part of the packet sequence. This effectively 
sidesteps the rule that padding packets may be placed "anywhere".

Either way, I think it is highly unlikely that an implementer following 
either specification would have intentionally written code that detects 
and silently ignores a padding packet in this particular context. A 
legacy receiving implementation would have to process an MDC packet 
before it detected the final block of the encrypted bytestream, which is 
an impossible scenario under RFC4880 and therefore unlikely to have been 
explicitly handled. And a fresh implementation based solely on RFC9580 
would not consider the MDC to be part of the packet sequence at all.

So I think we can also discount this attack scenario in practice.

Thanks again!

A

_______________________________________________
openpgp mailing list -- [email protected]
To unsubscribe send an email to [email protected]