Van SSL naar TLS

Het zal eenieder niet ontgaan zijn dat er in 2014 en ook in het begin van 2015 veel beweging is geweest in SSL-land. We hebben een aantal grote en vervelende lekken gezien, die mogelijk het vertrouwen in deze beveiliging hebben geschaad. Ik denk zelf dat deze lekken uiteindelijk een positief effect hebben gehad. Zodoende wil ik je graag meenemen in mijn gedachten hierover en je uitleggen waarom.

Van SSL naar TLS: Heartbleed

UPDATE
Sinds 11 april 2017 hebben alle domeinnamen, subdomeinen, aliassen en pointers bij ons gratis SSL en HTTP/2 gekregen. Dit geldt voor iedere klant, ongeacht hun webhostingpakket, inclusief Resellers. Lees meer!

Laten we beginnen bij de vraag wat SSL en TLS eigenlijk zijn en waar het voor is ontworpen. Ik zal het kort houden. Als je hierover meer wilt lezen, dan kun je dat doen op bijvoorbeeld Wikipedia. Ook is er eerder, naar aanleiding van de introductie van onze SSL-certificaten, een uitgebreid artikel geschreven met veel nuttige informatie.

Wat zijn SSL en TLS?

Het doel van SSL en TLS is tweevoudig. Ten eerste is het voor authenticatie. Dit houdt in dat je een slotje ziet, wanneer je aan https://www.antagonist.nl een bezoek brengt. Je mag dan ervan uitgaan dat je daadwerkelijk op onze website bent terecht gekomen, en dus niet op een website van iemand die, om welke reden dan ook, je een vergelijkbare site laat zien.

Ten tweede is het voor encryptie. Dit zorgt ervoor dat een tussenliggende partij niet kan zien welke gegevens (zoals je wachtwoord) jij met ons uitwisselt. Het is dus tevens een encryptieprotocol voor de authenticatie en beveiliging van gegevens die via het internet worden verstuurd.

Hoe het werkt SSL of TLS?

Stel, jij wilt https://www.antagonist.nl bezoeken. Gewoon omdat het kan, je het een interessante site vindt of omdat je graag webhosting of een domeinnaam wilt bestellen. Je typt de URL in je browser en vervolgens zal ‘onderwater’ het volgende gesprek tussen je browser (B) en onze server (S) plaatsvinden:

  1. B: Hallo, hoe is het? P.S. ik snap dit lijstje ‘ciphers’: A, B, D en E, daarbij is TLS1.2 het hoogste wat ik snap.
  2. S: Hoi, prima hoor, met jou? P.S. cipher D snap ik ook, laten we die gebruiken. Hoger dan TLS1.1 snap ik niet. Daar zullen we het dus mee moeten doen.
  3. S: Oh trouwens, ik heb hier nog een certificaat van echtheid, zodat je zeker weet dat ik ben wie je denkt dat ik ben.
  4. B: Bedankt voor het certificaat, ziet er goed uit. Ik heb een geheimpje en dat versleutel ik met de publieke sleutel uit je certificaat. Niet verder vertellen hoor!
  5. S: Dat is goed. Met mijn privé-sleutel kan ik dit ontcijferen. Wat leuk dat we nu een geheim delen.
  6. B: Ja, heel leuk. Laten we dit blijven gebruiken om onze volgende berichtjes naar elkaar ook te versleutelen, zodat niemand kan zien waarover we het hebben. Omdat we allebei cipher D snappen, pakken we die. Oké?
  7. S: Goed plan, doen we!

Het is hierbij handig om te weten dat bij stap één de browser tegen de server gaat praten in een versie van SSL/TLS. Het lijstje met huidige mogelijkheden is SSLv2, SSLv3, TLS1.0, TLS1.1, TLS1.2. SSLv2 is al een lange tijd geleden onveilig verklaard en wordt nauwelijks nog gebruikt. Over de rest hebben het straks.

Van SSL naar TLS: handshake

Je kunt nu dus gegevens met elkaar uitwisselen, zonder dat je je zorgen hoeft te maken dat deze gegevens kunnen worden onderschept. Althans, dat is de theorie.

Welke problemen hebben we gezien?

In theorie zijn we dus veilig, maar in de praktijk blijkt het toch net iets anders uit te pakken. In 2014 en 2015 heeft zich dat gekenmerkt, doordat een aantal prominente veiligheidslekken zich hebben voorgedaan Deels door de ernst en deels door de pakkende namen zijn deze veiligheidslekken beroemd en berucht geworden. Specifiek heb ik het dan over Heartbleed, Poodle en Freak, die zelf het ‘normale’ nieuws hebben gehaald.

Heartbleed

Dit was geen bug in de SSL- of TLS-specificatie, enkel een bug in de meest gebruikte implementatie: OpenSSL. De naam is bedacht, omdat de bug zat in een extensie van TLS genaamd heartbeat. De bug was zeer ernstig en maakte het voor een aanvaller mogelijk om bijvoorbeeld wachtwoorden te achterhalen, zonder dat dit ergens in logs terug te vinden was. Dit probleem was vrij makkelijk op te lossen door OpenSSL te updaten.

Poodle

Hier is de naam een afkorting voor Padding Oracle On Downgraded Legacy Encryption. Deze bug maakt gebruik van de mogelijkheid dat als je tijdens stap één en twee, in ons bovenstaande voorbeeld, teveel ‘ruis op de lijn’ hebt. De browser en server kunnen elkaar dan niet goed verstaan en zullen het opnieuw proberen met een lagere versie van het protocol. Zodra ze uitkomen op SSLv3, dan wordt het een probleem. Deze versie blijkt ook gemakkelijke geheime informatie te lekken.

