SSL encryptie toegelicht

SSL encryptie toegelicht

Inleiding SSL encryptie

In dit artikel licht ik een aantal technische aspecten van SSL encryptie toe zonder diep in de materie te duiken. Na het lezen van dit document ben je geen expert, maar zullen hopenlijk een aantal zaken hieromtrent duidelijker worden waarmee het principe te begrijpen is.

SSL encryptie, de basis

SSL staat voor secure socker layer. Het is een protocol dat data encrypt en verstuurd en vervolgens weer decrypt. Het is in het verleden begonnen met SSL versie 1.0, gevolg door 2.0 en 3.0. Vervolgens verwacht je versie 4.0, maar deze is gaan heten TLS1.0 en daar is weer een TLS 1.1 en 1.2 achter weg gekomen. (TLS = transport layer security). Heeft men het dus over SSL of TLS dan gaat het feitenlijk over hetzelfde.

Om een veilige communicatie op te kunnen zetten met een webserver in dit voorbeeld (het zou ook een andere service kunnen zijn als b.v. ftp, rdp, etc) is een certificaat nodig. Een certificaat kun je zelf genereren op veel besturingsystemen, maar in de praktijk zie je dat er gekozen wordt voor een publiek certificaat omdat dit vertrouwen uitstraalt. Er zijn verschillende partijen in de markt waar deze zijn af te nemen.

Onderdelen van een beveiligde communicatie

De webserver en de cliënt browser proberen onderling een beveiligde communicatie af te stemmen. Hieronder worden deze crypto elementen benoemd. Op de webserver wordt ingesteld wat wel of niet gebruikt mag worden, deze is daarmee leidend. Er spelen vier elementen een rol:

Protocol

Op de webserver wordt ingesteld welke protocollen worden ondersteund. Dit kan gaan van SSL 1.0 tot TLS 1.2 op het moment van schijven. De oudere protocollen zoals SSL1.0 en 2.0 en sinds kort ook 3.0 worden normaal gesproken niet meer gebruikt. Er zijn in de loop der tijd zwakheden in ontdekt.

Ciphers

Een cipher is een algoritme voor encryptie en decryptie van data. Zie het als een procedure die bepaalde stappen neemt om data te voorzien of ontdoen van encryptie. Er zijn veel varianten bijvoorbeeld rc4, tripple des, aes. Deze zie je altijd in combinatie met het aantal bits (56, 128 etc.) dat wordt gebruikt voor de versleuteling. Hoe meer bits van een bepaalde cipher hoe veiliger deze is kan als vuistregel worden gehanteerd.

Als een cipher al langer meegaat dan is de kans groter dat er een kwetsbaarheid in gevonden is. Zo wordt, des, rc2 en tegenwoordig ook rc4 afgeraden om te gebruiken.

Hashes

Een hash maakt van een zin of een woord een lange string die er uit komt te zien als acce17c7608e09d14a5485ca13378bba. Verander je 1 letter in de zin of het woord dan is de uitkomst totaal anders. Md5 en Sha zijn voorbeelden van hash functies en worden gebruikt om wachtwoorden (keys) onleesbaar te maken. Hash functies kunnen maar 1 kant op. Een hash kan alleen met Rainbow tables of veel cpu power en heel veel geduld terug gebracht worden tot het oorspronkelijke (leesbare) wachtwoord. Bedenk dat met de opkomst van Cloud Computing het steeds makkelijker en goedkoper wordt om tijdelijk veel cpu kracht te huren om hashes te kraken. Vooral bij de zwakkere algoritmes is dit tegenwoordig een groter risico dan vroeger.

Key exchange

Hiermee wordt de te gebruiken keys voor de crypto uitgewisseld tussen de gebruiker (browser) en de aanbieder van de content (webserver). Voorbeelden hiervan zijn Diffe-Hellmann en PKCS.

SSL encryptie en een praktijk dilemma?

Het kan voorkomen dat als men een oude browser of oud besturingsysteem gebruikt en de webserver is ingesteld voor het gebruik van de nieuwere veilige ssl encryptie protocollen dat er geen verbinding kan worden opbouwd. De browser en het gebruikte cliënt besturingssysteem samen bepalen wat de cliënt aan crypto mogelijkheden heeft.

Dat is dan ook de reden dat veiligheid, lees het gebruik van nieuwe protocollen, vaak een compromis is tussen het aanbieden van de website aan zo veel mogelijk gebruikers en daarmee mogelijk protocollen ondersteunen die als minder veilig bekend staan.

Testen

Protocollen, ciphers, hashes en key exchange worden op een gegeven moment ontwikkeld en toegepast. Hoe langer deze op de markt zijn hoe groter de kans is dat er een kwetsbaarheid in ontdekt wordt. Knap werk als je het allemaal uit je hoofd bij kunt houden. Ik zou je aanraden wat specifieke tooling te gebruiken om te testen op veiligheid.

SSL Tooling

Er is veel te krijgen hieromtrent met verschillende doelen, een drietal voorbeelden:

  1. De gangbare kwetsbaarheidscanners zoals Nessus kunnen controleren of er zwakke protocollen, ciphers etc. worden gebruikt.
  2. Een tool als SSLSCAN vraagt in enkele seconden alle mogelijke te gebruiken ssl encryptie elementen op bij een webserver.
  3. Online vind ik een tool van Qualys erg goed, naast deze tool bevat de site nog veel meer goede informatie. De link naar deze test tooling is hier te vinden: https://www.ssllabs.com/ssltest

 


Comments are closed.