Aus Linux-Magazin 11/2016

Open SSL: Sweet-32-Attacke

© Dmitry Kalinovsky, 123RF

Ein neuer Angriff auf ältere Blockchiffren ermöglicht das Mitlesen der verschlüsselten Information. Er nutzt dabei Kollisionen beim Generieren des Chiffrats aus.

Open SSL ist ein weitverbreitetes Toolkit für die Transport Layer Security (TLS) und das Secure-Sockets-Layer-Protokoll (SSL). Unter anderem implementiert Open SSL verschiedene Verfahren zur Blockverschlüsselung (Block Cipher). Solche Blockchiffren sind effizienter als Stromchiffren, besitzen aber den Nachteil, dass sie nur einen einzigen Block verschlüsseln. Wer sie auf längere Datensätze anwenden will, muss einen bestimmten Modus wählen, der beschreibt, wie die Nachricht in verschiedene Blöcke zu zerlegen ist.

So gibt es beispielsweise den Electronic Code Book Mode (ECB), der jeden Block unabhängig von anderen Blöcken verschlüsselt. Der Cipher Block Chaining Mode (CBC) verknüpft hingegen mehrere Blöcke so durch eine XOR-Operationen (exklusives Oder) miteinander, dass jeder verschlüsselte Block mit allen vorherigen Daten korreliert ist. Das macht eine Attacke gegen CBC deutlich schwieriger als gegen ECB.

Es ist aber schon lange bekannt, dass solche CBC-Cipher anfällig für Kollisionsattacken sind. Darunter versteht man Angriffe, bei denen für zwei verschiedene Eingaben die gleiche verschlüsselte Ausgabe entsteht. Praktisch hatte das bisher kaum Auswirkungen, weil man glaubte, dass solche Angriffe nicht praktikabel sind. Nun wurde allerdings eine neue CBC-Attacke vorgestellt, die es einem Angreifer ermöglicht, deutlich mehr Daten zu entschlüsseln.

Bei der Attacke handelt es sich um eine Known-Plaintext-Methode, das heißt, der Angreifer muss den Kommunikationskanal abhören und sicher sein, dass ein bestimmter Klartext übertragen wird. Wenn dabei Cipher Block Collisions auftreten, kann der Angreifer das Resultat des XOR zwischen zwei Klartextblöcken in Erfahrung bringen und damit den unbekannten Klartext entschlüsseln.

Auf diese Weise gelang es Angreifern, HTTP-Cookies aus 785 GByte Netzwerkdaten zu entschlüsseln. Eine zweite Attacke demonstrierte, wie sich HTTP-Basic-Auth-Credentials über eine Open-VPN-Verbindungen entschlüsseln lassen. Konkret gestaltet sich der Angriff wie folgt. Im CBC-Modus wird ein verschlüsselter Block C(l) immer nach der Vorschrift

C(l) = E(P(l) XOR O(l-1))

verschlüsselt, wobei C() für die verschlüsselten Blöcke steht und P() den Klartextblock darstellt. E() ist die Verschlüsselungsroutine, die für jeden Block identisch ist. Die Indizes l geben dabei immer die Blocknummer in dem Datenstrom an.

Die Attacke nimmt an, dass eine Kollision zwischen zwei Blöcken auftritt, wobei einer der Blöcke (k, known) auf einem bekannten Klartext basiert und der andere Block (u, unknow) auf unbekannte Klartextdaten angewandt wurde. In diesem Fall hat der Angreifer zwei verschlüsselte Blöcke C(u) und C(k) mit:

C(u) = E(P(u) XOR C(u-1))
C(k) = E(P(k) XOR C(k-1))

Weil es sich um eine Kollision handelt, gilt hier C(u)=C(k). Da die Verschlüsselungsfunktion E dieselbe ist, muss auch

P(u) XOR C(u-1) = P(k) XOR C(k-1)

gelten. Diese Gleichung kann leicht umgewandelt werden in:

P(u) = P(k) XOR C(k-1) XOR C(u-1)

Damit lässt sich nun der unbekannte Text entschlüsseln.

Anfällig für diese Sweet-32-Attacke sind 64-Bit-Block-Ciphers wie 3DES und Blowfish, bei denen Kollisionen schon ab 232 Blöcken auftreten. Bei modernen Block Ciphers mit 128 Bit Länge tritt das Problem nicht auf. Darum sollte man grundsätzlich auf sie setzen.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben