2017-2018-2 20179225 《网络攻防与实践》 第13周作业 国密算法

SM2/SM3/SM4算法解析
本文详细介绍了SM2公钥算法及其在商用密码体系中的应用,包括签名、密钥交换及加密等核心功能,并对比了其与ECC算法的优势。同时,文章还阐述了SM3杂凑算法的具体工作流程,以及SM4对称加密算法的设计原则和技术特点。

SM2 原理

1 SM2算法和RSA算法有什么关系?
SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。
1249774-20180606171615173-593999814.png
2 ECC加密流程
1249774-20180606232146399-401429569.png

3 ECC算法原理
1249774-20180606233318211-656242210.png

3 SM2加密算法

发送方用户 A 使用接收方用户 B 的公钥BP 以及必要入参,可以把长为klen 比特的消息明文M 做公钥运算处理后传递给接收方用户 B。
加密流程如下:
1249774-20180606184917641-1152293059.png

1249774-20180606185049692-550387516.png

4 解密算法

1249774-20180606185313191-1415576966.png
1249774-20180606185417311-1328317737.png
1249774-20180606185439270-1092464729.png

5 SM2算法在以下四个方面优于ECC算法
1249774-20180606232936072-644091343.png

6 SM2算法可以进行的密码应用
SM2算法做为公钥算法,可以完成签名、密钥交换以及加密应用。SM2算法标准确定了标准过程:
1、签名、验签计算过程;
2、加密、解密计算过程;
3、密钥协商计算过程。
需要说明,其他国家的标准和SM2确定的计算过程存在差异,也就是说相互之间是不兼容的。

python代码测试结果图

1249774-20180607131450346-830433798.png

https://www.cnblogs.com/smy87/p/7919208.html

SM3 原理

杂凑函数可以按其是否有密钥参与运算分为两大类不带密钥的杂凑函数和带密铜的杂凑函数。
1 杂凑算法中的常量与函数
1249774-20180607134412759-541885024.png

2 算法描述
对长度为l(l< 2^64) 比特的消息m,SM3杂凑算法经过填充和迭代压缩,生成杂凑值,杂凑值长度为256比特。
假设消息m 的长度为l 比特。首先将比特"1"添加到消息的末尾,再添加k 个"0",k是满足l + 1 + k 448mod512 的最小的非负整数。然后再添加一个64位比特串,该比特串是长度l的二进制表示。
填充后的消息m′ 的比特长度为512的倍数。

python代码测试结果图

1249774-20180607140304842-1223867948.png

SM4原理

SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。
SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。
SM4 密码算法结构
1249774-20180607151652445-94399604.png

SM4 密码算法基本运算有两部分:
1.模2加:⊕,32比特异或运算
2.循环移位: <<< i ,把32位字循环左移i位
基本密码部件为

1非线性字节变换S盒(起混淆作用)
1249774-20180607151837713-1020756200.png

S盒的置换规则:
输入的高半字节为行号,低半字节为列号,行列交叉点处的数据即为输出。设输入为 “5F”,则行号为5,列号为F,于是S盒的输出值为表中第5行和第F列交叉点的值。

2 非线性字变换 τ:起混淆作用,具体为4个S盒并行置换,设输入字 A=(a0,a1,a2,a3),输出字B=(b0,b1,b2,b3),B = τ(A)=(S_box(a0), S_box(a1), S_box(a2), S_box(a3)
对于32位字,变换过程如下图:
1249774-20180607152132089-674747248.png

3 字线性部件 L变换: 起扩散作用
32位输入,32位输出。
设输入为 B,输出为C运算规则:
C=L(B)=B⊕(B<<<2)⊕((B<<<10)⊕(B<<<18) ⊕(B<<<24)
4 字合成变换 T:
由非线性变换 τ 和线性变换 L复合而成;
T(X) =L(τ(X))。(先S后L)

SM4测试结果

1249774-20180607154516012-54263508.png

转载于:https://www.cnblogs.com/2017yaya/p/9146838.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值