Afgelopen week werd bekend dat twee maanden geleden een digitale inbraak heeft plaatsgevonden bij Diginotar, een Nederlandse Certification Authority (CA). De berichtgeving rondom dit incident wekt de suggestie dat de veiligheid van vooral Nederlandse websites in het geding is geweest. Dit is onterecht.
[Dit artikel is een aangepaste versie van deze blogpost, om te verduidelijken dat het probleem, en dus de oplossing, niet specifiek Nederlands is]
Het gevolg van een dergelijke inbraak bij een CA is dat de inbreker zelf nieuwe certificaten kan aanmaken voor elke willekeurig website. Met zo'n certificaat kan de aanvaller een nep site opzetten, en bijvoorbeeld proberen inloggegevens van gebruikers van die site te onderscheppen. Totdat de inbraak ontdekt wordt, en de CA op een zwarte lijst is geplaatst (zoals nu met Diginotar is gebeurd), kan een gebruiker die naar een website browsed niet zien of een site beveiligd is met een echt of een vals certificaat. In deze periode zijn alle officieel uitgegeven certificaten nog wel geldig, maar in feite waardeloos: ze zijn niet te onderscheiden van de valse certificaten. In deze periode is dus in feite het hele Internet onbeveiligd. Over de hele wereld hebben gebruikers de afgelopen maanden gecommuniceerd met (overheids)sites waarvan niet zeker is of die wel betrouwbaar waren.
Na plaatsing van de CA op de zwarte lijst veranderd de situatie. Alle certificaten die door deze CA zijn ondertekend (zowel de officieel uitgegeven certificaten maar ook de valse die bij de inbraak zijn aangemaakt) worden ongeldig. De resterende certificaten (die niet door deze CA zijn ondertekend) blijven geldig, en hebben hun waarde weer terug. Er zijn immers niet langer mogelijk valse certificaten in omloop voor dezelfde website. Dat is heel jammer voor de officieel uitgegeven certificaten door de CA die op de zwarte lijst is geplaatst, want daar was natuurlijk niets mee mis. Maar daar is in het huidige certificaten model weinig aan te doen.
De aanval lijkt te zijn opgezet vanuit Iran, en was er op gericht om valse certificaten voor internationale websites zoals Facebook en Gmail te verkrijgen. Vooralsnog zijn er geen valse certificaten aangetroffen voor typisch Nederlandse websites zoals digid.nl. In tegenstelling tot wat de media melden is het dus onwaarschijnlijk dat “.. inloggegevens van burgers op overheidssites zoals die van DigiD, de belastingdienst en de sociale dienst in verkeerde handen [zijn] terechtgekomen.”
Eigenlijk legt dit incident bloot dat de beveiliging van het Internet door middel van certificaten niet veilig genoeg is. Het feit browsers zo'n 650 CA's vertrouwen voor het uitgeven en controleren van certificaten is een probleem. Dat heeft de afgelopen jaren al tot een aantal incidenten, vergelijkbaar met Diginotar, geleid. Bovendien: hoe weten we zeker dat een CA zijn macht niet misbruikt? Voor een commerciële CA is dat misschien economische zelfmoord. Maar als een kleine CA, die eigenlijk een dekmantel is van een overheid, dit gericht en voldoende onzichtbaar doet, kraait er wellicht geen haan naar. Nu heeft Iran een bestaande CA gehackt. Maar waarom zou ze niet een eigen CA oprichten?
Het huidige systeem van certificaten om het Internet te beveiligen is aan vervanging toe. Een hiërarchische en statische implementatie van vertrouwensrelaties werkt niet. Een nieuw systeem zal het mogelijk moeten maken om een CA op de zwarte lijst te plaatsen zonder dat meteen miljoenen gebruikers waarschuwingen krijgen over mogelijk onveilige certificaten, waar werkelijk niets mis mee is.
Het probleem is niet beperkt tot Nederland. Nederlandse websites zijn bijvoorbeeld net zo kwetsbaar voor een slecht beveiligde CA in Timboektoe. Er zal dus ook wereldwijd naar een fundamenteel andere oplossing voor dit probleem gezocht moeten worden (zie bijvoorbeeld deze blogpost.