On 18/02/11 6:12 AM, David Shaw wrote:
...
In terms of the issue that originally started this thread, the proposal to
include and compare the complete fingerprint resolves this attack as well
(slightly better in this case, in fact, since a V3 fingerprint can't even
accidentally collide with a V4 one).
...
That said, however, (and switching over to implementation thoughts here) given
how easy it is to make a V3 DEADBEEF key that collides with a real V4 key, I
wonder if it would also be useful for implementations to simply refuse (or at
least give the option to refuse) to import any V3 keys. That might not have
been feasible 10 years ago, but nowadays, I suspect most people would not even
notice. Standards-wise, that is fine as 4880 does not require V3 (discourages
it, in fact: MUST NOT create, and only MAY accept).
Two thoughts. One is that we're not only dealing with code, we're also
dealing with data:
* People have stored files encrypted to V3 keys (this is to conflate
storage security with transport security, but that was common thinking
in PGP world).
* typically, people have expected things like digital signatures
masquerading as human signatures to survive a long time.
* some standards require 30 years of technology lifetime.
Secondly, isn't the argument more about ditching the Key ID approach?
If we set up the new way to use only full fingerprints, then any
imported V3 keys can be indexed on that basis.
iang
PS: I agree with the "must not generate V3 keys" part. Is it possible
to widen that with "must not sign or export or encrypt using V3 keys."
And possibly offer an upgrade mode "implementations may re-package V3
keys in V5 format." Dunno, just whiteboarding here...