首页
社区
课程
招聘
[原创]轻量级分组加密算法Midori
2023-10-4 10:13 4087

[原创]轻量级分组加密算法Midori

2023-10-4 10:13
4087

轻量级分组加密算法Midori

Midori算法为基于SPN结构设计的轻量级分组密码算法。算法密钥长度为128位,分组大小分别为64位(Midori-64)和128位(Midori-128),对应的迭代轮数为16轮与20轮。每轮轮函数F由SubCell、ShuffleCell、MixColumn、AddKey共4部分组成。分组状态表示为16个比特块的形式,分组规模为64比特时,每个比特块为半字节(4-bit);分组规模为128比特时,每个比特块为字节(8-bit)。

(1)  单元替换层

在Midori-64中使用一个S盒S1,在Midori-128中使用由两个S2与4个不同的置换生成4个8比特的S盒Sb0,Sb1,Sb2,Sb3。

64位中间状态划分为16个4-bitS0…S15,然后S0…S15依次进入16个相同的4X4S盒(S1),输出为B0…B15


(2)单元置换层

(1)中输出的4X16位中间状态的每个半字节通过置换表进行重新排列。

(B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15)=(S0,S10,S5,S15,S14,S4,S11,S1,S9,S3,S12,S6,S7,S13,S2,S8)

(3)  列混合层

使用对合二元矩阵M对状态中每一列进行如下操作,即M●(si,si+1,si+2,si+3)T→(bi,bi+1,bi+2,bi+3)T,其中,i=0,4,8,12。

(2)中输出的4X16位中间状态每一列乘以4×4的M矩阵运算。


(4)轮密钥加层

将(3)中输出的64位的中间状态与64位的轮密钥逐比特异或。

中间状态为S0…S15(16半字节),轮密钥为RK0…RK15(16半字节),则输出为Bi=Si+RKi0≤i≤15

在第一轮加密之前对明文有一个轮密钥加操作,最后一轮取消了单元置换和列混合操作,只包括单元替换和密钥加操作。

轮密钥生成算法

Midori算法使用128比特主密钥,其密钥扩展算法较为简单。其中,Midori-64算法将128比特主密钥分为两部分K=k0||k1,算法的入口与出口白化密钥均为WK=k0⊕k1,圈子密钥kei=k(i+1)mod2⊕αi,1≤i≤15,其中,αi是轮常数。而Midori-128算法的入口与出口白化密钥均为WK=K,圈子密钥kei=K⊕βi,1≤i≤19,其中,βi为轮常数。且当1≤i≤15时,满足αi=βi。



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2023-10-4 10:31 被东关之南编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回