same key or RFC misinterpretation?

Jason Harris jharris@widomaker.com
Wed Mar 12 21:50:01 2003


--svExV93C05KqedWb
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable


With JHpatch2 for pks, I'm comparing raw pubkey packets to disambiguate
keys (if other things are similar).  One of the first of the following
two keys popped out as a new key when merging a GPG-imported (specifically,
with signature-matched subkeys - don't ask if you don't know...) version
of my own keydump.  Notice the subkey is valid on the third key - I
just happened to search by name and saw the third key.  On the unimported
dearmored keys, GPG reports:

pub  1024D/CF10B59A 1998-04-16 Marco Herten <marco duesseldorf.de>
     Key fingerprint =3D 4CBA E07C 8BF6 950E 32A9  0BE6 52D4 805F CF10 B59A
sig-        3D861FAB 1998-04-16   Marco Herten <marco duesseldorf.de>
sub  2048g/2DEC55D9 1998-04-16
     Key fingerprint =3D FF0A 9E36 0C01 3886 1E58  4DB8 3F12 0122 2DEC 55D9
sig-        3D861FAB 1998-04-16   Marco Herten <marco duesseldorf.de>

pub  1024D/CF10B59A 1998-04-16 Marco Herten <marco duesseldorf.de>
     Key fingerprint =3D 4CBA E07C 8BF6 950E 32A9  0BE6 52D4 805F CF10 B59A
sig-        3D861FAB 1998-04-16   Marco Herten <marco duesseldorf.de>

pub  1024D/3D861FAB 1998-04-16 Marco Herten <marco duesseldorf.de>
     Key fingerprint =3D A55D 1EE9 BDA9 0D19 27FB  D98A 0B0B 39C5 3D86 1FAB
sig!        3D861FAB 1998-04-16   Marco Herten <marco duesseldorf.de>
sub  2048g/2DEC55D9 1998-04-16
     Key fingerprint =3D FF0A 9E36 0C01 3886 1E58  4DB8 3F12 0122 2DEC 55D9
sig!        3D861FAB 1998-04-16   Marco Herten <marco duesseldorf.de>


The pubkey packets (for the first two keys) differ by +1 (0x9f + 1 =3D 0xa0=
):

9c9
< 00000080  db a0 94 0d 65 26 4d fd  22 49 4b 00 a0 5f bd c0  |....e&M."IK.=
._..|
---
> 00000080  db a0 94 0d 65 26 4d fd  22 49 4b 00 9f 5f bd c0  |....e&M."IK.=
._..|

which pgpdump says is due to the size of q (must be 0, and in the leading
bit):

6c6
<       DSA q(160 bits) - 5f bd c0 de a2 b7 2a a3 5a 92 b4 91 7d 53 50 7e 5=
f a1 d7 9f=20
---
>       DSA q(159 bits) - 5f bd c0 de a2 b7 2a a3 5a 92 b4 91 7d 53 50 7e 5=
f a1 d7 9f=20

pks normally agrees with GPG on fingerprints, but searching for Marco Herten
on keyserver.kjsl.com reports:

pub  1024D/2C85A7B0 1998-04-16 Marco Herten <marco duesseldorf.de>
     Key fingerprint =3D 8E23 606A 6D88 31DB 832A  A469 7CA0 D9D1 2C85 A7B0
New!  attempt to lookup keyholder on biglumber.com.
sig  0x10  3D861FAB 1998-04-16  Marco Herten <marco duesseldorf.de>
sub  2048g/2DEC55D9 1998-04-16
     Key fingerprint =3D FF0A 9E36 0C01 3886 1E58  4DB8 3F12 0122 2DEC 55D9
sig  0x18  3D861FAB 1998-04-16 [invalid signer? corrupted signature?]
  __________________________________________________________________________

pub  1024D/CF10B59A 1998-04-16 Marco Herten <marco duesseldorf.de>
     Key fingerprint =3D 4CBA E07C 8BF6 950E 32A9  0BE6 52D4 805F CF10 B59A
