一种工业无线通信安全方法转让专利

申请号 : CN202211420873.9

文献号 : CN115499832B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘洋张苏楠朱韵万震任梦羽

申请人 : 济南职业学院

摘要 :

本发明提供了一种工业无线通信安全方法,包括多设备密钥协商及更新方法、密钥扩展方法和加解密方法。本发明兼顾工业设备数量巨大但硬件资源有限的应用场景,在尽量减少计算资源损耗的前提下提升了工业密码技术的成熟度和自主可控水平,杜绝跟踪攻击和中间人攻击等安全隐患。该方法采用精简、高安全且自同步更新的椭圆曲线方案,实现了“去中心化”的多设备密钥协商。加解密过程中,在无第三方干预的情况下通过S盒多重置乱、动态参数置乱、参数周期性变更等机制,提高了系统破解难度。通过子线程开辟、密钥扩展和加解密过程使用相同的S盒置换机制来减少计算资源消耗,保障了工业设备运行的实时性。

权利要求 :

1.一种工业无线通信安全方法,其特征在于,包括多设备密钥协商及更新方法、密钥扩展方法和加解密方法;

所述密钥协商及更新方法,其特征在于,包括以下步骤:S1、密钥协商

2 3

可信设备A、B、C...N接入网络之后,进行基于椭圆曲线方程y=x+ax+b的密钥协商,a、b为其系数,G为双方约定的基于该椭圆曲线的某个基点,n为基点G的阶,每次更新密钥时对a、b和G进行动态调整,具体步骤如下:S11、各设备使用自带的随机数发生器产生随机数ri∈[1,n‑1];基于ri计算椭圆曲线点Ri=[ri]G=(xi,yi);生成私钥di,私钥存储于可信区域内,严格保密且无法传输;基于私钥di生成公钥Pi=[di]G;上述步骤中i∈[A,N];

S12、各设备向网络中发布非密数据:Ri、Pi;

S13、设备i获取其他设备的非密数据并计算椭圆曲线点:Ei=[ti](PA+RA)... (Pi‑1+Ri‑1) (Pi+1+Ri+1)... (PN+RN)=(xi',yi'),其中ti=di+ri;

因此对于设备A:EA=[tA](PB+RB)(PC+RC)...(PN+RN)=(xA',yA'),其中tA=dA+rA;

对于设备B:EB=[tB](PA+RA)(PC+RC)...(PN+RN)=(xB',yB'),其中tB=dB+rB;

依次类推可得到所有设备的椭圆曲线点;

各椭圆曲线点的坐标值相同,即xA'=xB'=...=xN',yA'=yB'=...=yN';

S14、各设备计算协商密钥

首先各设备基于SM3算法计算256位哈希值:HA=H256(xA'||yA');HB=H256(xB'||yB');...;HN=H256(xN'||yN');

然后计算协商密钥:

KA=F192(HA);KB=F192(HB);...;KN=F192(HN);F192表示选取256位哈希值的前192位;

由S13步骤已知各椭圆曲线点坐标值相同,因此各设备获得相同的系统私钥值d∑=KA=KB=...=KN;

d∑为192位,对d∑进行十六进制数表示:A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17A18A1

9A20A21A22A23A24A25A26A27A28A29A30A31A32A33A34A35A36A37A38A39A40A41A42A43A44A45A46A47,每个Ai表示

4位;另外可表示d∑=dSM4||dodd‑even,dSM4为密钥扩展算法使用的原始密钥,由A0~A31组成,dodd‑even为S盒置换机制中奇偶判定依据,由A32~A47组成;

S2、密钥更新

当有新设备接入并认证成功后,或经过设定周期T后,各设备建立第二线程并依据S1各

2 3

步骤对密钥进行更新,密钥更新前需依据已协商的密钥对椭圆曲线方程y =x+ax+b的a和b2

参数进行更新,使a=A46,b=A47,并重新选择椭圆曲线的基点G,使其横坐标xG=HA,然后根据y3

=x+A46x+A47计算纵坐标yG,最终G=(xG,yG)。

