轻量级分组加密算法Simon

轻量级分组加密算法Simon

Simon算法为基于平衡Feistel结构设计的轻量级分组密码算法。n表示字长,2n表示分组长度,mn表示密钥长度。Simon算法一共10个版本,均可用Simon 2n/mn表示。这10个版本分别为32/64,48/72,48/96,64/96,64/128,96/96,96/144,128/128,128/192,128/256。Simon轮函数包含3种操作:按位异或(⊕)、按位与(&)、循环左移(<<<)。

轻量级分组加密算法Simon_第1张图片

轻量级分组加密算法Simon_第2张图片

Simon算法加密过程

轻量级分组加密算法Simon_第3张图片

Simon算法加密流程

轮密钥生成算法

Simon系列分组密码算法的轮函数是相同的,其不同之处在于密钥扩展算法。假设初始密钥为K0,K1,……Km-1,利用轮密钥递推公式可以得到全部轮密钥K0,K1,……Kr-1。根据初始密钥字长m不同,递推公式分为3种:

轻量级分组加密算法Simon_第4张图片

其中常量c=2n-4=0xff…fc,c的二进制位数与轮密钥Ki相同。z0,z1,z2,z3,z4是5个不同的二进制常数数列,不同版本的Simon密码可以采用不同的z。

设u,v,w是周期为31的序列,t是周期为2的序列,

u=1111101000100101011000011100110···,

v=1000111011111001001100001011010···,

w=1000010010110011111000110111010···,

t=010101010101···。

则SIMON算法的轮常数序列为:

z0=u,z1=v,z2=u⊕t,z3=v⊕t,z4=w⊕t。

你可能感兴趣的:(分组加密算法,算法,密码学,网络安全,安全,同态加密)