Gemakkelijk vertrouwd én gemakkelijk vervalst
Iedereen weet het nu wel: als het even kan moet je “https” in plaats van “http” gebruiken. Digitale certificaten zorgen ervoor dat je zeker weet dat de website van Gmail ook echt die van Google is. En dat niemand die je internetverkeer kan aftappen met de inhoud kan meelezen. Afgelopen week bleken er echter weer eens vervalste certificaten voor Google in omloop te zijn. Een bekend probleem, maar de oplossing is zo makkelijk nog niet.
Ik zeg wie ik ben
Zou je mij op mijn blauwe ogen geloven als ik zeg wie ik ben? De AIVD in ieder geval niet. Toen ik hen onlangs in Zoetermeer bezocht werd mij de toegang geweigerd zolang ik niet een officieel identificatiebewijs overhandigde. Mijn rijbewijs was voldoende om te bewijzen dat ik ook echt was wie ik beweerde. De AIVD vertrouwde dat pasje omdat het door de overheid is uitgegeven.
Zo werkt het ook met die SSL/TLS-certificaten. Elke browser komt met een lange lijst van vertrouwde partijen die certificaten voor websites mogen uitgeven, de Certificate Authorities. Als je een beveiligde website bezoekt controleert je browser of het aangeboden certificaat is uitgegeven door zo’n Certificate Authority. De meeste browsers vertrouwen meer dan zeshonderd Certificate Authorities. Zo’n honderd overheden zijn zelf ook een Certificate Authority, waaronder de Nederlandse.
Teveel vertrouwen in Certificate Authorities
Hoe controleert een browser of al die Certificate Authorities wel voortdurend even zorgvuldig blijven met de uitgifte van nieuwe certificaten? Het korte antwoord is: niet. En zelfs al zou dat kunnen, je kunt nooit elk risico afdekken in zo’n systeem. Er zijn genoeg voorbeelden bekend waarbij hackers hebben ingebroken op de computersystemen van een Certificate Authority en vervolgens valse certificaten hebben aangemaakt. Comodo is een bekend voorbeeld. En denk je dat overheden altijd even netjes opereren? Die breken soms ook in, zoals bij Diginotar. Of als ze zelf een Certificate Authority zijn, maken ze een vertrouwd maar vervalst certificaat voor een gewenste domeinnaam aan. En zo gek is die gedachte echt niet: in Nederland laten we ook allerlei waarborgen varen omdat de staatsveiligheid in het geding zou zijn.
Een beter alternatief is lastig
Wat nu? Eén van de oplossingen is om de certificaten die jij te zien krijgt te vergelijken met de certificaten die andere bezoekers van die website te zien krijgen. Als jij een ander certificaat krijgt dan de rest van de wereld, heb je een goede reden om je af te vragen of niet iemand jouw verbinding probeert te kapen. Je zou ook het vertrouwen in de beoordeling van Certificate Authorities kunnen verleggen: welke organisaties, in plaats van je browser, zou jij hierin vertrouwen? Daarnaast zouden certificaten misschien door meer dan één organisatie ondertekend moeten worden. Toch wordt nog geen enkel van die oplossingen als perfect beschouwd.
En nog lastiger te implementeren
Maar misschien is het bedenken van een betrouwbare manier voor het vaststellen van de echte beheerder van een website niet eens het grootste probleem dat opgelost moet worden. Het is bijzonder lastig om zo’n oplossing breed geïmplementeerd te krijgen. Want ook al is je idee nog zo mooi: de bouwers van de grootste drie of vier browsers moeten je oplossing wel inbouwen. En als je oplossing ook niet compatible is het met het huidige systeem, dan is zo’n verandering nog lastiger.
Voor nu: begin bij jezelf
Wie zelf al een beetje aan de slag wil, kan eens kijken naar een plugin als Certificate Patrol. Daarmee hou je in je browser bij welke certificaat je browser bij een website tegenkomt. Verandert het certificaat opeens, dan moet je je afvragen waarom dat is. Was het oude certificaat bijna verlopen en heeft de beheerder het certificaat vernieuwd? Of is de beheerder overgestapt naar een andere Certificate Authority? Of luistert er misschien iemand mee?