Cryptography Reference
In-Depth Information
16.6.3
Salsa20
Salsa20 ist eine Stromchiffre, die von dem US-Kryptologen Daniel Bernstein ent-
wickelt wurde [Bernst]. Die Schlüssellänge beträgt 128 oder 256 Bit (wir wollen
nur ersteren Fall betrachten). Pro Iteration generiert das Verfahren 512 Key-
stream-Bits (dies ist deutlich mehr als sonst bei Stromchiffren üblich). Der Initia-
lisierungsvektor hat die Länge 64 Bit.
Funktionsweise von Salsa20
Der Aufbau von Salsa20 wirkt ungewohnt. Im Gegensatz zu den anderen in die-
sem Buch betrachteten Stromchiffren entspricht das Funktionsprinzip nicht dem
OFB-Modus, sondern dem CTR-Modus (siehe Abschnitt 19.1.5). Das bedeutet:
Der Status besteht nur aus einem Zähler (als n bezeichnet), und die Fortschalt-
funktion sieht lediglich ein Hochzählen des Status vor. Die für die Sicherheit not-
wendige Komplexität des Verfahrens liegt dafür in der Keystream-Extraktion.
Diese läuft in mehreren Runden ab. Wie der Name des Verfahrens andeutet,
waren ursprünglich 20 Runden vorgesehen. Um die Performanz zu erhöhen, reichte
der Erfinder Daniel Bernstein eine 12-Runden- und eine 8-Runden-Version nach,
die als Salsa20/12 bzw. Salsa20/8 bezeichnet werden. In das eSTREAM-Portfolio
ging Salsa20/12 ein.
Für die Keystream-Extraktion benötigt Salsa20 eine Variable der Länge
512 Bit. Diese ist in Form einer 4×4-Matrix gegeben, deren 16 Einträge jeweils
32 Bit umfassen. Diese Matrix wird als X bezeichnet und wie folgt notiert:
x 0
x 1
x 2
x 3
x 4
x 5
x 6
x 7
x 8
x 9
x 10
x 11
x 12
x 13
x 14
x 15
Für die Keystream-Extraktion spielt zudem die in Abbildung 16-9 dargestellte
Funktion (Viertelrundenfunktion) eine Rolle. In diese gehen vier 32-Bit-Variablen
ein, und vier 32-Bit-Variablen werden ausgegeben. Die Viertelrundenfunktion
lässt sich auf die Matrix X sowohl spaltenweise als auch zeilenweise anwenden.
In ersterem Fall erfolgen vier Funktionsaufrufe, wobei ( x 0 , x 4 , x 8 , x 12 ), ( x 1 , x 5 ,
x 9 , x 13 ), ( x 2 , x 6 , x 10 , x 14 ) und ( x 3 , x 7 , x 11 , x 15 ) jeweils auf sich selbst abgebildet
werden. Bei der zeilenweisen Anwendung werden entsprechend ( x 0 , ..., x 3 ), ( x 4 ,
..., x 7 ), ( x 8 , ..., x 11 ) und ( x 12 , ..., x 15 ) durch insgesamt vier Funktionsaufrufe auf
sich selbst abgebildet. Auf Basis der Viertelrundenfunktion wird eine weitere
Funktion (als H bezeichnet) definiert, die die Matrix X auf sich selbst abbildet.
H hat folgenden Ablauf:
Search WWH ::




Custom Search