Beveiligde internet-verbindingen


Internet-verbindingen

Internet-verbindingen zijn niet veilig. Communicatie via het TCP/IP protocol, waarmee internet werkt, is triviaal af te luisteren. Door gebruik te maken van versleuteling (encryptie) via SSL of S-HTTP kan dit worden voorkomen.

Wie op Internet iets wil bestellen bij een elektronische winkel, zal op een gegeven moment zijn persoonlijke adresgegevens en credit card nummer naar de Website van de winkelier moeten sturen. Een groot probleem hierbij is dat de verbindingen die worden gebruikt om deze gegevens bij de ontvanger te krijgen, niet veilig zijn.

De simpele reden hiervoor is dat het TCP/IP protocol geen enkele vorm van geheimhouding kent. De te versturen data wordt in stukjes opgedeeld en als pakketje naar de andere kant gestuurd, alwaar de stukjes weer in elkaar worden gezet. Elk pakketje wordt door een aantal computers ontvangen en doorgegeven. Dit betekent dat elke computer die de pakketjes doorgeeft, de inhoud ervan kan lezen.

Bij gebruik van een Ethernet-netwerk is het zelfs mogelijk om het verkeer van en naar andere computers op hetzelfde netwerk te bekijken. Met behulp van dit soort “sniffen” zijn bijvoorbeeld wachtwoorden zo te achterhalen. Ook World-Wide Web verkeer kan op deze manier onderschept en gelezen worden.

Versleutelde internet-verbindingen

Wie er zeker van wil zijn dat zijn gevoelige gegevens niet onderschept worden, moet gebruik maken van versleuteling. Er zijn hiervoor een aantal protocollen ontwikkeld, waarvan Secure Socket Layer (SSL) en Secure HTTP (S-HTTP) de bekendste twee zijn. Deze twee worden vooral gebruikt voor WWW-verkeer. Andere protocollen, zoals Secure Shell (SSH), zijn vooral in gebruik voor telnet-sessies.

Protocollen als SSL en S-HTTP maken gebruik van cryptografie om een beveiligde verbinding tot stand te brengen. De zender versleutelt de pakketjes voordat ze verstuurd worden, en de ontvanger ontcijfert deze dan weer na ontvangst. Wie nu tussen de verbinding afluistert, krijgt alleen nog de versleutelde pakketjes te zien, en zonder de bijbehorende sleutel is hieruit de oorspronkelijke informatie niet terug te krijgen.

Sleutelgrootte

Een sleutel voor een encryptie-algoritme is een groot getal, over het algemeen uitgedrukt in een aantal bits. Voor een sleutelgrootte van 40 bits zijn er 2 tot de macht 40, ofwel 1100 miljard, mogelijke sleutels.

De sterkte van een algoritme wordt meestal gerelateerd aan de grootte van de sleutels. Voor publieke-sleutelalgoritmen als RSA is 1024 bits voldoende, voor een geheime-sleutelalgoritme zoals IDEA is 128 bits al genoeg. Een aantal algoritmen heeft de mogelijkheid om verschillende sleutelgrootten te gebruiken. Het geheime-sleutelalgoritme RC4 kan bijvoorbeeld zowel 40 bits als 128 bits sleutels gebruiken.

Publiek en geheim

Een encryptie-algoritme kan gebruik maken van publieke of van geheime sleutels. Bij een geheime-sleutelsysteem spreken beide partijen een gezamenlijke sleutel af, die ze geheim houden voor alle anderen. Encryptie en decryptie gebeurt met dezelfde sleutel. Een publieke-sleutelsysteem gebruikt twee sleutels. De ene is publiekelijk beschikbaar en kan alleen worden gebruikt voor encryptie. De andere wordt door de ontvanger geheim gehouden en kan alleen worden gebruikt voor decryptie. Het is nu mogelijk om de publieke sleutel naar anderen te sturen zonder zorgen over onderschepping er van. De ontvanger is de enige die het bericht met zijn geheime sleutel kan ontcijferen.

Het grootste nadeel van publieke-sleutelsystemen is dat ze veel trager zijn en veel grotere sleutels nodig hebben dan geheime-sleutelsystemen. Om deze reden worden publieke-sleutelsystemen meestal alleen gebruikt om een geheime sleutel uit te wisselen over een onveilig kanaal. De zender verzint een willekeurig getal, versleutelt dit met de publieke sleutel van de ontvanger en stuurt het resultaat naar hem toe. De ontvanger kan met zijn geheime sleutel het getal achterhalen. Dit getal wordt nu gebruikt als geheime sleutel voor de rest van de sessie. Deze sleutel heet dan ook de “sessie-sleutel”.

Secure Socket Layer, HTTPS

