Secure Sockets Layer

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Internet- en netwerkprotocollen
Toepassingslaag DNS  FTP  Gopher  HTTP  HTTPS  IMAP  IRC  NNTP  POP3  RTP  SIP  SMTP  SNMP  SSH  TLS/SSL  Telnet  UUCP  XMPP
Transportlaag DCCP  SCTP  TCP  UDP
Netwerklaag ARP  ICMP  IGMP  IPv4  IPv6  RARP
Datalinklaag ATM  Ethernet  FDDI  PPP  Token Ring  Wifi
volgens het TCP/IP-model

Secure Sockets Layer (SSL) en diens opvolger Transport Layer Security (TLS), zijn encryptie-protocollen die communicatie op het internet beveiligen.

Inhoud

[bewerken] Doelstellingen

Het doel van de TLS protocollen is tweeledig.

De reden voor het gebruik van twee afzonderlijke cryptografische methoden, symmetrisch vs. asymmetrisch, is dat de laatste relatief erg tijdrovend is en zich dus niet leent voor het uitwisselen van grote bestanden, maar grotere veiligheid biedt omdat de sleutel voor het vercijferen niet gelijk is aan die voor het ontcijferen.

In alledaags (onveilig) gebruik wordt alleen de authenticiteit van de server gecontroleerd, terwijl de client geheel onbekend blijft. Door het gebruik van PKI is het ook mogelijk om clients te authenticeren. De protocollen kunnen ook gebruikt worden om client/server-applicaties te beveiligen tegen bijvoorbeeld afluisteren.

[bewerken] Toepassing

TLS wordt voornamelijk gebruikt in situaties waarin het nodig is te verifiëren of men inderdaad verbonden is met de gewenste server. Met name in bancaire toepassingen (internet-bankieren) of communicatie met de overheid is dit van groot belang, aangezien vaak financiële belangen in het spel zijn, of persoonlijke of anderszins vertrouwelijke informatie wordt uitgewisseld.

Deze veiligheid berust in veel gevallen op een Public Key Infrastructure (meestal X.509) die door een certification authority (CA) wordt ondersteund. In het recente verleden is echter gebleken dat verschillende bedrijven die zich als CA opwierpen minder betrouwbaar waren dan noodzakelijk, wat het vertrouwen in deze aanpak heeft ondermijnd. Met name het debacle rond DigiNotar heeft hierbij in Nederland een grote rol gespeeld, maar ook gevallen van rogue-CA's zijn bekend en hebben internationaal opzien gebaard.[2].

[bewerken] Geschiedenis en ontwikkeling

De eerste aanzet werd gegeven door de Secure Network Programming API die de gebruikelijke netwerk API's (met name Berkeley Sockets) nauwkeurig imiteerde om zo de ontwikkeling van veilige netwerksoftware gemakkelijk te maken.

[bewerken] SSL

SSL (secure socket layer) werd ontwikkeld door Netscape Communications Corporation op basis van het Kerberos beveiligings protocol. De eerste versie SSL-1.0 is nooit publiek uitgebracht, maar in 1995 kwam versie 2.0 op de markt. Deze versie bleek al snel cryptografische zwakheden te vertonen en werd in 1996 gevolgd door versie 3.0.

[bewerken] TLS 1.0 (SSL 3.1)

In 1999 werd RFC-2246 gepubliceerd, waarin TLS 1.0 werd beschreven. De verschillen met SSL-3.0 zijn, aldus de auteurs van de RFC, niet dramatisch, maar genoeg om interoperabiliteit tussen de twee te verhinderen. TLS 1.0 bevat een zogenaamd fallback-mechanisme waarmee een verbinding met SSL-3.0 kan worden gemaakt.

Deze versie, hoewel het de meest gebruikte is, vertoont de nodige zwakheden. Zo zij de cryptografische hashes RC4[3] en MD5[4] onveilig gebleken.

In 2011 is deze versie door Thai Duong en Juliano Rizzo gekraakt en kan de communicatie tussen twee partijen op een netwerk worden ontsleuteld, waarmee deze versie als encryptiestandaard, en daarmee als veilig protocol, definitief onbruikbaar is geworden[5].

[bewerken] TLS 1.1 (SSL 3.2)

In april 2006 werd de opvolger van TLS-1.0 gepubliceerd. Deze versie is een doorontwikkeling van versie 1.0, en biedt verschillende verbeteringen.

  • Bescherming tegen Cipher Block Chaining aanvallen.
  • Voortijdig afgebroken sessies kunnen hervat worden
  • Ondersteunt IANA parameter registratie

Hoewel deze versie een betere veiligheid biedt (de aanval van Duong en Rizzo werkt niet), wordt deze versie nog nauwelijks gebruikt[5].

[bewerken] TLS 1.2 (SSL 3.3)

In RFC's 5246 en 6176 worden nogmaals verbeteringen aangebracht, ditmaal met name in de gebruikte cryptografische hashes, die onveilig waren gebleken[3] [4] en zijn vervangen door SHA-256. Ook ondersteunt deze versie modernere encryptie methoden uit de Advanced Encryption Standard. RFC-6176 verbiedt tevens het terugvallen op de (onveilige) SSL-2.0 versies van het protocol.

[bewerken] Werking

Omdat SSL/TLS geïmplementeerd zijn als OSI-transport-layer (vandaar de naam) is het gebruik ervan grotendeels transparant voor het applicatie-protocol. Dat betekent in de praktijk dat het noch voor de http-server, noch voor de browser veel verschil maakt of TLS gebruikt wordt of niet, het applicatie-protocol (HTTP in dit geval, maar hetzelfde geldt voor andere protocollen) is hetzelfde.

