Aller au contenu principal

2.1 The ChaCha Quarter Round (Le quart de tour ChaCha)

2.1 The ChaCha Quarter Round (Le quart de tour ChaCha)

L'opération de base de l'algorithme ChaCha est le quart de tour (quarter round). Il opère sur quatre entiers non signés de 32 bits, notés a, b, c et d. L'opération est la suivante (en notation similaire au C):

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

Où "+" dénote l'addition d'entiers modulo 2^32, "^" dénote un OU exclusif bit à bit (XOR), et "<<< n" dénote une rotation gauche de n bits (vers les bits de poids fort).

Par exemple, voyons les opérations d'addition, XOR et rotation de la quatrième ligne avec des nombres exemples:

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 (Vecteur de test pour le quart de tour ChaCha)

Pour un vecteur de test, nous utiliserons les mêmes nombres que dans l'exemple, en ajoutant quelque chose d'aléatoire pour c.

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

Après avoir exécuté un quart de tour sur ces quatre nombres, nous obtenons:

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