2.根据权利要求1所述的一种工业无线通信安全方法,所述密钥扩展方法,其特征在于,包括以下步骤:

S3、数据的预处理和输入:

原始密钥dSM4被拆分为:

MK0(32位):A0A1A2A3A4A5A6A7;

MK1(32位):A8A9A10A11A12A13A14A15;

MK2(32位):A16A17A18A19A20A21A22A23;

MK3(32位):A24A25A26A27A28A29A30A31;

MK0、MK1、MK2、MK3分别与动态参数FK进行异或运算后进入轮函数F';

设置动态参数FK,以dSM4的反向数值作为FK的设置依据:FK0:A31A30A29A28A27A26A25A24;

FK1:A23A22A21A20A19A18A17A16;

FK2:A15A14A13A12A11A10A9A8;

FK3:A7A6A5A4A3A2A1A0;

设置动态参数CKi:在轮函数F'中根据轮次数i设定动态参数CKi,当i=0时,使CK0=FK1,当i≠0时,引入轮函数F'中间变量CKi=M';

S4、轮函数F'运算:

S41、构造S盒置换机制τ:

SM4算法中标准的S盒符号为S1;基于混沌算法生成的S盒符号为S2; S2经过行列置换后的S盒符号为S2';τ用于S盒的选择、评估和置换,每次进行密钥更新后需重设该机制,具体方法为:对A32~A47进行求和,结果为奇数则使用S1盒对32位数据M进行置换;结果为偶数则对S2盒进行行列置换形成S2'盒,其中A0~A15用于S2盒的列变换,依次交换A0A1列、A2A3列... A14A15列,A16~A31用于S2盒的行变换,依次交换A16A17行、A18A19行... A30A31行,构造S2'盒完成后计算其适应度函数,通过权衡其非线性度Ns、差分均匀度δs、雪崩度Bs构造函数f(s)=asfs(Ns)+adfd(δs)+aBfB(Bs),这里定义fs(Ns)=Ns,fd(δs)=δs,fB(Bs)=Bs,as、ad、aB表示加权系数,f(s)越大则S盒综合性能越优良,适应度函数完整形式如下:f(s)=

所有设备约定相同的适应度阈值fTTZ,当f(s)≥fTTZ时则对32位数据M进行S2'盒的置换,若f(s)<fTTZ时则对32位数据M进行原始S2盒的置换;

S42、轮密钥输出:

计算输出值:Ki+4= Ki⊕T'(M)=Ki⊕T'(Ki+1⊕Ki+2⊕Ki+3⊕CKi),i=0,1,......,31;

其中T'为密钥扩展算法的合成置换操作;

T'(Ki+1⊕Ki+2⊕Ki+3⊕CKi)=L'(τ(Ki+1⊕Ki+2⊕Ki+3⊕CKi));

其中L'()操作为线性变换,其计算公式为:L'(B)= B⊕(B<<<13)⊕(B<<<23)。

3.根据权利要求1所述的一种工业无线通信安全方法,所述加解密方法,其特征在于,包括以下步骤:

S5、输入明文的预处理:

每次输入128bit明文,可拆分为X0,X1,X2,X3;

计算输入进S盒置换机制τ的数据:

M=Xi+1⊕Xi+2⊕Xi+3⊕rki=Xi+1⊕Xi+2⊕Xi+3⊕Ki+4S6、轮函数F运算:

S61、构造S盒置换机制τ:

τ用于S盒的选择、评估和置换,直接借用S41步骤生成的S盒置换机制τ;

S62、生成密文:

Xi+4=Xi⊕T(M)= Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕Ki+4),i=0,1,......,31;

其中T为加密算法的合成置换操作;

T(Xi+1⊕Xi+2⊕Xi+3⊕Ki+4) =L(τ(Xi+1⊕Xi+2⊕Xi+3⊕Ki+4));

其中L()操作为线性变换,其计算公式为:L(B)=(B<<<2)⊕(B<<<10)⊕B⊕(B<<<18)⊕(B<<<24);

反序变换:在轮函数F中进行32次迭代后最终获得X32, X33, X34, X35共计128bit数据,使用反序变换最终得到128bit密文C=X35||X34||X33||X32;

