近年来,随着物联网无线传感技术的广泛应用,如何将加密算法用尽可能小的面积实现,同时又要保证加密效率的问题成了研究热点,因此,轻量级分组密码应运而生并不断发展完善。下面我们就来了解一下LBlock算法。
LBlock算法简介
LBlock算法是我国学者吴文玲和张蕾在ACNS2011提出的轻量级分组加密算法,其分组长度是64比特,密钥的长度是80比特,是32轮迭代分组算法,采用Feistel算法结构,加密算法和解密算法互逆,使用的轮密钥顺序相反,其次对密钥扩展算法进行了独创设计,采用的是Feistel结构和SPN结构。
LBlock算法的加密过程
LBlock算法的加密过程主要包括轮密钥加(AddKey),S盒变换(SubCell),P混合(Permutation)操作;同时对密钥扩展key进行S盒变换(SubCell)、p置换(Exchange)操作、与轮数异或。
在设计上LBlock算法仍采用与传统分组密码类似的迭代结构,将明文用轮函数在密钥的作用下进行多次迭代得到密文。密钥扩展算法的设计借鉴了PRESENT算法的设计理念,采用非线性移位寄存器, 利用S盒变换和循环移位生成轮密钥。
设M=X1‖X0表示64比特明文,则加密过程如下:
- 对i=2,3,…,33,执行Xi=F(Xi-1,Ki-1)⊕(Xi-2<<<8),其中<<<8表示左循环移8位。
- 输出C=X32‖X33为64比特密文。
每轮所使用的F函数根据如下定义:
轮函数F:轮函数F是由混淆函数S和扩散函数P组成,组成方式如下:
F{0, 1}32*{0, 1}32 →{0,1}32→(X, Ki)→U=P (S (X⊕Ki))
混淆函数S是非线性层,是轮函数F的重要部分,它由8个S盒组成,每个S盒为4x4比特。扩散函数P是8个4比特字组成的置换。
LBlock算法的解密过程
LBlock算法的解密过程就是加密过程的逆过程,具体过程如下:
- 对i=31,30,…,1,0,计算Xi=F(Xi+1,Ki+1)⊕(Xi+2>>>8)。
- 输入P=X1‖X0为64比特明文。
LBlock算法的密钥扩展算法
将80比特主密钥K存入密钥寄存器中,定义密钥寄存器K=k79k78k77k76……k1k0,输出密钥寄存器K中的最左边的32比特作为轮密钥K1,然后进行如下操作:
- For i=1,2,...,31,根据如下方式更新密钥寄存器K。
- K<<<29。
- {k79k78k77k76}=s9{k79k78k77k76},{k75k74k73k72}=S8{k75k74k73k72}。
- {k50k49k48k47k46}⊕{i}2。
- 输出密钥寄存器K中的最左边32比特作为轮密钥Ki+1,其中S8、S9是两个4X4比特S盒。
LBlock算法的优点
与其他轻量级分组密码相比,LBlock算法执行效率更高,适应性更强,其占用资源小,易于实现,且具有良好的随机性以及安全性。
免责声明:素材源于网络,如有侵权,请联系删稿。