基于海绵结构的密码杂凑算法Master
基于海绵结构的密码杂凑算法Master
什么是海绵结构?
海绵结构(Sponge Construction)是一种新型杂凑算法结构,该结构以其灵活性和安全性著称,最早被创新性的使用于SHA3(Keccak)算法的构建。目前使用了海绵结构的密码算法有Ketje,Keyak,SPONGENT,PHOTON等。它通过“吸收”(absorb)和“挤压”(squeeze)两个阶段处理输入数据,类似于海绵吸水后挤出的过程。基于海绵结构的密码算法使用相同的置换(Permutation)函数来处理每一个内部状态。
(1)海绵结构的内部状态
- 状态(State):由固定大小的内部状态(b=r+c)组成,分为:
- 速率部分(r):直接与输入/输出交互。
- 容量部分(c):隐藏内部状态,决定安全性。
(2)内部状态的处理分为两个阶段
- 阶段(Stage):
- 吸收阶段:将输入分块(每块r位)与状态混合,经置换函数(f)迭代更新。
- 挤压阶段:从状态中提取输出哈希值(每次r位),直至达到所需长度。
关于海绵结构的具体实现过程如下图所示:
Master算法为基于海绵结构设计的密码杂凑算法,其内部状态大小为1600(25X64)比特,置换函数为P25,输出杂凑值长度分别为256(r=1088,c=512)比特和512(r=576,c=1024)比特。
Master算法杂凑值计算过程如下图所示:
其中消息填充(Padding)算法如下所示:
Master使用与SHA3相同的“10*1”填充规则(称为Multi-rate Padding):
- 在消息末尾添加一个“1”。
- 添加若干个“0”,直到长度满足 (n×r)−1。
- 最后添加一个“1”。
示例(若 r=1088 bits):
- 原始消息:"Hello"(40 bits)→ 填充后:"Hello" + "1" + 1046×"0" + "1"。
其中P25置换为14轮迭代ARX结构,如下图所示:
将25个64比特字按照5X5的矩阵形式排列
其中5个ARX结构函数F1,F2,F3,F4和F5如下图所示:
其中X0,X1,X2,X3和X4均为64位字。