Door Acrimony: Door Bitwiper: Als Mozilla zich daar zelf niet aan hoeft te houden, waarom moeten gebruikers van PKI Overheid certificaten dat dan wel? Complete onzin dit.
Het lijkt mij dat er andere eisen gesteld worden aan code signing certificaten dan aan Web PKI certificaten.
Er zijn verschillen tussen TLS server certificaten en code signing certificaten, maar de reden om CSP's (Certificate Service Providers), vóór ondertekening, een random waarde aan een certificaat te laten toevoegen, is voor elk certificaat hetzelfde.
Dat is namelijk om te voorkomen dat, indien een aanvrager een hash collision gevonden heeft, deze kan bewerkstelligen dat die hash-waarde in de digitale handtekening van de CSP onder het certificaat zal worden gebruikt. Daarmee kan de aanvrager een ander certificaat maken dat geldig is omdat de handtekening van de CSP hetzelfde is (en klopt). Dit wordt uitgelegd in
https://cabforum.org/2016/03/31/ballot-164/. Met andere woorden:
als een random waarde (ongeacht of deze in het serienummer zit of ergens anders in de te ondertekenen blob) belangrijk is, zou dat m.i. voor alle soorten digitale certificaten moeten gelden. En
als die random waarde uit tenminste 64 bits zou moeten bestaan (los van het feit dat ik nergens kan vinden waarom 64 en niet meer of minder), dan zie ik niet in waarom dat niet voor alle soorten digitale certificaten zou moeten gelden.
De laatstgenoemde ballot leidde overigens tot de volgende wijziging in nieuwe Baseline Requirements:
“Effective September 30, 2016, CAs SHALL generate Certificate serial numbers greater than zero (0) containing at least 64 bits of output from a CSPRNG.”
M.b.t. concrete eisen aan code signing certificaten, het volgende.
Het CABforum heeft een voorstel geschreven (
https://cabforum.org/wp-content/uploads/Code-Signing-Requirements-2015-11-19.pdf) waarin het m.b.t. de eisen aan het serienummer verwijst naar de "Baseline Requirements" (zie
https://cabforum.org/baseline-requirements-documents/). Bij de stemming daarvoor is dit voorstel echter afgewezen (
https://cabforum.org/2015/12/17/ballot-158/), naar verluidt omdat "some forum members felt code signing was not in scope with the Forum’s charter" (zie
https://casecurity.org/2016/07/20/minimum-requirements-for-code-signing-certificates/).
Daarna heeft de "CA Security Council" dat document alsnog aangenomen als standaard (
https://casecurity.org/wp-content/uploads/2016/09/Minimum-requirements-for-the-Issuance-and-Management-of-code-signing.pdf), met de opmerking "Microsoft also supports the document and has added the requirement to use the new standard for code signing certificates by February 1, 2017" (
http://social.technet.microsoft.com/wiki/contents/articles/31633.microsoft-trusted-root-program-requirements.aspx).
Vanuit de pagina met laatstgenoemde URL verwijst Microsoft in 3.14, via
https://aka.ms/csbr (ik heb http in https veranderd) weer naar
https://casecurity.org/resources/:
[...]
3. Continuing Program Requirements
[...]
14. Effective February 1, 2017, any CA enrolled in the program that issues certificates capable of being used for code signing must adopt the Minimum Requirements for the Issuance and Management of Publicly Trusted Code Signing Certificates published by the CAB Forum Code Signing Working Group (available at http://aka.ms/csbr). Each CA must make the necessary changes to its CP/CPS documents and provide evidence to Microsoft that it has made the change and implemented the required process updates.
[...]
Dat lijk mij een niet te negeren standaard dus. Uit
https://casecurity.org/wp-content/uploads/2016/09/Minimum-requirements-for-the-Issuance-and-Management-of-code-signing.pdf:
Version 1.1 (September 22, 2016)
Code Signing Working Group*
Minimum Requirements for the Issuance and Management of Publicly-Trusted Code Signing Certificates
* This document was developed by the following members of the CA/Browser Forum Code Signing Working Group: Comodo, DigiCert, Entrust, GlobalSign, Izenpe, Microsoft, Symantec, SSC, and WoSign. It was not adopted by the Forum, but is presented here for publication.
This work is licensed under the Creative Commons Attribution 4.0 International license.
[...]
3. References
As specified in the Baseline Requirements. Cross-references to Sections of the Baseline Requirements are notated with the letters “BR”, as in “BR Section 1.2.”
[...]
9.6 Certificate Serial Number
As specified in BR Section 7.1.
[...]
Met andere woorden, voor de eisen aan het serienummer verwijst ook dit document naar de "Baseline Requirements" van het CA/Browser Forum.
Mozilla houdt zich hier duidelijk niet aan, ook niet bij de uitgifte van end-entity code signing certificaten. Eerder en gisteravond heb ik een stel Firefox add-ons/extensions gedownload (die bijv. overboekingen zouden kunnen manipuleren tijdens internetbankieren, en waarvan het dus op z'n minst noodzakelijk is dat je weet wie die extensie gemaakt heeft - los van of die partij betrouwbaar is). De resultaten:
Serienummer (hex)| Cert geldig tot | Cert geldig vanaf | Add-on/extensie
----------------------------------------------------------------------------------
157d8534271fdcb7 | 20200127 00:05:05 | 20190127 00:05:05 | Bookmarks Organizer
159435549c8cfebe | 20200409 22:00:08 | 20190410 22:00:08 | NoScript
159afb4824423ebd | 20200501 23:35:08 | 20190502 23:35:08 | HTTPS Everywhere (oud)
159b6e778e883f78 | 20200503 10:45:55 | 20190504 10:45:55 | HTTPS Everywhere hotfix
159d1fb6fb5ec411 | 20200508 23:05:16 | 20190426 19:33:20 | Ghostery
159dbec82955ac0d | 20200510 23:40:13 | 20190426 19:33:20 | uBlock Origin
159e6350cacbcee8 | 20200513 01:55:19 | 20190426 19:33:20 | HTTPS Everywhere
De lijst hierboven heb ik gesorteerd op serienummer van het certificaat. Opvallend is dat er een relatie lijkt te bestaan tussen het serienummer en de
vervaldatum. Ook doordat de eerste byte steeds 0x15 is, lijkt het er wel
heel sterk op dat er
geen sprake is van 64-bit randomness (helemaal uitsluiten kan ik dat niet, zie
https://dilbert.com/strip/2001-10-25).
Overigens zijn alle extensies gisteravond gedownload, behalve "HTTPS Everywhere (oud)" op 20190506 en "HTTPS Everywhere hotfix" op 20190505.
Duidelijk is dat Mozilla zich niet aan de "gangbare" standaard houdt. Dit leidt, voor zover ik weet, niet tot een beveiligingsrisico. Maar ik vind het wel vreemd dat als andere organisaties (zoals PKI overheid en gebruikers van die certificaten) zich
wel exact aan regels moeten houden, Mozilla meent dat niet te hoeven doen.