一 点睛
Keccak中b=r+c个比特的内部状态是如何通过函数f变化的呢?下面深入看看内部状态。
下图展示了Keccak的内部状态
二 图解
-
Keccak的内部状态是一个三维的比特数组。图中每个小方块代表1个比特,b个小方块按照5*5*z的方式组合起来,就成为一个沿z轴延伸的立方体。
-
将具备x、y、z三个维度的内部状态整体称为state,state共有b个比特。
-
如果只关注内部状态的两个维度,可以将xz平面称为plane,将xy平面成为slice,将yz平面称为sheet。
-
同样地,如果只关注其中一个维度,可以将x轴成为row,将y轴称为column,将z轴称为lane。
-
因此,可以将state看作是由5*5=25条lane构成的,也可以看成是由lane的长度相同数量的slice堆叠而成的。
-
Keccak的本质就是实现一个能够将上述结构的state进行有效搅拌的函数f。
-
由于内部状态可以代表整个处理过程中全部中间状态,因此有利于节约内存。
-
Keccak用到了很多比特单位的运算,因此被认为可有效抵御针对字节单位的攻击。