Cryptography Reference
In-Depth Information
Als Keystream wird ausgegeben:
h
1
(
P
[
i
-12])
⊕
P
[
i
]). Für alle anderen Iterationen
gilt folgende Fortschaltung:
Q
[
i
]=
Q
[
i
]+
g
2
(
Q
[
i
-3],
Q
[
i
-10],
Q
[
i
-511])
f
1
f
2
g
1
g
2
32 Bit
32 Bit
32 Bit
32 Bit
32 Bit
32 Bit
32 Bit
32 Bit
rot 7
rot 18
rot 3
rot 17
rot 19
rot 10
rot 10
rot 23
rot 8
rot -10
rot-23
rot -8
32 Bit
32 Bit
32 Bit
32 Bit
Abb. 16-5
Für die Funktionsweise von HC-128 spielen die Funktionen f
1
, f
2
, g
1
, und g
2
eine Rolle.
Als Keystream wird ausgegeben:
h
2
(
Q
[
i
-12])
Q
[
i
]. Die Initialisierung beginnt
mit dem in Abbildung 16-6 beschriebenen Schema. Hierbei wird eine Variable
W
verwendet, die aus 1.280 Blöcken zu je 32 Bit besteht. Die ersten 16 Blöcke wer-
den mit dem Schlüssel und dem Initialisierungsvektor (beide werden jeweils dop-
pelt verwendet) aufgefüllt. Die restlichen Blöcke ergeben sich mithilfe der Funk-
tion
u
, wobei gilt (
i
ist die Nummer des Blocks, also am Anfang 16, dann 17,
dann 18 usw.):
⊕
u=W
i-16
+
f
1
(
W
i-15
)+
W
i-7
+
f
2
(
W
i-2
)+
i
Die Inhalte von
W
werden anschließend wie folgt in
P
und
Q
übertragen:
Für
i
von 0 bis 511:
P
[
i
]=
W
i+256
und
Q
[
i
]=
W
i+768
Anschließend folgen insgesamt 1.024 Iterationen ohne Keystream-Generierung
mit leicht geänderter Fortschaltung. Die ersten 512 Iterationen haben folgenden
Ablauf (
i
läuft von 0 bis 512, die Subtraktionen erfolgen modulo 512):
h
1
(
P
[
i
-12])
Die verbleibenden 512 Leeriterationen haben folgenden Ablauf (
i
läuft wieder
von 0 bis 512, die Subtraktionen erfolgen modulo 512):
P
[
i
]=
P
[
i
]+
g
1
(
P
[
i
]-3],
P
[
i
-10],
P
[
i
-511])
⊕
h
2
(
Q
[
i
-12])
Damit ist die Initialisierung abgeschlossen, und die Generierung des Keystreams
kann beginnen.
Q
[
i
]=
Q
[
i
]+
g
2
(
Q
[
i
]-3],
Q
[
i
-10],
Q
[
i
-511])
⊕