【密码学】四、SM4分组密码算法

chatgpt/2023/9/24 1:18:33

SM4分组密码算法

  • 1、概述
    • 1.1初始变量算法
    • 1.2密钥扩展算法
    • 1.3轮函数F
      • 1.3.1合成置换T
      • 1.3.2S盒
  • 2、算法设计原理
    • 2.1非平衡Feistel网络
    • 2.2T变换
      • 2.2.1非线性变换τ
      • 2.2.2线性变换L
      • 2.2.3基础置换
    • 2.3密钥扩展算法的设计

1、概述

SM4分组密码算法是一种迭代分组密码算法,采用非平衡Feistel结构,分组长度为128bit,
①Z2e表示e-比特的向量集,Z232中的元素称为字,Z28中的元素称为字节
②S盒为固定的8bit输入8bit输出的置换,记为Sbox()
③⊕表示2bit异或;<<<i表示32bit循环左移i位
④密钥及密钥参量
加密密钥长度位128bit,表示MK=(MK0,MK1,MK2,MK3),分别是字。
轮密钥rk是由加密密钥生成。
FK是系统参数,CK是固定参数,用于密钥扩展算法。

1.1初始变量算法

反序变换为R(A0,A1,A2,A3)=(A3,A2,A1,A0)
算法的加密变换为:Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1i⊕Xi+2i⊕Xi+3i⊕rki)
(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)
其中,F是轮函数,T是合成置换
加解密的结构相同,但是轮密钥的使用顺序不一样,加密的时候是0-31,解密的时候是31-0
加密流程图如下:
加密流程图
轮函数如图:
轮函数

1.2密钥扩展算法

轮密钥生成方法:

(K0,K1,K2,K3) = (MK0⊕FK0,MK1⊕FK1,MK2⊕FK2,MK3⊕FK3)

rki=K(i+4) = Ki⊕T’(Ki+1)⊕Ki+2⊕Ki+3⊕CKi
T’变换与加密算法轮函数的T基本相同,只是将线性变换L变成L’,也就是:
 L’(B)=B⊕(B<<<13)⊕(B<<<23)

常数FK的值:
FK0=(A3B1BAC6)
FK1=(56AA3350)
FK2=(677D9197)
FK3=(B27022DC)
固定参数CK的取值
一共使用有32个固定参数CKi,CKi,是一个字,它的产生规则是:

设cki,j为CKi的第j字节(i=0,1,…,31;j=0,1,2,3),即CKj=(cki,0,cki,1,cki,2,cki,3),

则 cki,j=(4i+j)×7(mod 256)
下面是32个固定参数CK的十六进制表示形式的具体值:
CK

1.3轮函数F

算法采用非线性迭代结构,以字为单位进行加密运算,称一次迭代运算为一轮变换。
F(X0,X1,X2,X3)=X0⊕T(X1⊕X2⊕X3⊕rk0)

1.3.1合成置换T

T是一个可逆变换,由非线性变换τ和线性变换L复合而成,即T(·)=L(r(·))
非线性变换r由4个并行的S盒组成,输出bi,输入ai,则bi=Sbox(ai)
非线性变换r的输出是线性变换L的输入。输出C,输入B,则
C=L(B)=B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24)

1.3.2S盒

其中数据均为十六进制表示,设其输入为EF,则输出结果是第E行第F列的值,也就是Sbox(EF)=0x84
S盒
SM4分组密码算法的ECB模式:
ECB模式的工作方式的运算实例用以验证密码算法的正确性。
ECB

2、算法设计原理

2.1非平衡Feistel网络

平衡网络可以保证可逆性,可以构造高复杂度的f函数,不用在意其可逆性,也不需要实现加密和解密两种不同的算法,Feistel网络可以自动实现。但是现在设计的分组密码要求至少是128Bit,那么分组长度的增加就会导致轮函数f规模的增加。
非平衡Feistel网络将明文分为n个运算字,进行n次迭代就能将明文全部覆盖一遍。

2.2T变换

T变换是由非线性变换τ和线性变换L复合而成的,在SM4中起到了混淆和扩散的作用。

2.2.1非线性变换τ

τ变换是一种以字为单位的非线性代替变换,由4个S盒并置构成,本质上是S盒的一种并行应用,即将32位的字分为4个8位的字节分别进行S盒置换,因此其混淆作用体现在S盒中。

2.2.2线性变换L