Zowel TLS als SSL maakt gebruik van een aantal verschillende stadia:

Peer negotiation for algorithm support
In deze fase worden gebruikte versleutelings mechanismen afgesproken en worden ondersteunde versies van het protocol vergeleken. Als incompatibiliteit wordt geconstateerd, wordt de verbinding verbroken.
Public-key encryption-based key exchange and certificate-based authentication
In deze fase worden gebruikte certificaten vergeleken en wordt, middels het Diffie-Hellman mechanisme de (willekeurige) sleutel voor de blokvercijfering afgesproken.
Symmetric cipher-based traffic encryption
De gegevensuitwisseling vindt plaats gebaseerd op de overeengekomen versleutelings-methode en de afgesproken sleutel.

[bewerken] Beschrijving

TLS is gebaseerd op Secure Socket Layer (SSL). Een voordeel van TLS is dat het onafhankelijk is van het application protocol. Het protocol loopt boven transport protocollen (TCP/IP) en onder application protocollen zoals HTTP of IMAP. Wanneer er gecommuniceerd wordt tussen server en gebruiker, zorgt TLS ervoor dat de data niet kan worden afgeluisterd of vervalst. Door middel van cryptografie en authenticatie levert TLS een beveiligde verbinding met het internet. Meestal wordt alleen de authenticiteit van de server gecontroleerd, terwijl de client onbekend blijft. Door het gebruik van PKI is het ook mogelijk om clients te authenticeren.

Transport Layer Security voorziet de volgende veiligheden voor de TCP/IP verbindingen:

  • Authenticatie: een applicatie toestaan om de identiteit van een andere applicatie waarmee deze communiceert te verifiëren.
  • Privacy: gegevens die tussen applicaties worden overgebracht, kunnen niet worden misbruikt of bekeken.
  • Integriteit: applicaties detecteren wanneer gegevens zijn gewijzigd tijdens de transmissie.

[bewerken] Werking

TLS is samengesteld uit 2 interne lagen:

  • Onderste laag: Record Protocol wordt gebruikt om alle gegevens van de bovenste laag over te brengen (Gegevens van applicatie laag en bovenste laag van TLS).
  • Bovenste laag: Bestaat uit 3 verschillende sub-protocollen: Handshake Protocol, Change Cipher Protocol en Alert Protocol. Zij zorgen voor het tot stand brengen en het beheer van veilige verbindingen tussen client/server applicaties.

TLS protocol stack.jpg

[bewerken] TLS Protocol

TLS-protocol gebruikt certificaten om de uitgewisselde gegevens te authenticeren en het verzekeren van de privacy. Elk certificaat bevat een publieke sleutel. De eigenaar van het certificaat bezit een privésleutel die geassocieerd is met de publieke sleutel in het certificaat. Omdat de kosten hoog zijn voor cryptografie gebaseerd op de publieke sleutel, gebruikt TLS Protocol een Session key. Deze wordt gebaseerd op de publieke sleutel en een willekeurig getal. Dit willekeurige getal wordt uitgewisseld in het eerste bericht van het protocol (Client hallo en Server hallo). In de vervolgcommunicatie wordt vervolgens de goedkopere, afgeleide Session key gebruikt.

Client server handshake.jpg

[bewerken] TLS Record Protocol

Record Protocol is verantwoordelijk voor de fragmentatie en groeperen van gegevens die uit de bovenste lagen verzonden worden. De gegevens worden eerst gefragmenteerd en gecomprimeerd. Daarna zal een Message Authenticating Code (MAC) toegevoegd worden. Ten slotte wordt er nog een TLS record header geplaatst voor het ontvangen en herkennen van de gegevens.

[bewerken] TLS Handshake Protocol

Handshake Protocol maakt het mogelijk om vertrouwelijke informatie tussen client/server applicaties te versturen zodanig dat als een derde partij de informatie mocht onderscheppen deze niet leesbaar zal zijn.

[bewerken] TLS Change Cipher Protocol

Change Cipher Protocol is een zeer eenvoudig protocol. Het wordt gebruikt om onderbrekingen te verhinderen bij het opzetten van TLS sessie.

[bewerken] TLS Alert Protocol

Alert Protocol verstuurt alarm bij verbindingen tussen client/server applicaties. Er zijn 2 verschillende niveaus: Waarschuwing en fataal. Wanneer een fataal alarm wordt gesignaleerd, wordt de verbinding verbroken.

[bewerken] Geschiedenis

SSL werd in 1994 door Netscape ontwikkeld als een protocol dat blijvende en veilige transacties toeliet. In 1997 werd een Open Source versie van Netscape gecreëerd, die nu OpenSSL is. En in 1999 werd het bestaande protocol door een versie uitgebreid die nu als Transport Layer Security (TLS) bekend staat. Door overeenkomst, wordt de term "SSL" gebruikt zelfs wanneer technisch het protocol TLS wordt gebruikt.

[bewerken] Standaarden

De eerste definitie van TLS verscheen in RFC 2246: "The TLS Protocol Version 1.0". De huidige goedgekeurde versie is 1,1, wat in RFC 4346 wordt gespecificeerd: "The Transport Layer Security (TLS) Protocol Version 1.1".

  • RFC 2712: "Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)".
  • RFC 2817: "Upgrading to TLS Within HTTP/1.1".
  • RFC 2818: "HTTP Over TLS".
  • RFC 3268: "AES Ciphersuites for TLS".

[bewerken] Externe links

Bronnen, noten en/of referenties
Persoonlijke instellingen
Naamruimten
Varianten
Handelingen
Navigatie
Informatie
Hulpmiddelen
Afdrukken/exporteren
In andere talen