Http(s)
De structuur van het web mag vandaag de dag in de basis nog steeds hetzelfde zijn als toen Tim Berners-Lee het http-protocol ontwikkelde, de manier waarop het wordt gebruikt, is sterk veranderd. Http staat niet voor niets voor hypertext transfer protocol: het protocol was aanvankelijk enkel bedoeld om pagina's op te vragen, niets meer en niets minder. Internetbankieren en webmail waren in 1991 niets meer dan fictie.
Vertrouwelijke communicatie is dan ook nooit ingebouwd in het protocol. Omdat het onderliggende tcp/ip-protocol eveneens niet is ontworpen voor vertrouwelijke communicatie, is dat een risico: als op één punt in de verbinding het netwerkverkeer kan worden afgeluisterd, kan de communicatie worden onderschept, ook wel een 'man in the middle'-aanval genoemd.

Een man in the middle-aanval. Afbeelding: OWASP.
Onder meer gebruikers van wifi-hotspots lopen risico slachtoffer te worden van dergelijke aanvallen, maar ook een gehackte router bij een internetprovider kan een gevaar zijn. Dat dit geen fictie is, bewijst de recente aanval op KPN, waarbij hackers hebben ingebroken op een core-router.
Veilig...
Om vertrouwelijke communicatie via het web over een niet gegarandeerd veilige verbinding mogelijk te maken, is er https, simpel gezegd http met een ssl/tls-encryptielaag. Https zorgt er onder meer voor dat gegevens worden versleuteld, zodat iemand die de data onderschept, er niets mee kan, mits de versleuteling sterk genoeg is.
Versleuteling op zich is echter niet genoeg: het is ook belangrijk om te weten met wie er wordt gecommuniceerd. Anders zou een aanvaller zichzelf kunnen voordoen als een legitieme server, waarbij al het verkeer onderweg netjes wordt versleuteld, maar de aanvaller de informatie als ontvanger kan lezen. Daarvoor bestaat vandaag de dag een systeem van certificaat-autoriteiten.
Iedereen kan voor zichzelf een ssl-certificaat, gekoppeld aan een domeinnaam, aanmaken, maar die selfsigned-certificaten worden niet standaard door browsers vertrouwd. Om door een browser vertrouwd te worden, moet een certificaat worden ondertekend met een root-key van een certificaat-autoriteit.
Het idee achter dit systeem, vastgelegd in de X.509-specificatie, is dat de certificaat-autoriteiten bepalen of iemand een bepaald certificaat wel mag uitgeven. Is dat zo, dan wordt het certificaat ondertekend met de privésleutel van de certificaat-autoriteit.
X.509 wordt overigens niet alleen gebruikt voor https: ook de veilige equivalenten van onder meer de e-mailprotocollen imap en pop leunen op dit principe. Het is een van de steunpilaren voor veilige communicatie. Is dat terecht?
Browsermakers - en ontwikkelaars van e-mailsoftware, bijvoorbeeld - leveren de publieke sleutels van vertrouwde certificaat-autoriteiten mee. Als een certificaat van een webserver is ondertekend door een certificaat-autoriteit wier publieke sleutel is ingebouwd in de software, dan wordt het certificaat vertrouwd.
...of niet?
Nog los van meerdere exploits waarbij onderzoekers valse X.509-certificaten konden genereren, bijvoorbeeld doordat het inmiddels achterhaalde md5-hashing-algoritme werd ondersteund, heeft het certificatensysteem een achilleshiel. Of, beter gezegd: ongeveer 650 achilleshielen.
650 achilleshielen
In 1995 werd VeriSign opgericht; het was de eerste certificaat-autoriteit. Inmiddels zijn er heel wat meer: een stuk of 650 organisaties wereldwijd hebben het recht om vertrouwde certificaten uit te geven.
Onder hen zijn commerciële partijen zoals VeriSign en Comodo, maar bijvoorbeeld ook overheden. Zo kan de Nederlandse overheid certificaten uitgeven, maar ook die van de Verenigde Staten, Rusland en China.
Een probleem daarbij is dat elke certificaat-autoriteit een certificaat voor elke domeinnaam mag aanmaken.
Dat betekent dat als een enkele 'ca' valse certificaten uitgeeft, het complete systeem van certificaat-autoriteiten in één klap onbetrouwbaar is gemaakt. Elke certificaat-autoriteit is een single point of failure.
Dat is niet automatisch schadelijk, zo lang elke autoriteit elke certificaat-aanvraag voor uitgifte goed controleert. Helaas is dat echter niet zo. De Beverwijkse certificaat-autoriteit DigiNotar, die onder meer DigiD beveiligde, werd deze herfst wereldberoemd toen bleek dat het na een hack honderden valse ssl-certificaten had uitgegegeven. Een vals certificaat zou in Iran zijn gebruikt om Google-gebruikers te bespioneren.
Hetzelfde overkwam het veel grotere Comodo, dat via een reseller valse domeinnamen uitgaf voor onder meer Google, Yahoo, Mozilla en Microsoft. Ook VeriSign werd onlangs gehackt, al zouden daarbij geen certificaten zijn gegenereerd.
Een certificaat-autoriteit hoeft echter niet te worden gehackt om valse certificaten uit te geven. Zo bleek uit onderzoek van de EFF dat er vele duizenden valse ssl-certificaten in omloop zijn voor niet-unieke hosts, bijvoorbeeld voor op een intern netwerk. Zo zijn er circa vijfduizend certificaten voor 'localhost' uitgegeven. Er zijn zelfs certificaat-autoriteiten die meerdere klanten een ssl-certificaat voor hetzelfde lokale domein gaven, wat niet mag. Dat duidt er op dat ze niet goed controleren of een certificaat wel mag worden uitgeven. Meerdere beveiligingsonderzoekers hebben bovendien in de afgelopen jaren bij certificaat-autoriteiten valse ssl-certificaten kunnen aanvragen.
Blacklisting
Een ssl-certificaat terugtrekken, bijvoorbeeld omdat deze vals blijkt, is mogelijk via blacklisting. De manier waarop dat is gebeurd, is de afgelopen tijd verbeterd: vroeger gebeurde dat via lijsten met teruggetrokken certificaten, maar dat kan nu realtime via het online certificate status protocol. Browsers kunnen daardoor snel controleren of een certificaat nog geldig is.
Een probleem is echter dat alle browsers het 'soft fail'-principe hanteren. Als een ocsp-controle faalt door netwerkproblemen, wordt het certificaat toch geaccepteerd, terwijl de authenticiteit niet vaststaat. Het alternatief - een certificaat weigeren als het niet kan worden gecontroleerd - , betekent dat netwerkproblemen bij een certificaatautoriteit ervoor zorgen dat websites met certificaten van die autoriteit niet meer kunnen worden bezocht. Dat is dan ook de reden dat veel browsers 'soft fail' hanteren.
Google heeft aangekondigd dat het in Chrome stopt met de ondersteuning van ocsp. In plaats daarvan gaat het zelf een lijst met teruggetrokken certificaten bijhouden. Of dat beter werkt, moet de toekomst uitwijzen: Symantec is in ieder geval sceptisch.
O Certificates, Where Art Thou?
Voor het kunnen terugtrekken van certificaten is het daarnaast nodig dat de certificaatautoriteit goed bijhoudt welke certificaten geldig zijn en welke niet meer. Dat gebeurt niet altijd, zoals onder meer blijkt uit de DigiNotar-hack. Het bedrijf hield de hack geheim en trok geen certificaten terug, waardoor deze nog anderhalve maand misbruikt konden worden.
Bovendien wist DigiNotar van een groot deel van de valse certificaten zelf niet eens dat deze überhaupt bestonden en had het deze met de beste wil van de wereld niet terug kunnen trekken: daarvoor is namelijk een serial nodig, waarover het bedrijf niet beschikte.
Daarnaast is er geen gestandaardiseerde manier om root-sleutels van certificaat-autoriteiten in te trekken. Daarvoor moet de sleutel handmatig door de gebruiker worden uitgeschakeld of moet de browser- of os-maker een update verspreiden waarin de root-sleutel op 'niet vertrouwd' wordt gezet. Dat gebeurde bij diezelfde DigiNotar-hack.
Untrusted trust
Sommige vertrouwde certificaat-autoriteiten bieden tegen betaling rootcertificaten aan, waarmee een ssl-certificaat voor elk gewenst domein kan worden aangemaakt. Dit is nodig voor sommige beveiligingssoftware die ook https-verkeer onderschept, maar maakt het ook mogelijk voor kwaadwillenden om valse certificaten te genereren.
Het bedrijf Trustwave stopte na ophef onlangs met het aanbieden van rootcertificaten, maar bijvoorbeeld VeriSign-dochter GeoTrust biedt tegen betaling van 40.000 dollar per jaar de mogelijkheid om een root-certificaat aan te vragen. "Je kunt dan valse certificaten aanmaken voor elke mogelijke website, zolang je GeoTrust maar belooft dat je dat niet doet", vertelde beveiligingsexpert Moxie Marlinspike onlangs op de RSA Conference, een beveiligingsconferentie in San Francisco.
Een potentieel gevaar is ook dat overheden van landen met een minder goede track record op het gebied van mensenrechten, zoals China, certificaten kunnen aanmaken. De Chinese organisatie CNNIC, onderdeel van het Chinese Ministerie van Informatie, wordt door onder meer Firefox, Internet Explorer en Google Chrome vertrouwd, hoewel deze organisatie in het verleden zelfs malware heeft geproduceerd.