Hoewel deze bug moeilijker te misbruiken was dan Heartbleed, is de oplossing ook moeilijker. De enige workaround die op het moment van uitkomen beschikbaar was, was TLS_FALLBACK_SCSV. Hiermee geven client en server aan dat het terugvallen op een oudere versie niet toegestaan is. Nadeel hiervan is dat, zowel client als server het moeten ondersteunen.

Een betere optie vanuit veiligheidsoogpunt is het volledig uitschakelen van SSLv3. Dit heeft echter als gevolg dat clients die SSLv3 als hoogste protocol ondersteunen geen verbinding meer kunnen maken met de server. Op het moment dat de Poodle-bug uitkwam, waren er nog steeds browsers in omloop die per default geen TLSv1 ondersteunen, zoals Internet Explorer 6. Ondanks dat TLSv1.0, de opvolger van SSLv3, al 15 jaar oud was.

Freak

Deze bug is eigenlijk ontworpen door en voor de NSA. Ze vonden het in de jaren ‘90 namelijk niet leuk dat gegevens werden versleuteld, omdat ze deze dan niet meer konden lezen. Hun oplossing was een export-verbod op ‘moeilijke’ cryptografie. Je gegevens waren nog steeds veilig, behalve voor de supercomputers van de NSA. Inmiddels zijn we 20 jaar verder en is een gewone PC van nu net zo krachtig als een supercomputer van toen. Zodoende kan ‘iedereen’ de encryptie kraken. Niet zo handig dus, omdat het bleek dat er heel veel sites nog steeds de oude EXPORT ciphers ondersteunen.

Het positieve effect

Ik begon mijn verhaal met de stelling dat deze problemen uiteindelijk een positief effect heb gehad, maar tot nu toe heb ik nog niet heel veel positiefs gemeld. Even geduld nog, dat komt eraan. Laten we eerst even kijken wat deze bugs gemeen hebben.

Van SSL naar TLS: think positive

Ze misbruiken een oude en reeds lang geleden vervangen versie van het SSL/TLS-protocol. Dit komt doordat het internet aan elkaar hangt van zeer veel verschillende computers en andere apparaten. Om een oude versie van het protocol te laten vallen, moeten al deze devices ook de hogere versie snappen. Hierdoor wordt er niet snel afscheid genomen van een oude versie. En daar zit naar mijn mening de grote winst! We hebben afscheid genomen van SSLv3.

Meer bekendheid

De pakkende namen van de lekken hebben ook zeker bijgedragen aan dit effect. Dit zorgde ervoor dat de lekken ook buiten het kleine clubje beveiligingsexperts bekend werden. Zodoende gaven ze duidelijk aan dat er een noodzaak was om maatregelen te nemen. Bij onze support-afdeling zagen we ook meer vragen binnenkomen over de SSL en TLS gebruikte ciphers en keygrotes. Zoveel, dat we besloten om naar aanleiding van Heartbleed, er een artikel over te schrijven.

SNI

Ondertussen heeft ongeveer de hele wereld SSLv3 uitgezet. Dit heeft als bijkomend voordeel dat de paar browsers die geen SNI snapten ook zo goed als verdwenen zijn. SNI is een extensie op TLS die ervoor zorgt dat je op één IP-adres meerdere SSL-certificaten kan hebben. Het hebben van een eigen IP-adres voor je beveiligde website is dus niet meer strikt noodzakelijk. Erg prettig en daarom hebben we SNI bij Antagonist ingeschakeld, zodat SSL-certificaten eenvoudig en zonder eigen IP-adres geïnstalleerd kunnen worden.

Toekomst

Eén ding is zeker, in de toekomst zullen er nieuwe lekken gevonden gaan worden. Tevens blijft de snelheid en kracht van computers toenemen. Encryptie moet dus ook steeds sterker worden. Als we de kennis die we in het afgelopen jaar (en eigenlijk ook al ver daarvoor)  hebben opgedaan goed inzetten, dan zie ik het rooskleurig in. Maar dat betekent dus wel, dat we veiligheid voorop moeten stellen en oude protocollen en ciphers zo snel mogelijk moeten uitfaseren. Met het inschakelen van SNI en de hoge encryptie van onze certificaten zijn wij er voorlopig klaar voor. Nieuwsgierig?

Vergelijk hostingpakketten →

Ook de komst van HTTP/2 (de opvolger van HTTP/1.1 dat momenteel de standaard is) zet encryptie, meer dan ooit tevoren, hoog op de agenda. De browsermakers lijken ervoor te kiezen om enkel varianten met encryptie te ondersteunen en welke de verplichting heeft om TLS1.2 of hoger te gebruiken. Een goede zaak. Bij Antagonist houden we de ontwikkelingen nauwlettend in de gaten. We zorgen dat we up-to-date blijven en de laatste standaard zoveel mogelijk gebruiken. Alles om je site zo veilig mogelijk te hosten!

P.S. Wil je op de hoogte blijven van alle artikelen, updates, tips en trucs die verschijnen op ons blog? Dat kan! Via RSS, per e-mail, het liken op Facebook, het +1’en op Google+ of het volgen op Twitter.

Deel Deel Deel Deel

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *