轻量级分组加密算法CRAFT
CRAFT算法为基于SPN结构设计的轻量级可调分组密码算法。算法分组大小为64位,密钥长度为,迭代轮数为32轮。每轮轮函数F由轮常数加(AddConstants)、轮密钥加(AddTweakey)、单元置换()和S盒替换(SubCells)共5部分组成。分组状态表示为16个比特块的形式,每个比特块为半字节。
CRAFT算法单轮加密过程
(1) 列混淆层
内部状态的每一列都乘以下面的二进制矩阵M。
(2) 轮常数加
将状态矩阵异或一个轮常数。
RC3[32]={0x1,0x4,0x2,0x5,0x6,0x7,0x3,0x1,0x4,0x2,0x5,0x6,0x7,0x3,0x1,0x4,0x2,0x5,0x6,0x7,0x3,0x1,0x4,0x2,0x5,0x6,0x7,0x3,0x1,0x4,0x2,0x5}。
RC4[32]={0x1,0x8,0x4,0x2,0x9,0xc,0x6,0xb,0x5,0xa,0xd,0xe,0xf,0x7,0x3,0x1,0x8,0x4,0x2,0x9,0xc,0x6,0xb,0x5,0xa,0xd,0xe,0xf,0x7,0x3,0x1,0x8}。
(3)轮密钥加
将64位的中间状态与64位的轮密钥逐比特异或。
中间状态为S0…S15(16半字节),轮密钥为RK0…RK15(16半字节),则输出为
(4)置换
将置换P应用于中间状态进行重新排列。
P=(15,12,13,14,10,9,8,11,6,5,4,7,1,2,3,0)
(5)S盒替换
把(4)中输出的64位中间状态划分为16个的,然后依次进入16个相同的4X4S盒(S),输出为V0…V15,Vi=S(Ui)(0≤i≤15)
轮密钥生成算法
128bit主密钥被分成两个64bit密钥K0和K1。从K0、K1和相关的调柄值T派生出四个64bit密钥TK0、TK1、TK2和TK3,最终生成轮密钥TKi。
⊕T
TK1=K1⊕T
⊕Q(T)
TK3=K1⊕Q(T)
TKi=TKimod4(0≤i≤31)
Q(T)是应用在调柄值T的半字节上的置换,Q=(12,10,15,5,14,8,9,2,11,3,7,4,6,0,1,13)。
Tweak[16]={0x5,0x4,0xc,0xd,0x9,0x4,0xf,0xf,0xd,0x0,0x6,0x7,0x0,0xa,0x5,0x8}。