Nicht mehr lustig ist die Sache natürlich, wenn Krankenhäuser aus Kostengründen auf die aufwendige Verkabelungen verzichten und ihre Patientendaten unverschlüsselt übertragen oder man hören muss, dass ein grosser EDV-Dienstleister am Potsdamer Platz die DEBIlität (Sic!) besitzt, sich von der Straße aus sich hinter die Firewall hupsen zu lassen.
Der CCC hat mit Recht unter anderem das Einschalten Wired Equivalent Privacy(WEP) Verschlüsselungs- und Authentifizierungsprotokoll angemahnt. Leider taugt WEP weder für Vertraulichkeit noch für Zugangsschutz. Wobei hier sogar das Kunststück fertig gebracht wurde, die Sicherheit von normalen 40 Bit Kryptographie nochmal zu unterbieten. Wegen der hohen Praxisrelevanz sei trotzdem zunächst nochmal auf das 40-bit Problem eingegangen werden.
Ein Angriff auf 40-bit RC4 verschlüsselte Nachrichten wurde bereits mehrfach erfolgreich demonstriert, für die nötigen Anpassungen bekommt man an den meisten Unis nicht mal einen Praktikumsschein für das Informatik Grundstudium, und auch der konkrete Rechenaufwand dürfte jedes Wochenende ungenutzt in jedem mittleren Fakultäts-Rechnerpool rumidlen.
Die einzig gute Nachricht für 40-bit Kartenbesitzer ist, dass es um die Sicherheit der teureren ?128" bit Karte ("Gold") auch nicht wirklich viel besser bestellt ist. Wobei es sich übrigens eigentlich wiederum um 104 bit Karten handelt.
Es gibt einen gemeinsamen Schlüssel, welcher sicher an alle Teilnehmer gesendet werden muss ("Shared Secret"). An diesen Schlüssel (40 bzw. 104 bit) werden weitere 24 bit zur Erzeugung des Paketschlüssels angehängt. Dieser wird dann zu Verschlüsselung eines Datenpaketes verwendet. Die 24 bit IV werden als eine Art Initial Vektor (IV) bei jedem Paket im Klartext übertragen und sind daher allgemein lesbar. Als Prüfsumme wird CRC-32 verwendet. Diese wird ebenfalls mit verschlüsselt.
"Zuerst zerstören wir all die überflüssigen Planeten der benachbarten Galaxien um Platz für Speicher zu schaffen, anschließend füttern wir und unsere Ahnen das Verfahren einige Milliarden Jahre mit fein ausgewählte Klartext/Ciphertext Kombinationen, und schon haben wir eine leichte statistische Schwäche einer reduzierten Variante des Verschlüsselungsverfahrens gefunden".
Da sind doch die handgemachte Verfahren der Industrie, die schon durch schiefes Hinschauen die Schlüssel herausrücken (DVD, GSM, ...) eine echte Erholung.
Immerhin diese Lektion hatten die Protokollentwickler gelernt. Allerdings trafen Sie zielsicher unter den wirklich zahlreichen von der Forschungsgemeinde als hinreichend sicher geltenden Algorithmen die wohl schlechtest mögliche Wahl. RC4 ist ein patentiertes Verfahren von RSA Security Inc. Es ist so elegant und schnell, dass sich absolut kein gutes kryptographisches Gefühl einstellt. Und in der Tat wurden in der letzten Zeit wiederholt statistische Probleme aufgezeigt. Ein Blick in die CCC Datenschleuder hätte übrigens genügt ((http://cryptolabs.org/arcfour/WeisDatenschleuderSummer2000arcfour.txt) um auf dem Laufenden zu bleiben.
Übrigens, wenn das Protokoll insgesamt nicht so katastrophal schwach wäre, würde es sich vielleicht auch lohenen nachzusehen, ob die ersten Bits des Ausgabestromes von RC4 in verworfen werden. Die haben nämlich einige unschöne Eigenschaften.
Das Hauptproblem ist jedoch, dass RC4 ein Stomciffrierer ist, und sowas sollte man nur verwenden, wenn man sich damit auskennt.
Also
Ciphertext = Klartext XOR Schlüsselstrom(Key)
die Entschlüsselung ist genauso einfach:
Klartext = Ciphertext XOR Schlüsselstrom(Key)
Zwei Dinge sind recht offensichtlich. Erstens hängt der Schlüsselstrom nur vom Schlüssel und in keiner Weise vom Klartext ab. Wenn man also 2 Nachrichten mit dem selben Schlüssel verschlüsselt hat man ein Problem:
Ciphertext1 = Klartext1 XOR Schlüsselstrom(Key)
Ciphertext2 = Klartext2 XOR Schlüsselstrom(Key)
Kennt man nun den Klartext1, so kann man auch den Klartext2 lesen denn:
Ciphertext2 XOR Ciphertext1 XOR Klartext1
= (Klartext2 XOR Schlüsselstrom(Key))
(XOR Klartext1 XOR Schlüsselstrom(Key))
XOR Klartext1
= Klartext2
und es kommt sogar noch übler, es gilt nämlich
Ciphertext1 XOR Ciphertext2 = Klartext1 XOR Klartext2
Da die Klartexte meist eine erratbare Struktur haben, reicht meist also auch das passive Abhören.
Zweitens sind Stromciffrierer empfindlich gegen Manipulationen des Ciphertextes. Wenn man ein Bit im Ciphertext umkippt kippt genau das selbe Bit im Klartext nach der Entschlüsselung.
Wenn man darüberhinaus wie in WEP auch noch eine lineare Prüfsumme verwendet kann man problemlos gefälschte Pakete mit gültiger Prüfsumme erzeugen.
Eine goldene Regel ist also, dass wenn man schon Stromchiffrierer einsetzt, dringlichst für eine Vermeidung vom Schlüsselwiederholungen zu erzwingen und für die Integrität der Daten zu sorgen. In beiden Anforderungen versagt WEP kläglich.
Der WEP Standard "recommends" nicht requires" den Wechsel von IV bei
jedem Paket. Dies bedeutet, dass auch eine Implementierung, welche immer
den selben Schlüssel verwendet vollständig standardkonform ist.
Auch setzen einige Implementierungen den IV zu 0 bei jeder Initialisierung.
Und dann könnten einige ganz Clevere IV auf die Idee kommen, alle
IVs mit einem starken Zufallsgenerator erzeugen. Dann allerdings beginnt
es wegen des Geburtstagsparadoxons schon nach 2^{12}= 4096 Paketen heftig
zu kollidieren.
Zudem gibt es auch bei einer 104-bit Karte nur 2^{24} verschiedene Schlüsselströme. Verfügt man über eine 24 GB Platte (soll ja vorkommen) kann man versuchen eine Art vollständiges Codebuch erzeugen, mit welchem man ohne Kenntnis des eigentlichen Schlüssels jedes Paket entschlüsseln kann.
Als Prüfsumme verwendet WEP das bekannte CRC-32 Verfahren. CRC-32 ist schnell zu implementieren, gut im zufällige Bitfehler aufdecken und beliebt als mathematische Übungsaufgabe für Informatiker. Als kryptographische Prüfsumme ist es schlicht und einfach ein Alptraum. Wie der Name sagt erzeugt das Verfahren gerade mal eine 32 bit Ausgabe. Selbst bei der Verwendung einer starken kryptographischen Hashfunktion (z.B. SHA) würden 32 bit in gar keiner Weise ausreichen. Aber es kommt noch dicker. CRC ist linear. Linearität einer Prüfsumme ist eine Eigenschaft, die jedem Kryptographen eigentlich den Schlaf rauben sollte. Scriptkiddy-einfach wird es aber wenn man CRC-32 in ?Zusammenarbeit" mit einem Stromchiffrierer verwendet. Stromchiffrierer sind auch linear, also kann man beliebig Ciphertext manipulieren und die Prüfsumme anpassen.
Sei IP-EC die IP Adresse der ReallyEvalCooperation.com und IP-NH die Adresse von PrettyNiceHackers.org
so findet ein verschlüsseltes Pakete
IP-EC XOR UnbekannteSchluesselstrombits|| ....||
CRC-32(Paket) XOR AndereUnbekannteSchluesselstrombits
nach einer leichten Anpassungen
IP-EC XOR UnbekannteSchluesselstrombits {XOR IP-ECXOR IP-NH}||...||
CRC-32(Paket) XOR AndereUnbekannteSchluesselstrombits
{XOR CRC-32(IP-EC XOR IP-NH)}
mit gültiger Prüfsumme die richtige Adresse.
Ruediger Weis, Amsterdam, <ruedi@cryptolabs.org>