Je browser vertrouwt standaard de Chinese overheid.
Dnssec en certificate pinning
Het probleem met het systeem van certificaatautoriteiten is dat het alomtegenwoordig is, en dat de overstap naar een ander systeem daardoor veel tijd en energie gaat kosten. Dat wil niet zeggen dat er geen alternatieven zijn.
Minder certificaat-autoriteiten
Er zijn circa 650 certificaat-autoriteiten en het risico dat ten minste één daarvan een zwakke schakel is, is erg groot. Een oplossing zou het verminderen van het aantal autoriteiten kunnen zijn, en alleen de meest betrouwbare autoriteiten voort laten bestaan. De vraag is echter of dat het probleem echt oplost: toen er nog maar één certificaat-autoriteit was, was de kritiek niet minder, omdat die autoriteit - VeriSign - alles kon doen en laten wat ze wilde.
Als het aantal certificaat-autoriteiten afneemt, krijgen de overgebleven autoriteiten bovendien veel meer verantwoordelijkheid, omdat ze onvermijdelijk veel meer certificaten in hun bezit zullen krijgen. Dat maakt ze ook een stuk interessanter voor hackers.
Dnssec
Op het eerste gezicht zou dnssec een alternatief voor het systeem kunnen zijn. Dnssec is een aanvulling op het dns-protocol waarmee de authenticiteit van dns-records kan worden geverifieerd. Het certificaat wordt als dns-record opgeslagen. Daarmee wordt bijvoorbeeld dns cache poisoning tegengegaan en zou een internetgebruiker zekerheid hebben of hij de juiste website bezoekt.
Onderzoeker Moxie Marlinspike heeft daar echter zijn bedenkingen bij. Zo worden hostingproviders daarmee min of meer verantwoordelijk voor het verstrekken van certificaten. "Hostingproviders zijn nog meer sketchy dan certificaat-autoriteiten", aldus Marlinspike. Zeker is in ieder geval dat hun aantal groter is dan het aantal certificaat-autoriteiten.
Ook krijgen de beheerders van de tld's - in het geval van .com is dat VeriSign - een grote vinger in de pap bij dnssec, evenals het ICANN, dat de root-zone beheert. De vraag is of dat gewenst is: het ICANN valt onder de Amerikaanse overheid. "We moeten ons afvragen of we alle vertrouwelijke communicatie bij deze organisatie willen neerleggen", zegt beveiligingsonderzoeker Marlinspike. Bovendien kunnen certificaten bij dnssec niet handmatig worden uitgeschakeld.
Certificate pinning
Een ander alternatief is certificate pinning, functionaliteit waarover op dit moment enkel Google Chrome beschikt. Bij certificate pinning wordt aangegeven welke certificaat-autoriteiten certificaten voor een bepaald domein uitgeven. Dit was ook de manier waarop de DigiNotar-hack werd ontdekt: een Iraanse Gmail-gebruiker kreeg een waarschuwing van Chrome, omdat een website die zichzelf als Gmail presenteerde een DigiNotar-certificaat meestuurde om dat te 'bewijzen'. DigiNotar mocht van Chrome echter helemaal geen certificaten voor Gmail uitgeven.
Op dit moment werkt certificate pinning enkel nog met Google-websites. Of de functionaliteit kan uitgroeien tot een algemeen inzetbare veiligheidsmaatregel, is onzeker. Op dit moment zijn de certificate pins hardcoded, dus elke nieuwe 'pin' moet aan de code worden toegevoegd. Dat is niet erg schaalbaar en maakt een overstap op een andere certificaat-autoriteit omslachtig. Het blijft bovendien een lapmiddel.
Perspectives en Convergence
Een ingrijpender aanpak is voorgesteld door onderzoekers van de Carnegie Mellon-universiteit in de Verenigde Staten: Perspectives. Dit systeem introduceert het principe multi-path probing: een ssl-certificaat wordt via verschillende ip-routes geverifieerd.
In de praktijk werkt dat zo: bij het bezoeken van een beveiligde website wordt aan een speciale server, een notary, gevraagd of deze hetzelfde certificaat krijgt bij het laden van de site. Als dat zo is, is het een legitiem certificaat en vindt er geen man in the middle-aanval plaats, is het idee. De authenticiteit van een server met een selfsigned-certificaat kan daardoor worden gecontroleerd.
Perspectives kan worden gedownload als Firefox-add-on, maar deze werkt niet perfect: het werkt alleen voor de initiële https-request en niet voor aanvullende verzoeken, bijvoorbeeld scripts.
Beveiligingsonderzoeker Marlinspike ziet ook hier een aantal beren op de weg. Zo is de privacy in Perspectives niet gewaarborgd: wanneer een gebruiker een notary vraagt om het certificaat te vergelijken, weet die welke website wordt bezocht. Bovendien is het systeem traag, omdat een andere server telkens om bevestiging moet worden gevraagd. Ook belangrijk: dit systeem is niet bedoeld om certificaat-autoriteiten te vervangen, maar als extra verificatie.
Convergence
Marlinspike heeft zelf een project opgezet dat voortborduurt op het Perspectives-systeem: Convergence. In tegenstelling tot Perspectives is Convergence bedoeld om het systeem van certificaat-autoriteiten compleet buitenspel te zetten: wie Convergence inschakelt, maakt geen gebruik meer van het stelsel van autoriteiten.
Ook Convergence gebruikt multi-path probing, maar dankzij de aanwezigheid van caching is Convergence aanmerkelijk sneller. Ook Convergence kan als Firefox-add-on worden gebruikt.

