Home
IPSec
SSL
AES-Kandidaten

e-Mail an mich

Der Algorithmus RC6

zurück     weiter

RC6

Im Zuge der Ausschreibung zum AES wurde der RC5 von Ronald Rivest modifiziert und als RC6 präsentiert. In der Endrunde der letzten Fünf belegte RC6 den vierten Platz.

Die Schlüssellänge kann im Bereich von 0 bis 255 Byte – also 2040 Bit – eingestellt werden. In der für den AES relevanten Version von RC6 wird der Klartext in 128-Bit-Blöcke unterteilt, die Standardrundenzahl des RC6 beträgt 20.

Zur Verschlüsselung wird der Textblock in die vier Worte A, B, C und D aufgeteilt. Die Länge w der Worte ist bei einer Blocklänge von 128 Bit gleich 32 Bit. Nun werden zu den Worten B und D die Teilschlüssel S[0] und S[1] modulo 2w addiert.

Anschließend beginnt die erste Runde, in der die Worte B und D der Funktion f(x) = x×(2x + 1) und einer Rotation um lb(w) nach links unterzogen werden. Hierbei entspricht lb(w) dem Logarithmus zur Basis 2 von w. Im Falle von w = 32 ist lb(w) = 5. Die Operationen der Funktion f werden modulo 2w durchgeführt. Das Ergebnis aus Funktion f und Rotation von B wird als t bezeichnet, das entsprechende Ergebnis von D wird als u bezeichnet. Nun werden t und u mit den Worten A und C XOR-verknüpft. Danach rotieren beide Ergebnisse um den Inhalt der fünf niedrigstwertigen Bits von u bzw. t. Nach der Rotation werden die Teilschlüssel S[2] und S[3] bzw. S[2i] und S[2i + 1] zum Ergebnis modulo 2w addiert. Abschließend rotieren die Worte um eine Position, so dass (A,B,C,D) zu (B,C,D,A) wird. Diese Runde wird nun r-mal wiederholt, wobei r in der Standardversion gleich 20 ist.

Abschließend werden zu den Worten A und C die Teilschlüssel S[2r + 2] und S[2r + 3] modulo 2w addiert.

Zur Entschlüsselung wird der Algorithmus in umgekehrter Reihenfolge durchlaufen und auch die Teilschlüssel werden in umgekehrter Reihenfolge genutzt. An die Stelle der Addition modulo 2w tritt bei der Entschlüsselung die Subtraktion modulo 2w und statt der Rotation nach links wird an manchen Stellen die Rotation nach rechts durchgeführt. Das folgende Bild zeigt die Zusammenhänge bei der Entschlüsselung.

Die benötigten Teilschlüssel S[0] bis S[2r + 3] werden nach dem gleichen Schema wie bei RC5 erzeugt, nur dass zwei Teilschlüssel mehr nötig sind, als bei RC5. Es werden t = 2r + 4 Teilschlüssel benötigt. Die Länge der Teilschlüssel entspricht der Wortlänge w. Die Teilschlüssel werden in einem Feld S[0] bis S[t-1] gespeichert. Zunächst werden diese Felder nach folgendem Schema gefüllt:

                 S[0]  = Pw

                 S[i]  = (S[i-1] + Qw) mod 2w       ," i = 1,…,t – 1

mit            Pw    = Odd[(e – 2) × 2w]

                 Qw   = Odd[(f – 1) × 2w]

und           e        = 2,718281828459…       { Eulersche Zahl }

                 f      = 1,618033988749...        { goldener Schnitt =  }

Bei der Funktion Odd wird die nächstliegende ungerade Zahl gesucht. Im Beispiel von f ist Odd[f] = 1.

Der geheime Schlüssel K[0] bis K[b-1] der Länge b Byte wird nun in ein Feld L[0] bis L[c-1] konvertiert, wobei c sich aus b¸w ergibt. Ist b nicht durch w teilbar, wird ein Teil von L zu Null gesetzt. Abschließend werden die S[i] und L[j] miteinander vermischt, wobei das größere Feld dreimal durchlaufen wird.

Es gilt:       S[i] = (S[i] + X + Y) mod 2w <<< 3

                 X    = S[i]

                 i      = (i + 1) mod t

                 L[j] = (L[j] + X + Y) mod 2w <<< (X + Y)

                 Y    = L[j]

                 j      = (j + 1) mod c

Hierbei bedeutet x <<< y eine Rotation nach links des Wortes x um y Positionen.

Ronald Rivest schreibt der Teilschlüsselerzeugung Eigenschaften einer Einwegfunktion zu. Daher ist der geheime Schlüssel nur schwer zu ermitteln, wenn man die Teilschlüssel S kennt.

RC6 ist deutlich einfacher konzipiert, als z.B. Rijndael oder MARS. Durch diesen Umstand ist die Gefahr, Fehler bei der Implementierung von RC6 zu machen, deutlich geringer als bei Rijndael oder MARS. RC6 bietet hohe Sicherheit bei hoher Geschwindigkeit und wird in den Produkten der Firma RSA Data Security erfolgreich eingesetzt.

zurück     weiter

[Home] [IPSec] [SSL] [AES-Kandidaten] [Über mich] [Links] [Gästebuch]