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