Aller au contenu principal

2.2 A Quarter Round on the ChaCha State (Un quart de tour sur l'état ChaCha)

2.2 A Quarter Round on the ChaCha State (Un quart de tour sur l'état ChaCha)

L'état ChaCha n'a pas quatre nombres entiers: il en a 16. Ainsi, l'opération de quart de tour ne fonctionne que sur quatre d'entre eux -- d'où le nom. Chaque quart de tour opère sur quatre nombres prédéterminés dans l'état ChaCha. Nous désignerons par QUARTERROUND(x, y, z, w) une opération de quart de tour sur les nombres aux indices x, y, z et w de l'état ChaCha lorsqu'il est vu comme un vecteur. Par exemple, si nous appliquons QUARTERROUND(1, 5, 9, 13) à un état, cela signifie exécuter l'opération de quart de tour sur les éléments marqués d'un astérisque, tout en laissant les autres intacts:

   0  *a   2   3
4 *b 6 7
8 *c 10 11
12 *d 14 15

Notez que cette exécution de quart de tour fait partie de ce qu'on appelle un "tour de colonne".

2.2.1 Test Vector for the Quarter Round on the ChaCha State (Vecteur de test pour le quart de tour sur l'état ChaCha)

Pour un vecteur de test, nous utiliserons un état ChaCha généré aléatoirement:

Sample ChaCha State (État ChaCha échantillon)

    879531e0  c5ecf37d  516461b1  c9a62f8a
44c20ef3 3390af7f d9fc690b 2a5f714c
53372767 b00a5631 974c541a 359e9963
5c971061 3d631689 2098d9d6 91dbd320

Nous appliquerons l'opération QUARTERROUND(2, 7, 8, 13) à cet état. Pour des raisons évidentes, celui-ci fait partie de ce qu'on appelle un "tour de diagonale":

After applying QUARTERROUND(2, 7, 8, 13) (Après application de QUARTERROUND(2, 7, 8, 13))

    879531e0  c5ecf37d *bdb886dc  c9a62f8a
44c20ef3 3390af7f d9fc690b *cfacafd2
*e46bea80 b00a5631 974c541a 359e9963
5c971061 *ccc07c79 2098d9d6 91dbd320

Notez que seuls les nombres aux positions 2, 7, 8 et 13 ont changé.