GMSSL :SM2椭圆曲线公钥密码算法

article/2025/9/25 2:26:30

2021SC@SDUSC

一、

SM2使用素数域256位椭圆曲线

椭圆曲线参数方程:y^{2}=x^{3}+ax+b

曲线参数:

p一FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF

a一FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC

b一28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD414D940E93

n一FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123

xG一32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7

yG一BC3736A2 F4F6779C 59BDCEE3 6B692153 DOA9877C C62A4740 02DF32E5 2139F0AO

二、SM2-ECDSA算法与SM2算法的区别

        2010 年12月,为满足电子认证服务系统等应用需求,在国家商用密码管理管理办公室发布了国家密码管理局公告(第21号),发布SM2椭圆曲线公钥密码算法。加上原来的SM1商密对称算法,中国自主定义的算法终于开始以自信、大方的姿态走上商用密码舞台。
        前面的文章介绍了ECDSA算法,在SM2中的椭圆曲线数字签名算法,通过查阅文章后(《国密SM2数字签名算法与ECDSA算法对比分析研究》),找到了两个算法的一些区别。

 1.文章给出了SM2数字签名算法的正确性证明

先来回顾一下两个算法的签名以及验签过程:

ECDSA签名以及验签过程:

ECDSA签名的生成:

输入:参数组D(q, FR, S, a,b,P,n,h),私钥d,消息m。

输出:签名(r,s)。

(1)选择随机数k ∈[1,n-1];

(2)计算 kP=(x,y)),并将x_{1}转化为整数z;

(3)计算r=z mod n,若r=0,跳至步骤1;

(4)计算e=H(m);

(5)计算 s=k^{-1}(e+dr)\bmod n。若s=0,则跳至步骤1;

(6)返回(r,s)。

ECDSA签名的验证:

输入:参数组D(q, FR,S, a, b, P, n, h),公钥Q,消息m,签名(r,s)。

输出:判断签名是否合法。

(1)检验r,s ∈[1,n-1],若不成立,返回拒绝签名;(2)计算e=H(m);

(3)计算w=s^{-1} \bmod n;

(4)计算u_{1}=ew \bmod nu_{2}=rw \bmod n;

(5)计算X=u_{1}P+u_{2}Q;

(6)若X=\infty,返回(“拒绝该签名”);

(7)将X的x坐标转化为整数z,计算v=z\bmod n;

(8)若v=r,则返回(“接受该签名”),否则返回(“拒绝该签名”)。

SM2椭圆曲线签名算法签名过程:

1.置\overline{M}=Z_{A}\left | \right |M

2.计算e=H_{V}(\overline{M}),将e转化为整数;

3.用随机数发生器产生随机数k∈[1,n-1];

4.计算椭圆曲线点(x_{1},y_{1})=kG,将x_{1}转化为整数

5.计算r=(e+x_{1})\bmod n,若r=0或者r+k = n,则返回3;

6.计算s=(1+d_{A})^{-1}\cdot (k-r\cdot d_{A})\bmod n,若s=0,则返回3

7.将转化为字节串,消息M的签名为(r,s)。

SM2椭圆曲线数字签名算法验签步骤:

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

1.检验r{}'\in [1,n-1]是否成立,若不成立验证不通过;

2.检验s{}'\in [1,n-1]是否成立,若不成立验证不通过;

3.置\overline{M{}'}=Z_{A}\left | \right |M{}'

4.计算e{}'=H_{V}(\overline{M{}'}),将e'化为整数

5.将r',s'转化为整数,计算t=({r}'+{s}') \bmod n,若t =0,则验证不能通过;

6.计算椭圆曲线点(x_{1}{}',y_{1}{}')=s{}'G+tP_{A}

7.将{x_{1}}'化为整数,计算t=({e}'+{x_{1}}')\bmod n,检验R=r'是否成立,若成立,验证通过,否则验证不通过。

SM2数字签名算法的签名和验证依赖于椭圆曲线的上两个点 (x1,y1)与(x1',y1')这两点应该是相等的,如果签名结果没有被篡改过,应该有({r}',{s}')=(r,s)