S7、解密方法:

本算法的解密变换与加密变换相同,不同的仅是轮密钥的使用顺序,解密时,使用轮密钥序(rk31,rk30,..., rk0)。

说明书 :

一种工业无线通信安全方法

技术领域

[0001] 本发明涉及工业信息安全领域,具体而言,涉及一种工业无线通信的方法。

背景技术

[0002] 随着以5G为代表的移动通信技术在工业互联网中的推广,工业生产逐步摆脱线束和空间制约,网络节点信息化、智能化和实时性不断提高,然而无线通信的开放性和扩散性所带来的安全漏洞却与日俱增,为提高安全级别,部分工业产品集成了AES和DES等加密算
法,但该算法本身就存在安全漏洞,且无法实现自主可控。
[0003] SM4算法是我国发布的商用密码算法中的分组密码算法,具有安全性强、效率高和易于硬件实现等优势,该算法的设计意图就是为了满足无线局域网产品的安全需求,其快
速分组方案和对称加解密形式较好地满足了工业移动通信实时性要求。实际应用中SM4算
法所使用的对称密钥有两种获取方式,第一种由服务端统一发放,服务端的“中心化”管理方式使资源过度集中,密钥下发一旦泄密整个系统就会被攻破,第二种由双向通信设备基
于SM2算法密钥交换协议部分进行协商,该部分在国家标准中仅定义了两个设备的通信情
况,且计算过程大量使用中间变量,不能完全满足工业设备硬件资源和计算资源有限的情
况。除此之外,在加解密方面,SM4算法的S盒作为核心部件,其主要作用是让明文混乱,该S盒是固定且公开的,其轮函数机制中系统参数CK和FK也是固定且公开的,不利于防范跟踪
攻击。

发明内容

