[openpgp] Component key validity should never have "holes" , was Re: PQC requires urgent semantic cleanup

Heiko Schäfer <[email protected]> Tue, 02 Dec 2025 20:48:48 +0000
Newsgroups gmane.ietf.openpgp
Message-ID <[email protected]>
Hello all,

following this train of thought, I want to propose (for discussion) the 
principle that the validity of a certificate and its subkeys should 
always be contiguous, and never have "temporal holes".


The validity of a component key always have a lower bound (it definitely 
never extends earlier than its creation time). Let's put aside hard 
revoked keys, which are never temporally valid.

I think that all component keys should *by definition* be valid from 
their creation time either until infinity, or up to *one* temporal end 
point (this *single* end point being caused by either the "last" key 
expiration time or the "earliest" key revocation time).

I believe that any semantics clarifications should uphold this principle 
of contiguous component key validity.


Because as soon as we allow temporal "holes", we will always require 
retaining "n" (or "2n", depending on the exact mechanism) binding 
signatures for any component key that has "n" validity holes.
If we were serious about upholding such temporal semantics, we would 
need to strive to distribute *all of these signatures* to *any user* who 
ever wants to interact with that certificate, *in perpetuity*.
To be defensive, all implementations would need to merge any signature 
packets they learn of into their copy of the certificate, and either not 
minimize signatures at all, or be extremely careful about which 
signatures can be elided without changing any validity semantics.

This seems hard, dangerous and brittle. I believe it would be a *very 
bad* trade-off to try and obtain any "validity hole" semantics. The 
ecosystem cost of the complexity and the DOS-ability that flows from it 
outweighs any utility I can imagine. By orders of magnitude.


Of course I agree that someone might have gotten the idea that OpenPGP 
allows such semantics.
It would definitely have been better to clarify this question in the WG 
years ago. But the next best time for such a clarification - I think - 
is now.

Thanks,
:) Heiko

PS: I don't think we should get into in the business of modeling 
Schrödinger's private key material compromise with general-purpose 
OpenPGP semantics (as in your Yubikey example).
If some application wants to model validity of component keys during 
even minutes, but not during odd minutes (and maybe also not during full 
moon), then I think it should specify an application-specific notation, 
and model its unusual requirements in that confined context.


On 12/2/25 9:02 PM, Daniel Huigens wrote:
> So - a lot of this discussion hinges on whether it's useful to do a
> temporary revocation.
>
> I don't really want to claim that it is useful, but what if someone
> _thought_ it's useful: let's say, for example, that someone goes on
> vacation for a month, and leaves their YubiKey at home. The neighbors
> have a key (of the variety that opens a door), so they revoke the
> OpenPGP key for a month. If they come back and see the YubiKey still
> in place, they may be confident that the key material is still secure,
> but it may theoretically have been used to sign emails on their behalf
> in the past month.
>
> Now - we may argue about whether that's a valid use case or not, but
> according to the straightforward reading of RFC9580, it's possible
> today. So, someone may have done it, so we should be careful about
> breaking it.
>
> Combined with the scenario I described before, this would result in
> an actual problem if the maliciously created signatures then become
> valid.
>
> Best,
> Daniel
>
> _______________________________________________
> openpgp mailing list -- [email protected]
> To unsubscribe send an email to [email protected]

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