-
-
[原创]轻量级分组加密算法KATAN
-
发表于:
2023-10-21 16:48
5840
-
轻量级分组加密算法KATAN
KATAN系列分组密码算法按分组长度分为三类:KATAN32,KATAN48和KATAN64。KATAN32的分组长度为32比特,即明文和密文的分组长度均为32比特。32比特明文首先按顺序置入两个长度分别为13比特和19比特的移位寄存器L1和L2其中32比特明文的最高比特置入13级移存器L1的第12比特位置,32比特明文的最低比特置入19级移存器L2的第0比特位置。每轮加密时,移存器L1和L2向左移动一拍,相应的的反馈函数的生成比特分别置入移存器L1和L2的最低比特位。经过加密254轮之后,将移存器L2和L2的状态信息按照明文置入时的顺序输出作为密文,其中L2的0比特位置的值是密文的最低位,L1的12比特位置的值是密文的最高位。
KATAN32在每轮加密中使用两个非线性函数fa和fb:
KATAN算法加密过程:
记L1=u12||u11||……||u1||u0
记L2=v18||v17||……||v1||v0
输入的32bit明文记为W=w31||w30||……||w1||w0
第0轮加密(输入为32bit明文)
L1=u12||u11||……||u1||u0=w31||w30||……||w20||w19
L2=v18||v17||……||v1||v0=w18||w17||……||w1||w0
第i轮加密(输入为32bit中间状态)(1≤i≤253)
L1=u12||u11||……||u1||u0
L2=v18||v17||……||v1||v0
然后执行相同的操作fa和fb,则L1和L2变为:
L1=u11||u10||……||u1||u0||fa(L1)
L2=v17||v16||……||v1||v0||fb(L2)
轮密钥生成算法
KATAN32算法的密钥生成算法(与KATAN48和KATAN64一样),是将80比特密钥置入一个线性反馈移位寄存器LFSR,密钥的最低位置入线性反馈移位寄存器LFSR的0位置。每一轮中,线性反馈移位寄存器LFSR的位置0和位置1的值作为该轮的子密钥,K2i和K2i+1,并且LFSR运动两拍。反馈多项式为最小汉明重量为5的一个本原多项式(没有80级的3项式为本原多项式):
设密钥为K,第i轮的子密钥为ka||kb=k2i||k2i+1
KATAN系列密码三个不同分组长度的变体KATAN32,KATAN48和KATAN64的不同在于:
(1)明文和密文的分组长度;
(2)线性反馈移位寄存器L1和L2的长度;
(3)进入非线性函数的抽头比特的位置;
(4)在一轮加密中,非线性函数计算利用的次数。
附录为不同轮对应IR的取值:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课