SSL en de toekomst van beveiliging op internet

 

It's a trust thing...?

Certificaten worden gebruikt voor het digitaal ondertekenen van bijvoorbeeld websites (SSL), software, dataverbindingen en dergelijke. Certificaten draaien primair op een basis van vertrouwen. Hier adverteren CA's ook mee.

 

De uitgever van het certificaat (de CA) is een door de bezoeker vertrouwde instantie die de bezoeker van de site garandeert dat de site die de bezoeker opvraagt inderdaad de site is die hij claimt te zijn en dat deze site vertrouwd kan worden. De CA staat tenslotte middels zijn vertrouwenspositie garant voor het door hem ondertekende certificaat.

 

Zo voorkom je in theorie dus dat derden vertrouwelijke informatie kunnen onderscheppen, bijvoorbeeld door het vervalsen van een bonafide website (zoals die van een bank) of een Man In The Middle Attack. De certificering zou er namelijk voor zorgen dat gebruikers direct zien dat de site in kwestie niet is die hij claimt te zijn, zodat ze er niet in trappen.

 

Het probleem met vertrouwen…

Het probleem zit hem in de vertrouwensrelatie. Er zijn enorm veel CA's die certificaten mogen uitgeven, van grote internationaal gerenommeerde bedrijven, NGO's en landen tot kleine bedrijven. Alle certificaten die door deze organisaties uitgegeven worden vereisen dat je de bijbehorende CA vertrouwt zo lang het certificaat gebruikt wordt. Anders doet het certificaat het niet en heb je geen toegang meer tot de bijbehorende site, of de digitaal ondertekende software, etc.

 

Zo kan je dus de dubieuze situatie krijgen waarin bijvoorbeeld een land als Syrië (of de VS, of China, etc) in de vertrouwenspositie zit om certificaten uit te geven voor login.live.com, mail.google.com, update.apple.com en alle communicatie met deze sites kan onderscheppen, ondertekend en wel. Of software digitaal kan ondertekenen met ‘Microsoft Corporation’ en deze software kan verstrekken via een gecertificeerde versie van windowsupdate.microsoft.com. Het hoeft niet te betekenen dat dit gebeurt, maar het kan wel. En er zijn landen waar een mailtje je in de gevangenis kan doen belanden.

 

Of erger.

 

Hetzelfde vertrouwensprobleem treedt op bij CA’s die gehackt zijn: de hackers maken gebruik van de infrastructuur van de CA om een groot aantal valse certificaten uit te geven die vervolgens keurig als veilig aangemerkt worden. Dit schept een weelde aan mogelijkheden tot misbruik.

 

Als je leest hoe knullig de hacks soms zijn en hoe laks de beveiliging bij de gehackte partijen soms was is de vraag gerechtigd of de partijen in kwestie het vertrouwen überhaupt waard zijn. Zeker als partijen niet open zijn over de hacks en het stil houden, waardoor derde partijen (zoals browsermakers, OS leveranciers) niet kunnen ingrijpen en tientallen miljoenen gebruikers maandenlang onwetend blootgesteld kunnen worden aan valse certificaten. Met alle potentiële gevolgen van dien.

 

Vertrouwen kan ook opgezegd worden. Maar dan?

Eigenlijk zou je CA’s dus niet langer moeten kunnen vertrouwen zodat deze malafide praktijken je minder snel kunnen raken. Maar dat houdt nogal wat in.

 

Voor CA's die voor veel sites certificaten uitgegeven hebben kan dat dus betekenen dat een kwart van het internet opeens niet voor je toegankelijk is. Dit zou het geval zijn wanneer je besluit het vertrouwen in een CA als Comodo op te zeggen, die recentelijk gehackt is en waar de hackers valse certificaten uitgegeven hebben.

 

Een ander voorbeeld is het besluit om een CA als Diginotar niet meer te vertrouwen. Het resultaat hiervan zou zijn dat een grote hoeveelheid Nederlandse overheidssites en andersoortige via certificaten beveiligde zaken niet meer zouden werken. Best onhandig als je je belastingaangifte moet doen.

 

In principe zou je kunnen zeggen dat je CA's die je niet vertrouwt gewoon uit je vertrouwenslijst haalt. In de praktijk valt dit echter vies tegen. Zo zijn een hoop certificaten ingebakken in de software die je gebruikt (zoals de browser of het OS) en is het intrekken van het vertrouwen dus iets dat de leverancier van de software moet doen, waarna deze bij een update doorgevoerd wordt. Je bent hier dus afhankelijk van derde partijen en de bereidheid voor het uitrollen en installeren van updates. Je zou de CA in kwestie ook zelf kunnen verwijderen, maar dit is iets dat de gemiddelde computergebruiker niet zo maar zal doen. 

 

