2.2 A Quarter Round on the ChaCha State (Un quarto di round sullo stato ChaCha)
2.2 A Quarter Round on the ChaCha State (Un quarto di round sullo stato ChaCha)
Lo stato ChaCha non ha quattro numeri interi: ne ha 16. Quindi l'operazione di quarto di round funziona solo su quattro di essi -- da qui il nome. Ogni quarto di round opera su quattro numeri predeterminati nello stato ChaCha. Denoteremo con QUARTERROUND(x, y, z, w) un'operazione di quarto di round sui numeri agli indici x, y, z e w dello stato ChaCha quando visto come vettore. Ad esempio, se applichiamo QUARTERROUND(1, 5, 9, 13) a uno stato, questo significa eseguire l'operazione di quarto di round sugli elementi contrassegnati con un asterisco, lasciando gli altri invariati:
0 *a 2 3
4 *b 6 7
8 *c 10 11
12 *d 14 15
Notare che questa esecuzione del quarto di round fa parte di ciò che viene chiamato "round di colonna".
2.2.1 Test Vector for the Quarter Round on the ChaCha State (Vettore di test per il quarto di round sullo stato ChaCha)
Per un vettore di test, useremo uno stato ChaCha generato casualmente:
Sample ChaCha State (Esempio di stato ChaCha)
879531e0 c5ecf37d 516461b1 c9a62f8a
44c20ef3 3390af7f d9fc690b 2a5f714c
53372767 b00a5631 974c541a 359e9963
5c971061 3d631689 2098d9d6 91dbd320
Applicheremo l'operazione QUARTERROUND(2, 7, 8, 13) a questo stato. Per ragioni ovvie, questo fa parte di ciò che viene chiamato "round diagonale":
After applying QUARTERROUND(2, 7, 8, 13) (Dopo aver applicato QUARTERROUND(2, 7, 8, 13))
879531e0 c5ecf37d *bdb886dc c9a62f8a
44c20ef3 3390af7f d9fc690b *cfacafd2
*e46bea80 b00a5631 974c541a 359e9963
5c971061 *ccc07c79 2098d9d6 91dbd320
Notare che solo i numeri nelle posizioni 2, 7, 8 e 13 sono cambiati.