首页
学习
活动
专区
圈层
工具
发布

详解国密SM2的数字签名

在《解读国密非对称加密算法SM2》一文中,我讲到过非对称加密算法的用途之一就是数字签名。本文就来聊一聊国密SM2的数字签名算法。...在前面的文章我说过,SM2实际上就是一种椭圆曲线(EC)密码算法,所以这里先详细说说标准的ECDSA算法,然后再说说SM2数字签名算法和ECDSA算法有哪些差别。...在现有的ECDSA算法基础上修改,增加对SM2签名算法的支持,相对比较容易,下面就说说SM2数字签名算法。...SM2数字签名算法 SM2数字签名算法在《GMT 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法》这份文档中有详细的描述。其中签名的流程为: ?...SM2签名流程 从中我们可以看到和标准ECDSA的流程有几点不同: 对消息的处理不同,国密签名算法对消息进行了处理,然后才计算摘要。

14K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    harmony-utils之SM2,SM2加解密

    harmony-utils之SM2,SM2加解密harmony-utils 简介与说明harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用...作为非对称算法,SM2支持‌数字签名‌、‌密钥交换‌和‌公钥加密‌三大功能,其安全性依赖于椭圆曲线离散对数问题的难解性,可抵御暴力破解和量子计算威胁。...相较于RSA算法,SM2在相同安全强度下密钥更短、签名速度更快,已广泛应用于金融支付、电子认证、政务系统及物联网安全等领域,并成为国际标准ISO/IEC 14888-3的组成部分。...SM2 应用场景SM2 算法在我国的金融、政务、电力等关键领域有着广泛的应用。...在实际应用中,SM2 算法通常会与 SM3、SM4 等国密算法配合使用。一般用 SM4 对数据内容进行加密,使用 SM3 对内容进行摘要,再使用 SM2 对摘要进行签名。

    50800

    SM 国密算法踩坑指南

    SM2 数字签名算法 SM2 签名算法还是比较复杂,这里只截取数字签名的生成、验证算法原理。...详细文档可以搜索:『GB/T32918.2—2016 信息安全技术 SM2椭圆曲线公钥 密码算法 第2部分:数字签名算法』 sm2 加签 数字签名生成算法,即加签流程: 加签流程图如下: sm2 验签...数字签名验证算法,即验签流程: 验签流程图: SM2 签名数据 上面加签流程我们可以看到,SM2 加签之后产生的签名为(R,S),这一点与 RSA算法不同,RSA 算法加签之后签名就是一个值。...SM2 签名一般有两种数据格式,国标(GM/T 0009-2012 SM2 密码算法使用规范)规定签名数据格式,使用** ASN.1** 格式定义,具体格式如下: 通常使用硬件加密机加签产生的数字数字签名将会使用这种格式...SM2 公私钥读取 SM2 如果用到数字签名,也用到加密的话,这个情况下我们就需要向 CA 机构,例如 CFCA,申请国密双证书。 CFCA 申请结果如下: SM2 双证书,分为签名证书,加密证书。

    8.3K22

    什么是国密(SM2)算法

    签名过程包含用户密钥生成、签名生成和验证三个步骤,其中签名值由两个160位整数(r,s)构成。2....### 二、SM2与SM系列算法的协同体系作为中国商用密码标准的核心,SM2与SM3哈希算法、SM4分组密码算法构成完整的技术生态:- **SM3算法**:输出长度256位的密码哈希函数,在SM2签名过程中用于消息摘要生成...### 三、SM2算法的性能优势对比通过实际测试数据对比可见:1. **运算效率**:在相同安全级别下,SM2签名速度比RSA快15倍以上,验证速度快约6倍。...以主流服务器平台为例,SM2签名可达3000次/秒,而RSA-3072仅能实现200次/秒。2....**带宽节省**:SM2签名结果固定为64字节,相比RSA-3072的384字节签名,数据传输量减少83%。3.

    60811

    区块链密码基础之签名算法(一)

    4.4 国密SM2替代 SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,其中包含5个部分,总则、数字签名算法、密钥交换协议、公钥加密算法、参数定义。...4.4.1 SM2的参数选择 SM2选择的曲线方程和参数如下: 4.4.2 SM2签名算法 使用上面SM2椭圆曲线公钥密码算法推荐参数,提出了SM2签名算法可满足多种密码应用中的身份鉴别和数据完整性...SM2签名算法具体如下 图6 Bob以“同或门”为例对混淆电路进行解密 4.4.3 SM2和ECDSA的应用于区块链的比较 SM2和ECDSA都是使用椭圆曲线的签名算法,其思想来源都是来自于DSA,...s不同 签名的hash内容不同 SM2数字签名增加了合理性检查,检查r+k是否等于n SM2数字签名的s具有线性关系,可以构造特殊需求的签名 综合以上分析SM2签名算法与ECDSA算法相比较,虽然安全性在同一个级别上...而且由于SM2的签名参数s具有线性关系,可以结合区块链实际应用进行一些特殊需求的签名算法设计,满足区块链特殊的需求。

    2.6K10

    【密码学(3)】-国密系列1-SM2

    SM2算法概念 SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法。 SM2为非对称加密,基于ECC。该算法已公开。...由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。...SM2数字签名算法签名过程示意图 (4)验证算法 接收到的消息为M′,签名为(r′, s′)和发送者Alice的公钥PA,Bob执行如下步骤验证合法性: 检验r′∈[1, n-1]是否成立,若不成立则验证不通过...因为这是收信者对收到的签名数据进行验证,而签名数据是经过信道传输过来的,由于信道干扰和对手的篡改,因此,签名数据中含有错误或被篡改的可能性是存在的。...验证算法中的①检查签名分量r’的合理性 验证算法中的②检查签名分量s’的合理性 验证算法中的⑤检查t的正确性 国密SM2算法证书VS传统SSL证书的优势 (1)加密强度更高 传统SSL证书通常是RSA算法

    1.7K40

    PKI - 一文读懂SM1、SM2、SM3、SM4等国密算法

    SM2 可以理解为国产RSA。非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。...SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。...使用经验 一般数据发送端都是用SM4对数据内容加密,使用SM3对内容进行摘要,再使用SM2对摘要进行签名。...与RSA算法相比,SM2算法在相同的安全强度下,所需的密钥长度更短,因此,在加密和签名速度上具有一定的优势。...国密算法工具封装包括: 非对称加密和签名:SM2 摘要签名算法:SM3 对称加密:SM4 国密算法需要引入Bouncy Castle库的依赖。

    32.2K12

    写给开发人员的实用密码学 - 数字签名

    国密数字签名算法 国密数字签名算法在《GM/T 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法》这份文档中有详细的描述。...国密 SM2 算法虽然也是一种椭圆曲线算法,但其签名流程和 ECDSA 有些不同,这点在实现时需要注意。...在开发SM2数字签名算法时,我们可以参考《GM/T 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法》这份文档中附录A的示例,保证每个步骤的数据能对上,这样最终的结果就不会出错。...国密数字签名示例 生成 SM2 私钥 $ gmssl sm2 -genkey -out sm2.pem Using configuration from /data/gmbrowser/usr/local...将待签名的消息放入 msg.txt 文件 $ echo "this is a sm2 test" > msg.txt 对消息签名 $ gmssl sm2utl -sign -in msg.txt

    1K30

    Strongwan 建立证书体系,CA根证书、服务端与各个客户端证书

    > ca.cert.pem 在CA主机上完成: 生成CA的SM2私钥 (ca.key.pem) 使用该私钥创建自签名的CA证书 (ca.cert.pem) CA证书有效期为10年 (3650天) 生成后...生成服务器的证书和密钥 pki --gen --type sm2 --outform pem > server.key.pem pki --pub --type sm2 --in server.key.pem...) 从私钥提取公钥 (server.pub.key.pem) 创建证书签名请求 (server.req.pem) 服务器将server.req.pem发送给CA进行签名。...) 从私钥提取公钥 (client.pub.key.pem) 创建证书签名请求 (client.req.pem) 客户端将client.req.pem发送给CA进行签名。...自签名CA: 在这个场景中,我们使用的是自签名的CA证书,而不是商业CA的证书。商业CA的根证书通常预装在操作系统或浏览器中,但自签名CA证书需要手动分发和安装。

    58010

    国密算法「建议收藏」

    SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。...SM2算法 SM2算法:SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能...所以关于sm2算法的流程如图 SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。...另外,SM2推荐了一条256位的曲线作为标准曲线。 SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。...SM2算法在很多方面都优于RSA算法(RSA发展得早应用普遍,SM2领先也很自然),与RSA安全性对比如下图 SM3算法 SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成

    4.7K20

    简易国密算法 PythonSDK:EasyGmSSL-Python

    SM2增强功能 密钥加解密模式多样化 新增了多种SM2密钥加解密模式选择,包括C1C3C2、C1C3C2_ASN1、C1C2C3、C1C2C3_ASN1。...签名验签模式扩展 在SM2签名验签时,增加了RS_ASN1、RS两种模式选择,适应不同的签名规范和验证场景,使签名验签操作更加贴合实际业务需求。...SM2 密钥,此时不需要关心签名值的模式 test = EasySM2SignKey(signer_id = signer_id, pem_private_key_file = '....= SignatureMode.RS) print('signature hex:', sign_value.hex()) # 初始化用于验证签名的 SM2 密钥 verify_test = EasySM2VerifyKey.../test_keys/tmp_test_sm2_public.pem') # 验证签名 verify_test.UpdateData(plain) # 验证签名时同样指定签名值格式为 RS 模式 ret

    1.6K1615

    无缝互操作:腾讯云KMS在SM2国密算法上与 EasyGmSSL 的兼容实践

    本文通过完整互操作验证,展示EasyGmSSL库与腾讯云KMS在SM2加解密、签名验签上的完美兼容性,特别突出其在极致易用性、格式灵活性和协议兼容性方面的优势。...公钥加密数据 + 云端SM2私钥解密数据 场景描述 本地使用 KMS SM2 公钥加密明文得到密文,KMS 控制台或云 API 使用 SM2 私钥解密密文得到明文,实现云端和本地端无缝明文数据交换。...:双模式全兼容 腾讯云 KMS 提供非对称密钥的签名验签云 API 接口 控制台也提供针对消息原文和消息摘要的签名验签工具,用户可以在控制台快速完成签名验签的验证流程。...场景1:原始消息签名(RAW模式) 云端签名 → 本地验签 from __future__ import annotations import base64 import os from easy_gmssl...签名验签模式扩展 在SM2签名验签时,增加了RS_ASN1、RS两种模式选择,适应不同的签名规范和验证场景,使签名验签操作更加贴合实际业务需求。

    65231

    国密算法介绍

    )算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用...SM2算法:非对称算法其实现基于ECC算法。该算法已公开,由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。...SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。...SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。...适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。 SM4算法: 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

    2.6K30

    关于SM2算法工具的一点儿说明

    推荐几个网上测试sm2的网站: SM2加解密 SM2 在线加密工具 可以这样测试下: 用我的工具加密,使用同样的密钥,用网上的工具解密,看解密出来的明文是否正确。...解密结果如图所示: 再来测下验签: 用工具生成的签名,填入网站里去验签,看能否通过。结果是通过的。  ...需要注意的是,如果使用网站上生成的签名,拿这个工具验签的话,需要在xB(公钥x的位置)最前面补上个02或03.否则会收到提示: ====sm2签名验证==== tips:目前仅支持压缩公钥,请在xB处输入...SM2一般用到的或者第三方提供的公钥都是压缩过的,长度为66个长度,既33字节。其实yB不需要输入,有了xB的压缩公钥,yB工具自己就算出来了。

    86510

    使用 Nginx 配置国密 SM2 证书的完整方法

    国密SM2算法是我国自主研发的商用密码算法标准,在Nginx中配置SM2证书可以实现HTTPS通信的国产化加密。以下是详细的配置方法和步骤。...一、准备工作1.获取国密SM2证书国密SSL证书通常包含签名证书和加密证书两部分,申请后您将获得以下文件:domain.com_sign.crt:签名证书文件domain.com_sign.key:签名证书私钥文件...在证书详情中应显示算法为SM2。...五、SM2/RSA双证书配置(可选)为确保浏览器兼容性,可以同时配置SM2国密证书和RSA国际证书:server{listen443ssl;server_namedomain.com;#RSA国际证书ssl_certificate...六、注意事项证书兼容性:国密SM2证书主要在国内浏览器支持,国际浏览器如Chrome/Firefox会提示"证书不受信任",这是正常现象。

    2.1K30

    即时通讯安全篇(十三):信创必学,一文读懂什么是国密算法

    接收方使用发送方的公钥对签名进行解密和验证,以验证消息的完整性和真实性。在数字签名应用中,SM2算法通常与SM3摘要算法一起使用。...3) 用户A的明文数据和数字签名经加密算法(SM1/SM2/SM4)加密成密文后发送给用户B。加密算法以非对称加密算法SM2为例,即加解密使用不同密钥。...4)密文到达用户B处,经加密算法(SM1/SM2/SM4)解密后,还原成明文数据和数字签名。...2)在身份认证阶段,本端使用SM2和SM3算法生成身份信息的数字签名,并使用SM1或SM4算法和会话密钥对身份信息和数字签名进行加密;对端收到加密的身份信息后,使用相同的会话密钥解密,然后通过SM2和SM3...3)在数据传输阶段,本端使用SM2和SM3算法生成用户数据的数字签名,并使用SM1或SM4算法以及会话密钥对用户数据和数字签名进行加密;对端收到加密的用户数据后,使用相同的会话密钥解密,然后通过SM2和

    3.4K10

    【Google Play】Google Play 签名维护 ( 签名机制 | Google Play 签名机制选择 | 签名更新 )

    ( 签名机制 | Google Play 签名机制选择 | 签名更新 ) ---- 文章目录 Google Play 上架完整流程 系列文章目录 一、Google Play 签名机制 二、Google...Play 签名机制选择 三、Google Play 签名更新 一、Google Play 签名机制 ---- Google Play 自带的签名机制 , 其在系统后台生成一个签名文件 , 开发者无法获取该签名文件...Google Play 的签名机制 ; Google Play 签名机制 , 一旦加入后 , 就无法退出 , 这里要特别注意 ; 二、Google Play 签名机制选择 ---- 在设置完毕应用 "...Google Play 签名 , 无法退出 ; 这里 Google 给提供了 5 种签名偏好设置 ; 选项一 : 与点击 " 继续 " 按钮结果相同 , 即让 Google Play 设置签名..., 密钥丢失概率很小 ; 这里直接选择 最后一项 , 暂时退出 Google Play 签名计划 , 后期可以在启用其它签名方案 ; 但是如果启用了 , 无法退出签名计划 ; 三、Google Play

    11.2K10

    【易错概念】国密算法SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、ZUC

    2 SM2椭圆曲线公钥密码算法(vs ECDSA、ECDH) SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。...另外,SM2推荐了一条256位的曲线作为标准曲线。 SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。...在总则的基础上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关示例。...数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并生成密钥对。...此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在SM2,SM9标准中使用。

    12.3K22
    领券