那么如何证明 (x_{1},y_{1})=({x_{1}}',{y_{1}}')呢?

因为r=(e+x_{1})\bmod n,s=(1+d_{A})^{-1}\cdot (k-r\cdot d_{A})\bmod n,所以(x_{1}{}',y_{1}{}')=s{}'G+tP_{A} = s{}'G+(r{}'+s{}')\cdot d_{A}G=(1+d_{A})s{}'G+r{}'\cdot d_{A}G = (1+d_{A})(1-d_{A})^{-1}-1\cdot (k-r\cdot d_{A})G=(k-r\cdot d_{A})G+r{}'d_{A}G=kG=(x_{1},y_{1})

2.对比分析

①对待签名消息预处理

ECDSA中,对待签名消息M不做人任何处理,但在SM2中,需要将M变为\overline{M}=Z_{A}\left | \right |M

②哈希算法

ECDSA没有规定使用哈希算法,在SM2椭圆曲线数字签名算法中使用的哈希算法是SM3

③安全性

攻击ECDSA都需要解决两个椭圆曲线离散对数问题,SM2椭圆曲线数字签名算法和ECDSA安全性是一个级别,SM2椭圆曲线数字签名算法安全性相对高一些。


http://chatgpt.dhexx.cn/article/9YX4kDmB.shtml

相关文章

9、EIGamal公钥密码算法

目录 EIGamal公钥密码算法 一、相关数学基础 二、算法原理 三、算法详细流程 四、特点和安全性 EIGamal公钥密码算法 ElGamal公钥密码算法是1985年由塔希尔盖莫尔提出,是一个基于迪菲-赫尔曼密钥交换的非对称加密算法,是在密码协议中有着重要应用的…

【密码科普】第6期 - 密码算法和商用密码体系架构

作者| 姜钰来源| 翼安研习社发布时间|2022-01-06 1. 密码算法的分类 1.1 对称密码算法 加密和解密使用相同密钥的加密算法。 该算法又分为分组密码算法(块加密算法)和流密码算法(序列密码算法&#xff09…

密码学学习笔记(二)——对称密码算法(轻量级密码算法Twine)

文章目录 1. 分组密码(Twine)1.1 加解密方式1.1.1 加密1.1.2 密钥生成算法1.1.3 解密1.1.4 全部代码 1.2. 分组密码的模式1.2.1 ECB模式1.2.2 CBC模式1.2.3 CFB模式1.2.4 OFB模式1.2.5 CTR模式 2.序列密码 如图,对称加密算法是应用较早的加密…

中国商用密码算法SM4

中国商用密码算法SM4 2006年我国国家密码管理局公布了无线局域网产品使用的SM4密码算法。这是我国第一次公布自己的商用密码算法,意义重大,影响深远。这一举措标志着我国商用密码管理更加科学化和国际接轨。 SM4密码算法设计简洁,算法结构有…

区块链的密码算法

区块链系统包含了计算机科学过去几十年的成果:计算机网络P2P、算法、数据库、分布式系统、计算机密码学等 密码学是区块链系统安全性保障的基础技术,形象地称为区块链的骨骼 哈希算法 ■哈希算法(Hash、 散列、杂凑, 消息摘要,…

8、RSA 公钥密码算法

目录 RSA公钥密码算法 一、RSA的数学基础 二、RSA原理 三、算法详细流程 四、RSA特点 五、RSA应用 参考推荐: https://blog.csdn.net/lemon_tree12138/article/details/50696926 RSA加密算法原理_张维鹏的博客-CSDN博客_rsa加密算法原理 图解RSA算法取余和…

常用的密码算法有哪些?

我们将密码算法分为两大类。 对称密码(密钥密码)——算法只有一个密钥。如果多个参与者都知道该密钥,该密钥 也称为共享密钥。非对称密码(公钥密码)——参与者对密钥的可见性是非对称的。例如,一些参与者仅…

分组密码算法与DES算法

目录 1 分组密码的含义 1.1 分组密码介绍 1.2 分组密码的含义 1.3 分组密码的要求 2 分组密码的设计思想 2.1 分组密码的设计思想 3 分组密码的基本特点 3.1 分组密码的基本特点 3.2 分组密码的迭代结构 3.3 子密钥的生成方法 3.4 轮函数的设计准则 3.5 迭代的轮数 4…

11、国产密码算法

参考推荐: 国密SM1\ SM2\ SM3\ SM4\ SSF33算法和国际RSA算法的对应关系_小明做IT的博客-CSDN博客_ssf33算法 国密算法SM1/SM2/SM3/SM4_fengwang0301的博客-CSDN博客_sm2/sm3/sm4 国产密码算法 国产密码算法是指由国家密码研究相关机构自主研发,具有相…

密码算法应用规范

术语解释 对称算法(Symmetric key algorithm):采用相同的密钥执行加密或解密。 非对称算法(Asymmertric key algorithm,公开密钥算法):用作加密的密钥不同于用作解密的密钥,而且解密…

古典密码算法(移位密码算法、维吉尼亚算法)

古典密码算法(凯撒、维吉尼亚) A. 1-1.移位密码算法 【实验目的】 1) 学习移位密码的原理 2) 学习移密码的实现 【实验原理】 算法原理 a) 移位密码就是对26个字母进行移位操作,可以移动任意位数,这样就实现了对明文的加密…

