TLS Aufbau und Funktion
Transcrição
TLS Aufbau und Funktion
Aufbau und Funktionsweise von TLS Andreas Eisele, Karsten Stepanek June 19, 2016 Hochschule Aalen Fach: Seminar Projektbetreuer: Prof. Dr.Werthebach 1 Contents 1 Vorwort 3 2 Was ist TLS 2.1 DTLS die Variante für UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Abgrenzung von TLSv1 und SSLv3 . . . . . . . . . . . . . . . . . . . . . . . 4 5 5 3 Geschichte 6 4 Aufbau von TLS 4.1 Chipher-Suites . . . . . . . 4.1.1 Beispiel Chiper-Suite 4.2 Record Protokoll . . . . . . 4.3 Application Data Protokoll . 4.4 Alert Protokoll . . . . . . . 4.5 Handshake Protokoll . . . . 4.6 Change CipherSpec . . . . . . . . . . . . 7 7 8 9 10 10 10 10 5 Protokoll Aufbau in Wireshark 5.1 Client Hello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Server Hello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 13 6 Trust Center und Zertifikate 6.1 Trust Center (CA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Zertifikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 14 7 Funktionsweise 7.1 Voraussetzung für TLS-Verbindung mittels Zertifikate und Public-Key fahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Beginn eines Verbindungsaufbaus (mit TLS-Handshake-Verfahren) . . . 7.3 Eigentliche Übertragung, . . . . . . . . . . . . . . . . . . . . . . . . . 7.4 Wiederaufnahme einer TLS-Verbindung . . . . . . . . . . . . . . . . . . 7.5 Open Source Implementierungen von TLS (OpenSSL und GnuTLS . . 7.6 Anwendungsfälle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.1 HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.2 SMTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.3 IMAPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.4 POP3S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ver. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 16 17 17 17 17 17 18 18 8 Schwachstellen 8.1 DHE EXPORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Heartbleed-Exploit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 19 9 Zusammenfassung und Fazit 20 10 Ausblick 20 1 11 Anhang 21 Quellverzeichnis 21 Abbildungsverzeichnis 23 Abkürzungsverzeichnis 23 2 1 Vorwort Diese Arbeit stellt das TLS (Transport Layer Security) oder auch die verbreitetere Bezeichnung SSL (Secure Socket Layer) Protokoll vor. Basierend auf der Transport-Schicht und deren Protokolle wie TCP und UDP, sichert TLS diese Dienste. Der Schwerpunkt der Ausarbeitungen bezieht sich vor allem auf den Aufbau sowie dem generellen Ablauf dieses Protokolls. Anschaulich wird anhand von Abbildungen und Diagrammen vermittelt, wo im Osi-Schichtenmodell der Einsatz erfolgt und welche zusätzlichen Bedingungen für den Dienst von TLS vorausgesetzt sind. Um visuell ein besseres Verständnis für eben diesen Ablauf einer gesicherten Verbindung darzustellen, bedienen sich die Autoren an mehreren Stellen dem Netzwerkanalyse-Programm Wireshark. Kapitel 2 bildet die erste Festlegung was TLS überhaupt ist und aus welchen ProtokollBausteinen es besteht, zudem stellt es eine Abgrenzung zu der letzten Version von SSL und der nunmehr verwendeten Bezeichnung TLS her. Kapitel 3 gibt die Entstehungsgeschichte wieder anhand der zeitlichen Etappen der Entwicklung. Kapitel 4 veranschaulicht den Aufbau und stellt die unterschiedlichen Komponenten und deren Funktionen dar. Insbesondere beleuchtet dieser Abschnitt bereits die eingesetzten kryptografischen Algorithmen und deren Einsatz. Kapitel 5 zeigt die Abbildungen eines Wireshark Sniffs der die Nachrichten ”hello Client” & ”hello Server” darstellt und ermöglicht so einen detaillierten Einblick des Inhalts dieser Nachrichten. Kapitel 6 beschäftigt sich mit elektronischen Zertifikaten, die einen wichtigen Anteil an dem Konzept von TLS besitzen. Kapitel 7 ist ein sehr umfangreiches Kapitel, dass aufbauend auf den Vorangegangen den Ablauf einer TLS-Verbindung beschreibt. Zudem wird dort Bezug auf die verfügbaren Implementierungs-Kit‘s des TLS genommen und stellt die Umsetzungen von TLS in den Anwendungsprotokollen dar. Kapitel 8 nimmt Bezug auf die Schwachstellen vergangener SSL & TLS Versionen und verdeutlicht damit die Notwendigkeit einer ständigen Aktualisierung bzw. Anpassung an aktuelle Gefahrenquellen für diesen bedeutenden Dienst. Das Ziel dieser Arbeit besteht darin dem Leser die grundlegende Funktionalität des TLS Protokolls zu vermitteln und das nötige Wissen über Aufbau und Einsatzgebiete näher zu bringen. So kann die nötige Basis für tiefgreifendere Forschungen des TLS Protokolls entstehen. 3 2 Was ist TLS Transport Layer Security (TLS) ist ein sogenanntes hybrides Verschlüsselungs-Verfahren, das oberhalb der Transportschicht im Open Systems Interconnection Model (OSI-Schichtenmodell) angesiedelt ist. Es entstand aus dem unsicheren Secure Socket Layer (SSL)v3 (Secure Socket Layer) Protokoll, das von der Firma Netscape entworfen wurde. Im Jahr 1995 war das primäre Ziel von SSL das Hypertext Transfer Protocol (HTTP) Protokoll abzusichern. Dadurch entstand der Name Secure-Hypertext Transport Protokoll (S-HTTP) Allerdings wird der Begriff SSL auch für TLS verwendet, was für Laien oftmals verwirrend sein kann. Festzuhalten ist, dass SSL Version 3.0 nicht mehr als sicher eingestuft wird aufgrund verschiedener Sicherheitsmängel. Als aktuell sichere Versionen sind die in den Request for Comments (RFC)‘s beschriebenen Versionen TLS ab Version 1.2. [Sch05, Seite 276-278] Figure 1: OSI TLS [Abb] TLS wurde entworfen um eine Ende zu Ende-Verschlüsselung zwischen zwei Verbindungspartnern herzustellen. Wobei es in der Regel so ist, dass ein Client eine Verbindung zu einem Server aufbaut. Die während dem Verbindungsaufbau auf einer asymmetrischen Verschlüsselung basiert und später in ein symmetrisches Verfahren wechselt. TLS setzt auf der Transportschicht an und sichert die nicht verschlüsselten Transportprotokolle Transmission Control Protocol (TCP) und User Datagram Protocol (UDP). Eine weitere Variante ist IPsec die ebenfalls verwendet wird, durch die aufwändigere Implementierung ist diese Methode jedoch nicht so verbreitet. Um von einer sicheren Verbindungsart zu sprechen werden die drei folgenden Aspekte als die Eckpunkte verstanden um dies zu erreichen: • Authentifizierung des Kommunikationspartners • Authenzität (auch Integrität) vor Täuschung und Fälschung • Vertraulichkeit der Daten 4 2.1 DTLS die Variante für UDP Während TLS das TCP Protokoll unterstützt und damit zuverlässige sowie verbindungsorientierte Kommunikationen sichert, blieb lange eine adäquate Alternative für UDP nicht verfügbar. Mit der festen Standardisierung 2006 ist dann Datagram Transport Layer Security (DTLS) als sichere Methode für UDP Verbindungen verfügbar. Damit sind zum Beispiel VoIP Verbindungen verschlüsselt. Aufgrund des geringeren Einsatzgebietes und da der Aufbau und Ablauf zu TLS fast identisch ist, wird in dieser Arbeit nicht näher auf DTLS eingegangen. [ER12] 2.2 Abgrenzung von TLSv1 und SSLv3 In diesem Unterkapitel werden die zwei Verschlüsselungsverfahren TLS und SSL von einander abgegrenzt. Die Grundstruktur der Protokolle(z.B. Handshake Protokol) die auf das Recordprotokoll aufsetzten sind die gleichen geblieben. Für das Verständis wird hier kurz die MAC und HMAC erläutert. Die MAC wird Anahnd der kompremierten Nachricht erzeugt und anschließend an das TLS-Segment angehängt. Es dient der Datenintegrität des Packets. Bei SSL wird dies durch ein doppel Hash-Algorithmus(MD5 oder SHA1) anhand des Mastersecret, Sequenznummer der Nachricht und den Anwendungsdaten erzeugt. In dem TLS Protokoll ist es jetzt möglich ein beliebigen Hash-Algorithmus zu verwenden. Dies wird als HMAC bezeichnet. Die Alertmeldungen wurden größten Teil von SSL übernommen, bis auf die no certificat Meldungen. Weiterhin wurden bei TLS einige Meldungen ergänzt. Aufgrund das die symmetrischen Verfahren SKIPJACK und KEA (BlockChiphre-Verfahren) nicht mehr unterstütz wurden, gibt es keine gesonderten Zertifikatstypen in TLSv1 mehr. Weiterhin wurde die finished-Nachricht so erweitert das der geheime Schlüssel anzeigt ob die Nachricht von dem CLient oder Server kommt. Zum Schluss wurde durch das vergrößern der TLS-Variablen das Padding(aufblähen von Nachrichten durch pseudo Werte) verbessert, dient der Verwirrung von Angreifern, da nicht alle Daten relevant sind. TLS wurde so weiter entwickelt, das es abwarts kompatibel zu SSL ist. TLS wurde so weiter entwickelt, das es abwärts kompatibel zu SSL ist. [SEM], [REP] 5 3 Geschichte Seit Anfang der Neunziger Jahre des vergangenen Jahrhunderts verzeichnete das Internet einen rasanten Nutzer-Anstieg. Aufgrund der Verbreitung von Personal Computern und damit auch dem Zugang zum World Wide Web vernetzten sich vor allem immer mehr Privatpersonen und damit wuchs auch der kommmerzielle Einsatz des Internets. Die Möglichkeiten des Internets angefangen von der Informationsbeschaffung, E-Mail Verkehr oder einkaufen in Online-Shop‘s und natürlich Online-Banking verlangten nach einer sicheren Möglichkeit der Kommunikation im Web. Da das Internet bis dato überwiegend von Forschungsorganisationen wie Universitäten oder Regierungsstellen genutzt wurde, boten die wichtigsten Protokolle in der Web-Kommunikation TCP und IP noch keine Mechanismen für einen sicheren Datenaustausch. 1994 entwickelte die Firma Netscape Communications das Protokoll SSL (Secure Socket Layer) Version 1. für ihren Browser ”Netscape Navigator” das jedoch kaum verbreitet wurde. Kurz darauf entstand bereits die zweite Version. Netscape ging es vor allem um die Sicherung des HTTP-Protocols um Transaktionen wie Online-Banking und Online-Shopping sicher zu machen. Da es sich bei SSL um eine alleinige Entwicklung der Firma Netscape handelte blieben kryptografische Analysen unabhängiger Experten aus. So wurden bald darauf erhebliche Schwächen in der Version 2 entdeckt. Fast zeitgleich stellte Microsoft eine eigene Variante des SSL Vers. 2, das PCT-Protokoll für den Ende 1995 herausgebrachten Internet Explorer. Durch das PCT-Protokoll war es möglich in einer Client Serververbindung die Daten zu authentifizieren, jedoch noch nicht zu verschlüsseln. Auch Netscape veröffentlichte 1995 die dritte Version des SSL-Protokolls, welches grundlegend überarbeitet wurde und nicht nur die Schwachstellen der Version 2 behoben hatte sondern auch um Funktionen des PCT‘s ergänzt wurde. Um letzlich einen herstellerunabhängigen Standard herzustellen, setzte sich eine Arbeitsgruppe Internet Engeneering Task Force (IETF) zusammen und stellte 1999 die erste Version des TLS (Transport Layer Security) Protokolls vor. Es unterscheidet sich kaum von SSL Version 3 was mit dazu beiträgt, dass nach wie vor beide Bezeichnungen SSL und TLS noch verwendet werden. Das Protokoll ist in ständiger Entwicklung und Anpassung an technische Neuerungen, die aktuelle Version 1.2 des TLS (Stand 2015) wird zum Beispiel vom BSI als gesetzliche Mindestvorschrift in der Bundesverwaltung festgelegt. [Zah06], [Sch05], [KOM] 6 4 Aufbau von TLS Das TLS ist eng mit dem TCP Protokoll verzahnt. Da es genau oberhalb der Transportschicht im OSI-Schichtenmodell angesiedelt ist. Dadurch nutzt das TLS die Eigenschaften der zuverlässigen Kommunikation von TCP. Das Transport Control Protokoll ist für die zuverlässige und fehlerfreie Datenübertragung verantwortlich. Der Aufbau sieht wie folgt aus: Figure 2: TLS-Schichtenmodel [SEM] In den kommenden Unterkapiteln wird das Abbild näher erläutert. 4.1 Chipher-Suites Unter dieser Suite findet man mehrere Konstellationen zwischen Authentizität- und Verschlüsselungverfahren. Die stärkste Suite orientiert sich an der jeweils schwächsten Methode in seiner Chipher-Suite. Bei dem Verbindungsaufbau schlägt der Client dem Server mehrere Chipher-Suites vor, aus denen wiederum der Server eine auswählt, die anschließend im Record Protokoll eingetragen wird. Der Bezeichner einer Chiphre-Suite ist wie folgt aufgebaut: TLS Schlüsselaustauschverfahren WITH VERFAHRENzurDATENSICHERUNG Das WITH dient lediglich zur Trennung. Nachfolgend werden zwei Cipher-Suite aus TLS 1.0 näher betrachtet. Eine weitere heute gängigere Suite ist die ”TLS ECDHE RSA WITH AES 128 GCM SHA256”. Das elliptic curve diffie-hellman (ECDHE) ist eine Erweiterung von Diffie-Hellman (DHE) die durch eine mathematische Ellipse-Curve erweitert wurde. Im Gegensatz zu SSL Ver.3.0 wurden die Verschlüsselungsverfahren verstärkt. Statt Triple Data Encryption Standard (3DES) wird Advanced Encryption Standard (AES) 128Bit verwendet und statt SHA-1 wird SHA256Bit genutzt. Da die heutigen Endgeräte deutlich leistungsstärker, sind ist es möglich auch rechenintensivere Verfahren anzuwenden ohne das dies einen merklichen Performanceunterschied macht. [Sch05, Seite 278 ff] 7 • TLS RSA WITH 3DES EDE CBC SHA Bei dieser Chipher-Suites wird das Rivest, Shamir und Adleman (RSA) ProtokoTherell verwendet um die Kommunikationsteilnehmer zu authentifizieren, das geschieht parallel zum Schlüsselaustausch. Gleichzeitig dient das Protokoll auch der Verschlüsselung des von Client erzeugten Schlüsselmaterials. Die darauf folgende Datenübertragung wird mittels 3DES im EDE-CBC-Modus verschlüsselt. Das SHA-1 Hash-Verfahren sorgt für die Gewährleistung der Datenintegrität. • TLS DHE RSA WITH 3DES EDE CBC SHA Das ist ein weiteres Verfahren das den vorherigen sehr ähnlich ist. Der Unterschied hierbei ist das das Schlüsselmaterial mittels des Diffie-Hellman Verfahren statt findet. Die Vorgaben einer Primzahl und einem Generator gehen vom Server aus. Darauf folgend werden die DH-Werte mit der RSA-Singatur authentifiziert. Der weitere Ablauf ist dann der gleiche wie im vorherigen Beispiel. 4.1.1 Beispiel Chiper-Suite Der detaillierter Einblick in die Chipher-Suite. Wenn man die Suite TLS ECDH RSA WITH AES 128 mit CBC SHA256 betrachtet ist der zweite Wert ”ECDH” das Verfahren zum Schlüsselaustausch. Darauf folgt die Zertifikatart ”RSA” und die Verschlüsselung mit dem Betriebsmodi ”AES 128”. Das ist eine 128 Bit AES-Verschlüsselung mit dem Betriebsmodi Cipher Block Chaining (CBC) Mode. Zusätzlich verwendetes Hashverfahren ist ”SHA256”. AES handelt es sich um ein symmetrisches Verschlüsselungsverfahren welches Blockweise verschlüsselt. Zurzeit sind keine effektiven Angriffe bekannt d.h. dass dieses Verfahren also als sicher gilt und wird zum Beispiel in der Absicherung von W-Lan Netzen verwendet unter WPA2. Es gib drei verschiedene Bit Längen, allerdings werden in TLS nur 128Bit und 256Bit eingesetzt. RSA ist ein Kryptosystem von Rivest, Shamir und Adelman welches eine asymmetrisches Verschlüsselungsverfahren darstellt und meist in Verbindung mit Zertifikatssystemen zum Einsatz kommt. Es wird empfohlen bei langen Laufzeiten eine Schlüssellänge von 15360Bit zu verwenden. ECDH wird benötigt um einen geheimen Schlüssel zu erzeugen bei dem kein sicherer Kanal zur Verfügung steht. Dabei nehmen die Verbindungspartner einen öffentlichen und einen geheimen Parameter. Diese werden ausgetauscht und der Gegenüber kann mit seinem geheimen Schlüssel die Nachricht vom Sender entschlüsseln. Das EC steht hier für das eine Elliptic Curve Cryptography verwendet wird. 8 CBC ist das Verfahren für die Block Erzeugung und im Anschluss mit dem AES erstellten Schlüssel XOR Verknüpft. Es wird zuerst mit ECDH ein Schlüssel generiert. Im Anschluss sendet der Server das RSA Zertifikat, je nach Einstellung kann der Server auch ein Zertifikat vom Client verlangen. Diese werden von dem jeweiligen Partner überprüft der das Zertifikat bekommen hat und anschließen wird dann auf die symmetrische Verschlüsselung gewechselt (AES128). 4.2 Record Protokoll Das Record Protokoll stellt die Schnittstelle zwischen TCP und dem TLS-Protokoll (Socket) dar. Wie in der 2.Figur weiter oben dargestellt, erkennt man das alle Daten von den darüber liegenden Protokollen in das Record Protokoll einfließen. Die Mechanismen Komprimierung, Authentifizierung und Verschlüsselung erfolgen erst nach einem erfolgreichen Schlüsselaustausch. Zu Beginn werden die Anwendungsdaten segmentiert und anschließend komprimiert. Daraus wird dann eine Checksumme erstellt und angehängt. Zum Schluss wird dann das ganze Segment verschlüsselt. Die Vorgaben für den ganzen Ablauf kommen durch die Chiper-Suite zustande. Diese enthält die Datenstrucktur wie auch die Algorithmen, die für den Ablauf relevant sind. [Sch05, Seite 286 ff] Figure 3: TLS Record Layer [Sch05] 9 4.3 Application Data Protokoll Die Daten von der darüberliegenden Schicht (z.B. HTTP) werden eins zu eins übernommen und vom Record Protocol fragmentiert, komprimiert und anschließend verschlüsselt. 4.4 Alert Protokoll Das Alert Protokoll ist für die Warn- und Fehlermeldungen zuständig. Durch die entsprechenden Meldungen können dem Kommunikationspartner die Informationen übergeben werden. Je nach Fehler kann das sogar bis zum Verbindungsabbau führen, wenn die Sicherheit der Verbindung gefährdet ist. Wie bereits erwähnt ist der Alert auf den Wert 0 gesetzt, wird die Alert Message ”close notify” übertragen, so bedeutet das. Das der Empfänger bestätigt keine Nachrichten mehr unter dieser Verbindung zu senden. 4.5 Handshake Protokoll Das Handshake-Protokoll dient zum aushandeln der Sicherheitsparameter zwischen Client und Server beim Verbindungsaufbau. Dabei kommt ein 4-way Handshake mit den folgenden Nachrichten zustande. 1. Client Hello 2. Server Hello (Server Key Exchange, Certificate, Certificate Request) Server Hello Done 3. Client Key Exchange, Finished (Certificate, Certifcate Verify) —Change Chipher Spec 4. Finished — Change Chipher Spec Die Nachrichten die in Klammer stehen sind optional und können an die ersten Nachricht in der Zeile mit hinzugefügt werden. Bei den Hello Nachrichten geht es darum den Algorithmus(Chipher Suite) auzuhandeln und die Zufallszahl auszutauschen. Die Key Exchange Nachrichten enhält Premaster-Secret welches später sich zu einen Master-Secret ableitet. Durch die Finished-Nachrichten laden beide Endsysteme ”Change Chipher Spec” und sind ab den punkt verschlüsselt. [HAN] Der detalierte Ablauf wird im späteren Kapitel näher erklärt. 4.6 Change CipherSpec Bei Change CipherSpec handelt sich um eine 1x Byte große Nachricht in der bestätigt wird, das ab sofort die ausgehandelte CipherSuite angewendet wird. Da bei einer Nachricht von gleichem Typ das Paket zusammengefasst werden kann, wird das Change Chipher Spec als seperates Protokoll verwendet. [SEM] 10 5 Protokoll Aufbau in Wireshark Um den Aufbau anschaulicher und Praxis näher zu gestallten, wird an dieser Stelle mittels Wireshark, zwei TLS Pakete eingebunden und näher beschrieben. Diese Pakete sind die Ersten die bei einer Kommunikation mittels TLS von Server wie auch Client gesendet werden. Dabei präsentiert der Client was für Mittel ihm zur Verfügung stehen und teilt dieses dem Server mit. Näheres zur Verbidungsaufbau finden Sie in den kommenden Kapiteln. 5.1 Client Hello In der folgenden Figur zeigen wir wie das TLS Protokoll anhand einer Wireshark-Aufzeichnung aufgebaut ist. Die erste Nachricht kommt vom Client und heißt ”Client Hello”. Der Hex-Code 0x0300 ist die SSLv3 also die letzte SSL Versionsnummer. Danach kam die Version TLSv1.0(0x0301) bei der, der Hex-Code von SSL fortläuft. Figure 4: Client Hello 11 Das ist die erste TLS Message die vom Client gesendet wird. In der Aufzählung wird das Protokoll näher erläutert: • Version: Hier gibt der Client die Version an, mit der er kommunizieren kann. • Session ID: Ist die gewünschte Session ID, die bei der ersten Nachricht leer ist. • Chipher Suites: In diesen Abschnitt teilt der Client dem Server mit, welche CipherSuite er verwenden kann. • Compression Method: Kann zu Beginn leer sein. Normalerweise stehen hier die Informationen über die Komprimierungs-Methoden die der Client verwenden kann. 12 5.2 Server Hello Die Antwort auf die erste Nachricht vom Client ist dann das ”Server Hello”. Hier werden dann die Verfahren vom Server aus festgelegt. Figure 5: Server Hello • Protocol Version: Auswahl der Version (in der Regel die höchste die der Client unterstützt. • Session ID: Wenn der Client bereits eine Session ID mit schickt, schaut der Server ob er diese ID in seinem Cache findet. Wenn das zutrifft wird die gleiche Session ID wieder zurück geschickt. Ist dies nicht der Fall dann wird die Session beendet. • Chipher Suite: Der Server wählt sich eine Chiper Suite vom Client aus. • Compression Method: Wählt ein Kompremierungsverfahren aus. • Certificate Request: Der Server sendet eine Liste von allen Zertifikaten die ihm zur Verfügung stehen. 13 6 6.1 Trust Center und Zertifikate Trust Center (CA) Bei einem Trust Center oder Certification Authority handelt es sich um eine Zertifizierungsstelle, welche digitale Zertifikate ausstellt, verwaltet und sperrt. Darüber hinaus signiert die Stelle öffentliche Schlüssel und veröffentlicht diese. Anbieter von Inhalten via Webservern können sich so im Internet mit einer unabhängiger Stelle gegenüber Anfragen identifizieren. Mit dem digitalen Zertifikat werden die Echtheit des öffentlichen Schlüssels und die digitale Signatur zertifiziert. Die Bundesnetzagentur oder der Deutsche Forschungsnetz Verein (DFN) sind nur zwei von sehr vielen solcher Zertifizierungsstelle. [CA], [SSLb] 6.2 Zertifikate Ein digitales Zertifikat soll Authentizität und Integrität in Verbindungen (Client und Server) gewährleisten. Die sehr weit verbreiteten X.509 Zertifikate werden in Zusammenhang mit dem Public-Key Verfahren eingesetzt. Von einem CA zertifiziert kann so ein Zertifikat für die TLS - Verbindung genutzt werden. In der Abbildung a) ist der Aufbau eines solchen Zertifikats dargestellt. In Abbildung b) ist der Ausschnitt eines in Google Chrome hinterlegten Zertifikats zu sehen, der HS-AAlen. [SSLb], [ZER] (a) X.509 (b) HSAAlenZertifikat Figure 6: Zertifikate [SSLb] 14 7 Funktionsweise 7.1 Voraussetzung für TLS-Verbindung mittels Zertifikate und Public-Key Verfahren Um eine sichere Übertragung im Internet zu gewährleisten sind Vertraulichkeit, Integrität (nicht Veränderbarkeit), Verbindlichkeit und Authentizität (sichere Absender-Identifikation) erforderlich. Das SSL bzw. TLS-Protokoll erreicht dies durch zwei Verschlüsselungsverfahren. • Das asymmetrische Public-Key-Verfahren wird während des Handshake angewandt und verwendet unter anderem RSA zur Verschlüsselung und Authentifizierung. • Nach dessen erfolgreichem Abschluss wird auf eine symmetrische AES (128 Bit, DES, Triple-DES-Verschlüsselung gesetzt, welche den Session key erzeugt. Diese Methodik nutzt dafür elektronische Zertifikate die von einem bereits erwähnten Trust Center oder auch Certification Authority (CA) ausgestellt werden. Dadurch wird die Identität eines Endpunktes also Computer oder Person verifiziert. Ein Trust Center stellt somit einen öffentlichen und privaten Schlüssel sowie das Zertifikat bereit. Diese Zertifikate sind oft schon als Rootzertifikate in den Browsern hinterlegt, abhängig von dem Browser sind dies dann mehr oder weniger. Eine entsprechende Meldung wird angezeigt, sollte ein Zertifikat fehlen. Die Server wiederum erhalten ihr Zertifikat und einen entsprechenden öffentlichen Schlüssel auf Anfrage an ein CA. Um nun das Serverzertifikat zu sichern, unterschreibt das CA mit seinem privaten Schlüssel das Zertifikat des Servers. [SSLa], [SSLb], [Sch05, Seite 284] 7.2 Beginn eines Verbindungsaufbaus (mit TLS-Handshake-Verfahren) Für den dann beginnenden Verbindungsaufbau sendet der Client eine ”Hello Client” Nachricht an den Server und handelt die Kommunikationsbedingungen aus. Diese Vorgang wird als Handshake-Verfahren bezeichnet und wird über das TLS-HandshakeProtokoll abgewickelt. Zu den ausgehandelten Bedingungen in dieser ersten Phase zählen die Festlegung der jeweils unterstützten Cipher Suites (Verweis auf Tripel: Verschlüsselungsalgorithmus, Schlüsselaustausch, Message Authentication Mode)und die zu verwendende Version (TLS 1.0, TLS 1.1 ...)zudem werden 32 Bytes bestehend aus 4 Bytes timestamp + 28 Bytes große zufällige Daten von Client und Server ausgetauscht(clientHello.random) um in einem späteren Schritt daraus den Master-key zu generieren. In der nun folgenden zweiten Phase sendet der Server wiederum ein ”Server Hello” und sein Serverzertifikat and den Client. Dieses von dem Server versendete Zertifikat, wurde von einem Trust Center durch dessen private key signiert und kann dann mit dem public key des Client geprüft werden. Der public key des im Browser des Client hinterlegten Zertifikats wurde wiederum von einem Trust Center zur Verfügung gestellt. Durch diesen Abgleich kann der Client sicher sein, dass es sich um den richtigen Server handelt. Zusätzlich kann der Server auch vom Client ein Zertifikat zur Gegenauthentifizierung anfordern. Durch die dritte Phase des Handshake sendet der Client dem Server einen 48 Bytes großen Pre-Master-key zu und leitet ein sogenanntes Challenge-Response-Verfahren ein. Dieses 15 Pre-Master-Secret wurde zuvor mit dem public-key des vom Server übermittelten Zertifikats verschlüsselt, die Authentifizierung erfolgt dann nur, wenn der Server auch im Besitz des dazu passenden private key ist. Die vierte und letzte Handshake Phase kann nun durch die korrekte Entschlüsselung des Pre-Master-Secrets berechnet werden. Die Berechnung beinhaltet die je 32 Byte Zufallsdaten von Client und Server aus der ersten Phase. Zuletzt wird an den Client und daraufhin an den Server eine verschlüsselte Client bzw. ServerFinished Meldung übertragen, welche die Werte der Hashfunktionen MD5 und SHA-1 aus den bisherigen ausgetauschten Handshake-Nachrichten enthält. Nun können Beide die Nachrichten je für sich entschlüsseln. Wenn sichergestellt wurde, das die Identitäten richtig sind, kann die eigentliche Datenübermittlung beginnen. [Zah06, Seite 314 ff], [Sch05, Seite 276 ff] 7.3 Eigentliche Übertragung, Der Client erstellt nun einen Session key der mit dem public key des Servers verschlüsselt wird, dieser Session key wird dann an den Server versandt. Mit dem private key des Servers kann dieser nun den symmetrisch chiffrierten Session key entschlüsseln. Durch diesen Vorgang besitzen Client und Server nun gemeinsam den Session key und sind in der Lage symmetrisch verschlüsselt zu kommunizieren. Auf diese Weise können beide Parteien nun ihre Nachrichten jeweils mit dem Session key verschlüsseln oder entschlüsseln und sicher ihre Daten übertragen. Der Vorteil einer symmetrischen Verschlüsselung während des Datenaustausches ist das sehr schnelle ver- und entschlüsseln des Session key im Vergleich zu den weit aufwendigeren asymmetrischen Methoden. [SSLb], [Zah06, Seite 316] Figure 7: SessionKey 16 7.4 Wiederaufnahme einer TLS-Verbindung TLS erlaubt ein Wiederaufnehmen einer Verbindung um den enormen Rechenaufwand bei der Zertifikatsüberprüfung und der Berechnung des Schlüsselmaterials einzusparen. Dies muss vom Server angeboten werden. Durch die Verwendung des bereits bestehenden Master-Secrets, kann dieser mit der jeweils neuen Zufallszahl kombiniert werden. In der Server-Hallo Nachricht ist eine Sitzungs-ID (session-ID siehe Seite 13) vermerkt, die es dem Client ermöglicht später bei Wiederverwendung dieser Sitzungs-ID auf die gleiche Verbindung aufzubauen und das ohne ein erneutes ausführen der aufwendigen asymmetrischen Operationen. In diesem Fall wird direkt neues Schlüsselmaterial erzeugt. [Sch05, Seite 285] 7.5 Open Source Implementierungen von TLS (OpenSSL und GnuTLS • OpenSSL ist ein Open-Source toolkit das Programmbibliotheken wie die crypto-Bibliothek für das Nutzen des TLS Protokolls in der Entwicklung von Netzwerkanwendungen zur Verfügung stellt. • GnuTLS unterscheidet sich kaum von der Funktionalität zu OpenSSL. Im Gegensatz zu OpenSSL ist GnuTLS GPL (General Public License) lizensiert und kann damit in GPLlizensierte Software eingebunden werden. Zusätzlich zu den verfügbaren Funktionen unterstützt GnuTLS z.B auch OpenPGP-Schlüssel. [Zah06, Seite 323] [GNU] 7.6 Anwendungsfälle An folgenden Beispielen werden Umsetzungen von SSL/TLS dargestellt. Die Endung S steht hier jeweils für Secure. 7.6.1 HTTPS Eine der ersten Lösungen für das SSL-Protokoll ist die Anwendung auf Webservern und Webbrowsern um vor allem sensible Onlinebanking-Verbindungen zu sichern. Diese Webserver verlangen zwingend eine SSL/ TLS - Verbindung. Der https - Service wird generell auf Port: 443 bereitgestellt. 7.6.2 SMTPS Das Simple Mail Transfer Protocol (SMTP) was einen Teil des Mailverkehrs im Internet regelt vor allem die Zugangskontrolle des Server-Dienstes. Standardmäßig lauscht der Server hier auf Port 25. 17 7.6.3 IMAPS Das Internet Message Access Protocol (IMAP) stellt ein Netzwerkdateisystem für e-mails bereit. SSL/ TLS wird auf Port 993 als IMAPS genutzt. 7.6.4 POP3S Das Post Office Protocol (POP3) regelt das ”abholen” von e-mails auf einem E-mail-Server. Auf Port 110 wird dieser Dienst ausgeführt. 18 8 8.1 Schwachstellen DHE EXPORT Mitte des Jahres 2015 wurde eine Schwachstelle des TLS (Version 1.1) Verfahrens beim Diffie-Hellman-Schlüsselaustausch entdeckt. Dies betrifft alle Betriebssysteme die TLS mit ”DHE EXPORT” Verschlüsselungsverfahren in Verwendung haben. Die Voraussetzungen für den Angriff ist der Zugang zum lokalen Netzwerk. Dabei handelt es sich hierbei um einen Man-in-the-middle Attacke, die Remote auf dem TLS-Handshake stattfindet. Die Schwachstelle ist ein Entwurfsfehler bei der Implementierung von diesem Verfahren. Ein Angreifer kann dadurch die Kommunikation abhören und die ausgetauschten Passwörter abfangen, sowie die Daten manipulieren. Dazu braucht der Angreifer lediglich den Rückfall auf eine unsichere Schlüssellänge zu veranlassen. Allerdings ist der Angriff sehr aufwendig, sodass dieser nicht geeignet ist für flächendeckende Angriffe. Weiterhin kommt dem Angreifer zu Hilfe das in sehr vielen DHE (Diffie-Hellman) Implementierungen die gleichen Primzahlen zum Einsatz kommen. Was ihm ermöglicht die Schlüssel vorab zu berechnen und damit viel Zeit spart. Die Lösung ist den Servern die Verwendung von ”DHE Export”-Verschlüsselungsverfahren zu deaktivieren und dafür ECDHE (Elliptic-Curve Diffie-Hellman) zu verwenden. [UNI] 8.2 Heartbleed-Exploit Ein trivialer Fehler mit großen Folgen. Der so genannte Heartbleed-Exploit unter TLS basiert darauf, dass einer der Kommunikationspartner Server oder Client in regelmäßigen Abständen ein Paket mit beliebigen Daten sendet, sodass die Verbindung am Leben erhalten wird. Bei OpenSSL war es jedoch so das die Länge des Payloads nicht überprüft wurde d.h. das, das Datenpaket beliebig groß wird. Die Pakete werden einfach entgegen genommen ohne das eine Überprüfung statt findet. Wenn der Client eine falsche Größe des Paketes angibt kann dieser dadurch die Daten von dem Server einfach auslesen. Ablauf des Angriffs: Der Client behauptet im Heartbleed-Paket welches zum Server geschickt wird das sein Paket 16KByte groß sei, allerdings ist es in echt nur 1 KByte groß. Der Server überprüft die Nachricht nicht weiter und füllt das Datenpaket mit seinen Daten auf, sodass es 16KByte groß ist. Darauf gefolgt sendet dieser die Nachricht wieder zurück zum Client. Wenn es schlecht läuft stehen Benutzernamen oder auch Passwörter in den vom Server zugesandten Daten. Allerdings funktioniert die Attacke nur lediglich unter TLS 1.0, die nicht mehr ganz aktuell ist. [HBA] 19 9 Zusammenfassung und Fazit In der Ausarbeitung wurde verdeutlicht, das die Umsetzung des Konzeptes des TLS eine der wichtigsten Sicherungs-Mechanismen für den Datenverkehr im Internet ist. Es wurde dargelegt wo der Einsatz des Protokolls erfolgt und wie Inhalt und Ablauf des Dienstes umgesetzt werden. Mit der Vertiefung der Punkte wie zum Beispiel der Aufbau einer Verbindung und der darin stattfindenden Prozesse können Rückschlüsse auf die Kernpunkte der Sicherheit genommen werden, welche bei TLS eingesetzt werden. Weiterhin wurden Themen wie elektronische Zertifikate, Verschlüsselungsverfahren und Protokolle der Anwendungs- und Transportschicht erläutert im Kontext der Verzahnung mit TLS. Abschließend wurde im Kapitel Schwachstellen auch die Wichtigkeit der ständigen Neubeurteilung der Implementierung dargestellt um den Dienst auch zukünftig sicher einsetzten zu können. Damit ist mit dieser Arbeit ein fundierter Einblick in Aufbau, Ablauf und Bedeutung des TLS Protokolls gegeben. Vertiefungen in Themen wie zum Beispiel Verschlüsselung oder explizite Fehler des Protokolls bei bestimmten Angriffsmethoden konnten aufgrund des Rahmens nicht näher behandelt werden. 10 Ausblick Da TLS und IPsec heutzutage noch am weitesten verbreitet sind wird hier noch ein kurzer Überblick darüber gegeben. Aufgrund das TLS auf der Anwendungsschicht arbeitet hat es den großen Vorteil das es quasi Betriebssystem unabhängig ist. In Gegensatz zu IPsec, das eine Änderung des Betriebssystem benötigt da es auf der Vermittlungsschicht aufsetzt. Beim Schlüsselaustausch ist TLS zudem komfortabler da in der Lösung alles integriert ist, in konträr zu IPsec welches hierzu zusätzliche Software benötigt. Die Einsatz Varianten sind bei beiden Protokollen Netz-zu-Netz-Sicherung wie auch Endezu-Ende-Sicherung verwendbar, allerdings ist bei TLS meist die zweite Variante gängig da Netz-zu-Netz den Zusatz Software benötigt. Da es in Kombination zu Konflikten kommen kann wurde das DTLS entwickelt um unabhängig von TCP die TLS Verschlüsselung anbieten zu können. Der unterschiedliche Einsatz in verschiedenen Schichten wird auch bewusst, wenn man die Firewall regeln modifizieren muss damit IPsec funktionieren soll. Daher ist das TLS wesentlich komfortabler und schneller einzurichten. Allerdings bietet es schlechtere Methoden zur Fehlererkennung im Vergleich zu Ipsec. Woraufhin wir zu dem Entschluss kommen das Dauerhaft VPN Verbindungen besser mit IPsec realisiert werden. Die Zugänge von Außerhalb z.B. von einer Geschäftsreise können mittels TLS dafür aber besser umgesetzt werden, aufgrund der Unabhängigkeit des Betriebssystems. Das TLS Protokoll ist nach wie vor eine gute Lösung für das sichern von Client - Server Verbindungen. Durch ständige Aktualisierungen des Protokolls welche durch neue RFC () Einträge verfolgbar sind, kann es auch zukünftig sicher eingesetzt werden. 20 11 Anhang Quellverzeichnis [Abb] OSI TLS. Quelle:http://orm-chimera-prod.s3.amazonaws.com/ 1230000000545/images/hpbn_0401.png, . – Accessed: 2016-06-07 [AuI] exChiperSuite. http://www.rn.inf.tu-dresden.de/hara/arbeiten/ BA_2014_Thiem_-_Auswahl_und_Implementierung_geeigneter_ kryptographischer_Verfahren_fuer_die_verschluesselte_und_signierte_ Proxy-Kommunikation.pdf, . – Accessed: 2016-05-13 [CA] CA Zertifizierungsstelle. http://www.itwissen.info/definition/lexikon/ Zertifizierungsstelle-CA-certification-authority.html, . – Accessed: 2016-05-23 [ER12] E. Rescorla, N. M.: DTLS. https://tools.ietf.org/html/rfc6347, 2012. – Accessed: 2016-04-28 [GNU] GnuTLS. https://de.wikipedia.org/wiki/GnuTLS, . – Accessed: 2016-05-16 [HAN] TLS Protocol. http://einstein.informatik.uni-oldenburg.de/rechnernetze/ handshake.htm, . – Accessed: 2016-06-07 [HBA] Heartbleed. http://www.heise.de/security/artikel/ So-funktioniert-der-Heartbleed-Exploit-2168010.html, . – Accessed: 2016-05-13 [Jr06] Jr, Nobody: My Article. 2006 [KOM] tls-transport-layer-security. http://www.elektronik-kompendium.de/news/ tls-transport-layer-security/, . – Accessed: 2016-04-013 [REP] TLS 1.0 vs SSL 3.0. http://www.repges.net/SSL/UNTERS_1/unters_1.HTM, . – Accessed: 2016-06-07 [Sch05] Schöller, Roland Bless Stefan Mink Erik-Oliver Blaß Michael Conrad HansJoachim Hof Kendy KutznerM̃.: Sichere Netzwerkkommunikation. Springer-Verlag Berlin Heidelberg, 2005. – ISBN 3540218459 [SEM] TLS SSL Seminar Arbeit. http://docplayer.org/ 2903915-Seminararbeit-zu-ssl-tls.html, . – Accessed: 2016-06-07 [SSLa] Secure Socket Layer. http://www.elektronik-kompendium.de/sites/net/ 0902281.htm, . – Accessed: 2016-05-13 [SSLb] SSLTelematik-Institut. %http://www.telematik-institut.org/ti-trust_ center/SSL-visualisierung.html, . – Accessed: 2016-06-01 [UNI] Export Attack. https://cert.uni-stuttgart.de/ticker/article.php?mid= 1732, . – Accessed: 2016-06-07 21 [Win] MS Windows NT Kernel Description. http://web.archive.org/web/ 20080207010024/http://www.808multimedia.com/winnt/kernel.htm, . – Accessed: 2010-09-30 [Zah06] Zahn, Markus: Unix-Netzwerkprogrammierung. Springer-Verlag Berlin Heidelberg, 2006. – ISBN 3540002995 [ZER] CertificateAuthority. http://winfwiki.wi-fom.de/index.php/ Implementierung_von_Open-Source_VPN-Systemen_am_Beispiel_von_OpenVPN, . – Accessed: 20160427 22 Abbildungsverzeichnis 1 2 3 4 5 6 7 OSI TLS [Abb] . . . . . . . TLS-Schichtenmodel [SEM] TLS Record Layer [Sch05] . Client Hello . . . . . . . . . Server Hello . . . . . . . . . Zertifikate [SSLb] . . . . . . SessionKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abkürzungsverzeichnis 3DES Triple Data Encryption Standard AES Advanced Encryption Standard CBC Cipher Block Chaining DHE DTLS Diffie-Hellman Datagram Transport Layer Security ECDHE elliptic curve diffie-hellman HTTP Hypertext Transfer Protocol IETF Internet Engeneering Task Force OSI-Schichtenmodell Open Systems Interconnection Model RFC RSA Request for Comments Rivest, Shamir und Adleman S-HTTP SSL Secure-Hypertext Transport Protokoll Secure Socket Layer TCP TLS Transmission Control Protocol Transport Layer Security UDP User Datagram Protocol 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 7 9 11 13 14 16