RC5 Chiffre

Herkunft / Verwendung: RC5 (Rivest Cipher 5) wurde von Ronals Rivest 1994 entwickelt und ist eine symmetrische Blockchiffre mit einer Blocklänge von 32, 64 oder 128 bit (entsprechend 4, 8 oder 16 Bytes). Die Schlüsselänge kann 8 bis 2048 Bit betragen.

RC5 ist von der Firma RSA in den USA patentiert worden. Das Patent lief aber 2015 aus.

Der Nachfolgealgorithmus von RC5 ist RC6.

Beschreibung des Algorithmus

RC5 bedient sich bei der Verschlüsselung eines Feistel-Netzwerkes. In den Algorithmus gehen die Wortlänge (üblicherweise 32 bit), die Rundenzahl und die Schlüssellänge (1 bis 255 Bytes) ein. Die Länge der Blöcke, die jeweils auf einmal verschlüsselt werden, beträgt bei 32 bit Wortlänge 64 bit. Passend dazu empfiehlt sich eine Schlüssellänge von 16 Bytes und 12 Runden. Dieses Beispiel-Verfahren würde als RC5-32/12/16 bezeichnet werden.

Das folgende Beispiel bezieht auf eine Wortlänge (w) von 32 bit. Der Schlüssel wird in Teilschlüssel zu je 32 Bit aufgeteilt. Daraus werden die einzelnen Rundenschlüssel generiert (erweiterte Schlüsseltabelle). Vom Klartext werden pro Runde zwei 32-Bit-Blöcke A und B genommen. Die werden über ein Feistelnetwerk verschlüsselt, wobei in jeder Runde eine Addition zweier Wörter modulo 2w, eine XOR-Verknüpfung zweier Wörter und eine Rotation eines Wortes um b Positionen zum Einsatz kommen,, wobei b sich durch die log 2 w niederwertigsten Bits des anderen Wortes ergibt.

Die Sicherheit des Algorithmus hängt maßgeblich von der Verwendung der Rotation ab, die die einzige nichtlineare Operation des Verfahrens ist. Ali Aydin Selçuk der University of Maryland wandten allerdings ein, dass der Angriff auf falschen Annahmen beruhe und damit fehlerhaft sei.

Kryptoanalyse

Eine Rekonstruktion der erweiterten Schlüsseltabelle mittels linearer Approximationen soll lt. Kaliski und Yin bereits für 5 Runden 247 bekannte Klartexte erfordern und damit die Stärke von DES erreichen (im Bezug auf lineare Kryptoanalyse). Ab einer Rundenanzahl von 7 wäre der beschriebene Angriff sinnlos.

1997 beschrieb Howard M. Keys die Existenz linear schwacher Schlüssel für RC5-32/12/16. Er fand 228 schwache Schlüssel, die nur 217 bekannte Klartexte erforderten, zudem 268 schwache Schlüssel mit der Erfordernis von 257 Klartexten.

1999 stellen Borst, Preneel und Vandewalle ein Verfahren vor, dass mit linearen Approximationen RC5-32 mit 24+6r (r=Runden) bzw. RC5-64 mit 23+8r bekannten Klartexten mit 90% Wahrscheinlichkeit bricht. Dies bezeichneten Miyaji, Nonaka und Takii 2002 als hochgradig optimistisch und stellten einen auf einem Chi-Quadrat-Test aufbauenden Korrelationsangriff vor, mit 26,14r+2,27 benötigter Klartexte.

1999 versuchten sich Handschuh und Heys an einer Seitenkanal-Attacke auf die benötigte Zeit für die Berechnungen der (datenabhängigen, nichtlinearen) Rotationen. Rivest nahm wohl an, Rotationsoperationen verbrauchten immer dieselbe Anzahl CPU-Zyklen und dmit Zeit, bedachte aber nicht, dass es auf embedded Systemen durchaus zu unterschiedlichen Laufzeiten kommen kann. Diese Schwäche kann allerdings durch Dummy-Rotationen, die dafür sorgen, dass jede Art der Rotation dieselbe Zeit in Anspruch nimmt, ausgeglichen werden.

Zwischen 1997 und 2007 gehörte auch RC5 zu den Kandidaten der Secret-Key Challenge – einem öffentlichen Aufruf zum Brechen konkreter Chiffretexte mit einem Preisgeld von 10.000 US-Dollar. Die Organisation distributed.net koordinierte verteilte Angriffe auf die Chiffrate und brach RC5-32/12/7 innerhalb von 250 und RC5-32/12/8 innerhalb von 1757 Tagen. Die niedriger dotierten Challenges RC5-32/12/5 und RC5-32/12/6 wurden bereits zuvor in 3,5 und 313 Stunden gebrochen.

Beispiele

Klartext:BeispielklartextBeispielklartext (Länge 32 Bytes)
Schlüssel:Schokoladentorte (Länge 16 Bytes / 128 bit)
Chiffrat RC5-8/12/128 (ECB):FDE9091D AF439BD1 2DE6EF5C AC8DA3CC FDE9091D AF439BD1 2DE6EF5C AC8DA3CC
Chiffrat RC5-8/12/128 (CBC):FDE9664D 59C9BE94 52A52944 70D3A8A0 0FD92652 29EBE442 01692228 F00CBBCD
Chiffrat RC5-16/16/128 (ECB):89EE3CE5 19048197 22821B38 052FDFAC 89EE3CE5 19048197 22821B38 052FDFAC
Chiffrat RC5-16/16/128 (CBC):89EE3CE5 E83BAE66 535ABD25 72EE4F3F 841CC7AB 754D08BC BBF422ED 1586A015
Chiffrat RC5-32/20/128 (ECB):D5CB6FAB E83BF333 56263D02 E25A0BB7 D5CB6FAB E83BF333 56263D02 E25A0BB7
Chiffrat RC5-32/20/128 (CBC):D5CB6FAB E83BF333 2F19DC66 575A559C 440DC58F 3C5BBFBE CD2C4984 1107D7F5
Chiffrat RC5-64/24/128 (ECB):45757C47 EC1575D0 A6CE92AD E5078A2A 45757C47 EC1575D0 A6CE92AD E5078A2A
Chiffrat RC5-64/24/128 (CBC):45757C47 EC1575D0 A6CE92AD E5078A2A 8EB33C7A 92BA6A8C 7D1E935F AA3E79A1

Code / Chiffre online dekodieren / entschlüsseln bzw. kodieren / verschlüsseln (Decoder / Encoder / Solver-Tool)

Die Länge des Textes sollte durch das Doppelte der Wortlänge teilbar sein. Kürzere Texte werden mit Nullbytes rechts aufgefüllt. Die Länge des Ergebnisses enstspricht einem Vielfachen der Blocklänge.
Der Schlüssel sollte min. 16 Zeichen lang sein, besser noch ein binärer Hash mit min. 128 Bit.
Wenn Sie Texte eingeben, die nicht als Hex-Sequenz (ohne Leerzeichen) interpretiert werden können, erfolgt eine automatische Umsetzung in Binärdaten. Ist das Ergebnis nicht umsetzbar in druckbare ASCII-Zeichen, erfolgt eine automatische Ausgabe in Hex.



Quellen, Literaturverweise und weiterführende Links

Wobst, Reinhard: Abenteuer Kryptologie, Addison-Wesley-Verlag 2001, S. 213