换位密码算法

换位密码算法基本原理:先把明文按固定长度进行分组,然后对每一组的字符进行换位操作,从而实现加密。为加强安全性,可进行多次换位密码算法运算。 import random def encrypt(plainText,t):result[]lengthlen(t)temp[plainText[i:…

常见密码学算法

学习笔记 分类 密码学用于解决信息安全中的保密性,完整性,认证和不可否认性等问题。最初主要用于解决保密性。随着密码学技术的发展,逐渐应用到其它领域。 常见密码学算法:DES,AES; RSA, ECC; Hash; Signature等。 分类 对称密…

密码学基础(一)常见密码算法分类

一、密码算法分类: 密码算法主要分为三类:对称密码算法、 非对称密码算法、摘要算法。 二、对称密码算法(Symmetric-key Algorithm) 1、概念 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算…

常用的密码算法汇总分析(动态更新ing)

常用密码算法整理汇总 常用对称加密算法常用非对称加密算法常用Hash算法国产密码关于密码算法会持续更新.... 常用对称加密算法 对称加密算法(分组加密)描述DES将明文分为64位一组、密钥64位,实际56位(64位中8位奇偶校验位)3DES执行了3次DES&…

【密码学】常见密码算法分类和运用

一、摘要算法(Digest Algorithm) 摘要算法 是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法,又称为 散列函数 、 哈希函数 、 杂凑函数 、单向函数 等,通常用来做数据完整性的判定,即对数据进行…

常用密码算法介绍

算法种类 根据技术特征,现代密码学可分为三类: 对称算法 说明:加密密钥和解密密钥相同,对明文、密文长度没有限制 子算法: 流密码算法:每次加密或解密一位或一字节的明文或密文 分组密码算法&#xff…

2020 shodan 配置详解

需要先注册一个号>然后才能在kali里安装并认证 官网:https://www.shodan.io 安装命令: git clone https://github.com/achillean/shodan-python.git cd shodan-python python setup.py installshodan -h 查看使用: 这个。。土味英语&am…

Python中shodan模块的使用

关于shodan的安装和使用,传送门——> 渗透测试之Shodan的安装和使用 常用 Shodan 库函数 shodan.Shodan(key) :初始化连接APIShodan.count(query, facetsNone):返回查询结果数量Shodan.host(ip, historyFalse):返回一个IP的详细…

暗黑引擎 -- Shodan常用搜索语法

fofa,钟馗之眼,shodan等等一系列的公网设备搜索引擎,其中fofa和shodan使用的最多,本文就来整理一些shodan的搜索语法 Shodan:www.shodan.io Ps:均来自互联网搜集整理 工业控制系统 三星电子广告牌 &quo…