We kennen allemaal de uitdrukking ‘vertrouwen is goed, controle is beter…’. Als security-expert heb ik regelmatig discussie over het gebruik van certificaten. Ik merk dan dat certificaten worden gezien als een wondermiddel voor het oplossen van een heleboel security vraagstukken. De denkfout zit hem niet in het gebruik van certificaten, maar de manier waarop we vertrouwen hebben in certificaten.
Certificaten worden voor veel verschillende security maatregelen gebruikt. De bekendste is voor een https (ssl) website. In de eerste plaats wordt het certificaat gebruikt om alle informatie tussen mijn browser en de webserver te versleutelen. In de tweede plaats wordt een certificaat gebruikt om aan te tonen dat ik op de juiste website ben. Als je op de verkeerde website komt, zie je meestal een rode balk of een foutmelding, afhankelijk van het type browser die je gebruikt. Tegenwoordig zie ik ook weleens een groene balk. In dat geval is het een heel betrouwbare website… 😉
Vertrouwde leveranciers
Hoe weet mijn browser nu dat ik de op juiste website terecht ben gekomen? De website geeft, naast een sleutel, een certificaat aan mijn browser. Dit certificaat bevat een digitale handtekening van een certificatieautoriteit (CA). De eigenaar van de website heeft een certificaat aangemaakt en deze laten ondertekenen door een publieke CA. Dit zijn (meestal) bedrijven die voor een kleine vergoeding een certificaat ondertekenen. Mijn browser onderzoekt wie het certificaat heeft ondertekend. Vervolgens zoekt hij die organisatie op in zijn lijst van vertrouwde certificaatleveranciers. Komt de organisatie voor? Dan is het een vertrouwd certificaat.
De lijst met vertrouwde leveranciers wordt meegeleverd met mijn browser. De maker van mijn browser bepaalt wie betrouwbaar is en wie niet. In de praktijk betekent dat, dat je Google, Microsoft, Apple of de Mozilla community vertrouwt. Eén van deze organisatie heeft voor jou bepaald welke certificaatleverancier betrouwbaar is. De betrouwbaarheid van een certificaatleverancier kunnen we echter in twijfel trekken. Meestal is daar één woord genoeg voor: DigiNotar.
Convergence (SSL)
Als alternatief is Convergence (SSL) ontwikkeld. Het idee achter Convergence (SSL) is dat er nu niet één bron bepaalt of een certificaat betrouwbaar is, maar meerdere bronnen. Zo’n bron wordt een Notary (nl: notaris) genoemd. Elke Notary geeft zijn vote (stem) of het certificaat correct is. Als één of meerdere Notaries aangeven dat het certificaat onveilig is, kan de gebruiker zelf een keuze maken. Als gebruiker vertrouw je op de kennis en kunde van de verschillende Notaries. Maar wie zijn dan die Notaries? Google, Microsoft, de Amerikaanse overheid, Brussel of richten we een compleet nieuwe organisatie op? Ook voor dit systeem geldt dat we een aantal organisaties gaan aanwijzen als betrouwbare bron.
Het gebruik van certificaten draait dus om vertrouwen. Elke oplossing die gebruikt maakt van certificaten en/of sleutels voor beveiliging kent dus hetzelfde manco. Je start altijd met een stuk vertrouwen. Hier heb je de keuzemogelijkheid.
CA gehackt
Als certificaten voornamelijk intern gebruikt worden, kun je gaan werken met je eigen CA of PKI. Dan bepaal je zelf wat de betrouwbare bron is, jij zelf dus. Het probleem is dan wel dat anderen je niet zomaar vertrouwen.
Werk je samen met een partner en wil je hierbij gebruik maken van certificaten? Dan kun je er voor kiezen om een gezamenlijke CA te gebruiken. Deze wordt dan door beide partijen vertrouwd, maar je moet dan wel goede afspraken maken over het beheer. Degene die de CA beheert moet ook weer vertrouwd worden.
Werk je met externen mensen en wil je gebruik maken van certificaten? Dan heb je eigenlijk niet veel te kiezen. Je zult in dat geval gebruik moeten maken van een ‘openbare’ CA. Je kunt je dan wel afvragen welke je gaat vertrouwen. Een browser vertrouwt standaard heel veel CA’s, maar je heb zelf de keuze welke jij wilt vertrouwen. Je kunt kiezen voor de goedkoopste, maar of je dan ook de juiste kwaliteit krijgt? In het verleden is er al eens een CA gehackt en kwam de root certificaat op straat te liggen. Op eens waren een heleboel websites met een certificaat van deze CA niet langer betrouwbaar.
Ik kan niet vinden wat je eigenlijk wilt zeggen.
Even kort.
– een zelf getekend / zelf gemaakt certifikaat is goed voor oplossingen met een beperkt aantal gebruikers, bijv. een webapplicatie die 50 medewerkers van een bedrijf gebruiken.
– een goedkoop certifikaat werkt als het gaat om de zekerheid dat je op de juiste website zit, het is jouw (je browser) zaak of je die vertrouwt
– een duur certifikaat, de CA heeft de organisatie die de website beheerd gekontroleerd.
Overigens kun je binnenkort bij https://letsencrypt.org/ cerifikaten voor niets halen, dan is in ieder geval het verkeer tussen browser en server versleuteld en de browsers vertrouwen die.
Geef eens een praktijk voorbeeld van notaries en waar dat dan daadwerkelijk voordelen biedt, dat interesseert me.
@Jan,
wat wil jij dan zeggen ? dat betrouwbaarheid van certificaten een relatie heeft met een aantal medewerkers, dat er zoiets bestaat als juiste en onjuiste websites en dat je bij dure certificaten niet uitgaat van de CA’s die je browser je levert ?
security en vertrouwen is niet iets voor even kort.
Aha, de DigiNotar case waar het dus de browser was die aangaf dat certificaten niet meer te vertrouwen waren omdat ‘kop in het zand’ stekende bestuurders alle signalen negeerden als gevolg van ‘usance’ naar een CA die vooral goedkoop maar allesbehalve betrouwbaar was.
De grote maar onbeantwoorde vraag in de DigiNotar case blijft of nu het een technisch of procedureel probleem was. Het begrip ‘notaries’ gaat uiteindelijk dus om een ‘responsible disclosure’ waarmee dus het hiërarchische PKI model enigszins ondermijnt wordt.
@Felix
haal je leesbril
@Jan, omdat je browser het certificaat vertrouwt is het dus goed? Ik weet niet welke browser je gebruikt, maar de leverancier van jou browser bepaalt dat het goed is. Dus die vertrouw jij dan blind om voor jou te bepalen dat letsencrypt.org hun werkt goed doen?
Verder zijn er geen praktijk voorbeelden van een Notary oplossing, omdat dit het probleem niet oplost. We gaan we vertrouwen? Dat is het lastige in dit verhaal.