Verschlüsselung: Encrypt-then-MAC für TLS standardisiert

Eine neue TLS-Erweiterung ermöglicht es, die Reihenfolge zwischen Authentifizierung und Verschlüsselung zu ändern. Die bisherige Methode führte zu Sicherheitsproblemen wie der Lucky-Thirteen-Attacke.

Artikel veröffentlicht am , Hanno Böck
Timing-Angriffe sind ein oft unterschätztes Sicherheitsproblem.
Timing-Angriffe sind ein oft unterschätztes Sicherheitsproblem. (Bild: Wilfredor/Wikimedia Commons)

Die TLS-Arbeitsgruppe der Internet Engineering Task Force (IETF) hat einen Standard veröffentlicht, der ein seit langem bekanntes Problem von verschlüsselten TLS-Verbindungen beheben soll. Als RFC 7366 wurde ein Mechanismus namens Encrypt-then-MAC nun verabschiedet.

Der Hintergrund ist die Reihenfolge, in der bei einer TLS-Verbindung Verschlüsselung und Authentifizierung stattfinden. Eine mit TLS abgesicherte Verbindung soll für die beteiligten Nutzer zwei Dinge gewährleisten: Die Daten sollen für einen Angreifer nicht lesbar sein und ein Angreifer soll nicht in der Lage sein, die Daten auf dem Transportweg zu manipulieren.

Angriff mittels Padding Oracle

Die meisten Verschlüsselungsalgorithmen von TLS nutzen hierfür eine Kombination aus einer Blockverschlüsselung (heute üblicherweise AES) im CBC-Modus und dem Authentifizierungsverfahren HMAC. Klassischerweise kombiniert TLS diese Verfahren in der Reihenfolge MAC-then-Encrypt: Zuerst wird mittels HMAC ein Authentifizierungstoken gebildet, anschließend werden Nachricht und HMAC-Token mittels eines Paddings aufgefüllt und verschlüsselt.

Das Problem dabei: Beim Empfänger können hier bei fehlerhaften Paketen zwei verschiedene Fehler auftreten. Entweder ist das Padding fehlerhaft oder die HMAC-Prüfung scheitert. Genau diesen Unterschied kann ein Angreifer ausnutzen und damit im schlimmsten Fall den geheimen, temporären Schlüssel einer TLS-Verbindung knacken. Dieser Angriff, der als Padding Oracle bekannt ist, wurde bereits 2002 auf der Eurocrypt-Konferenz vorgestellt. Um ihn zu beheben, wurde eine kleine Änderung eingeführt: Statt zwei unterschiedlichen Fehlermeldungen wird, egal welcher Fehler auftritt, dieselbe Fehlermeldung verschickt.

Unzureichender Workaround

Doch selbst bei identischen Fehlermeldungen gibt es für den Angreifer eine Möglichkeit, die beiden Fehler zu unterscheiden: Der Empfänger benötigt unterschiedlich lange Pakete, um einen Padding-Fehler oder einen HMAC-Fehler zu erkennen. Anhand der Antwortzeit kann ein Angreifer also weiterhin die beiden Fehlertypen unterscheiden und erhält Informationen über den Schlüssel - ein typischer Timing-Angriff. 2008 bei der Verabschiedung des TLS 1.2-Standards war die Problematik des Padding Oracles samt Timing bekannt und es gab bereits Gegenmaßnahmen - allerdings nur unzureichende. Das war den Autoren auch bewusst, sie hielten das Problem aber für nicht ausnutzbar. So schrieben sie: "Dies lässt einen kleinen Timing-Kanal bestehen [...], aber wir glauben nicht dass dieser groß genug ist um angreifbar zu sein [...]" (RFC 5246, Seite 23).

Das erwies sich als fataler Irrtum: Einige Jahre später gelang es Sicherheitsforschern, genau dieses bereits im Standard erwähnte Problem praktisch auszunutzen. Dieser Angriff wurde als Lucky-Thirteen-Attacke bekannt. Gegen die Lucky-Thirteen-Attacke wurden Workarounds in die gängigen Browser und TLS-Bibliotheken eingebaut, aber trotzdem gab es den Wunsch, das Problem generell zu beheben.

