【密码应用-轻量级分组加密算法Midori】此文章归类为:密码应用。
轻量级分组加密算法Midori
算法为基于SPN结构设计的轻量级分组密码算法。算法密钥长度为128位,分组大小分别为64位(Midori-64)和128位(Midori-128),对应的迭代轮数为16轮与20轮。每轮轮函数F由SubCell、ShuffleCell、MixColumn、AddKey共4部分组成。分组状态表示为16个比特块的形式,分组规模为64比特时,每个比特块为半字节;分组规模为128比特时,每个比特块为字节(8-bit)。
(1) 单元替换层
在Midori-64中使用一个S盒S1,在Midori-128中使用由两个S2与4个不同的置换生成4个8比特的S盒Sb0,Sb1,Sb2,Sb3。
64位中间状态划分为16个的,然后依次进入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→()T,其中,i=0,4,8,12。
4X16位中间状态每一列乘以4×4的M矩阵运算。
(4)轮密钥加层
将(3)中输出的64位的中间状态与64位的轮密钥逐比特异或。
中间状态为S0…S15(16半字节),轮密钥为…RK15(16半字节),则=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。
更多【密码应用-轻量级分组加密算法Midori】相关视频教程:www.yxfzedu.com