Cryptography Reference
In-Depth Information
Softwareverfahren
Hardwareverfahren
1
Rabbit
2,80
Tr i v i u m
4,35
2
Salsa20
2,80
Grain
3,50
3
Sosemanuk
1,20
F-FCSR-H
0,52
4
HC-128
0,60
MICKEY
0,17
Weitere Angaben zum Ablauf des Wettbewerbs finden sich in der Veröffentli-
chung
The eSTREAM Portfolio
[eSTREA], die den Charakter eines Abschlussbe-
richts hat
.
16.6.1
HC-128
HC-128
ist eine Stromchiffre, die von Hongjun Wu von der Universität Leuven
entwickelt wurde [Wu]. Es handelt sich um eine für den eSTREAM-Wettbewerb
angepasste Version der (in diesem Buch nicht behandelten) Stromchiffre HC-256.
Das Verfahren ist für eine Implementierung in Software gedacht. Es nutzt einen
128-Bit-Schlüssel sowie einen 128-Bit-Startvektor, um pro Iteration 32 Key-
stream-Bits zu generieren.
Funktionsweise von HC-128
HC-128 arbeitet mit einem Status der Größe 4.096 Byte. Dies ist mit Abstand der
größte Status unter den sieben Verfahren im eSTREAM-Portfolio, wodurch HC-
128 für Umgebungen mit knappem Speicher ungeeignet ist. Der Status ist in die bei-
den Teile
P
und
Q
aufgeteilt, die aus jeweils 512 Variablen zu je 32 Bit bestehen.
Diese Variablen werden als
P
[0],
P
[1], ...,
P
[511] sowie
Q
[0],
Q
[1], ...,
Q
[511]
bezeichnet. Für die Fortschaltung und die Initialisierung des Status spielen die sechs
Funktionen
f
1
,
f
2
,
g
1
,
g
2
,
h
1
und
h
2
eine Rolle. Die Funktionsweisen von
f
1
,
f
2
,
g
1
und
g
2
sind in Abbildung 16-5 dargestellt (
rot
steht hierbei für eine Rechtsrotation
um die genannte Zahl; ist diese Zahl negativ, dann handelt es sich um eine Linksro-
tation). Für die Funktionen
h
1
und
h
2
gilt folgende Formel (
x
ist hierbei eine 32-Bit-
Variable, die sich aus den vier Bytes
x
0
,
x
1
,
x
2
und
x
3
zusammensetzt):
h
1
(
x
)=
Q
[
x
0
]+
Q
[256+
x
2
]
h
2
(
x
)=
P
[
x
0
]+
P
[256+
x
2
]
Die Fortschaltung des Status (nach erfolgter Initialisierung) hängt davon ab, um
die wievielte Iteration es sich handelt. Für die Iterationen 0 bis 511, 1.024 bis
1.536, 2.048 bis 2.559, 3.072 bis 3.584 usw. gilt die folgende Formel (
i
steht für
die Nummer der Iteration modulo 512, die Subtraktionen erfolgen ebenfalls
modulo 512):
P
[
i
]=
P
[
i
]+
g
1
(
P
[
i
-3],
P
[
i
-10],
P
[
i
-511])