Zum Hauptinhalt springen

2.1 The ChaCha Quarter Round (Die ChaCha-Viertelrunde)

2.1 The ChaCha Quarter Round (Die ChaCha-Viertelrunde)

Die grundlegende Operation des ChaCha-Algorithmus ist die Viertelrunde (quarter round). Sie arbeitet mit vier 32-Bit-Ganzzahlen ohne Vorzeichen, bezeichnet als a, b, c und d. Die Operation ist wie folgt (in C-ähnlicher Notation):

a += b; d ^= a; d <<<= 16;
c += d; b ^= c; b <<<= 12;
a += b; d ^= a; d <<<= 8;
c += d; b ^= c; b <<<= 7;

Wobei "+" die Ganzzahladdition modulo 2^32 bezeichnet, "^" ein bitweises Exklusiv-ODER (XOR) bezeichnet und "<<< n" eine n-Bit-Linksrotation (zu den höherwertigen Bits hin) bezeichnet.

Zum Beispiel, schauen wir uns die Additions-, XOR- und Rotationsoperationen aus der vierten Zeile mit Beispielzahlen an:

a = 0x11111111
b = 0x01020304
c = 0x77777777
d = 0x01234567
c = c + d = 0x77777777 + 0x01234567 = 0x789abcde
b = b ^ c = 0x01020304 ^ 0x789abcde = 0x7998bfda
b = b <<< 7 = 0x7998bfda <<< 7 = 0xcc5fed3c

2.1.1 Test Vector for the ChaCha Quarter Round (Testvektor für die ChaCha-Viertelrunde)

Für einen Testvektor verwenden wir dieselben Zahlen wie im Beispiel und fügen etwas Zufälliges für c hinzu.

a = 0x11111111
b = 0x01020304
c = 0x9b8d6f43
d = 0x01234567

Nach dem Ausführen einer Viertelrunde auf diesen vier Zahlen erhalten wir:

a = 0xea2a92f4
b = 0xcb1cf8ce
c = 0x4581472e
d = 0x5881c4bb