[0004] 鉴于此,本发明综合考虑工业无线通信应用场景需求,在尽量节省计算损耗的同时提升密码技术的成熟度和自主可控水平,杜绝跟踪攻击和中间人攻击等安全隐患,提出
了一种工业无线通信安全方法,包括多设备密钥协商及更新方法、密钥扩展方法和加解密
方法;该发明采用精简、高安全且自同步更新的椭圆曲线方案,实现了“去中心化”的多设备密钥协商机制,同时在加解密过程中,无第三方干预的情况下实现S盒和动态参数的自同步调整,极大增加了系统破解难度。
[0005] 所述密钥协商及更新方法,其特征在于,包括以下步骤:
[0006] S1、密钥协商
[0007] 可信设备A、B、C...N接入网络之后,进行基于椭圆曲线方程y2=x3+ax+b的密钥协商,a、b为其系数,G为双方约定的基于该椭圆曲线的某个基点,n为基点G的阶,每次更新密钥时对a、b和G进行动态调整,具体如下:
[0008] S11、各设备使用自带的随机数发生器产生随机数ri∈[1,n‑1];基于ri计算椭圆曲线点Ri=[ri]G=(xi,yi);生成私钥di,私钥存储于可信区域内,严格保密且无法传输;基于私钥di生成公钥Pi=[di]G;上述步骤中i∈[A,N];
[0009] S12、各设备向网络中发布非密数据:Ri、Pi;
[0010] S13、设备i获取其他设备的非密数据并计算椭圆曲线点:
[0011] Ei=[ti](PA+RA)... (Pi‑1+Ri‑1) (Pi+1+Ri+1)... (PN+RN)=(xi',yi'),其中ti=di+ri;
[0012] 因此对于设备A:EA=[tA](PB+RB)(PC+RC)...(PN+RN)=(xA',yA'),其中tA=dA+rA;
[0013] 对于设备B:EB=[tB](PA+RA)(PC+RC)...(PN+RN)=(xB',yB'),其中tB=dB+rB;
[0014] 依次类推可得到所有设备的椭圆曲线点;
[0015] 各椭圆曲线点的坐标值相同,即xA'=xB'=...=xN',yA'=yB'=...=yN';
[0016] S14、各设备计算协商密钥
[0017] 首先各设备基于SM3算法计算256位哈希值:
[0018] HA=H256(xA'||yA');HB=H256(xB'||yB');...;HN=H256(xN'||yN');
[0019] 然后计算协商密钥:
[0020] KA=F192(HA);KB=F192(HB);...;KN=F192(HN);F192表示选取256位哈希值的前192位;
[0021] 由S13步骤已知各椭圆曲线点坐标值相同,因此各设备获得相同的系统私钥值d∑=KA=KB=...=KN;
[0022] d∑为192位,对d∑进行十六进制数表示:A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19A20A21A22A23A24A25A26A27A28A29A30A31A32A33A34A35A36A37A38A39A40A41A42A43A44A45A46A47,每个Ai表示4位。另外可表示d∑=dSM4||dodd‑even,dSM4为密钥扩展算法使用的原始密钥,由A0~A31组成,dodd‑even为S盒置换机制中奇偶判定依据,由A32~A47组成;
[0023] S2、密钥更新
[0024] 当有新设备接入并认证成功后,或经过设定周期T后,各设备建立第二线程并依据2 3
S1各步骤对密钥进行更新,密钥更新前需依据已协商的密钥对椭圆曲线方程y=x+ax+b的a
和b参数进行更新,使a=A46,b=A47,并重新选择椭圆曲线的基点G,使其横坐标xG=HA,然后根
2 3
据y=x+A46x+A47计算纵坐标yG,最终G=(xG,yG)。
[0025] 密钥扩展方法,其特征在于,包括以下步骤:
[0026] S3、数据的预处理和输入:
[0027] 原始密钥dSM4被拆分为:
[0028] MK0(32位):A0A1A2A3A4A5A6A7;
[0029] MK1(32位):A8A9A10A11A12A13A14A15;
[0030] MK2(32位):A16A17A18A19A20A21A22A23;
[0031] MK3(32位):A24A25A26A27A28A29A30A31;
[0032] MK0、MK1、MK2、MK3分别与动态参数FK进行异或运算后进入轮函数F';
[0033] 设置动态参数FK,以dSM4的反向数值作为FK的设置依据:
[0034] FK0:A31A30A29A28A27A26A25A24;
[0035] FK1:A23A22A21A20A19A18A17A16;
[0036] FK2:A15A14A13A12A11A10A9A8;
[0037] FK3:A7A6A5A4A3A2A1A0;
[0038] 设置动态参数CKi:在轮函数F'中根据轮次数i设定动态参数CKi,当i=0时,使CK0=FK1,当i≠0时,引入轮函数F'中间变量CKi=M';
[0039] S4、轮函数F'运算:
[0040] S41、构造S盒置换机制τ:
[0041] SM4算法中标准的S盒符号为S1;基于混沌算法生成的S盒符号为S2;S2经过行列置换后的S盒符号为S2';τ用于S盒的选择、评估和置换,每次进行密钥更新后需重设该机制,具体方法为:
[0042] 对A32~A47进行求和,结果为奇数则使用S1盒对32位数据M进行置换;结果为偶数则对S2盒进行行列置换形成S2'盒,其中A0~A15用于S2盒的列变换,依次交换A0A1列、A2A3列... A14A15列,A16~A31用于S2盒的行变换,依次交换A16A17行、A18A19行... A30A31行,构造S2'盒完成后计算其适应度函数,通过权衡其非线性度Ns、差分均匀度δs、雪崩度Bs构造函数f(s)=asfs(Ns)+adfd(δs)+aBfB(Bs),这里定义fs(Ns)=Ns,fd(δs)=δs,fB(Bs)=Bs,as、ad、aB表示加权系数,f(s)越大则S盒综合性能越优良,适应度函数完整形式如下:
[0043] f(s)=
[0044] 所有设备约定相同的适应度阈值fTTZ,当f(s)≥fTTZ时则对32位数据M进行S2'盒的置换,若f(s)<fTTZ时则对32位数据M进行原始S2盒的置换;
[0045] S42、轮密钥输出:
[0046] 计算输出值:Ki+4= Ki⊕T'(M)=Ki⊕T'(Ki+1⊕Ki+2⊕Ki+3⊕CKi),i=0,1,......,31;
[0047] 其中T'为密钥扩展算法的合成置换操作;
[0048] T'(Ki+1⊕Ki+2⊕Ki+3⊕CKi)=L'(τ(Ki+1⊕Ki+2⊕Ki+3⊕CKi));
[0049] 其中L'()操作为线性变换,其计算公式为:
[0050] L'(B)= B⊕(B<<<13)⊕(B<<<23)。
[0051] 加解密方法,其特征在于,包括以下步骤:
[0052] S5、输入明文的预处理:
[0053] 每次输入128bit明文,可拆分为X0,X1,X2,X3;
[0054] 计算输入进S盒置换机制τ的数据:
[0055] M=Xi+1⊕Xi+2⊕Xi+3⊕rki=Xi+1⊕Xi+2⊕Xi+3⊕Ki+4
[0056] S6、轮函数F运算:
[0057] S61、构造S盒置换机制τ:
[0058] τ用于S盒的选择、评估和置换,直接借用S41步骤生成的S盒置换机制τ;
[0059] S62、生成密文:
[0060] Xi+4=Xi⊕T(M)= Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕Ki+4),i=0,1,......,31;
[0061] 其中T为加密算法的合成置换操作;
[0062] T(Xi+1⊕Xi+2⊕Xi+3⊕Ki+4) =L(τ(Xi+1⊕Xi+2⊕Xi+3⊕Ki+4));
[0063] 其中L()操作为线性变换,其计算公式为:
[0064] L(B)=(B<<<2)⊕(B<<<10)⊕B⊕(B<<<18)⊕(B<<<24);
[0065] 反序变换:在轮函数F中进行32次迭代后最终获得X32, X33, X34, X35共计128bit数据,使用反序变化最终得到128bit密文C=X35||X34||X33||X32;
[0066] S7、解密方法:
[0067] 本算法的解密变换与加密变换相同,不同的仅是轮密钥的使用顺序,解密时,使用轮密钥序(rk31,rk30,..., rk0)。
[0068] 本发明的优点及有益效果:实现了多设备密钥协商的去中心化,降低了服务端下发对称密钥出现泄密而造成系统被攻破的风险;针对工业设备数量巨大但是硬件资源有限
的问题,采用精简的椭圆曲线算法以降低其计算损耗,协商流程只需一次通信和计算即可
完成所有设备的密钥协商,提高了效率和实时性;为了兼顾安全性,各设备在无第三方干预情况下自同步完成椭圆曲线和基点更新,其协商密钥与前一周期密钥差别巨大而无法预
测;加解密方面,各设备基于协商密钥周期性同步更新S盒,S盒的选择和行列置换均无法预期,通过多重置乱提升了S盒的非线性度和分析难度;密钥扩展过程使用动态参数参与置
乱,无需额外消耗计算资源却能极大提高系统的复杂度;密钥更新和S盒机制更新在主线程之外开辟第二线程实现,同时,密钥扩展和加解密过程使用相同的S盒置换机制,减少了计算损耗。

