目录
国产分组密码算法SM4
SM4(原SMS4)加密算法是公开的国产分组密码算法,主要用于对大量数据进行加密。SM4采用4分支非平衡Feistel结构设计,轮函数为SP结构,分组长度和密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构,解密算法和加密算法的流程大同小异,只是轮密钥的使用顺序相反,S盒为固定的8比特输入8比特输出。SM4的主要操作包括异或运算、合成置换、非线性置换、反序变换、循环移位以及S盒变换等。它的安全强度与AES(高级加密标准)相当,适用于各类应用场景。
SM4算法的S盒(SBOX)
(1)加密算法
将输入轮函数的128bit的数据分为4个32bit字,加密算法每一轮使用32bit的密钥更新其中1个字。
轮函数为:
其中T变换(可逆)为S和L的复合:
其中“||”为字节的连接。
轮函数执行32轮之后,最终可以得到36个32bit字,即(X0,……,X35)。
逆序变换R:(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)。
(Y0,Y1,Y2,Y3)即为最终输出的密文。
(2)解密算法
解密算法和加密算法一致,只是轮密钥的使用顺序相反。
(3)密钥扩展算法
则轮密钥生成方法为:
在算法设计方面,SM4兼具安全性、高效性、创新性、可扩展性;在安全性方面,目前没有公开发表的研究表明SM4是不安全的。