跳到主要内容

2.2 A Quarter Round on the ChaCha State (ChaCha 状态上的四分之一轮)

2.2 A Quarter Round on the ChaCha State (ChaCha 状态上的四分之一轮)

ChaCha 状态不是只有四个整数: 它有 16 个。因此, 四分之一轮操作只对其中的四个进行操作 -- 这就是名称的由来。每个四分之一轮操作对 ChaCha 状态中四个预定的数字进行操作。我们用 QUARTERROUND(x, y, z, w) 表示对 ChaCha 状态作为向量时索引为 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 的数字发生了变化。