云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 密码学SM2,SM3,SM4加密标准

密码学SM2,SM3,SM4加密标准

  • 62 次阅读
  • 3 次下载
  • 2025/5/6 3:12:17

课外实践五 SM2、SM3及SM4加密标准

一、概述

1. SM2椭圆曲线公钥密码算法加密标准

SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。

椭圆曲线算法公钥密码所基于的曲线性质:椭圆曲线多倍点运算构成一个单向函数。在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法。与大数分解问题及有限域上离散对数问题相比,椭圆曲线离散对数问题的求解难度要大得多。因此,在相同安全程度要求下,椭圆曲线密码较其他公钥密码所需的秘钥规模要小得多。 2. SM3哈希算法加密标准

SM3是一种密码散列函数标准。密码散列函数是散列函数的一种。它被认为是一种单向函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么。这种散列函数的输入数据,通常被称为消息,而它的输出结果,经常被称为消息摘要。

SM3适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。

一个理想的密码散列函数应该有这些特性:对于任何一个给定的消息,

它都很容易就能运算出散列数值;难以由一个已知的散列数值,去推算出原始的消息;在不更动散列数值的前提下,修改消息内容是不可行的;对于两个不同的消息,它不能给与相同的散列数值。 3. SM4分组密码算法加密标准

SM4算法是一个分组对称密钥算法,明文、密钥、密文都是16字节,加密和解密密钥相同。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密过程与加密过程的结构相似,只是轮密钥的使用顺序相反。

SM4用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。

二、SM2加密标准

1. SM2基本原理 1) 基础参数

SM2的曲线方程为y2 = x3 + ax + b,其中: ? a:

0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC ? b:

0x28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93 ? c:

0xFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF ? 私钥长度:32字节

? 公钥长度:SM2非压缩公钥格式字节串长度为65字节,压缩格式长度

为33字节,若公钥y坐标最后一位为0,则首字节为0x02,否则为0x03。非压缩格式公钥首字节为0x04。

? 签名长度:64字节 2) 密钥对生成

SM2密钥生成是指生成SM2算法的密钥对的过程,该密钥对包括私钥和与之对应的公钥。

? 输入:一个有效的Fq(q=p且p为大于3的素数,或q=2m)上椭圆曲线系

统参数的集合。

? 输出:与椭圆曲线系统参数相关的一个密钥对(d, P)

k: SM2PrivateKey,SM2私钥 Q: SM2PublicKey,SM2公钥

用随机数发生器产生整数 d∈[1, n-2]; G为基点,计算点P=(xP, yP)=[d]G 密钥对是(d, P),其中d为私钥,P为公钥 3) 签名算法 a) 预处理1

预处理1指使用签名方的用户身份标识和签名方公钥,通过运算得到Z值的过程,Z值用于预处理2。

? 输入:ID 字符串,用户身份标识;Q SM2PublicKey,用户的公钥。 ? 输出:Z 字节串,预处理1的输出。 ? 计算公式:Z=SM3(ENTL||ID||a||b||xG||yG||xA||yA) ? 参数说明:

ENTL: 由两个字节标识的ID的比特长度;

ID: 用户身份标识,一般情况下,其长度为16字节,默认值从左至右依次是:0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38。 a, b: 为系统曲线参数;

xG, yG为基点;xA, yA为用户的公钥。

b) 预处理2

预处理2是指使用Z值和待签名消息,通过SM3运算得到杂凑值H的过程。杂凑值H用户SM2数字签名。

? 输入:Z 字节串;M 字节串,待签名消息 ? 输出:H 字节串,杂凑值 ? 计算公式:H=SM3(Z||M) c) 生成签名

SM2签名是指使用预处理2的结果和签名者的私钥,通过签名计算得到签名结果的过程。

? 输入:d: SM2PrivateKey,签名者私钥;H 字节串,预处理2的结果 ? 输出:sign: SM2Signature,签名值

设待签名的消息为M,为了获取消息M的数字签名(r,s)(r,s)(r,s),作为签名者的用户A应实现以下运算步骤:

置M’=ZA||M;计算e=Hv(M’),将e的数据类型转化为整数;用随机数发生器产生随机数k∈[1, n-1];计算椭圆曲线点(x1, y1)=[k]G,将x1的数据类型转化为整数;计算r=(e+x1)mod n,若r=0或r+k=n则返回第3步;计算s=((1+dA)-1*(k-r*dA))mod n,若s=0则返回第3步;将r, s转化为字节串。消息M的签名为(r, s)。 d) 签名验证

? 输入:H:字节串,预处理2的结果;sign:SM2Signature,签名值;

Q:PublicKey,签名者的公钥

? 输出:为真表示验证通过,为假表示验证不通过。

为了检验收到的消息 M及其数字签名(r, s),作为验证者的用户B应实现以下运算步骤:

A. 检验r∈[1,n-1],是否成立,若不成立则验证不通过; B. 检验s∈[1,n-1],是否成立,若不成立则验证不通过; C. 置M’=ZA||M;

D. 计算e=Hv(M’),将e的数据类型转化为整数;

E. 将r,s的数据类型转化为整数,计算t=(r+s)mod n,若t=0,则验证不

通过;

F. 计算椭圆曲线点(x1, y1)=[s]G+[t]PA;

G. 将x1的数据类型转化为整数,计算R=(e+x1)mod n,检验R=r是否

搜索更多关于: 密码学SM2,SM3,SM4加密标准 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

课外实践五 SM2、SM3及SM4加密标准 一、概述 1. SM2椭圆曲线公钥密码算法加密标准 SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。 椭圆曲线算法公钥密码所基于的曲线性质:椭圆曲线多倍点运算构成一个单向函数。在多倍点运算中,已知多倍点与基点,求解倍数的问题称为椭圆曲线离散对数问题。对于一般椭圆曲线的离散对数问题,目前只存在指数级计算复杂度的求解方法

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com