About Security #71

Kryptographie: DES-Iterationsrunden

Feistel-Netzwerke

Jede Iterationsrunde i erhält als Eingabe die beiden Blöcke L_i-1 und R_i-1. Die Verschlüsselungsfunktion f verwendet den geheimen Schlüssel K_i, um aus dem gegebenen Block R_i-1 einen (Geheimtext-)block f(R_i-1, K_i) zu erzeugen. Die eigentliche Verschlüsselung erfolgt dann, indem die beiden Halbblöcke vertauscht und L_i-1 mit f(R_i-1, K_i) XOR-verknüpft wird:

<pre>
L_i := R_i-1
R_i := L_i-1 (+) f(R_i-1, K_i)    
</pre>

Grafisch lässt sich das Ganze folgendermaßen darstellen:

Eine 
Iterationsrunde von DES

Für die Entschlüsselung muss dieser Prozess umgekehrt werden. Das Ergebnis von Runde i ist

<pre>
L_i := R_i-1
R_i := L_i-1 (+) f(R_i-1, K_i)    
</pre>

Zum Entschlüsseln werden L_i und R_i getauscht, außerdem wird der Rundenindex i rückwärts statt vorwärts gezählt. Führt man die Runde erneut durch, so ergibt sich

<pre>
L_i =: R_i-1

L_i-1 (+) f(R_i-1, K_i) (+) f(L_i, K_i) =
L_i-1 (+) f(L_i, K_i)   (+) f(L_i, K_i) =: L_i-1
</pre>

Grafisch lässt sich das Ganze folgendermaßen darstellen:

Eine
Entschlüsselungsrunde von DES