Het SSL protocol is erg flexibel. Er kunnen diverse encryptie-algoritmen worden gebruikt, en ook is er een mogelijkheid voor authenticatie, zodat een bezoeker de identiteit van de eigenaar van de Website kan verifieren. Alhoewel het voornamelijk wordt gebruikt voor verbindingen met Webservers, kan het in principe voor elke soort verbinding gebruikt worden.

Een SSL verbinding wordt gestart wanneer de client een verzoek stuurt naar de server. Hierin staan onder andere de algoritmen die de client ondersteunt. De server stuurt vervolgens een bevestiging terug met daarin het algoritme dat gebruikt gaat worden. Ook stuurt de server dan haar certificaat waarmee haar identiteit bekend is. Dit certificaat bevat onder andere de publieke sleutel van de server. De client kan deze dan gebruiken om een sessie-sleutel mee uit te wisselen.

S-HTTP internet-verbindingen

Een ander protocol, dat specifiek werd ontwikkeld voor gebruik op het WWW, is Secure HTTP (S-HTTP). SSL is meer algemeen, het kan in principe voor alle soorten verkeer gebruikt worden. S-HTTP werkt alleen met Webservers.

Ook bij S-HTTP wordt gebruik gemaakt van publieke-sleutelsystemen als RSA en Diffie-Hellmann om geheime sleutels uit te wisselen. Dit is echter niet verplicht; de client en de server kunnen ook een eerder afgesproken geheime sleutel gebruiken.

S-HTTP werkt ongeveer hetzelfde als SSL, wanneer er sprake is van communicatie met een Webserver. De client stuurt een verzoek naar de server, met daarin of een sessie-sleutel, versleuteld met de publieke sleutel van de server, of een aanwijzing over welke geheime sleutel gebruikt moet worden. Daarna kan de client pagina’s ophalen door versleutelde verzoeken op te sturen. Deze pagina’s worden dan ook weer versleuteld teruggestuurd.

Het voornaamste verschil tussen SSL en S-HTTP is dat bij SSL een veilige verbinding tot stand wordt gebracht, waarover dan pagina’s worden opgehaald, en bij S-HTTP zijn de verzoeken en de antwoorden elk afzonderlijk versleuteld.

Een beveiligde WWW-sessie in de praktijk

Stel, een gebruiker komt bij een Website waar hij een artikel wil bestellen, of zijn adresgegevens moet invullen om een folder of aanbieding toegestuurd te krijgen. Om te zorgen dat deze gegevens niet in handen van derden vallen, zal het formulier waar hij dit in moet vullen via een beveiligde verbinding moeten worden verstuurd. Dit wordt bewerkstelligd in zes stappen.

STAP 1

De gebruiker vult het formulier in en drukt op “Verzenden.” De browser ziet in de HTML-broncode dat het formulier via een beveiligde verbinding moet worden verstuurd. Hij meldt bij de server dat hij in staat is om met SSL zo’n verbinding op te zetten.

STAP 2

De server reageert door zijn publieke sleutel en een certificaat met zijn identiteit op te sturen. Hiermee kan de browser verifieren dat de publieke sleutel echt is en behoort bij de echte server.

STAP 3

De browser verzint nu een willekeurig getal, de zogeheten sessiesleutel. Hij versleutelt dit getal nu met de publieke sleutel van de server en stuurt het resultaat naar de server.

STAP 4

De server ontvangt het versleutelde bericht en gebruikt zijn eigen geheime sleutel om de sessiesleutel te voorschijn te halen. Als dit gelukt is, stuurt de server een bevestiging naar de browser.

STAP 5

De browser versleutelt alle informatie uit het formulier met de sessiesleutel en stuurt het resultaat naar de server.

STAP 6

De server gebruikt de sessiesleutel om de informatie te ontsleutelen en kan nu de informatie zoals gebruikelijk verwerken.

Stappen 5 en 6 kunnen nu zo vaak worden herhaald als nodig is om veilig gegevens uit te wisselen. Bij een volgend bezoek aan de site worden stappen 3 en 4 herhaald om weer een andere sessiesleutel af te spreken.

LinkedIn Group

Discussieer mee op LinkedIn.

Samenvatting
Beveiligde internet-verbindingen
Artikel
Beveiligde internet-verbindingen
Beschrijving
Internet-verbindingen zijn niet veilig. Communicatie via het TCP/IP protocol, waarmee internet werkt, is triviaal af te luisteren. Door gebruik te maken van versleuteling (encryptie) via SSL of S-HTTP kan dit worden voorkomen. Wie op Internet iets wil bestellen bij een elektronische winkel, zal op een gegeven moment zijn persoonlijke adresgegevens en credit card nummer naar de Website van de winkelier moeten sturen. Een groot probleem hierbij is dat de verbindingen die worden gebruikt om deze gegevens bij de ontvanger te krijgen, niet veilig zijn.
Auteur
Publisher Naam
ITpedia
Publisher Logo
Sidebar