New!  attempt to lookup keyholder on biglumber.com.
sig  0x10  3D861FAB 1998-04-16  Marco Herten <marco duesseldorf.de>
  __________________________________________________________________________

pub  1024D/3D861FAB 1998-04-16 Marco Herten <marco duesseldorf.de>
     Key fingerprint =3D A55D 1EE9 BDA9 0D19 27FB  D98A 0B0B 39C5 3D86 1FAB
New!  attempt to lookup keyholder on biglumber.com.
sig  0x10  3D861FAB 1998-04-16  [selfsig]
sub  2048g/2DEC55D9 1998-04-16
     Key fingerprint =3D FF0A 9E36 0C01 3886 1E58  4DB8 3F12 0122 2DEC 55D9
sig  0x18  3D861FAB 1998-04-16 [keybind]


but the first two keys are still considered the same by GPG even after
an import:

pub  1024D/CF10B59A 1998-04-16 Marco Herten <marco@duesseldorf.de>
     Key fingerprint =3D 4CBA E07C 8BF6 950E 32A9  0BE6 52D4 805F CF10 B59A
sig-        3D861FAB 1998-04-16   Marco Herten <marco@duesseldorf.de>

pub  1024D/3D861FAB 1998-04-16 Marco Herten <marco@duesseldorf.de>
     Key fingerprint =3D A55D 1EE9 BDA9 0D19 27FB  D98A 0B0B 39C5 3D86 1FAB
sig!        3D861FAB 1998-04-16   Marco Herten <marco@duesseldorf.de>
sub  2048g/2DEC55D9 1998-04-16
     Key fingerprint =3D FF0A 9E36 0C01 3886 1E58  4DB8 3F12 0122 2DEC 55D9
sig!        3D861FAB 1998-04-16   Marco Herten <marco@duesseldorf.de>


FWIW, pgpring (-f displays fingerprints), calculates them the same as pks:

pub:q:1023:17:7CA0D9D12C85A7B0:1998-04-16::::Marco Herten <marco duesseldor=
f.de>:
fpr:::::::::8E23606A6D8831DB832AA4697CA0D9D12C85A7B0:
sub:q:2047:16:3F1201222DEC55D9:1998-04-16::::Marco Herten <marco duesseldor=
f.de>:
fpr:::::::::FF0A9E360C0138861E584DB83F1201222DEC55D9:
pub:q:1023:17:52D4805FCF10B59A:1998-04-16::::Marco Herten <marco duesseldor=
f.de>:
fpr:::::::::4CBAE07C8BF6950E32A90BE652D4805FCF10B59A:
pub:q:1023:17:0B0B39C53D861FAB:1998-04-16::::Marco Herten <marco duesseldor=
f.de>:
fpr:::::::::A55D1EE9BDA90D1927FBD98A0B0B39C53D861FAB:
sub:q:2047:16:3F1201222DEC55D9:1998-04-16::::Marco Herten <marco duesseldor=
f.de>:
fpr:::::::::FF0A9E360C0138861E584DB83F1201222DEC55D9:


RFC 2440 (bis-06) says:

  A V4 fingerprint is the 160-bit SHA-1 hash of the one-octet Packet
  Tag, followed by the two-octet packet length, followed by the entire
  Public Key packet starting with the version field.  The key ID is


Which is the correct method?

--=20
Jason Harris          | NIC:  JH329, PGP:  This _is_ PGP-signed, isn't it?
jharris@widomaker.com | web:  http://jharris.cjb.net/

--svExV93C05KqedWb
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (FreeBSD)

iD8DBQE+b52nSypIl9OdoOMRAr/dAKCHxB0SrvHnX/5qPX73s4RGCity6ACgrKfI
BiCzsSXEngbVQnLCcNVAItM=
=D6wK
-----END PGP SIGNATURE-----

--svExV93C05KqedWb--