next up previous
Nächste Seite: Implementation im bitslice-Modus Aufwärts: Der Algorithmus Vorherige Seite: Die Verschlüsselungsfunktion

Die Schlüsselgenerierung

Wie aus der Algorithmusbeschreibung ersichtlich wird für jede Runde ein und für die letzte zwei 128-Bit Schlüssel benötigt. Diese werden aus dem originalen Schlüssel erzeugt. Besteht der gewählte Schlüssel aus weniger als 256 Bit wird er durch Anhängen einer 1 und einer variablen Anzahl von Nullen auf die nötigen 256 Bit aufgefüllt. Dieser Schlüssel wird nun in acht 32-Bit Wörter zerlegt:

\begin{eqnarray*}
w_{-8}, w_{-7}, w_{-6}, w_{-5}, w_{-4}, w_{-3}, w_{-2}, w_{-1} & = & Key
\end{eqnarray*}

Daraus werden nun iterativ 132 sogenannte prekeys gebildet.

\begin{eqnarray*}
w_i & = & (w_{i-8} \oplus w_{i-5} \oplus w_{i-3} \oplus w_{i-...
...11 \qquad i = 0, .. , 131 \\
\Phi & = & \frac{\sqrt{5} + 1}{2}
\end{eqnarray*}

Dabei entspricht $ \Phi $ der Nachkommastelle des goldenen Schnitts. Diese Bildungsvorschrift soll sicherstellen, daß die Schlüsselbits möglichst gleichmäßig auf die einzelnen prekeys verteilt werden. Die XOR-Verknüpfung mit i verhindert darüberhinaus schwache Schlüssel.

Diese prekeys werden nun schließlich nach folgendem System zu den 33 Rundenschlüsseln zusammengesetzt:

\begin{eqnarray*}
K_0 & = & S_3(IP(w_0, w_1, w_2, w_3)) \\
K_1 & = & S_2(IP(w...
...)) \\
K_{32} & = & S_3(IP(w_{128}, w_{129}, w_{130}, w_{131}))
\end{eqnarray*}



Michael Ueckerdt 2002-08-23