2.2 A Quarter Round on the ChaCha State (ChaCha状態のクォーターラウンド)
2.2 A Quarter Round on the ChaCha State (ChaCha状態のクォーターラウンド)
ChaCha状態は4つの整数を持つのではなく, 16個を持ちます。したがって, クォーターラウンド操作はそのうちの4つのみで動作します -- これが名前の由来です。各クォーターラウンドはChaCha状態の4つの事前に決められた数値に対して動作します。ChaCha状態をベクトルとして見たときのインデックスx, y, z, wの数値に対するクォーターラウンド操作をQUARTERROUND(x, y, z, w)で表します。例えば, 状態にQUARTERROUND(1, 5, 9, 13)を適用すると, これはアスタリスクでマークされた要素に対してクォーターラウンド操作を実行し, 他の要素はそのまま残すことを意味します:
0 *a 2 3
4 *b 6 7
8 *c 10 11
12 *d 14 15
このクォーターラウンドの実行は, いわゆる「列ラウンド (column round)」の一部であることに注意してください。
2.2.1 Test Vector for the Quarter Round on the ChaCha State (ChaCha状態のクォーターラウンドのテストベクトル)
テストベクトルとして, ランダムに生成されたChaCha状態を使用します:
Sample ChaCha State (ChaCha状態のサンプル)
879531e0 c5ecf37d 516461b1 c9a62f8a
44c20ef3 3390af7f d9fc690b 2a5f714c
53372767 b00a5631 974c541a 359e9963
5c971061 3d631689 2098d9d6 91dbd320
この状態にQUARTERROUND(2, 7, 8, 13)操作を適用します。明らかな理由から, これはいわゆる「対角ラウンド (diagonal round)」の一部です:
After applying QUARTERROUND(2, 7, 8, 13) (QUARTERROUND(2, 7, 8, 13)適用後)
879531e0 c5ecf37d *bdb886dc c9a62f8a
44c20ef3 3390af7f d9fc690b *cfacafd2
*e46bea80 b00a5631 974c541a 359e9963
5c971061 *ccc07c79 2098d9d6 91dbd320
位置2, 7, 8, 13の数値のみが変更されたことに注意してください。