Retaining expired sigs

Jason Harris jharris at
Sat Mar 19 06:22:54 CET 2005

On Fri, Mar 18, 2005 at 02:37:33PM -0500, David Shaw wrote:
> On Fri, Mar 18, 2005 at 02:06:46PM -0500, Jason Harris wrote:

> > My point is that once GPG sees a newer signature that overrides an
> > older one, it can safely remove the older one, in all cases, in the
> > interest of keeping keys clean.  (Of course, the newest sig. should
> > be valid, and the older sigs should be checked for validity as well,
> > lest we run into a long keyid collision.)
> I don't disagree with this.  It's not unreasonable to remove them, but
> it doesn't happen that way today.  The problem at hand was expired
> sigs, so that is what I addressed.
> Removing superceded signatures, however, re-raises the semantic
> questions I asked in my last mail.  What algorithm runs first: the
> "remove superceded" or "remove expired"?  Depending on which runs
> first, you can get a different result.

Indeed, why is why the correct answer is:

  c) Always keep the latest (valid) signature from a given issuer, even if
     it has expired.

Sigs (esp. revocations) with targets should always be kept, too, lest
their targets resurface alone and therefore unmodified.

> > > It gets messy very fast: if I sign a key with no expiration, then sign
> > > it again with an expiration, then the second signature expires - is my
> > > original signature still valid?  Maybe I actually revoked the first
> > 
> > By your own explanation above, no.
> But should it be?  My point is not to say that such-and-such is the
> answer.  My point is to say that it is not at all clear what the
> answer should be.  I may take some time this weekend and run a few
> test cases against other OpenPGP implementations to see what they do.

Hopefully they will behave as I describe above.

> > Therein lies the problem:  GPG, by removing expired signatures
> > (at all), is removing history.  As you point out, this can lead
> > to problems when the expired signatures are no longer available
> > to supercede earlier, unexpired signatures.
> Only if the right behavior is that expired signatures *should*
> supercede earlier, unexpired signatures.

Per draft-ietf-openpgp-rfc2440bis-12.txt, section, I think
the intent is clear that an expired selfsig on a userid is the same
as a revoked selfsig on a userid.  There is no reason for this not
to apply to non-selfsigs as well.

Section "0x30: Certification revocation signature" mentions (non-
targetted) 0x30 revocations as applying to "an earlier" sig.  It
also says: "The signature should have a later creation date than
the signature it revokes."  I believe it is generally understood
that "all earlier" sigs are affected by non-targetted 0x30 sigs.

Section (non-revocable flag/subpacket) is very specific
that no revocations apply to non-revocable signatures.  However,
it mentions nothing of non-revocable sigs being superceded.

(Gah!  "key holder" and "keyholder" are both used in the draft.)

> If the answer is that expired signatures should supercede, then the
> current implementation of the expired sigs filter is insufficient - it
> needs to remove the earlier sigs as well to avoid re-awakening an old

Actually, GPG needs to retain the latest valid sig., even if it has
expired, so that it will be around to take precedence over older sigs.

> signature.  If the answer is that expired signatures should not
> supercede, then the current implementation is correct.
> Which do you favor (and why)?  Does every sig stand alone, or can sigs
> only be interpreted in terms of a series?
> I vaguely lean towards the idea that expired signatures should not
> supercede earlier unexpired signatures (the "sigs stand alone"
> answer), but only vaguely.  I find the simplicity of it attractive.
> Interpreting sigs in a series raises a number of dangerous problems,
> like what happens when a sig is "unrevoked" by an attacker by removing
> packets from the key.

I think it is understood that pubkeys and subkeys cannot be unrevoked
after being revoked and non-revocable signatures cannot be revoked
after being created, but otherwise anything can be superceded.

The RFC fails to directly address the issue of a non-revocable sig.
being superceded by a revocable one which is then revoked, however.
In the strictest sense, non-revocable sigs cannot be undone, period,
by any mechanism.  This is certainly needed when a selfsig specifies
a designated revoker, but I think it is good to treat all other non-
revocable sigs as "backups" or "fallbacks" that can be superceded
temporarily but always return as "standing orders" until superceded

If this is not (to be) the case, then non-revocable sigs should really
be called "non-modifiable" sigs.

Jason Harris           |  NIC:  JH329, PGP:  This _is_ PGP-signed, isn't it?
jharris at _|_ web:
          Got photons?   (TM), (C) 2004
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 309 bytes
Desc: not available
Url : /pipermail/attachments/20050319/fcbffd97/attachment-0001.pgp

More information about the Gnupg-users mailing list