【信息安全】SM4国密算法原理

2023-12-05 16:12

本文主要是介绍【信息安全】SM4国密算法原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. SM4国密算法介绍

SM4国密算法是一种对称密码算法,也称为SM4分组密码算法,它在中国国家密码管理局发布的国家密码算法标准中被广泛采用。SM4分组密码算法各个分组长度一般为128bit,密钥长度也为128bit。加密算法和密码扩展算法都采用32轮非线性迭代机制。

本文将SM4算法分为两个模块进行介绍,一部分是加/解密模块,另一部分是密钥扩展模块。这些模块中包含的运算操作主要有:异或运算、移位变换、盒变换。

  • 异或运算 XOR
    在异或运算中,如果参与运算的两个值相同,则结果为假(或0);如果两个值不同,则结果为真。异或运算的真值表如下:
ABA XOR B
000
011
101
110
  • 移位变换
    在密码学中,移位是一种简单的加密技术,通过将字母或数字按照固定的位数进行移动来加密文本。
    在这里插入图片描述

  • 盒变换
    盒变换是一种非线性变换,它通过查找预定义的S盒(Substitution Box)来替换输入的每个字节。S盒是一个固定的字节替代表,将输入字节映射到输出字节。在SM4中,S盒是一个16x16的矩阵,包含了固定的字节替代值。盒变换可以增加加密算法的非线性和安全性。SM4盒变换矩阵如图所示:

在这里插入图片描述

2. 加解密模块

在这里插入图片描述
图2.1 加/解密流程图

图2.1给出了SM4算法的加/解密流程图。输入为128bit的明文数据,输出为128bit的密文数据。整个加/解密过程,需要经过32 ( i = 0 , 1 , . . . , 31 ) (i=0,1,...,31) (i=0,1,...,31)轮迭代,当i=0时进行第一轮变换,一直进行到 i = 31 i=31 i=31结束。加/解过程表示为,其中F为轮函数,即32轮非线性迭代机制。

将输入的128bit的明文,按bit位分成4组32bit的数据,表示为 ( X i , X i + 1 , X i + 2 , X i + 3 ) \left(X_i, X_{i+1}, X_{i+2}, X_{i+3}\right) (Xi,Xi+1,Xi+2,Xi+3),其中 X i ( i = 0 , 1 , … , 31 ) X_i (i=0,1,…,31) Xi(i=0,1,,31)为32bit明文数据。

首先,将 X i X_i Xi保持不变,将 X i + 1 , X i + 2 , X i + 3 X_{i+1}, X_{i+2}, X_{i+3} Xi+1,Xi+2,Xi+3和轮密钥 r k i rk_i rki异或得到一个32bit的数据,作为盒变换的输入,表示为sbox input  = X i + 1 ⊕ X i + 2 ⊕ X i + 3 ⊕ r k i _{\text {input }}=X_{i+1} \oplus X_{i+2} \oplus X_{i+3} \oplus rk_i input =Xi+1Xi+2Xi+3rki,其中 ⊕ ⊕ 表示异或运算, r k i rk_i rki为轮密钥。

然后,将 s b o x input  sbox_{\text {input }} sboxinput 拆分成4个8bit的数据,分别执行盒变换操作。将4个盒变换的输出(每个输出依然为8bit)组合成一个32bit的 s b o x output  sbox_{\text {output }} sboxoutput 

然后,将这个32bit的sbox_output 执行移位变换操作。执行4次循环左移操作,分别循环左移2,10,18,24位,得到4个32bit的结果,分别记为 y 2 y_{2} y2 y 10 y_{10} y10 y 18 y_{18} y18 y 24  y_{\text {24 }} y24 

将移位的结果 y 2 y_{2} y2 y 10 y_{10} y10 y 18 y_{18} y18 y 24  y_{\text {24 }} y24 ,盒变换的输出sbox_output,第一组输入明文 X i X_{i} Xi,三者进行异或,得到 X i + 4 X_{i+4} Xi+4,表示为 X i + 4 = s b o x o u t p u t ⊕ y 2 ⊕ y 10 ⊕ y 18 ⊕ y 24 ⊕ X i X_{i+4}=sbox_{output}⊕y_{2}⊕y_{10}⊕y_{18}⊕y_{24}⊕X_{i} Xi+4=sboxoutputy2y10y18y24Xi

实际加/解密过程中,上述流程共执行32轮,每一轮使用都使用不同的轮密钥 r k i = K i + 4 ( i = 0 , 1 , … , 31 ) rk_i=K_{i+4} (i=0,1,…,31) rki=Ki+4(i=0,1,,31),轮密钥通过密钥扩展产生。将轮函数F最后生成的4个32bit数据 X 32 , X 33 , X 34 , X 34 X_{32},X_{33},X_{34},X_{34} X32,X33,X34,X34合并后执行反序变换操作,得到最终的128bit的密文数据,即 X 35 , X 34 , X 33 , X 32 X_{35},X_{34},X_{33},X_{32} X35,X34,X33,X32

3. 密钥扩展模块

在这里插入图片描述
图3.1 密钥扩展流程图

图3.1给出了密钥扩展的流程图。输入为初始密钥,是一个128bit的数据,输出为32bit的轮密钥。

首先,将初始密钥按位拆分为4个32bit的数据,记为 M K 0 , M K 1 , M K 2 , M K 3 MK_0,MK_1,MK_2,MK_3 MK0,MK1,MK2,MK3。然后将初始密钥与系统参数FK,进行按位异或,得到用于循环的密钥 K 0 , K 1 , K 2 , K 3 K_0,K_1,K_2,K_3 K0,K1,K2,K3,其中 K 0 = M K 0 ⊕ F K 0 , K 1 = K 1 ⊕ F K 1 , K 2 = K 2 ⊕ F K 2 , K 3 = K 3 ⊕ F K 3 K_0=M K_0 \oplus F K_0, \quad K_1=K_1 \oplus F K_1, K_2=K_2 \oplus F K_2, \quad K_3=K_3 \oplus F K_3 K0=MK0FK0,K1=K1FK1,K2=K2FK2,K3=K3FK3

4. 参考资料

https://houbb.github.io/2020/06/17/althgorim-cryptograph-04-sm4#%E5%8A%A0%E8%A7%A3%E5%AF%86

这篇关于【信息安全】SM4国密算法原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/458241

相关文章

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