Transport Layer Security

Aus MindLoot
Version vom 31. Juli 2010, 14:27 Uhr von El RIDO (Diskussion | Beiträge) (Zertifikate selber machen)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Transport Layer Security (TLS) oder Secure Sockets Layer (SSL) ist ein hybrides Verschlüsselungsprotokoll für Datenübertragungen im Internet. TLS 1.0, 1.1 und 1.2 sind die standardisierten Weiterentwicklungen von SSL 3.0 (TLS 1.0 steht neu für SSL 3.1). SSL wird also nun unter dem Namen TLS weiterentwickelt. Hier wird die Abkürzung SSL für beide Bezeichnungen verwendet.

Vor- und Nachteile

Der Vorteil des SSL-Protokolls ist die Möglichkeit, jedes höhere Protokoll auf Basis des SSL-Protokolls zu implementieren. Damit ist eine Unabhängigkeit von Anwendungen und Systemen gewährleistet.

Der Nachteil der SSL-verschlüsselten Übertragung besteht darin, dass der Verbindungsaufbau auf Serverseite sehr rechenintensiv und deshalb etwas langsamer ist. Die Verschlüsselung selbst nimmt je nach verwendetem Algorithmus nur noch wenig Rechenzeit in Anspruch. Die verschlüsselten Daten können von transparenten Kompressionsverfahren (etwa auf PPTP-Ebene) kaum mehr komprimiert werden. Als Alternative bietet das TLS-Protokoll ab Version 1.0 die Option, die übertragenen Daten mit ZLib zu komprimieren, dies wird jedoch in der Praxis vor allem aus Performancegründen kaum eingesetzt.

SSL verschlüsselt nur die Kommunikation zwischen zwei Stationen. Es sind jedoch auch Szenarien (insbesondere in serviceorientierten Architekturen) denkbar, in denen eine Nachricht über mehrere Stationen gesendet wird. Wenn jede dieser Stationen aber nur einen Teil der Nachricht lesen darf, reicht SSL nicht mehr aus, da jede Station alle Daten der Nachricht entschlüsseln kann. Somit entstehen Sicherheitslücken an jeder Station, die nicht für sie bestimmte Daten entschlüsseln kann.

SSL in der Praxis

SSL-Verschlüsselung wird heute vor allem mit HTTPS eingesetzt. Die meisten Webserver unterstützen TLS, viele auch SSLv2 und SSLv3 mit einer Vielzahl von Verschlüsselungsmethoden, fast alle Browser und Server setzen jedoch bevorzugt TLS mit RSA- und AES-Verschlüsselung ein.

SSL ist ohne eine zertifikatsbasierte Authentisierung problematisch, wenn ein Man-In-The-Middle-Angriff erfolgt: Ist der Man-In-The-Middle vor der Übergabe des Schlüssels aktiv, kann er mit beiden Seiten den Schlüssel tauschen und so den gesamten Datenverkehr im Klartext mitschneiden.

In Verbindung mit einem Virtual Server, z. B. mit HTTP (etwa bei Apache über den VHost Mechanismus), ist es grundsätzlich als Nachteil zu werten, dass pro IP-Adresse nur ein Zertifikat verwendet werden kann, da die eigentlichen Nutzdaten des darüber liegenden Protokolls (und damit der Name des VHosts) zum Zeitpunkt des SSL/TLS Handshakes noch nicht übertragen wurden. Dieses Problem soll in der nächsten TLS-Version 1.2 mit der "Server Name Indication" behoben werden. Dabei wird bereits beim Verbindungsaufbau der gewünschte Servername mitgesendet.

Zusammen mit SSL-Zertifikaten versuchen die Trust Center häufig, nutzlose Site Seals zu verkaufen.

Weitere bekannte Anwendungsfälle für SSL sind POP3, SMTP, NNTP, SIP, IMAP, IRC und MBS/IP, FTP und EAP-TLS.

OpenSSL

OpenSSL ist eine Open-Source-Implementierung des Transport SSL/TLS-Protokolls und bietet darüber hinaus weitergehende Funktionen zur Zertifikat-Verwaltung und zu unterschiedlichen kryptographischen Funktionen. Es basiert auf dem SSLeay-Paket, das von Eric A. Young und Tim Hudson entwickelt wurde und wird zur Zeit von einer unabhängigen Gruppe weiterentwickelt.

OpenSSL umfasst verschiedene Applikationen, beispielsweise zur Erzeugung von Zertifikaten, von Zertifizierungsanträgen und zur Verschlüsselung. Die verschiedenen Applikationen sind zusammengefasst im Kommandozeilen-Programm openssl.

Zertifikate selber machen

Einfaches PEM-Zertifikat erzeugen: (z. B. für Apache)

openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout zertifikat.pem -out zertifikat.pem

Konvertieren in das PKCS#12-Format (z. B. für IIS)

openssl pkcs12 -export -out zertifikat.pfx -in zertifikat.pem -name "Zertifikat Name"

Dateien verschlüsseln und entschlüsseln

Ein cpio-Archiv verschlüsseln:

find . | cpio -o | openssl aes-256-cbc -e -salt > /tmp/home.cpio

und wieder entschlüsseln:

mkdir /tmp/restore
cd /tmp/restore
openssl aes-256-cbc -d -salt -in ../home.cpio | cpio -i