【密码应用-轻量级分组加密算法GIFT】此文章归类为:密码应用。
轻量级分组加密算法GIFT
算法为基于SPN结构设计的轻量级分组密码算法。算法分组大小为64位,密钥长度分别为64bit(GIFT-64)和128bit(GIFT-128),对应的迭代轮数为28轮与40轮。每轮轮函数F由、比特置换、共3部分组成。分组状态表示为16个比特块的形式,每个比特块为半字节。
算法轮函数
(1) S盒变换层
把输入的64位中间状态划分为16个的,然后依次进入16个相同的4X4S盒(S),输出为B0…B15。
GIFT-64算法的置换层是以比特为单位进行换位变换。实现将第i个比特位置的状态值置换为第P(i)位。
(3)轮密钥加层
该步骤由轮密钥加和轮常数加两部分组成。对于密钥加部分,通过密钥调度算法生成32bit的轮密钥RK(1≤r≤28),将轮密钥划分成两部分:
RKr=U||V=u15……u0||v15……v0
将U和V分别与状态值和{b4i}异或得到
b4i+1←b4i+1⊕ui b4i←b4i⊕vi(0≤i≤15)
对于常数加部分,将单比特“1”和一个6bit常数C=c5c4c3c2c1c0分别与状态值的第63、23、19、15、11、7、3个比特进行异或:
b63←b63⊕1,b23←b23⊕c5,b19←b19⊕c4,
b15←b15⊕c3,b11←b11⊕c2,b7←b7⊕c1,b3←b3⊕c0
轮密钥生成算法
对于64比特密钥长度的GIFT算法,轮密钥RKr=U‖V
由从密钥状态(‖k6‖…‖k0)中提取的两个
16比特字组成,且轮密钥的提取在密钥状态更新之前:
U←k1,V←k0
密钥状态的更新方式如下:
(k7‖k6‖…‖k0)(k1>>>2‖k0>>>12‖…‖k3‖k2)
轮常数定义为(c5,c4,c3,c2,c1,c0),其通过一个LFSR作用进行状态值更新,初始值置0,采用如下函数进行状态更新:
(c5,c4,c3,c2,c1,c0)←(c4,c3,c2,c1,c0,c5⊕c4⊕1)
更多【密码应用-轻量级分组加密算法GIFT】相关视频教程:www.yxfzedu.com