L是以字为处理单位的线性变换,输入输出都是32位的字,主要起扩散作用。在异或和循环左移的结合运算下,可以使S盒输出值打乱,增加了各个输出值的相关性,使S盒的输出得到了扩散,使得密码算法能够抵抗拆分分析和线性分析。

2.2.3基础置换

基础置换的密码学性质决定明密文变换的效率。
SM4分组密码算法的单轮变换构成正形置换,其密码特性可以由正形置换的性质推出。
①SM4算法在不同密钥作用下的轮变换必然不同
②单轮变换在不同的密钥作用下,输入明文相同而输出比如不同

2.3密钥扩展算法的设计

子密钥是由加密密钥派生的,理论上子密钥总是统计相关的。密钥扩展算法的目的就是使子密钥间的统计相关性不易被破解利用,或者说使子密钥看上去更像是统计独立的。
①子密钥间不存在明显的统计相关性。
②没有弱密钥
③密钥扩展的速度不低于加密算法的速度,且资源占用少。
④由加密密钥可以直接生成任何一个子密钥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5314428.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

LUN映射出错导致写操作不互斥的服务器数据恢复案例

服务器数据恢复环境&#xff1a; 某公司的光纤SAN存储系统&#xff0c;6块硬盘组建一组RAID6&#xff0c;划分若干LUN&#xff0c;MAP到不同的SOLARIS操作系统服务器上。 服务器故障&分析&#xff1a; 由于业务增长需要新增应用&#xff0c;工作人员增加了一台IBM服务器&am…

hdu foreverlasting and fried-chicken

题意&#xff1a; 在一个有n个点和m条边的图中找到形状是上图的子图&#xff0c;输出个数 思路&#xff1a; 仔细观察上图&#xff0c;设第二行的那个点为x&#xff0c;最后一行的点为y&#xff0c;那么可以知道&#xff0c;如果x和y都和相同的所有点中取四个点分别和xy相连…

独立站有流量没订单是什么原因呢?怎么解决?

和自带流量的电商平台比起来&#xff0c;外贸独立站自身是没有流量的。独立站卖家要订单&#xff0c;就必须主动去引流。 如果你是1个独立站新手卖家&#xff0c;你很可能遇到过这种问题&#xff1a;跑了一段时间广告&#xff0c;广告费花了几百上千美金&#xff0c;流量来了不…

Verilog | Round_Robin_Arbiter

重写了权重轮询仲裁&#xff0c;添加lock输入信号&#xff0c;表示请求方收到了仲裁许可&#xff0c;在对应的lock拉低之前&#xff0c;仲裁器不可以开启新的仲裁。 Generics Generic nameTypeValueDescriptionN4 Ports Port nameDirectionTypeDescriptionclkinputrst_ninp…

ChatGLM-6B VS 昆仑万维天工对比

下面进行昆仑万维天工与ChatGLM-6B内测结果进行对比&#xff0c;其中ChatGLM-6B的结果来自https://github.com/THUDM/ChatGLM-6B&#xff0c;假设ChatGLM-6B的结果是可靠的&#xff0c;那么为了公平&#xff0c;昆仑万维天工&#xff08;https://tiangong.kunlun.com/interlocu…

python_PyQt5开发验证K线视觉想法工具V1.1 _增加标记类型_线段

目录 运行情况&#xff1a; 代码&#xff1a; 承接 【python_PyQt5开发验证K线视觉想法工具V1.0】 博文 https://blog.csdn.net/m0_37967652/article/details/131966298 运行情况&#xff1a; 添加线段数据在K线图中用线段绘制出来 代码&#xff1a; 1 线段标记的数据格式…

企业计算机服务器数据库中了360后缀勒索病毒怎么解决,数据恢复

近日&#xff0c;一家中型企业的服务器数据库遭到了一起严重的网络安全事件&#xff0c;导致企业的运营暂时陷入混乱。据了解&#xff0c;该企业的技术人员在服务器数据库中发现了一种名为“360后缀”勒索病毒&#xff0c;该勒索病毒通过对企业重要文件进行加密&#xff0c;数据…

合宙Air724UG LuatOS-Air script lib API--log

Table of Contents log _log(level, tag, …) (local函数 无法被外部调用) log.trace(tag, …) log.debug(tag, …) log.info(tag, …) log.warn(tag, …) log.error(tag, …) log.fatal(tag, …) log.openTrace(v, uartid, baudrate) log 模块功能&#xff1a;系统日志记录,分…
推荐文章