www.wikidata.de-de.nina.az
Rabbit ist eine Stromchiffre die einen Schlussel mit einer Lange von 128 Bit und einen 64 Bit Initialisierungsvektor verwendet Inhaltsverzeichnis 1 Geschichte 2 Funktionalitat 2 1 Das Key Vorbereitungsschema 2 2 IV Schema 2 3 Next state Function 2 4 Zahlsystem 2 5 Extraktion 2 6 Ver und Entschlusselung 3 Beispiel 4 Geschwindigkeit 5 Sicherheit 6 Anwendung 7 Weblinks 8 EinzelnachweiseGeschichte BearbeitenRabbit wurde 2003 von Martin Boesgaard Mette Vesterager Thomas Pedersen Jesper Christiansen und Ove Scavenius bei der Firma Cryptico entwickelt 1 und erstmals im Februar 2003 auf dem 10ten FSE Workshop vorgestellt Das Design von Rabbit wurde von dem komplexen Verhalten realwertiger chaotischer Karten inspiriert Chaotische Karten zeichnen sich in erster Linie durch eine exponentielle Empfindlichkeit gegenuber kleinen Storungen aus so dass Iterationen solcher Karten zufallig und langfristig unvorhersehbar erscheinen 2 Der Algorithmus wird im RFC 4503 3 beschrieben von Cryptico wurde ein Patent fur den Algorithmus angemeldet und verlangte viele Jahre lang eine Lizenzgebuhr fur die kommerzielle Nutzung der Verschlusselung Seit Oktober 2008 ist die Software als Public Domain Software lizenziert und kann daher auch fur kommerzielle Zwecke kostenfrei genutzt werden 4 Funktionalitat Bearbeiten nbsp Verschlusselung mit dem Rabbit Algorithmus nbsp Entschlusselung mit dem Rabbit Algorithmus Der Rabbit Algorithmus nimmt einen geheimen 128 bit Schlussel und einen 64 bit Initialisierungsvektor als Eingabe und erzeugt fur jede Iteration einen Ausgabeblock von 128 pseudozufalligen Bits aus einer Kombination der internen Statusbits Die Ver und Entschlusselung erfolgt durch eine Kontravalenz bitweise XOR Verknupfung der pseudozufalligen Daten mit dem Klar bzw Verschlusselungstext Die Grosse des internen Zustands betragt 513 bit aufgeteilt auf acht 32 bit Zustandsvariablen acht 32 bit Zahler und ein Ubertragsbit 2 Das Key Vorbereitungsschema Bearbeiten Der Algorithmus wird durch die Expandierung des 128 bit Schlussels sowohl in die 8 Zustandsvariablen als auch in die 8 Zahler so initialisiert dass eine Eins zu Eins Korrespondenz zwischen dem Schlussel und den Anfangszustandsvariablen x j 0 displaystyle x j 0 nbsp und den Anfangszahlern c j 0 displaystyle c j 0 nbsp besteht Der Schlussel K 127 0 displaystyle K 127 0 nbsp wird in folgende acht Unterschlussel unterteilt 1 k 0 K 15 0 displaystyle k 0 K 15 0 nbsp k 1 K 31 16 displaystyle k 1 K 31 16 nbsp k 2 K 47 32 displaystyle k 2 K 47 32 nbsp k 3 K 63 48 displaystyle k 3 K 63 48 nbsp k 4 K 79 64 displaystyle k 4 K 79 64 nbsp k 5 K 95 80 displaystyle k 5 K 95 80 nbsp k 6 K 111 96 displaystyle k 6 K 111 96 nbsp und k 7 K 127 112 displaystyle k 7 K 127 112 nbsp Die Zustands und Zahlervariablen werden folgendermassen initialisiert x j 0 k j 1 m o d 8 k j bei geraden j k j 5 m o d 8 k j 4 m o d 8 bei ungeraden j displaystyle x j 0 begin cases k j 1 mod8 diamond k j amp text bei geraden j k j 5 mod8 diamond k j 4 mod8 amp text bei ungeraden j end cases nbsp undc j 0 k j 4 m o d 8 k j 5 m o d 8 bei geraden j k j k j 1 m o d 8 bei ungeraden j displaystyle c j 0 begin cases k j 4 mod8 diamond k j 5 mod8 amp text bei geraden j k j diamond k j 1 mod8 amp text bei ungeraden j end cases nbsp Anschliessend wird entsprechend dem nachfolgenden Zahlsystem und der Next State Funktion viermal iteriert um die Korrelationen zwischen den Bits im Schlussel und den Bits in den internen Zustandsvariablen zu verringern Abschliessend werden die Zahlerwerte entsprechend der folgenden Formal neu initialisiert um eine Wiederherstellung des Schlussels durch Umkehrung des Zahlersystems zu verhindern 1 c j 4 c j 4 x j 4 m o d 8 4 displaystyle c j 4 c j 4 oplus x j 4 mod8 4 nbsp IV Schema Bearbeiten Das IV Setup Schema kommt zustande indem der 64 bit IV Stream auf alle 256 bit des Counterstate XORed wird Die 64 bit des IV werden im Folgenden als I V 63 0 displaystyle IV 63 0 nbsp notiert 1 c 0 4 c 0 4 I V 31 0 displaystyle c 0 4 c 0 4 oplus IV 31 0 nbsp c 2 4 c 2 4 I V 63 32 displaystyle c 2 4 c 2 4 oplus IV 63 32 nbsp c 4 4 c 4 4 I V 31 0 displaystyle c 4 4 c 4 4 oplus IV 31 0 nbsp c 6 4 c 6 4 I V 63 32 displaystyle c 6 4 c 6 4 oplus IV 63 32 nbsp c 1 4 c 1 4 I V 63 48 I V 31 16 displaystyle c 1 4 c 1 4 oplus IV 63 48 diamond IV 31 16 nbsp c 3 4 c 3 4 I V 47 32 I V 15 0 displaystyle c 3 4 c 3 4 oplus IV 47 32 diamond IV 15 0 nbsp c 5 4 c 5 4 I V 63 48 I V 31 16 displaystyle c 5 4 c 5 4 oplus IV 63 48 diamond IV 31 16 nbsp c 7 4 c 7 4 I V 47 32 I V 15 0 displaystyle c 7 4 c 7 4 oplus IV 47 32 diamond IV 15 0 nbsp Das System wird dann viermal iteriert um alle Zustandsbits nichtlinear von allen IV Bits abhangig zu machen Die Modifikation des Zahlers durch die IV garantiert dass alle 2 64 displaystyle 2 64 nbsp moglichen Kombinationen des IV zu einem einzigartigen Keystream fuhren Next state Function Bearbeiten Der Kern des Rabbit Algorithmus ist die Iteration des Systems definiert durch folgenden Gleichungen 1 x 0 i 1 g 0 i g 7 i 16 g 6 i 16 displaystyle x 0 i 1 g 0 i g 7 i ll 16 g 6 i ll 16 nbsp x 1 i 1 g 1 i g 0 i 8 g 7 i displaystyle x 1 i 1 g 1 i g 0 i ll 8 g 7 i nbsp x 2 i 1 g 2 i g 1 i 16 g 0 i 16 displaystyle x 2 i 1 g 2 i g 1 i ll 16 g 0 i ll 16 nbsp x 3 i 1 g 3 i g 2 i 8 g 1 i displaystyle x 3 i 1 g 3 i g 2 i ll 8 g 1 i nbsp x 4 i 1 g 4 i g 3 i 16 g 2 i 16 displaystyle x 4 i 1 g 4 i g 3 i ll 16 g 2 i ll 16 nbsp x 5 i 1 g 5 i g 4 i 8 g 3 i displaystyle x 5 i 1 g 5 i g 4 i ll 8 g 3 i nbsp x 6 i 1 g 6 i g 5 i 16 g 4 i 16 displaystyle x 6 i 1 g 6 i g 5 i ll 16 g 4 i ll 16 nbsp x 7 i 1 g 7 i g 6 i 8 g 5 i displaystyle x 7 i 1 g 7 i g 6 i ll 8 g 5 i nbsp g j i x j i c j i 2 x j i c j i 2 32 m o d 2 32 displaystyle g j i x j i c j i 2 oplus x j i c j i 2 gg 32 mod2 32 nbsp Zahlsystem Bearbeiten Fur den Zahler werden folgende Konstanten benotigt die wie folgt definiert sind 1 a 0 0 x 4 D 34 D 34 D displaystyle a 0 0x4D34D34D nbsp a 1 0 x D 34 D 34 D 3 displaystyle a 1 0xD34D34D3 nbsp a 2 0 x 34 D 34 D 34 displaystyle a 2 0x34D34D34 nbsp a 3 0 x 4 D 34 D 34 D displaystyle a 3 0x4D34D34D nbsp a 4 0 x D 34 D 34 D 3 displaystyle a 4 0xD34D34D3 nbsp a 5 0 x 34 D 34 D 34 displaystyle a 5 0x34D34D34 nbsp a 6 0 x 4 D 34 D 34 D displaystyle a 6 0x4D34D34D nbsp a 7 0 x D 34 D 34 D 3 displaystyle a 7 0xD34D34D3 nbsp Die Dynamik der Zahler ist folgendermassen definiert c 0 i 1 c 0 i a 0 ϕ 7 i m o d 2 32 displaystyle c 0 i 1 c 0 i a 0 phi 7 i mod2 32 nbsp c 1 i 1 c 1 i a 1 ϕ 0 i 1 m o d 2 32 displaystyle c 1 i 1 c 1 i a 1 phi 0 i 1 mod2 32 nbsp c 2 i 1 c 2 i a 2 ϕ 1 i 1 m o d 2 32 displaystyle c 2 i 1 c 2 i a 2 phi 1 i 1 mod2 32 nbsp c 3 i 1 c 3 i a 3 ϕ 2 i 1 m o d 2 32 displaystyle c 3 i 1 c 3 i a 3 phi 2 i 1 mod2 32 nbsp c 4 i 1 c 4 i a 4 ϕ 3 i 1 m o d 2 32 displaystyle c 4 i 1 c 4 i a 4 phi 3 i 1 mod2 32 nbsp c 5 i 1 c 5 i a 5 ϕ 4 i 1 m o d 2 32 displaystyle c 5 i 1 c 5 i a 5 phi 4 i 1 mod2 32 nbsp c 6 i 1 c 6 i a 6 ϕ 5 i 1 m o d 2 32 displaystyle c 6 i 1 c 6 i a 6 phi 5 i 1 mod2 32 nbsp Das Ubertragsbit ϕ j i 1 displaystyle phi j i 1 nbsp ist dabei gemass der folgenden Formel definiert ϕ j i 1 1 falls c 0 i a 0 ϕ 7 i 2 32 j 0 1 falls c j i a j ϕ j 1 i 1 2 32 j gt 0 0 andernfalls displaystyle phi j i 1 begin cases 1 amp text falls c 0 i a 0 phi 7 i geq 2 32 wedge j 0 1 amp text falls c j i a j phi j 1 i 1 geq 2 32 wedge j gt 0 0 amp text andernfalls end cases nbsp Extraktion Bearbeiten Nach jeder Iteration werden 128 bit der Ausgabe wie folgt erzeugt 1 s i 15 0 x 0 i 15 0 x 5 i 31 16 displaystyle s i 15 0 x 0 i 15 0 oplus x 5 i 31 16 nbsp s i 47 32 x 2 i 15 0 x 7 i 31 16 displaystyle s i 47 32 x 2 i 15 0 oplus x 7 i 31 16 nbsp s i 79 64 x 4 i 15 0 x 1 i 31 16 displaystyle s i 79 64 x 4 i 15 0 oplus x 1 i 31 16 nbsp s i 111 96 x 6 i 15 0 x 3 i 31 16 displaystyle s i 111 96 x 6 i 15 0 oplus x 3 i 31 16 nbsp s i 31 16 x 0 i 31 16 x 3 i 15 0 displaystyle s i 31 16 x 0 i 31 16 oplus x 3 i 15 0 nbsp s i 63 48 x 2 i 31 16 x 5 i 15 0 displaystyle s i 63 48 x 2 i 31 16 oplus x 5 i 15 0 nbsp s i 95 80 x 4 i 31 16 x 7 i 15 0 displaystyle s i 95 80 x 4 i 31 16 oplus x 7 i 15 0 nbsp s i 127 112 x 6 i 31 16 x 1 i 15 0 displaystyle s i 127 112 x 6 i 31 16 oplus x 1 i 15 0 nbsp wobei s i displaystyle s i nbsp der 128 bit Ausgabeblock nach der Iteration i displaystyle i nbsp ist Ver und Entschlusselung Bearbeiten Anschliessend erfolgt die Ver bzw Entschlusselung eines Textes verschlusselten Textes durch eine durch Kontravalenz mit dem Ausgabeblock den man nach Eingabe des 128 bit Schlussels und des 64 bit Initialvektors erhalt 1 Beispiel BearbeitenUm einen Text mithilfe des Rabbit Algorithmus zu verschlusseln benotigt man lediglich einen Schlussel und einen Initialisierungsvektor Mit dem Schlussel Wikipedia 0x57696b697065646961 und dem Initialvektor 0x123123 erhalt man den Ausgabeblock 0x9c677286866aad38f8e9b660f5411814 Wenn man diesen mit dem zu verschlusselnden Text Sichere Nachricht 0x53696368657265204e6163687269636874 kontrarelevtiviert so erhalt man die folgenden verschlusselten Text a2115ff62ad536899a8b16d22f47746336 Geschwindigkeit BearbeitenDie Chiffre wurde fur eine hohe Softwareleistung entwickelt Bei einer vollstandig optimierten Implementierung erreicht der Rabbit Algorithmus eine Verschlusselungsgeschwindigkeit von 3 7 Taktzyklen pro Byte auf einem Intel Pentium III und eine Verschlusselungsgeschwindigkeit von 10 5 Taktzyklen pro Byte auf einem ARM7 Prozessor 2 Sicherheit BearbeitenEin 128 Bit Schlussel macht es robust gegen Brute Force Angriffe Es ist auch ziemlich einfach zu implementieren und erfordert eine minimale Speicherung von Zustanden Im Vergleich zum Advanced Encryption Standard fur Gerate mit geringer Leistung ergeben sich in der Schnelligkeit und der Robustheit Vorteile fur den Rabbit Algorithmus Bislang wurden keine Schwachstellen in der Rabbit Verschlusselung gefunden 5 Anwendung BearbeitenDer Rabbit Algorithmus findet unter anderem in der quelloffenen SSL TLS Programmbibliothek WolfSSL ehemals CyaSSL Anwendung die vor allem bei Embedded Systemen zum Einsatz kommt 6 Weblinks Bearbeitenhttps www ecrypt eu org stream e2 rabbit html ecrypt eu orgEinzelnachweise Bearbeiten a b c d e f g h The Stream Cipher Rabbit PDF Abgerufen am 20 Mai 2019 englisch a b c Rabbit A New High Performance Stream Cipher Memento vom 11 Dezember 2013 im Internet Archive PDF cryptico com RFC 4503 A Description of the Rabbit Stream Cipher Algorithm Mai 2006 englisch Rabbit becomes public domain Memento vom 30 Juni 2009 im Internet Archive Light weight crypto Rabbit Abgerufen am 20 Mai 2019 englisch Ecrypt Rabbit Abgerufen am 20 Mai 2019 englisch Abgerufen von https de wikipedia org w index php title Rabbit Algorithmus amp oldid 235453275