Zuerst verschlüsseln

Während es früher noch strittig war, welche Reihenfolge für kombinierte Verschlüsselung und Authentifizierung die korrekte ist, sind sich Kryptographen heute weitgehend einig, dass zuerst verschlüsselt und anschließend authentifiziert werden sollte. Der Grund: Wenn ein Angreifer irgendwelche Fehler in das Datenpaket einschleust, schlägt zuerst die Authentifizierung fehl. Solange ein sicheres Authentifizierungsverfahren verwendet wird, gibt es keine Möglichkeit, dass manipulierte Datenpakete weiterverarbeitet werden. Probleme wie das Padding Oracle oder die Lucky-Thirteen-Attacke sind somit von vornherein ausgeschlossen.

In der entsprechenden IETF-Arbeitsgruppe gab es daher eine längere Debatte darum, Encrypt-then-MAC für TLS einzuführen. Peter Gutmann, ein IT-Sicherheitsforscher von der Universität Auckland, hatte Anfang 2013 einen Entwurf für eine entsprechende Erweiterung vorgelegt. Diese Erweiterung wurde nach mehreren Änderungen jetzt offiziell verabschiedet.

Weitere Lösungen

Neben Encrypt-then-MAC gibt es weitere Möglichkeiten, die Probleme der Kombination aus Authentifizierung und Verschlüsselung zu beheben. So gibt es Verfahren, bei denen Authentifizierung und Verschlüsselung gleichzeitig durchgeführt werden. In TLS ist bislang dafür das Galois-/Counter-Mode-Verfahren (GCM) für AES spezifiziert. Auch der Einsatz von Stromverschlüsselungsverfahren verhindert Angriffe wie Lucky Thirteen. Allerdings hat der einzige bislang in TLS verfügbare Stromverschlüsselungsalgorithmus RC4 andere Sicherheitsprobleme, die noch gravierender sind. Die Standardisierung des als sehr sicher geltenden Stromverschlüsselungsverfahrens ChaCha20 ist in Arbeit und wird von manchen Browsern bereits experimentell unterstützt.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Aktuell auf der Startseite von Golem.de
GPT-4
"Funken von allgemeiner künstlicher Intelligenz"

Microsoft Research enthüllt eine umfangreiche Sammlung von Fallbeispielen, die mit dem ChatGPT-Nachfolger GPT-4 erzeugt wurden. Die Ergebnisse sind beeindruckend.
Eine Analyse von Helmut Linde

GPT-4: Funken von allgemeiner künstlicher Intelligenz
Artikel
  1. Software im Auto: VW will Millionen bei Cariad einsparen
    Software im Auto
    VW will Millionen bei Cariad einsparen

    Auch Mercedes deckelt die Ausgaben für die Softwareentwicklung. Stattdessen setzen beide Konzerne auf externe Partner wie Google.

  2. Produktstart: Zweifel bei Apple über die kommende AR/VR-Brille
    Produktstart
    Zweifel bei Apple über die kommende AR/VR-Brille

    Apple-Mitarbeiter sollen Bedenken an der geplanten AR/VR-Brille geäußert haben, weil sie den Preis zu hoch und die Nützlichkeit zu gering finden.

  3. Smart-Home-Anwendung: MQTT unter Java nutzen
    Smart-Home-Anwendung
    MQTT unter Java nutzen

    Wer Daten von Sensoren oder ähnlichen Quellen von A nach B senden möchte, kann das Protokoll MQTT verwenden, dank entsprechender Bibliotheken auch einfach unter Java.
    Eine Anleitung von Florian Bottke

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • Radeon 7900 XTX 24 GB günstig wie nie • Kingston Fury 16 GB Kit DDR4-3600 43,90€ • MindStar: AMD Ryzen 7 5800X3D 309€ • Nur noch heute: Cyberport Jubiläums-Deals • 3 Spiele kaufen, 2 zahlen • MediaMarkt-Osterangebote • Alternate: Corsair Vengeance 32 GB DDR-6000 116,89€ • MSI Optix 30" 200 Hz 289€ [Werbung]
    •  /