-
-
[原创]轻量级分组加密算法LED
-
发表于: 2023-10-16 10:10 5626
-
轻量级分组加密算法LED
LED算法为基于SPN结构设计的轻量级分组密码算法。算法分组大小为64位,密钥长度分别为64bit(LED-64)和128bit(LED-128),对应的迭代轮数为32轮与48轮。每轮轮函数F由轮密钥加变换、轮常数加变换、单元替代变换、行移位变换、列混合变换共5部分组成。分组状态表示为4X4的16个比特块的形式,每个比特块为半字节(4-bit)。
LED算法加密流程
(1) 轮密钥加层
将64位的中间状态与64位的轮密钥逐比特异或。
中间状态为S0…S15(16半字节),轮密钥为RK0…RK15(16半字节),则输出为Bi=Si+RKi(0≤i≤15)
(2) 轮常数加层
常数加AddConstant简单对中间状态异或如下形式的常数:
其中(ks7……ks0)是密钥长度的比特表示;轮常数(rc5……rc0)是6比特线性反馈移位寄存器的状态,LFSR的初始状态为全0,每次常数加变换之前更新LFSR,状态更新函数定义如下:
(rc5,rc4,rc3, rc2,rc1,rc0)= (rc4,rc3, rc2,rc1,rc0,rc5⊕rc4⊕1)
轮常数对应的值如下表所示。
(3)单元替换层
把(2)中输出的64位中间状态划分为16个4-bit的S0…S15,然后S0…S15依次进入16个相同的4X4S盒(S),输出为B0…B15。
将中间状态中的每4bit通过S盒非线性地变换为另外一个半字节。
(4)行移位层
对一个状态的每一行循环不同的位移量.第0行移位保持不变,第1行循环左移4bit,第2行循环左移8bit,第3行循环左移12bit.
(5)列混合层
LED算法的列字节混合设计参照了AES的MixColumns。将(4)中输出的4X16位中间状态的16个4bit也就是4(bit)X4(行)X4(列)中间状态逐列乘以相同的4X4的矩阵M。
M为对合MDS矩阵
轮密钥生成算法
LED算法的轮密钥生成方案是不需要进行扩展运算的。
在LED-64算法中,种子K通过密钥编排方案生成了K1,它们的关系为K=K1
在LED-128算法中,种子K通过密钥编排方案生成了K1和K2,它们的关系为K=K1||K2
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [原创]基于NFSR和S盒的国产流密码算法Bagua 3087
- [原创]基于ARX结构的流密码算法Salsa20 2566
- [原创]基于LFSR和NFSR的流密码算法Grain v1 1998
- [原创]轻量级流密码算法Trivium 2535
- [原创]常见分组加密算法的整体结构 2068