Kryptographie in der IT - Empfehlungen zu Verschlüsselung und Verfahren

Seite 3: Symmetrischen Verschlüsselung

Inhaltsverzeichnis

Kurz: Nimm AES mit 256 Bit.

Die eigentliche Verschlüsselung von Daten erfolgt in aller Regel mit einem symmetrischen Verfahren – das ist schnell und einfach. Symmetrisch heißt es deshalb, weil zum Ver- und Entschlüsseln das gleiche Geheimnis zum Einsatz kommt. Das müssen also sowohl Absender als auch Empfänger kennen – und tunlichst nur die.

Der unangefochtene Platzhirsch in diesem Bereich ist der Advanced Encryption Standard (AES). Es sind keine nennenswerten Schwächen bekannt; so gut wie alle angesehenen Kryptologen vertrauen ihm. Als gute Alternative gilt das unter anderem von der europäischen ENISA empfohlene Camellia, das allerdings deutlich langsamer ist. Beides sind sogenannte Block-Verschlüsselungsverfahren, die immer mit Datenblöcken fester Größe arbeiten.

Stromverschlüsselung arbeitet hingegen einen kontinuierlichen Datenstrom Byte für Byte ab. Eine solche Stream Cipher bietet Vorteile, etwa wenn man einzelne Daten im verschlüsselten Datenstrom exakt lokalisieren will. Das am weitesten verbreitete RC4 gilt als gebrochen oder zumindest sehr angeschlagen; man sollte es nicht mehr einsetzen. Schlimmer noch sind die beim Mobilfunk oft eingesetzten A5/1 und A5/2 – die kann man bereits in Echtzeit knacken.

Die vielversprechendste Stream Cipher ist ChaCha von Dan J. Bernstein; sie wird vor allem von Google in der Kombination ChaCha20-Poly1305 für HTTPS verwendet. Das ist im Rahmen von RFC 7905 für TLS 1.2 standardisiert. Als Schlüssellänge reichen derzeit 128 Bit aus; für langfristige Sicherheit sollte man 256- Bit-Schlüssel einsetzen.

Fazit: Auch bei den symmetrischen Verfahren ist alles okay; Probleme sind nicht in Sicht und für den Fall, dass doch welche auftauchen, gibt es ausreichend Reserven und Alternativen.


Die Bilddaten des c’t-Logos links wurden zweimal mit einem jeweils 16-stelligen
Passwort AES-verschlüsselt. Während die Verschlüsselung mit Cipher Block Chaining (CBC) nur Rauschen ohne sichtbare Strukturen zeigt (Mitte), ist im simplen Electronic Codebook Modus (ECB) die Form noch deutlich zu erkennen (rechts).

Kurz: Nimm AES-GCM.

Wenn man mit einer Block-Chiffre wie AES mehr als einen Block (bei AES 128 Bit = 16 Byte) verschlüsseln möchte, muss man sich überlegen, mit welchem Schlüssel man den zweiten und die folgenden Blocks chiffriert. Das legt der Betriebsmodus der Verschlüsselung fest, auch Cipher Mode genannt.

Immer wieder den gleichen Schlüssel zu nehmen (Electronic Codebook Modus, kurz ECB), verbietet sich, da damit gleiche Daten immer den gleichen Chiffretext erzeugen. Daraus können Angreifer oft schon sehr viel ableiten. Der am häufigsten genutzte Modus ist das Cipher Block Chaining (CBC), bei dem der Cipher-Text des jeweils vorgehenden Blocks in die Verschlüsselung mit eingeht. Dieses Verfahren weist jedoch Schwächen auf, die auch immer wieder zu realen Angriffen wie POODLE führten.

Beim Cipher Block Chaining geht der Ciphertext eines Blocks in die Verschlüsselung des nächsten mit ein.

Unter anderem müssen Datensätze immer auf ein Vielfaches der vollen Blockgröße verlängert werden. Auf Grund einer schlechten Entscheidung beim Design von SSL sind diese Fülldaten nicht integritätsgeschützt und lassen sich somit zum Durchprobieren bestimmter Entschlüsselungsmöglichkeiten missbrauchen. Ein solches „Padding Oracle“ war die Basis des spektakulären POODLE-Angriffs auf HTTPS-Verschlüsselung. Darüber hinaus lässt sich die Verschlüsselung großer Datenmengen mit CBC nicht parallelisieren.

Die bekannten Angriffe auf Verschlüsselung im CBC-Modus wurden immer recht schnell gefixt, sodass man es nach wie vor benutzen kann. Doch eigentlich will man weg davon. Die beste Alternative ist der Galois Counter Mode (GCM), der mit fortlaufenden Zählern arbeitet und voll parallelisierbar ist. Die wichtigste Eigenschaft ist jedoch, dass GCM die Integritätssicherung via MAC mit der Verschlüsselung kombiniert.

Diese Authenticated Encryption (AE) beziehungsweise auch Authenticated Encryption with Associated Data (AEAD) korrigiert endlich die vor vielen Jahren für SSL getroffene Fehlentscheidung, zuerst den MAC über die Daten zu bilden und dann erst zu verschlüsseln (MAC-then-Encrypt, siehe Padding Oracle). Für TLS 1.2 sind AES-GCM und Camellia-GCM standardisiert. Google setzt stattdessen auf die Strom-Chiffre ChaCha20 mit dem MAC Poly1305.

Speziell für die Verschlüsselung von Festplatten kommt neben CBC oft AES-XTS zum Einsatz. Das splittet den kompletten Schlüssel in zwei Hälften auf. Für eine echte AES-Verschlüsselung mit 256 Bit muss man also XTS mit 512-Bit-Schlüsseln füttern.

Fazit: Der aktuelle Stand der Dinge ist nicht wirklich schön, aber es ist Besserung in Sicht. Kein Grund zur Panik.