近年来,随着物联网无线传感技术的广泛应用,如何将加密算法用尽可能小的面积实现,同时又要保证加密效率的问题成了研究热点,因此,轻量级分组密码应运而生并不断发展完善。下面我们就来了解一下LBlock算法。

LBlock算法简介

LBlock算法是我国学者吴文玲和张蕾在ACNS2011提出的轻量级分组加密算法,其分组长度是64比特,密钥的长度是80比特,是32轮迭代分组算法,采用Feistel算法结构,加密算法和解密算法互逆,使用的轮密钥顺序相反,其次对密钥扩展算法进行了独创设计,采用的是Feistel结构和SPN结构。

LBlock算法

LBlock算法的加密过程

LBlock算法的加密过程主要包括轮密钥加(AddKey),S盒变换(SubCell),P混合(Permutation)操作;同时对密钥扩展key进行S盒变换(SubCell)、p置换(Exchange)操作、与轮数异或。

在设计上LBlock算法仍采用与传统分组密码类似的迭代结构,将明文用轮函数在密钥的作用下进行多次迭代得到密文。密钥扩展算法的设计借鉴了PRESENT算法的设计理念,采用非线性移位寄存器, 利用S盒变换和循环移位生成轮密钥。

设M=X1‖X0表示64比特明文,则加密过程如下:

  1. 对i=2,3,…,33,执行Xi=F(Xi-1,Ki-1)⊕(Xi-2<<<8),其中<<<8表示左循环移8位。
  2. 输出C=X32‖X33为64比特密文。

LBlock算法

每轮所使用的F函数根据如下定义:

轮函数F:轮函数F是由混淆函数S和扩散函数P组成,组成方式如下:

F{0, 1}32*{0, 1}32 →{0,1}32→(X, Ki)→U=P (S (X⊕Ki))

LBlock算法

混淆函数S是非线性层,是轮函数F的重要部分,它由8个S盒组成,每个S盒为4x4比特。扩散函数P是8个4比特字组成的置换。

LBlock算法的解密过程

LBlock算法的解密过程就是加密过程的逆过程,具体过程如下:

  1. 对i=31,30,…,1,0,计算Xi=F(Xi+1,Ki+1)⊕(Xi+2>>>8)。
  2. 输入P=X1‖X0为64比特明文。

LBlock算法的密钥扩展算法

将80比特主密钥K存入密钥寄存器中,定义密钥寄存器K=k79k78k77k76……k1k0,输出密钥寄存器K中的最左边的32比特作为轮密钥K1,然后进行如下操作:

  1. For i=1,2,...,31,根据如下方式更新密钥寄存器K。
  2. K<<<29。
  3. {k79k78k77k76}=s9{k79k78k77k76},{k75k74k73k72}=S8{k75k74k73k72}。
  4. {k50k49k48k47k46}⊕{i}2。
  5. 输出密钥寄存器K中的最左边32比特作为轮密钥Ki+1,其中S8、S9是两个4X4比特S盒。

LBlock算法的优点

与其他轻量级分组密码相比,LBlock算法执行效率更高,适应性更强,其占用资源小,易于实现,且具有良好的随机性以及安全性。

免责声明:素材源于网络,如有侵权,请联系删稿。