SSL/TLS-Verschlüsselung
Einleitung
Das Internet ist heutzutage zu einer allgegenwärtigen Selbstverständlichkeit geworden und nicht mehr aus unserem Leben wegzudenken. Wir kaufen die unterschiedlichsten Artikel zielsicher bei diversen Online-Shops, wickeln unsere Bankgeschäfte im Online-Banking ab, verwalten unsere elektronische Post und jonglieren mit Aktien und Wertpapieren auf verschiedenen Finanzportalen – sprich: Das Internet ist Teil unseres privaten und beruflichen Lebens geworden, und wir füttern es bereitwillig mit unseren persönlichen Daten wie Adressen, Passwörtern, Kontonummern und PINs.
Im gleichen Schritt wird es hierbei immer leichter, diese sensiblen Daten abzugreifen und zu missbrauchen. Längst interessieren sich nicht nur einzelne Hacker für diese Informationen, sondern vielmehr kriminelle Vereinigungen, die hier das große Geld wittern. Wie die jüngst bekannt gewordenen Vorfälle illegalen Datenhandels mit Millionen Bankkontodaten erneut zeigen, ist dies ein blühendes und lukratives Geschäft. Personal-Firewall- und Anti-Malware-Lösungen auf lokalen Computern bieten hierbei nicht den geringsten Schutz. Aus diesen Gründen ist es notwendiger denn je, auf eine verschlüsselte Kommunikation bei der Übertragung sensibler Daten im Internet zu achten.
Verschlüsselung mit TLS/SSL
Die beim Surfen und Mailen am häufigsten benutzte Verschlüsselung ist das Protokoll Transport Layer Security (TLS), das eine standardisierte Weiterentwicklung des Protokolls Secure Sockets Layer (SSL) 3.0 der Firma Netscape ist. Aus diesem Grund spricht man häufig im gleichen Atemzug von TLS und SSL. Diese beiden Protokolle gehören zu den hybriden Verschlüsselungsverfahren, d.h. sie bestehen aus einer Kombination von symmetrischen, wie AES, (Triple-)DES oder IDEA, und asymmetrischen Algorithmen (auch als Public-Key-Verfahren bekannt), wie z.B.RSA-Verfahren, um deren jeweilige Vorteile zu vereinen. Im Verbindungsaufbau wird mit Public-Key-Verfahren gearbeitet, die spätere Datenübermittlung dann mit symmetrischen Verfahren gesichert.
Hauptaufgaben von SSL/TLS:
1). Die Authentikation der Kommunikationspartner unter Verwendung von asymmetrischen Verschlüsselungsverfahren und Zertifikaten.
2). Die vertrauliche Ende-zu-Ende-Datenübertragung mit Hilfe symmetrischer Verschlüsselungsverfahren unter der Nutzung eines gemeinsamen Sitzungsschlüssels.
3). Die Sicherstellung der Integrität der transportierten Daten unter Verwendung von Message Authentication Codes.
Verdeutlichen wir den Aufbau einer gesicherten Verbindung anhand des Beispiels, dass ein Benutzer mit seinem Browser (auf dem Computer) auf eine verschlüsselte Webseite (Server) zugreift (siehe Abbildung 1). Der Benutzer wählt mit dem Browser die Webseite an und der Server übermittelt ihm das öffentliche Zertifikat der Webseite. In diesem Zertifikat stecken u.a. Informationen über den Namen des Servers und des Zertifikatausstellers sowie dessen Gültigkeitsdauer und der öffentliche Schlüssel.
Der Browser prüft nun das Zertifikat auf Gültigkeit, um so die Integrität und Authentizität der Webseite gewährleisten zu können. Da gültige Zertifikate nur von einer vertrauenswürdigen Instanz ausgestellt und nicht ohne Weiteres verändert werden können, bietet diese Vorgehensweise dem Benutzer schon grundlegenden Schutz vor Angriffen wie Phishing und Pharming, vorausgesetzt er handelt verantwortungsbewusst und akzeptiert keine fragwürdigen Zertifikate. Beim Phishing wird der Benutzer mittels falscher Links auf manipulierte Server verwiesen, beim Pharming mittels der Manipulation der Hostnamenauflösung (DNS-Spoofing) des Angreifers. Ob ein Zertifikat unerlaubt verändert wurde, wird mit kryptographischen Prüfsummen (Hash-Summen), wie z.B. mit dem SHA Hashfunktion, sichergestellt.
Akzeptiert der Browser das Zertifikat, generiert er eine Zufallszahl (den sog. Session-Key) und übermittelt sie, verschlüsselt mit dem öffentlichen Schlüssel des Servers, an die Webseite. Nur der Server ist nun mittels seines geheimen Schlüssels in der Lage, den Session-Key zu entschlüsseln. Damit ist der Verbindungsaufbau abgeschlossen und die eigentlichen Nutzdaten, wie die Formulardaten des Benutzers und der Inhalt der Webseiten, werden fortan mit dem Session-Key symmetrisch verschlüsselt und mit einem Hash-Verfahren auf Integrität verifiziert.
Allgemeine Verwendung von TLS/SSL
TLS/SSL kann eine Vielzahl höherer Protokolle unterstützen (HTTP, FTP, SMTP, POP3, Telnet, …). TLS ist in zwei Schichten angeordnet. Den Kern des Protokolls bildet eine TLS-Datensatz-Protokollschicht, die einen sicheren Kanal zwischen Client (dem Computer) und einem Server implementiert.
Die genauen Eigenschaften des Kanals werden bei der Einrichtung festgelegt, können aber Nachrichtenfragmentierung und Komprimierung beinhalten, die in Kombination mit Authentikation, Integrität und Vertraulichkeit angewendet werden.
Übersicht der unterstützten Anwendungen:
https – Hypertext Transfer Protocol Secure
Browsererkennung: https://…
Default Port: 443 (statt 80 bei http)
pop3s – Post Office Protocol Secure
Default Port: 995 (statt 110 bei pop3)
smtp/ssl – Simple Mail Transfer Protocol Secure
Default Port: 465 (statt 25 bei smtp)
imap4/ssl – Internet Message Access Protocol Secure
Default Port: 993 (statt 143 bei imap4)
ftps – File Transfer Protocol Secure
Default Port: 989 (data), 990 (control) (statt 20,21 bei ftp)
telnets – Teletype Network Secure
Default Port: 992 (statt 23 bei telnet)
sips – Session Initiation Protocol Secure
Default Port: 5061 (statt 5060 bei sip)
weitere Protokolle: irc, nntp, …
Theoretisch kann jedes Anwendungsprotokoll SSL/TLS zur Verschlüsselung und Übertragung seiner Daten nutzen.
SSL/TLS übernimmt die Aufgaben der Sitzungs- und Präsentationsschicht (Schichten 5 und 6) des ISO/OSI-Modells.
Ein wesentlicher Vorteil der Sitzungsschicht gegenüber der TCP-Ebene besteht darin, dass Zustandsinformationen über einen längeren Zeitraum und über verschiedene Einzelverbindungen hinweg gespeichert und für die Verwaltung genutzt werden können.
Für das zustandslose HTTP-Protokoll, das für jeden Zugriff auf eine Webseite eine neue TCP-Verbindung aufbaut, bedeutet das, dass mehrere solcher Verbindungen zu einer Sitzung gebündelt und damit effizienter als die jeweiligen Einzelverbindungen verwaltet werden können.
SSL/TLS arbeitet transparent, so dass es leicht eingesetzt werden kann, um Anwendungsprotokolle/-dienste ohne eigene Sicherheitsmechanismen vertrauenswürdige Verbindungen zur Verfügung zu stellen.
Unterschiede der Verschlüsselungsverfahren
Die verwendeten Verschlüsselungsverfahren unterscheiden sich jedoch stark in ihrer kryptographischen Leistungsfähigkeit. Zwar können alle Kryptosysteme mit genügend Rechenkraft theoretisch geknackt werden, allerdings basiert der notwendige Aufwand für den Angreifer auf zwei beeinflussbaren Variablen. Zum einen ist das die verwendete Schlüssellänge, denn der theoretische Aufwand für das Ausprobieren aller möglichen Kombinationen berechnet sich aus dem Grad der Zweierpotenz. Zum anderen ist es das verwendete Verschlüsselungsverfahren, das Schwachstellen im Algorithmus selbst aufweisen kann, so dass der theoretische Aufwand extrem verringert wird und schnell eine reale Bedrohung entsteht. Welche Kombination aus asymmetrischer und symmetrischer Verschlüsselung letztendlich gewählt wird, entscheiden die Clients (z.B. Web-Browser) und Server untereinander. Dazu schickt der Browser eine Liste seiner ihm zur Verfügung stehenden Verfahren an den Server, der wiederum aus diesem Angebot einen Algorithmus selektiert. Es wird bereits deutlich, dass beide Parteien sichere Algorithmen anbieten müssen.
Laut der Bundesnetzagentur und dem National Institute of Standards and Technology gelten z.B. die Verschlüsselungen RC4 sowie DES und die Prüfsumme MD5 mit zu geringer Schlüssellänge als unsicher (siehe Tabelle 1 und 2). Vertrauenswürdig sind hingegen die Verschlüsselungen Triple-DES und AES und die Prüfsumme SHA mit hoher Schlüssellänge.
Symmetrische Verschlüsselung | Anzahl Bits | Sicherheit |
---|---|---|
DES | 56 | Extrem unsicher |
Triple-DES | 168 | Bedingt sicher |
RC4 | 128 | Unsicher |
AES | 128 | Sicher |
AES | 256 | Extrem sicher |
Hash-Funktion | Anzahl Bits | Sicherheit |
---|---|---|
MD5 | 128 | Unsicher |
RIPEMD | 160, 256, 320 | Sicher |
SHA | 160, 224, 256, 384, 512 | Sicher |
Siehe auch:
http://www.internet-sicherheit.de/forschung/aktuelle-forschungsprojekte/internet-fruehwarnsysteme/ergebnisse/einleitung/