Cryptography Reference
In-Depth Information
Status verwendet. Die Fortschaltung des Statusteils ist in Abbildung 16-8 darge-
stellt. Im Mittelpunkt des Ablaufs steht die Funktion
g
, in die auch der Zählerteil
eingeht. Dabei wird vorausgesetzt, dass die Fortschaltung des Zählerteils schon
erfolgt ist. Für
n
=0, 1, ..., 7 gilt (>> steht für eine bitweise Verschiebung nach
rechts):
g
:=(
s
n
+
z
n
)
2
((
s
n
+
z
n
)
2
>>32) mod 2
32
⊕
Statusteil (8×32 Bit)
s
0
s
1
s
2
s
3
s
4
s
5
s
6
s
7
g0
g8
g16
g0
g16
g0
g8
g16
g0
g16
g0
g8
g16
g0
g16
g0
g8
g16
g0
g16
+
+
+
+
+
+
+
+
s
0
s
1
s
2
s
3
s
4
s
5
s
6
s
7
Statusteil (8×32 Bit)
Abb. 16-8
Die Fortschaltung des Statusteils von Rabbit erfolgt mit nichtlinearen Funktionen.
Bei den beiden Quadrierungen in dieser Formel entsteht jeweils ein 64-Bit-Wert.
Da jedoch am Ende der Formel ein »mod 2
32
« steht, werden nur die letzten
32 Bit als Ergebnis verwendet. Der Zusatz
g
0,
g
8 bzw.
g
16 bedeutet, dass das
Resultat der obigen Formel zusätzlich um 0, 8 bzw. 16 Bit nach links rotiert wird.
Nach der Fortschaltung werden aus dem Statusteil 128 Bit Keystream extra-
hiert. Wie dies funktioniert, ist in folgender Tabelle dargestellt.
e
0
, ...,
e
7
sind
hierbei 16-Bit-Wörter und bilden den Keystream. Mit
s
0,0
,
s
1,0
, ...,
s
7,0
ist jeweils
die linke Hälfte einer Statusvariablen gemeint, mit
s
0,1
,
s
1,1
, ...,
s
7,1
entsprechend
die jeweils rechte Hälfte.
e
0
e
1
e
2
e
3
e
4
e
5
e
6
e
7
s
0,0
⊕
s
5,1
s
0,1
⊕
s
3,0
s
2,0
⊕
s
7,1
s
2,1
⊕
s
5,0
s
4,0
⊕
s
1,1
s
4,1
⊕
s
7,0
s
6,0
⊕
s
3,1
s
6,1
⊕
s
1,0
Zur vollständigen Beschreibung des Verfahrens fehlt nun noch die Initialisierung
des Status. Das Übertrags-Bit wird mit 0 initialisiert. Für den Status- und den
Zählerteil gilt ein etwas komplexeres Vorgehen. Um dieses zu erklären, gehen wir