【密码应用-轻量级分组加密算法PRINCE】此文章归类为:密码应用。
轻量级分组加密算法PRINCE
算法为基于SPN结构设计的轻量级分组密码算法。算法分组大小为64位,密钥长度为128bit(LED-128),迭代轮数为12轮。每轮轮函数F由、行移位变换、轮常数加变换、轮密钥加变换共5部分组成。分组状态表示为4X4的16个4bit的形式,每个比特块为半字节。
PRINCE算法加密流程
(1)S盒替换层
把输出的64位中间状态划分为16个的,然后依次进入16个相同的4X4S盒(S),输出为B0…B15。
将中间状态中的每4bit通过S盒非线性地变换为另外一个半字节。
(2)扩散层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分别为:
(3)行移位
与AES的行移位操作相同,将状态的第i行向左循环移动i个块,0≤i≤3。
(4)轮常数加层
将64位的中间状态与64位的轮常数逐比特异或。
中间状态为S0…S15(16半字节),轮密钥为C0…C15(16半字节),则输出为Bi=Si+Ci(0≤i≤15)
(5)轮密钥加层
将64位的中间状态与64位的轮密钥逐比特异或。
中间状态为S0…S15(16半字节),轮密钥为RK0…RK15(16半字节),则输出为Bi=Si+RKi(0≤i≤15)
轮密钥生成算法
128比特的密钥被分为2个64比特的子密钥k0和k1,其中k1应用于核心部件PRINCEcore,k0和k0′用于算法输入、输出两端的白化,这里k0′=(k0≫1)⊕(k0≫63)。PRINCEcore采用对称结构,中间2轮是对合的,前后5轮除轮常数不同外互为逆变换,轮常数满足RCi⊕RC11-i=α,0≤i≤11,这里α是个固定常数。
PRINCE算法可以通过加密操作来实现解密,即D(k0∥k0′∥k1)(·)=E(k0′∥k0∥k1⊕α)(·)。
更多【密码应用-轻量级分组加密算法PRINCE】相关视频教程:www.yxfzedu.com