浅析国家商用密码标准算法

本文深入探讨了中国商用密码标准,重点解析了SM4分组加密算法、SM3杂凑算法和SM2椭圆曲线公钥算法的原理与操作流程。SM4具有对合运算特性,安全基于密钥,适用于替代DES等国际算法。SM3是一种256位的哈希函数,消息填充与MD5类似。SM2则是基于椭圆曲线的公钥算法,提供加密与签名功能,相比RSA具有更高的安全性和效率。
摘要由CSDN通过智能技术生成

浅析国家商用密码标准算法

中国商用密码概况

概况

国产商密算法是我国自主研发、具有自主知识产权的一系列密码算法,具有较高安全性,由国家密码局公开并大力推广。我国公开的国产商用密码算法包括SM1、SM2、SM3、SM4、SM7、SM9及祖冲之算法,其中SM2、SM3、SM4最为常用,用于对应替代RSA、DES、3DES、SHA等国际通用密码算法体系。

历史

我国在密码理论与分析上一直具有优势,但是长期依赖不公开密码算法,只提供密码芯片。密码芯片由少数专家设计,难于标准化,应用成本高,不利于推广应用。因此近年来陆续公布了商用密码算法,2006年公布了分组密码算法SM4,2011年公布了椭圆曲线密码算法SM2和杂凑算法SM3。商用密码的管理更加科学化,也和国际接轨。

原则

我国在商用密码的设计上,遵循了坚持密码的公开设计原则,也就是说,密码的安全应仅依赖于密钥的保密,不依赖与算法的保密。对于商用密码,美国DES开创了公开算法的先例。

SM4分组加密算法

概况

  1. 分组密码,数据分组(包括明文、密文)和密钥长度都为128位;
  2. 对合运算,加解密算法相同;
  3. 滑动窗口结构,明文与密钥在滑动窗口控制下,通过基本轮函数运算,然后进行迭代,生成密文。

运算方式与部件

  1. 基本运算方式

    • 模2加,用符号⊕表示,意为32比特异或运算;
    • 循环移位,符号<<<i,表示32位字循环左移i位;
  2. 基本密码部件

    • 非线性字节变换部件S盒,进行8位的非线性置换,输入前半字节为行号,后半字节为列号,输出值参考S盒变换表行与列交叉点的值;
    • 非线性字变换τ,进行32位字的非线性变换,方式是4个S盒并行置换;
    • 线性L变换部件,32位输入,32位输出,设输入为B,输出为C,表示为C=L(B),运算规则为 C = L ( B ) = B ⊕ ( B < < < 2 ) ⊕ ( B < < < 10 ) ⊕ ( B < < < 18 ) ⊕ ( B < < < 24 ) C=L(B)=B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24) C=L(B)=B(B<<<2)(B<<<10)(B<<<18)(B<<<24);
    • 字合成变换T,由非线性字变换τ和线性L变换符合而成,T(X)=L(τ(X)),先进行S盒变换,后进行L变换;

轮函数F

  1. 输入128位数据 ( X 0 , X 1 , X 2 , X 3 ) (X_0,X_1,X_2,X_3) (X0,X1,X2,X3),4个32位字;

  2. 输入32位字轮密钥rk,输出32位字,轮密钥由加密密钥通过密钥扩展算法生成;

  3. 轮函数 F ( X 0 , X 1 , X 2 , X 3 , r k ) = X 0 ⊕ T ( X 1 ⊕ X 2 ⊕ X 3 ⊕ r k ) F(X_0,X_1,X_2,X_3,rk)=X_0⊕T(X_1⊕X_2⊕X_3⊕rk) F(X0,X1,X2,X3,rk)=X0T(X1X2X3rk),如图所示
    在这里插入图片描述

密钥扩展算法

  1. 使用常数FK, F K 0 = A 3 B 1 B A C 6 , F K 1 = 56 A A 3350 , F K 2 = 677 D 9197 , F K 3 = B 27022 D C FK_0=A3B1BAC6, FK_1=56AA3350, FK_2=677D9197, FK_3=B27022DC FK0=A3B1BAC6,FK1=56AA3350,FK2=677D9197,FK3=B27022DC;

  2. 32个固定参数CK, C K i j = ( 4 i + j ) ∗ 7 ( m o d 256 ) , i = 0 , 1 , 2 , 3 , . . . 31 , j = 0 , 1 , 2 , 3 CK_{ij}=(4i+j)*7(mod 256),i=0,1,2,3,...31,j=0,1,2,3 CKij=(4i+j)7(mod256)i=0,1,2,3,...31j=0,1,2,3;

  3. 输入加密秘钥MK, M K = ( M K 0 , M K 1 , M K 2 , M K 3 ) MK=(MK_0,MK_1,MK_2,MK_3) MK=(MK0,MK1,MK2,MK3)

  4. 中间数据Ki,i=0,1,…,34,35, ( K 0 , K 1 , K 2 , K 3 ) = ( M K 0 ⊕ F K 0 , M K 1 ⊕ F K 1 , M K 2 ⊕ F K 2 , M K 3 ⊕ F K 3 ) (K_0,K_1,K_2,K_3)=(MK_0⊕FK_0, MK_1⊕FK_1, MK_2⊕FK_2, MK_3⊕FK_3) (K0,K1,K2,K3)=(MK0FK0,MK1FK1,MK2FK2,MK3FK3)

  5. For i=0,1,2…,31 Do
    r k i = K i + 4 = K i ⊕ T ′ ( K i + 1 ⊕ K i + 2

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值