Kortom, dit is een probleem.

 

Oplossingen voor nu en straks

Een oplossing die is aangedragen is het gebruiken van DNSSEC, een nieuwe beveiligde versie van DNS die er simpel gezegd voor zorgt dat certificaten worden verpakt in de DNS communicatie. Dit klinkt leuk maar is in principe slechts het verplaatsen van het probleem, en in het ergste geval zelfs een verslechtering aangezien je dan een nog grotere hoeveelheid CA’s gaat krijgen, namelijk alle uitgevers van Top Level Domains. (VeriSign is onder andere ook de beheerder van het .com TLD, dus als je VeriSign niet vertrouwt zit je dan ook in de problemen). En het is natuurlijk maar de vraag hoe goed die TLD’s hun zaakjes op orde hebben.

 

Een oplossing die aangedragen wordt en die er zeer veelbelovend uitziet is een gedistribueerd netwerk van servers die certificaten kunnen controleren. In wezen gaat het er bij certificaten natuurlijk om dat de gecertificeerde instantie inderdaad is wie hij claimt te zijn. In deze oplossing wordt het certificaat dat je als gebruiker ontvangt doorgestuurd naar een of meerdere servers die hetzelfde certificaat ook opvragen en valideren. Als deze certificaten gelijk aan elkaar zijn is er geen sprake van een Man In The Middle Attack en kan je er van uit gaan dat de site is wie hij claimt te zijn.

 

Deze servers (notaries) kunnen allemaal een eigen manier gebruiken om certificaten te valideren. Zo kan de ene notary gebruik maken van de ‘gewone’ validatie bij een CA, terwijl een andere gebruik maakt van DNSSEC en weer een andere wellicht een exotische andere wijze gebruikt. Op deze wijze kan de identiteit van een server op meerdere manieren tegelijk, vanaf meerdere plaatsen op de wereld gecontroleerd worden.

 

Daarnaast kan je ook opgeven hoe streng de validatie van certificaten moet zijn. Wellicht wil je dat alle notaries consensus hebben over de validiteit van een certificaat, of dat een meerderheid van de notaries het moet goedkeuren, of dat één goedkeuring al voldoende is.

 

Het aardige van deze opzet is verder dat iedereen een notary kan aanmaken en die kan toevoegen aan de set van te gebruiken notaries. Door het publiceren van de notary kunnen derden deze ook gebruiken. Zo kan je gebruik maken van vertrouwde derde partijen voor het valideren van certificaten, en zij van jou, mochten ze je vertrouwen.

 

Mocht een notary onbetrouwbaar blijken dan kan deze van de lijst afgehaald worden zonder gevolgen voor de functionaliteit. Mocht je een partij dus niet langer vertrouwen dan kan je deze verwijderen zonder gevolgen voor de werkzaamheid van het systeem.

 

Qua privacy is het natuurlijk niet geslaagd om derden iedere keer middels te controleren certificaten te melden welke sites je bezoekt. Gelukkig maakt dit systeem hiervoor gebruik van een slimme opzet waardoor een willekeurige notary optreedt als proxy, die wel weet van waar de aanvraag gedaan wordt maar niet om welk certificaat het gaat omdat het verzoek via SSL getunneld wordt. Deze notary zet de aanvraag vervolgens via een tunnel door naar de controlerende notaries, die weten welk certificaat er gevalideerd moet worden maar weer niet voor wie deze aanvraag gedaan wordt.

Briljant bedacht….en het werkt!

 

Convergence: gedistribueerd vertrouwen in de praktijk

Op dit moment wordt dit systeem in de praktijk getest en uitgerold, en is voor iedereen toegankelijk middels een vrij verkrijgbare plugin voor FireFox: convergence. Convergence is bedacht en ontwikkeld door de befaamde hacker Moxie Marlinspike en is een open source oplossing die voor iedereen vrij verkrijgbaar is. Zowel de plugin als de software als een lijst met notaries zijn te vinden op de bijbehorende website: http://convergence.io.

 

Op korte termijn worden meerdere plugins voor andere browsers verwacht en hopelijk zal deze functionaliteit direct in browsers ingebakken worden. Want we kunnen niet doorgaan op de huidige wijze: beschadigd vertrouwen is niet zomaar terug te winnen…

 

Bronnen:

  1. De BlackHat 2011 presentatie van Moxie Marlinspike waarin bovenstaande pas écht goed uitgelegd wordt en waarin convergence live gelanceerd werd: http://www.youtube.com/watch?v=Z7Wl2FW2TcA
  2. De website van convergence: http://convergence.io.