Hoe werkt Certificate Transparency?
Certificate Transparency (CT) wordt in de bestaande infrastructuren van certificeringsinstanties gebruikt om na uitgifte van een certificaat te valideren dat de betreffende entiteit geautoriseerd is om SSL-certificaten uit te geven.
Het uitgifteproces wordt hieronder weergegeven met de nieuwe stappen als gevolg van CT (in blauw weergegeven).
- De serveroperator koopt een certificaat bij een certificeringsinstantie
- De certificeringsinstantie valideert de serveroperator
- De certificeringsinstantie maakt een pre-certificaat
- De certificeringsinstantie registreert het pre-certificaat bij de logboekserver, die op zijn beurt een SCT (signed certificate timestamp) retourneert
- De certificeringsinstantie geeft het SSL-certificaat uit
- Het SSL-certificaat kan de SCT bevatten
- De browser valideert het SSL-certificaat tijdens de TLS-handshake
- De browser valideert de SCT die is verstrekt tijdens de TLS-handshake, ofwel met OCSP stapling, met een TLS-extensie of op basis van informatie die is opgenomen in het certificaat
- De browser maakt verbinding met de server
- Het SSL-certificaat versleutelt alle gegevens tussen de browser en de server
Er zijn drie verschillende manieren waarop de SCT kan worden verstrekt tijdens de TLS-handshake, zoals hier uitgelegd. Hieronder staat een schematische weergave van dit proces voor een van deze methoden.
Componenten van Certificate Transparency
Het CT-systeem heeft vier componenten: Certificeringsinstantie, certificaatlogboek, certificaatmonitor en certificaatauditor. Hieronder staat een schema met een mogelijke configuratie van deze componenten. Elk van deze componenten wordt hieronder uitgebreid toegelicht.
Certificeringsinstantie
CT werkt met het bestaande en openbaar vertrouwde systeem van certificeringsinstanties. Met CT kunnen certificeringsinstanties in een openbaar logboek bewijs opnemen van de uitgifte van certificaten. Browsers kunnen tijdens de handshake SCT's ophalen uit dat logboek. De logboekregistratie van certificaten is het bewijs dat de certificeringsinstantie zijn werk goed doet en geeft inzicht in hun activiteiten.
Certificaatlogboek
Idealiter bevatten certificaatlogboeken een register van alle uitgegeven SSL-certificaten, maar de eerste implementatie is beperkt gebleven tot EV-certificaten. Er zijn diverse redenen waarom er meerdere onafhankelijke logboeken nodig zijn: 1) meerdere logboeken zorgen voor redundantie in het geval een logboek uitvalt; 2) de onafhankelijkheid van de logboeken garandeert dat er toch validatie van certificaten kan plaatsvinden, ook als er een logboek of logboekbeheerder is gecompromitteerd; 3) de onafhankelijkheid van de logboeken garandeert dat een overheidsactie niet in één keer kan zorgen voor het wissen van alle bewijzen van de uitgifte van certificaten; en 4) het gebruik van meerdere onafhankelijke logboeken zorgt ervoor dat een certificeringsinstantie en een logboekbeheerder niet samen een pijnlijke verkeerde uitgifte kunnen verdoezelen.
Alle logboeken zijn:
- Alleen toevoegen: certificaten kunnen alleen worden toegevoegd aan een logboek en niet worden verwijderd, gewijzigd of achteraf worden tussengevoegd.
- Cryptografisch gegarandeerd: logboeken maken gebruik van een cryptografisch algoritme genaamd Merkle Tree Hash, dat manipulatie van het logboek verhindert.
- Openbaar controleerbaar: iedereen kan in een logboek zoeken naar verkeerd uitgegeven of ongeautoriseerde certificaten. De URL en openbare sleutel van alle certificaatlogboeken moeten openbaar zijn.
Certificaatmonitor
Een certificaatmonitor, zoals een grote merkeigenaar of certificeringsinstantie, controleert certificaatlogboeken op verdachte activiteiten.
Ze kunnen informatie ophalen uit de logboeken met de opdracht HTTP GET. Een klant kan optreden als zijn eigen certificaatmonitor of kan dit uitbesteden aan een andere partij. DigiCert zal ook monitoringservices gaan leveren voor zijn klanten.
Certificaatauditor
Certificaatauditors controleren de logboeken om te verifiëren of ze overeenkomen met andere logboeken, of nieuwe ingangen zijn toegevoegd en of het logboek niet is gemanipuleerd doordat iemand een certificaat achteraf heeft tussengevoegd, verwijderd of gewijzigd.
Auditing is meestal een geautomatiseerd proces in de browser. Maar auditing kan ook een op zichzelf staande service zijn of een secundaire functie van een monitorende instantie.