附图说明

[0069] 图1为设备密钥协商框架图;
[0070] 图2为标准SM4算法的S1盒;
[0071] 图3为基于混沌算法生成的S2盒;
[0072] 图4为进行行列置换后的S2'盒;
[0073] 图5 为密钥扩展算法架构图;
[0074] 图6 为加密算法架构图。

具体实施方式

[0075] 下面根据附图举例对本发明做进一步解释:
[0076] 本发明实施例提供了一种工业无线通信安全方法,包括多设备密钥协商及更新方法、密钥扩展方法和加解密方法。多设备密钥协商及更新方法实现了网络内所有可信设备
密钥同步生成和更新的去中心化,密钥扩展方法和加解密方法实现了基于协商密钥的S盒
同步更新和多重置乱,提高了系统的非线性度和分析难度。
[0077] 一、密钥协商及更新方法
[0078] S1、密钥协商
[0079] 可信设备A、B、C...N接入网络之后,如图1所示进行基于椭圆曲线方程y2=x3+ax+b的密钥协商,a、b为其系数,G为双方约定的基于该椭圆曲线的某个基点,n为基点G的阶,每次更新密钥时对a、b和G进行动态调整,具体步骤如下:
[0080] S11、各设备使用自带的随机数发生器产生随机数ri∈[1,n‑1];基于ri计算椭圆曲线点Ri=[ri]G=(xi,yi);生成私钥di,私钥存储于可信区域内,严格保密且无法传输;基于私钥di生成公钥Pi=[di]G;上述步骤中i∈[A,N];
[0081] S12、各设备向网络中发布非密数据:Ri、Pi;
[0082] S13、设备i获取其他设备的非密数据并计算椭圆曲线点:
[0083] Ei=[ti](PA+RA)... (Pi‑1+Ri‑1) (Pi+1+Ri+1)... (PN+RN)=(xi',yi'),其中ti=di+ri;
[0084] 因此对于设备A:EA=[tA](PB+RB)(PC+RC)...(PN+RN)=(xA',yA'),其中tA=dA+rA;
[0085] 对于设备B:EB=[tB](PA+RA)(PC+RC)...(PN+RN)=(xB',yB'),其中tB=dB+rB;
[0086] 依次类推可得到所有设备的椭圆曲线点;
[0087] 对于设备B:
[0088] EB=[tB](PA+RA)(PC+RC)...(PN+RN)=[dB+rB](PA+RA)(PC+RC)...(PN+RN)=[dB+rB]([dA]G+[rA]G)(PC+RC)...(PN+RN)=[dB+rB][dA+rA]G(PC+RC)...(PN+RN)=[dA+rA][dB+rB]G(PC+RC)...(PN+RN)=[tA](PB+RB) (PC+RC)...(PN+RN)=EA;
[0089] 很明显EA=EB,依次类推所有设备的椭圆曲线点均相同,即EA=EB=EC=...=EN,所以各椭圆曲线点的坐标值相同,即xA'=xB'=...=xN',yA'=yB'=...=yN';
[0090] S14、各设备计算协商密钥
[0091] 首先各设备基于SM3算法计算256位哈希值:
[0092] HA=H256(xA'||yA');HB=H256(xB'||yB');...;HN=H256(xN'||yN');
[0093] 然后计算协商密钥:
[0094] KA=F192(HA);KB=F192(HB);...;KN=F192(HN);F192表示选取256位哈希值的前192位;
[0095] 由S13步骤已知各椭圆曲线点坐标值相同,因此各设备获得相同的系统私钥值d∑=KA=KB=...=KN;
[0096] d∑为192位,对d∑进行十六进制数表示:A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15A16A17A18A19A20A21A22A23A24A25A26A27A28A29A30A31A32A33A34A35A36A37A38A39A40A41A42A43A44A45A46A47,每个Ai表示4位。另外可表示d∑=dSM4||dodd‑even,dSM4为密钥扩展算法使用的原始密钥,由A0~A31组成,dodd‑even为S盒置换机制中奇偶判定依据,由A32~A47组成。
[0097] S2、密钥更新
[0098] 当有新设备接入并认证成功后,或经过设定周期T后,各设备建立第二线程并依据2 3
S1各步骤对密钥进行更新,密钥更新前需依据已协商的密钥对椭圆曲线方程y=x+ax+b的a
和b参数进行更新,使a=A46,b=A47,并重新选择椭圆曲线的基点G,使其横坐标xG=HA,然后根
2 3
据y=x+A46x+A47计算纵坐标yG,最终G=(xG,yG)。
[0099] 二、密钥扩展方法
[0100] 密钥扩展算法架构如图5所示,其中,S1如图2所示,为SM4算法中标准的S盒;S2如图3所示,为基于混沌算法生成的S盒;S2'为S2经过行列置换后的S盒。
[0101] S3、数据的预处理和输入:
[0102] 原始密钥dSM4被拆分为:
[0103] MK0(32位):A0A1A2A3A4A5A6A7;
[0104] MK1(32位):A8A9A10A11A12A13A14A15;
[0105] MK2(32位):A16A17A18A19A20A21A22A23;
[0106] MK3(32位):A24A25A26A27A28A29A30A31;
[0107] MK0、MK1、MK2、MK3分别与动态参数FK进行异或运算后进入轮函数F';
[0108] 设置动态参数FK,以dSM4的反向数值作为FK的设置依据:
[0109] FK0:A31A30A29A28A27A26A25A24;
[0110] FK1:A23A22A21A20A19A18A17A16;
[0111] FK2:A15A14A13A12A11A10A9A8;
[0112] FK3:A7A6A5A4A3A2A1A0;
[0113] 设置动态参数CKi:在轮函数F'中根据轮次数i设定动态参数CKi,当i=0时,使CK0=FK1,当i≠0时,引入轮函数F'中间变量CKi=M';
[0114] S4、轮函数F'运算:
[0115] S41、构造S盒置换机制τ:
[0116] 图5中方框τ用于S盒的选择、评估和置换,每次进行密钥更新后需重设该机制,具体方法为:
[0117] 对A32~A47进行求和,结果为奇数则使用S1盒对32位数据M进行置换;结果为偶数则对S2盒进行行列置换形成S2'盒,其中A0~A15用于S2盒的列变换,依次交换A0A1列、A2A3列...A14A15列,A16~A31用于S2盒的行变换,依次交换A16A17行、A18A19行... A30A31行,构造S2'盒完成后计算其适应度函数,通过权衡其非线性度Ns、差分均匀度δs、雪崩度Bs构造函数f(s)=asfs(Ns)+adfd(δs)+aBfB(Bs),这里定义fs(Ns)=Ns,fd(δs)=δs,fB(Bs)=Bs,as、ad、aB表示加权系数,f(s)越大则S盒综合性能越优良,适应度函数完整形式如下:
[0118] f(s)= 
[0119] 所有设备约定相同的适应度阈值fTTZ,当f(s)≥fTTZ时则对32位数据M进行S2'盒的置换,若f(s)<fTTZ时则对32位数据M进行原始S2盒的置换。
[0120] S42、轮密钥输出:
[0121] 计算输出值:Ki+4= Ki⊕T'(M)=Ki⊕T'(Ki+1⊕Ki+2⊕Ki+3⊕CKi),i=0,1,......,31;
[0122] 其中T'为密钥扩展算法的合成置换操作;
[0123] T'(Ki+1⊕Ki+2⊕Ki+3⊕CKi)=L'(τ(Ki+1⊕Ki+2⊕Ki+3⊕CKi));
[0124] 其中L'()操作为线性变换,其计算公式为:
[0125] L'(B)= B⊕(B<<<13)⊕(B<<<23)。
[0126] 示例1:
[0127] 通过一个例子来论述密钥扩展方法,若经过密钥协商过程后N个设备约定系统私钥为:
[0128] d∑=01234567,89ABCDEF,FEDCBA98,76543210,01234567,89ABCDEF;
[0129] 则dSM4=01234567,89ABCDEF,FEDCBA98,76543210;
[0130] dodd‑even =01234567,89ABCDEF;
[0131] 根据S3步骤获得:FK0=01234567,FK1=89ABCDEF,FK2= FEDCBA98,FK0=76543210;
[0132] 当i=0时,即第0轮迭代,动态参数CK0= FK1=89ABCDEF;K0=MK0⊕FK0=01234567⊕01234567=00000000,同理可得:K1=00000000,K2=00000000,K3=00000000;
[0133] 则M=K1⊕K2⊕K3⊕CK0=89ABCDEF;
[0134] 对dodd‑even进行求和为0x78(十六进制),该结果为偶数,则对S2进行置换操作,列置换依据为dSM4的01234567,89ABCDEF,即对0列和1列进行置换,对2列和3列进行置换,依次类推,最后完成E列和F列的置换;行置换依据为dSM4的FEDCBA98,76543210,对F行和E行进行置换,对D行和C行进行置换,依次类推,最后完成1行和0行的置换,行列置换完成后获得的S2'如图4所示,计算该S2'的适应度函数f(s),若f(s)≥fTTZ则对89ABCDEF进行基于S2'的S盒置换:
[0135] τ(M)=τ(K1⊕K2⊕K3⊕CK0)=τ(89ABCDEF)=22055772;
[0136] 所以L'(τ(M))=L'(22055772)=(22055772)⊕(22055772<<<13)⊕(22055772<<<23)=(22055772)⊕(AAEE4440)⊕(B91102AB)= 31FA1199,M'=31FA1199作为下一轮运算的
CK1使用;
[0137] K4=K0⊕T'(M)=K0⊕L'(τ(M))=(00000000)⊕(31FA1199)= 31FA1199;
[0138] 故经过第0轮迭代输出K4的结果是31FA1199,依据该过程在轮函数F'中进行32次迭代后输出K4~K35共32个数值作为加密算法的轮密钥。
[0139] 三、加解密方法
[0140] 加密算法架构如图6所示,其中,S1、S2、S2'和“二、密钥扩展方法”中的S盒相同。
[0141] S5、输入明文的预处理:
[0142] 每次输入128bit明文,可拆分为X0,X1,X2,X3;
[0143] 计算输入进S盒置换机制τ的数据:
[0144] M=Xi+1⊕Xi+2⊕Xi+3⊕rki=Xi+1⊕Xi+2⊕Xi+3⊕Ki+4
[0145] S6、轮函数F运算:
[0146] S61、构造S盒置换机制τ:
[0147] 图6中方框τ用于S盒的选择、评估和置换,直接借用S41步骤生成的S盒置换机制τ;
[0148] S62、生成密文:
[0149] Xi+4=Xi⊕T(M)= Xi⊕T(Xi+1⊕Xi+2⊕Xi+3⊕Ki+4),i=0,1,......,31;
[0150] 其中T为加密算法的合成置换操作;
[0151] T(Xi+1⊕Xi+2⊕Xi+3⊕Ki+4)=L(τ(Xi+1⊕Xi+2⊕Xi+3⊕Ki+4));
[0152] 其中L()操作为线性变换,其计算公式为:
[0153] L(B)=(B<<<2)⊕(B<<<10)⊕B⊕(B<<<18)⊕(B<<<24);
[0154] 反序变换:在轮函数F中进行32次迭代后最终获得X32, X33, X34, X35共计128bit数据,使用反序变化最终得到128bit密文C=X35||X34||X33||X32;
[0155] S7、解密方法:
[0156] 本算法的解密变换与加密变换相同,不同的仅是轮密钥的使用顺序,解密时,使用轮密钥序(rk31,rk30,..., rk0)。
[0157] 示例2:
[0158] 通过一个例子来论述加密方法:
[0159] 若输入的明文为128bit数据:01234567,89ABCDEF,FEDCBA98,76543210;
[0160] 则X0=01234567,X1=89ABCDEF,X2=FEDCBA98,X3=76543210;
[0161] 当i=0时,即第0轮迭代:
[0162] M=X1⊕X2⊕X3⊕K4,其中K4来自于S4步骤中的“示例1”结果,为31FA1199;
[0163] 故M =(89ABCDEF)⊕(FEDCBA98)⊕(76543210)⊕(31FA1199)=30D954FE;
[0164] 根据“示例1”中S盒的判定,应选用S2'对数据M进行置换:
[0165] τ(X1⊕X2⊕X3⊕K4)=τ(30D954FE)=81135F35;
[0166] 所以T(M)=L(τ(M))=L(81135F35)=(81135F35<<<2) ⊕(81135F35<<<10) ⊕(81135F35) ⊕(81135F35<<<18) ⊕(81135F35<<<24) =(044D7CD6)⊕(4D7CD604) ⊕
(81135F35)⊕(7CD6044D)⊕(3581135F)= 8175E2F5;
[0167] 所以X4=X0⊕T(M)=(01234567)⊕(8175E2F5)= 8056A792;
[0168] 故经过第0轮迭代输出X4为8056A792,依据该过程在轮函数F中进行32次迭代后获得X32, X33, X34, X35,然后获得反序密文C= X35||X34||X33||X32。