[openpgp] Re: PQC requires urgent semantic cleanup

Andrew Gallagher <[email protected]> Tue, 2 Dec 2025 17:50:21 +0000
Newsgroups gmane.ietf.openpgp
Message-ID <[email protected]>
Hi, Daniel!

On 02/12/2025 16:53, Daniel Huigens wrote:
> 👋
> 
> To be clear, I'm not claiming that we should keep the
> behavior because the interop test suite says so, but rather because 4-6
> implementations agree with it (depending on the exact case being tested)
> and thus with each other. Another way to phrase that, leaving the test
> suite out of it, is just that most implementations behave consistently
> today, and reversing that requires a strong justification, as the risk
> is that we end up with no consistency rather than implementations
> consistently doing the opposite.

I think there is a strong justification, and it boils down to two 
things: conceptual simplicity and robustness. The conceptual simplicity 
is that only the most recent self-signature is meaningful, so it is 
always equally easy to answer the question "what properties does this 
certificate have?". And robustness comes from the ability to make 
changes through adding new self-signatures and cleaning up old ones, 
without inadvertently breaking old stuff. (It would still be possible to 
break old stuff, for example by removing key flags, but it should be 
more difficult to do by accident, and will be relatively easy to fix 
after the fact by generating another self-signature).

> Then, let's say you decide you don't care about old signatures anymore
> and minimize the cert in Sequoia, ending up with:
> - Primary key generated at t1
> - Second self-signature at t3
> 
> For Sequoia, the new validity period of the cert is t3-now.
> Under draft-signatures, the validity period is t1-now.
> Oops, now signatures created between t2-t3 are also valid while they
> weren't before.

OK, but what are the actual consequences of that? The signatures created 
between t2-t3 were genuine signatures made by the genuine keyholder. The 
only way this would be a problem would be if the keyholder created them 
and then later intentionally rendered them invalid by the indirect 
method of cert minimisation, and relied on that invalidation for some 
security purpose. And for that to be robust, they would need to be 
*absolutely sure* that nobody cached a copy of the deleted selfsigs in 
the meantime.

So it just isn't effective as an intentional construction. It is much 
more likely that the keyholder did it by accident, because they didn't 
understand the consequences of cert minimisation in sequoia.

>> I recall you mentioning expiring revocations elsewhere, but it's not in
>> your previous mail in this thread - that only explicitly mentions
>> expiring primary key binding sigs.
> 
> My opinion is the same, in the sense that it's simplest to implement
> signature expiration consistently (so that it works everywhere).

I'm not convinced by this. Sure, if you do temporal validation in a 
common signature validation function, you only have to write the code 
once. But on the other hand you need to pass a reference time much 
further down the call stack than strictly necessary. And if signature 
expiration time is only meaningful in one or two contexts, you're still 
only writing the code once or twice - just elsewhere...?

> I don't really see why it's the consumer's responsibility to enforce
> that revocation should be permanent. It's true that temporarily revoking
> a key seems a bit silly and pointless, but if the key owner wants to
> do so, what's the risk in allowing it?

The risk is that the key owner didn't actually want to do so. It is such 
a bizarre construction that if it was encountered in the wild, it is 
much more likely to be the result of an accident, or an implementation 
error, than from intent. The key owner thinks they have permanently 
soft-revoked their key, but in reality they haven't, someone encrypts to 
the wrong key, which may have been destroyed in the meantime, and the 
key owner gets fail-to-decrypt. IMO the risk of this is much greater 
than the risk of an implementation not supporting an esoteric use case.

A

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