基于128比特大S盒(ARX结构)的序列密码算法Elephant
ARX结构简介
ARX(Addition-Rotation-XOR)是一种广泛应用于轻量级密码设计的结构,主要基于模加(Addition)、循环移位(Rotation)和异或(XOR)三种基本操作。典型算法包括 ChaCha20、Salsa20、BLAKE2、SPECK 等。
ARX结构的优缺点
ARX结构的优点有软件实现高效,硬件友好,安全性可证明,设计简洁,抗侧信道攻击;缺点有非线性较弱(依赖轮数),数学分析困难,可能受代数攻击影响,不适合所有场景。
大S盒的优缺点
大S盒的优点有更强的非线性性,更高的安全性,减少迭代轮数,灵活性较强;缺点有硬件实现开销大,软件效率问题,设计复杂度高,侧信道风险。
Elephant (大象)为基于128比特大S盒(ARX结构)设计的序列密码算法,其根据密钥长度的不同,分别可以记为Elephant 128和Elephant 256,对应的初始向量IV长度为256比特。Elephant的512比特内部状态可以用4X4的状态矩阵来表示,其算法可以分为初始化阶段和工作阶段2部分。从这里可以看出,Elephant算法与RotateRing很类似。
(1)初始化阶段
当密钥长度为256比特,Key=K7||K6||K5||K4||K3||K2||K1||K0(Ki为32位字),内部状态初始值如下所示:
当密钥长度为128比特,Key= K3||K2||K1||K0(Ki为32位字),内部状态初始值如下所示:
以上Ei(i=0,...,7)和IVi(i=0,...,7)均为32位字。
(2)工作阶段
在此阶段,状态矩阵中的全部单元(16个32位字)作为轮函数G的输入,参与密钥流的生成过程,轮函数G每执行16拍,输出512比特的密钥流,Elephant算法的密钥流生成过程如下图所示:
其中轮函数G的实现如下图所示:
其中128比特大S盒SBOX128如下图所示:
其中线性变换MMMM4X如下图所示:
至此Elephant算法的设计原理介绍完毕,接下来又是大家喜闻乐见的总结时间。
关于Elephant算法的总结
优点:Elephant使用了128比特超大S盒作为非线性部件,同时兼具线性扩散功能。由于S盒规模太大,因此不需要太长的轮数就可以达到相同的安全性,同时这对攻击者来说是个不小的挑战。
缺点:同样的原因,由于Elephant算法使用了128比特超大S盒,这可能会导致软硬件效率不高,同时难以从理论上证明其安全性。