Vermoedelijk heeft iemand een vinger in de lucht gehouden en gezegd "64 bits randomness is meer dan genoeg om hash-clash aanvallen te pareren en maakt tegelijkertijd certificaatbestanden niet onnodig groot". Toen heeft een idioot opgeschreven dat het om een non-negative integer van minstens 64 bits moet gaan, en ofwel geen enkele reviewer heeft daar bezwaar tegen gemaakt, ofwel een nog grotere idioot heeft besloten om niets met dat commentaar te doen. Precies aan deze eis voldoen de gewraakte certificaten, want in een signed integer van 64 bits is 1 bit het "sign-bit". En als je eist dat deze getallen "signed" zijn, heeft dat bit altijd dezelfde waarde en draagt dus niet bij aan de randomness.
Dat geloof ik niet.
Eerder heeft iemand RFC5280 gelezen en gedacht dat sindsdien alweer jaren waren verstreken en gezien dat niet alle certificaatverstrekkers aan RTFi doen ('Read The F.... instructions/requirements).
Hierdoor neemt het risico op kwetsbaarheid toe, enerzijds vanwege die nalatigheid en anderzijds wegens toename van kennis en hardwaresnelheid van hacktools.
Ook zal men zich toen hebben gerealiseerd hoe er voor MD5 en SHA1 opeens veel sneller een collision kon worden gevonden. En dat zoiets op elk ogenblik met elke hash zou kunnen gebeuren. Dus ook met SHA256.
En dat dit zou kunnen leiden tot misbruik van namaakcertificaten op nepsites.
En dat er kwaadwillende partijen kunnen zijn die een gevonden hack op SHA256 niet meteen naar buiten zullen communiceren, maar het zelf kwaadaardig uitbuiten.
Het enige wat dan (aanvankelijk) nog enigszins hiertegen zou kunnen beschermen, is de mate van complexiteit van de hash-operand. Dit wil dus zeggen: de (verplichte) lengte van het serienummer.
Want dit bemoeilijkt normaalgesproken het vinden van een collision, oftewel verlengt de gemiddelde tijdsduur van het vinden/berekenen van een hash-collision (al of niet met een wat versnellende crack) aanzienlijk.
Conform RFC5280 heeft men daarom
in 2017 blijkbaar nog eens in de Basic Requirements benadrukt dat serienummers toch echt uit
minimaal 64 random bits moeten bestaan.
En voor wat betreft het signbit gaf RFC5280 destijds al aan:
CAs MUST force the serialNumber to be a non-negative integer, that is, the sign bit in the DER encoding of the INTEGER value MUST be zero. This can be done by adding a leading (leftmost) `00'H octet if necessary.
This removes a potential ambiguity in mapping between a string of octets and an integer value.
Hieruit blijkt afdoende dat het de bedoeling was dat het signbit zelf geen deel uitmaakt van de 64 bits,
maar een apart item is als een octet (=byte) '00H' die aan het 64 bits-serienummer vooraf gaat.
Dit in een poging om (zoals het RFC-document zegt) dubbelzinnigheid ('ambiguity') te vermijden
voor wat betreft welk deel bij het (64-bits) serienummer hoort en wat de sign moet voorstellen.
Zolang DarkMatter zelf certificaten uitgeeft, is zo'n random nummer totaal irrelevant, want dit hebben zij zelf onder controle.
Lastiger dan je denkt. Om te beginnen hoeven serienummers alleen uniek te zijn binnen één en dezelfde CA.
4.1.2.2 Serial number
The serial number is an integer assigned by the CA to each certificate.
It MUST be unique for each certificate issued by a given CA
(i.e., the issuer name and serial number identify a unique certificate).
Kan je nog tegenwerpen dat Darkmatter vast wel certificaten met een andere issuernaam zou kunnen genereren.
Maar ten eerste is dit niet toegestaan, en ten tweede zet Darkmatter dan (á la Diginotar) alle privileges en respect op het spel zodra wordt ontdekt dat ze hiermee sjoemelen.
Daarentegen is het aantonen dat het kraken van de SHA2 hash kan worden bespoedigd en een gevaar zou kunnen opleveren voor ssl-certificaten niet strafbaar.
Doemdenker ben ik overigens niet, zoals gezegd volg ik je een heel eind. Ik ben in ieder geval met je eens dat er momenteel nog geen acuut security gevaar is. Maar niemand weet wat de (nabije?) toekomst hierin wel of niet zal veranderen,
want het is onvoorspelbaar wanneer precies kwetsbaarheden in een hash worden ontdekt.
Verder hebben regels en afspraken een achtergrond waar over is nagedacht (ook al doorzien wij dit niet altijd meteen)
en zijn dan ook bedoeld om te handhaven.
Ik verwacht eerlijk gezegd dan ook dat Mozilla Firefox binnenkort zal aanpassen om op deze certificaten te attenderen,
en ze na verloop van tijd zal verbieden.(blokkade met foutmelding vanuit de browser)
Tegen deze achtergrond vind ik het wel plausibel en verstandig om zulke certificaten toch maar voortijdig te vervangen.
De vraag is overigens of en in hoeverre falende certificaatautoriteiten dit niet behoren te vergoeden,
omdat ze zelf in gebreke waren door zich niet aan de gestelde requirements te houden.