メインコンテンツまでスキップ

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の数値のみが変更されたことに注意してください。