ING.nl: Links zonder Convergence, rechts met.
Ook is de privacy beter gewaarborgd, dankzij notary bouncing. Een notary wordt daarvoor gevraagd om een verzoek door te sturen naar een andere server. De eerste server weet alleen wie het verzoek doet, de tweede weet enkel voor welke server een certificaat moet worden geverifieerd. Geen van beide weet dus wie welke website bezoekt. Voor de controle van certificaten worden meerdere notaries gebruikt: standaard zijn dat er drie. Er is dus geen single point of failure meer.
Convergence is - net als Perspectives - gebaseerd op het ideaal van trust agility: een gebruiker bepaalt zelf welke notaries hij vertrouwt. Het niet vertrouwen van een notary heeft bovendien geen gevolgen: dan kan een andere notary worden gebruikt om certificaten te controleren. Dat is een fundamenteel verschil ten opzichte van het certificatensysteem. Als iemand besluit VeriSign of Comodo niet langer te vertrouwen, kunnen veel websites niet meer worden bezocht.
Volgens Marlinspike is een switch van het certificatensysteem naar Convergence eenvoudig: als iedereen de add-on installeert, kunnen bedrijven als VeriSign en Comodo opdoeken, redeneert hij. Daarbij laat hij wel één belangrijk aspect achterwege: het beheer van de notary-servers.
Handvol notaries
Op dit moment zijn er een handvol notaries, beheerd door Marlinspike zelf en ict-beveiligingsbedrijf Qualys. Het lijdt geen twijfel dat die het verkeer onmogelijk aankunnen als elke internetgebruiker opeens overstapt op Convergence. Dan zullen er dus meer notaries moeten komen, maar wie wil die taak op zich nemen?
Dat is ook een reden van Adam Langley, beveiligingsonderzoeker van Google, om Convergence niet in Chrome in te bouwen. Hij spreekt zijn waardering uit voor het werk van Marlinspike, maar stelt ook dat aangezien de standaard-notaries nooit de traffic van alle Chrome-gebruikers aan zouden kunnen, Google zelf voor notary zou moeten spelen.
"Het komt er op neer dat Chrome naar huis belt voor het verifiëren van certificaten", schrijft Langley. Dat heeft volgens hem gevolgen voor de privacy en legt een zware last op Google. Over trust agility zegt hij dat een mooi idee is, maar dat 99,99% van de Chrome-gebruikers de standaard-instellingen nooit zal wijzigen.
Zowel Convergence als Perspectives kampen daarnaast met een probleem: captive portals en andere lokale hosts, zoals intranetten. Captive portals zijn de landingspages waar je bijvoorbeeld bij wifi-hotspots in hotels en op vliegvelden op terecht komt. Als die met een ssl-certificaat zijn beveiligd, kunnen die niet via Convergence of Perspectives worden gecontroleerd, omdat ze de host simpelweg niet via een andere route kunnen bereiken. Hetzelfde geldt voor intranetten die enkel vanaf het lokale netwerk te benaderen zijn.
Tot slot
Het moge duidelijk zijn: het systeem van certificaat-autoriteiten biedt minder bescherming dan gewenst. Certificaat-autoriteiten worden gehackt, geven per ongeluk valse certificaten uit, of verstrekken tegen betaling root-certificaten - en dat terwijl elke afzonderlijke certificaat-autoriteit een single point of failure is.
Of dat voor de doorsnee internetgebruiker gevaar oplevert, is moeilijk te zeggen. De valse DigiNotar-certificaten zijn gebruikt om Iraanse internetters te bespioneren, mogelijk in opdracht van de Iraanse overheid. In Nederland en België is dat minder waarschijnlijk, hoewel ook cybercriminelen soms valse ssl-certificaten inzetten. Hoe vaak dat gebeurt, is echter onduidelijk.
Ideaal is de huidige situatie in ieder geval niet. Een overstap naar een alternatief gaat echter veel tijd en energie kosten, omdat het stelsel van certificaat-autoriteiten zo is 'ingeburgerd'. Voorlopig lijkt er dus nog geen verandering in te komen - tenzij een groot aantal bedrijven en organisaties zich vrijwillig opwerpt als Convergence-notary en alle internetgebruikers op dat systeem overstappen.