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
|