SSL (Secure Sockets Layer) und TLS (Transport Layer Security) sind kryptografische Protokolle, die eine sichere Datenübertragung zwischen einem Client und einem Server über ein Netzwerk gewährleisten. Sie verschlüsseln den gesamten Datenverkehr und verhindern das Abfangen und Verändern von Daten durch Angreifer. Laut Google Transparency Report (2025) verwenden mehr als 95% des gesamten mobilen Datenverkehrs weltweit TLS-Verschlüsselung. Ohne dieses Protokoll können Informationen, die über offenes WLAN oder ein Mobilfunknetz gesendet werden, von Dritten gelesen werden. Cloudflare, 2024
Wichtige Punkte
SSL (Secure Sockets Layer) ist ein Protokoll, das 1995 von Netscape zum Schutz des Webverkehrs entwickelt wurde. Die erste Version SSL 1.0 wurde nie veröffentlicht; SSL 2.0 (1995) und SSL 3.0 (1996) wurden bis Anfang der 2000er Jahre verwendet, enthielten jedoch kritische Sicherheitslücken. SSL wurde von TLS (Transport Layer Security) abgelöst — einer verbesserten, von der IETF standardisierten Version. TLS 1.0 (1999) basierte auf SSL 3.0, während die folgenden Versionen TLS 1.1 (2006), TLS 1.2 (2008) und TLS 1.3 (2018) sich allmählich von der ursprünglichen Architektur entfernten, neue Verschlüsselungsalgorithmen hinzufügten und Schwachstellen behoben. Heute gilt SSL als veraltet, und alle modernen Systeme verwenden TLS, obwohl beide Protokolle aus Gewohnheit oft zusammen als SSL/TLS bezeichnet werden.
Die Geschichte von SSL/TLS begann mit dem Bedarf an sicherer Datenübertragung im frühen Web. 1994 entwickelte Netscape SSL 1.0 für seinen Browser Navigator, aber das Protokoll wurde aufgrund schwerwiegender Sicherheitsprobleme nie veröffentlicht. SSL 2.0 wurde 1995 veröffentlicht und praktisch eingesetzt, enthielt jedoch zahlreiche Sicherheitslücken: fehlender Schutz vor Man-in-the-Middle-Angriffen, schwache Verschlüsselungsalgorithmen und Anfälligkeit für Truncation-Angriffe. SSL 3.0 (1996) behob die meisten Probleme, aber 2014 wurde die POODLE-Sicherheitslücke entdeckt, woraufhin die IETF alle SSL-Versionen offiziell für veraltet erklärte. TLS 1.0–1.3 verbesserten sukzessive die kryptografische Stärke, Leistung und Privatsphäre, wobei TLS 1.3 den Handshake von zwei auf einen Round-Trip reduzierte — entscheidend für mobile Anwendungen mit instabilen Verbindungen.
Handshake ist der Prozess des Aufbaus einer sicheren Verbindung zwischen einem Client und einem Server. Er besteht aus mehreren aufeinanderfolgenden Schritten, in denen die Parteien die Protokollversion aushandeln, Verschlüsselungsalgorithmen auswählen, Schlüssel austauschen und sich gegenseitig authentifizieren. In TLS 1.3 dauert der Handshake nur einen Netzwerk-Round-Trip (1-RTT), während TLS 1.2 zwei (2-RTT) benötigte.
Der erste Schritt ist das Senden eines ClientHello durch den Client — eine Nachricht mit einer Liste unterstützter TLS-Versionen, Cipher Suites und einer Zufallszahl. Der Server antwortet mit einem ServerHello, das die gewählte Version und Chiffre, sein X.509-Zertifikat und eine digitale Signatur enthält. Der Client überprüft das Zertifikat über die Kette der Zertifizierungsstellen (CA), generiert einen Sitzungsschlüssel und sendet ihn, verschlüsselt mit dem öffentlichen Schlüssel des Servers aus dem Zertifikat. Nach Bestätigung durch den Server beginnt die sichere Datenübertragung. Der gesamte Handshake dauert auf modernen Geräten 1–3 Millisekunden und ist für den Benutzer nicht wahrnehmbar.
Die Grundlage der TLS-Authentifizierung ist die Public-Key-Infrastruktur (PKI), die auf Zertifikaten im X.509-Format aufbaut. Jedes Zertifikat enthält: einen Domainnamen (Common Name oder Subject Alternative Name), den öffentlichen Schlüssel des Servers, den Namen des Ausstellers (Zertifizierungsstelle), ein Ablaufdatum und die digitale Signatur der CA. Der Client überprüft das Serverzertifikat entlang der Vertrauenskette: vom Serverzertifikat bis zur Root-CA, deren Zertifikat im Betriebssystem eingebettet ist. Auf Android-Geräten werden Root-Zertifikate im System-KeyStore gespeichert, der über Google Play Services aktualisiert wird; auf iOS — über iOS-Updates. Wenn ein Glied der Kette unterbrochen ist (abgelaufenes Zertifikat, Domain-Konflikt, unbekannte CA), bricht der Client die Verbindung ab. Für selbstsignierte Zertifikate (in der Entwicklung verwendet) ist explizites Vertrauen erforderlich — auf Android über die Network Security Config, auf iOS über NSExceptionDomains in Info.plist. Der Validierungsprozess der Zertifikatskette umfasst auch die Überprüfung des Widerrufstatus über CRL (Certificate Revocation List) oder OCSP (Online Certificate Status Protocol), obwohl auf mobilen Geräten OCSP-Anfragen oft übersprungen werden, um die Verbindung zu beschleunigen — dies ist ein Kompromiss zwischen Sicherheit und Leistung, den Architekten berücksichtigen sollten.
Obwohl die Begriffe SSL und TLS oft synonym verwendet werden, gibt es grundlegende technische Unterschiede zwischen ihnen, die die Sicherheit und Leistung mobiler Anwendungen beeinflussen.
| Merkmal | SSL 3.0 | TLS 1.2 | TLS 1.3 |
|---|---|---|---|
| Erscheinungsjahr | 1996 | 2008 | 2018 |
| Status | Veraltet (RFC 7568) | Aktiv (empfohlen) | Aktuell (am besten) |
| Round-Trips | 2 | 2 | 1 |
| Schlüsselaustauschalgorithmus | RSA | RSA, ECDHE | ECDHE (nur) |
| Authentifizierte Verschlüsselung | Nein | GCM, CCM | AEAD obligatorisch |
| Perfect Forward Secrecy | Nein | Optional | Obligatorisch |
Der Hauptunterschied zwischen TLS 1.3 und seinen Vorgängern ist die obligatorische Verwendung von Perfect Forward Secrecy (PFS) über das ECDHE-Protokoll. Das bedeutet, dass ein Angreifer selbst bei Zugriff auf den privaten Schlüssel des Servers zuvor abgefangenen Datenverkehr nicht entschlüsseln kann. Für mobile Anwendungen, bei denen die Kompromittierung des Servers eine reale Bedrohung darstellt, ist TLS 1.3 mit PFS eine zwingende Sicherheitsanforderung.
Ältere Versionen von SSL und TLS haben gut dokumentierte Sicherheitslücken, die sie für den Produktionseinsatz ungeeignet machen. POODLE (CVE-2014-3566) greift SSL 3.0 über ein Padding-Orakel an und ermöglicht die Entschlüsselung von Sitzungscookies in 256 Anfragen. BEAST (CVE-2011-3389) nutzt eine Schwachstelle im TLS 1.0 CBC-Modus über einen vorhersagbaren IV aus. Heartbleed (CVE-2014-0160) — keine Protokoll-Schwachstelle, sondern ein Fehler in der OpenSSL-Implementierung, der das Auslesen des Serverspeichers ermöglicht: Laut Netcraft waren 2014 über 500.000 Server verwundbar. Ab Android 10 (API 29) und iOS 13 sind alle diese Protokolle auf Systemebene deaktiviert. Dennoch sollten Entwickler ihre Serverkonfiguration vor dem Start einer Anwendung mit dem SSL Labs Test (qualys.com) überprüfen, um sicherzustellen, dass keine veralteten Cipher Suites vorhanden sind und TLS 1.3 unterstützt wird.
In mobilen Anwendungen schützt TLS Daten auf drei Ebenen: Inhaltsverschlüsselung (niemand außer dem Server kann die Daten lesen), Integritätsprüfung (Daten können während der Übertragung nicht verändert werden) und Serverauthentifizierung (der Client ist sicher, dass er sich mit dem richtigen Server verbindet). Die Authentifizierung ist besonders kritisch: Ohne sie kann ein Angreifer den Server durch DNS-Spoofing oder einen gefälschten WLAN-Zugangspunkt imitieren.
Laut einer Studie von Google Play Protect (2024) verwenden 76% der Android-Anwendungen TLS korrekt mit Zertifikatsprüfung. Die restlichen 24% machen Fehler: Sie deaktivieren die Zertifikatsprüfung für Tests (und vergessen, sie in der Produktion wieder zu aktivieren), verwenden selbstsignierte Zertifikate ohne Validierung oder erlauben veraltete Protokolle wie SSL 3.0 und TLS 1.0. Apple App Transport Security (ATS) auf iOS erfordert seit 2017 mindestens TLS 1.2, und seit iOS 15 wird standardmäßig TLS 1.3 für alle Netzwerkanfragen verwendet. Für zusätzlichen Schutz wird auch die Implementierung von Certificate Pinning empfohlen — die Bindung an ein bestimmtes Serverzertifikat.
Betrachten wir ein Beispiel für die Konfiguration einer sicheren HTTPS-Verbindung unter Android mit OkHttp — einer der beliebtesten Netzwerkbibliotheken. Eine korrekte Konfiguration umfasst die erzwungene Verwendung von TLS 1.3 und die Zertifikatsprüfung.
val client = OkHttpClient.Builder()
.connectionSpecs(
listOf(
ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
.tlsVersions(TlsVersion.TLS_1_3, TlsVersion.TLS_1_2)
.cipherSuites(
CipherSuite.TLS_AES_128_GCM_SHA256,
CipherSuite.TLS_AES_256_GCM_SHA384,
CipherSuite.TLS_CHACHA20_POLY1305_SHA256
)
.build()
)
)
.hostnameVerifier { hostname, session ->
SSLSession.DefaultHostnameVerifier.verify(hostname, session)
}
.build()
In diesem Beispiel beschränken wir die Menge der unterstützten TLS-Versionen auf nur 1.3 und 1.2 und schließen die veralteten TLS 1.0/1.1 aus. Die Cipher Suites werden aus modernen Algorithmen mit AEAD-Modus und obligatorischer Perfect Forward Secrecy ausgewählt. Der HostnameVerifier prüft, ob der Hostname mit dem Zertifikat übereinstimmt. Unter iOS erfolgt eine ähnliche Konfiguration über die URLSession-Konfiguration mit dem Parameter tlsMinimumSupportedProtocolVersion, der auf .TLSv13 gesetzt wird. Zusätzlich kann unter iOS tlsMaximumSupportedProtocolVersion gesetzt werden, um die obere Versionsgrenze festzulegen — nützlich für die Kompatibilität mit älteren Servern, die noch nicht auf TLS 1.3 umgestellt haben. Eine solche Konfiguration garantiert das höchste Sicherheitsniveau für die Datenübertragung in einer mobilen Anwendung.
Häufig gestellte Fragen
TLS ist eine neuere und sicherere Version des Protokolls. SSL ist veraltet und sollte nicht verwendet werden (RFC 7568). In der Praxis beziehen sich beide Begriffe auf HTTPS-Verschlüsselung, aber technisch gesehen laufen alle modernen Systeme über TLS 1.2 oder 1.3.
Installieren Sie ein Proxy-Tool wie Burp Suite oder Charles Proxy und fangen Sie den Datenverkehr der App ab. Wenn die Verbindung HTTPS verwendet und das Zertifikat gültig ist — verwendet die App TLS. Wenn der Datenverkehr über HTTP läuft — liegt keine Verschlüsselung vor.
Für Produktions-Builds sind nur TLS 1.2 und TLS 1.3 zulässig. Die Protokolle SSL 3.0, TLS 1.0 und TLS 1.1 müssen sowohl auf dem Server als auch in der Client-Anwendung deaktiviert werden. Seit 2020 verlangen die wichtigsten Plattformen (Android, iOS, Browser) mindestens TLS 1.2.
Ja, es wird empfohlen. TLS überprüft das Zertifikat über eine Kette von Zertifizierungsstellen, aber wenn eine CA kompromittiert wird (wie 2011 bei DigiNotar geschehen), könnte ein Angreifer ein gefälschtes Zertifikat ausstellen. Pinning fügt eine zusätzliche Überprüfungsebene hinzu.
TLS 1.3 verkürzt die Verbindungsaufbauzeit von 2 Round-Trips auf 1, was eine Verbesserung von 30–50% bei der ersten Verbindung ergibt. Für mobile Anwendungen mit instabilen Verbindungen (U-Bahn, Züge) ist dies entscheidend für die Datenladegeschwindigkeit.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch