Bugzilla – Bug 6614
GT Proxy Certificates should use random serial number to prevent predictable certificate contents
Last modified: 2009-01-12 09:43:41
You need to
before you can comment on or make changes to this bug.
This bug applies to both the C and Java sides of Globus. I assigned it to GSI C
There have been successful attacks recently against X.509 certificates signed
using MD5 hash algorithms (see http://www.win.tue.nl/hashclash/rogue-ca/).
While GT should move away from MD5 hashes (see Bug 6613), another thing that
would help against this attack and other future similar attacks would be is if
GT proxy certificates had contents that were unpredictable by the attacker.
More details can be found in the following thread:
It appears today that GT does indeed use a hash of the public key, meaning the
serial number is total predictable by the attacker. A resonance improvement
would seem to be introducing randomness into the serial number of the proxy
certificate, hence make these type of hash collision attacks harder or
RFC 3820 gives a good deal of flexibility in this regard:
The serial number of a Proxy Certificate (PC) SHOULD be unique
amongst all Proxy Certificates issued by a particular Proxy Issuer.
However, a Proxy Issuer MAY use an approach to assigning serial
numbers that merely ensures a high probability of uniqueness.
For example, a Proxy Issuer MAY use a sequentially assigned integer
or a UUID to assign a unique serial number to a PC it issues. Or a
Proxy Issuer MAY use a SHA-1 hash of the PC public key to assign a
serial number with a high probability of uniqueness.
Questions to be answered:
1) Does anything depend on the current predictability of the serial numbers
today? AFAIK, nothing does.
2) How should the randomness be introduced? Keeping some guarantee of
uniqueness would seem to be a good thing. RFC 3280 and RFC 5280 indicate serial
numbers of up to 20 octets are acceptable, so we would seem to have plenty of
room to work with here and we could use a 16-byte random UUID (e.g. a version 4
UUID as defined by RFC 4122 - http://tools.ietf.org/html/rfc4122).