My public key block appears different on keyservers

Daniel Kahn Gillmor dkg at fifthhorseman.net
Thu Jul 2 15:07:43 CEST 2009


On 07/02/2009 08:36 AM, Matt Gantner wrote:
> I am still curious however and wonder if anyone has a theory why these
> public keys change depending on the key server?

What you're referring to as a "public key" is actually a compound
certificate which contains a public key and (potentially many)
associated certifications.  Internally, the certificate structure
usually looks something like this:

Primary public key (pub)
+--User ID A
|  +---signature certifying that "User ID A" belongs with pub
|  +---another signature certifying the same thing
|  +---self-signature (by pub, over "A") including keyholder preferences
|  +---[more sigs ...]
|
+--User ID B
|  +---signature certifying that "User ID B" belongs with pub
|  +---another signature certifying the same thing
|  +---self-signature (by pub, over "B") including keyholder preferences
|  +---[more sigs ...]
|
+--Public key of subkey (sub)
   +---Binding signature by pub (certifies that sub belongs to pub)


Different keyservers may have gotten different User IDs, different
signatures, and different subkeys associated with this particular
compound certificate at different times.  And certain kinds of
re-orderings within the certificate leave the certificate semantically
unchanged.  For example "User ID A" and all of its dependent signatures
could be placed after "User ID B" without changing the meaning of the
cert.  Also, signatures associated with any single User ID or subkey can
be re-ordered without changing the semantic content of the cert.

If you're interested in exactly what is in the certificates you've
downloaded, to see what the underlying differences are, you can use
GnuPG to get a more human-readable form:

 gpg --list-packets < cert-from-keyserver0.gpg
 gpg --list-packets < cert-from-keyserver1.gpg

The content of this output is still fairly complicated, but it's nothing
that you won't be able to figure out by doing some serious digging
through RFC 4880:

 http://tools.ietf.org/html/rfc4880


So the two compound certificates received may have different orderings
of their internal elements, and some may even be missing some elements
that others have (e.g. if a particular signature has not propagated from
one keyserver to another yet).

I think this could explain significant differences between the files
you've downloaded from different keyservers.

I hope this explanation is useful (and happy as always to receive
corrections or clarifications if i've mixed anything up).

Regards,

	--dkg

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 890 bytes
Desc: OpenPGP digital signature
URL: </pipermail/attachments/20090702/feed1a77/attachment.pgp>


More information about the Gnupg-users mailing list