首页
社区
课程
招聘
[原创]轻量级分组加密算法KATAN
发表于: 2023-10-21 16:48 5840

[原创]轻量级分组加密算法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直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 3090
活跃值: (30881)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2023-10-21 23:19
1
游客
登录 | 注册 方可回帖
返回
//