轻量级分组加密算法PRINCE

轻量级分组加密算法PRINCE

PRINCE算法为基于SPN结构设计的轻量级分组密码算法。算法分组大小为64位,密钥长度为128bit(LED-128),迭代轮数为12轮。每轮轮函数F由S盒替换、扩散层M′、行移位变换、轮常数加变换、轮密钥加变换共5部分组成。分组状态表示为4X4的16个4bit的形式,每个比特块为半字节(4-bit)。

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

PRINCE算法加密流程

  1. S盒替换层

把输出的64位中间状态划分为16个4-bit的S0…S15,然后S0…S15依次进入16个相同的4X4S盒(S),输出为B0…B15。

将中间状态中的每4bit通过S盒非线性地变换为另外一个半字节。

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

  1. 扩散层M′

扩散层对应对角矩阵M′=diag(M0,M1,M1,M0),作用在状态X上为:

M′●X=(M0●X1||M1●X2||M1●X3||M0●X4)

这里Xi表示X的第i列,1≤i≤4,矩阵M0,M1分别为:

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

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

  1. 行移位

与AES的行移位操作相同,将状态的第i行向左循环移动i个块,0≤i≤3

  1. 轮常数加层

将64位的中间状态与64位的轮常数逐比特异或。

中间状态为S0…S15(16半字节),轮密钥为C0…C15(16半字节),则输出为Bi=Si+Ci(0≤i≤15)。

  1. 轮密钥加层

将64位的中间状态与64位的轮密钥逐比特异或。

中间状态为S0…S15(16半字节),轮密钥为RK0…RK15(16半字节),则输出为Bi=Si+RKi(0≤i≤15)。

轮密钥生成算法

128比特的密钥被分为2个64比特的子密钥k0和k1,其中k1应用于核心部件PRINCEcore,k0和k0′用于算法输入、输出两端的白化,这里k0′

=(k01)⊕(k063)。PRINCEcore采用对称结构,中间2轮是对合的,前后5轮除轮常数不同外互为逆变换,轮常数满足RCi⊕RC11−i=α,0≤i≤11,这里α是个固定常数。PRINCE算法可以通过加密操作来实现解密,即

D(k0∥k0′∥k1)(·)=E(k0′∥k0∥k1⊕α)(·)。

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