密码学系列-国密sm2为什么不支持恢复公钥(代码片段)

搬砖魁首 搬砖魁首     2023-01-20     771

关键词:

情况

国密SM2目前不能通过签名和消息摘要恢复出公钥, 故不太适合将以太坊, EOS之类的公链代码底层密码库替换成国密库, 因为它们的椭圆曲线验签采用的都是recover模式, 而非verify模式.

  • verify模式: 输入签名, 消息摘要, 公钥; 输出是否是该公钥对应的私钥做的签名
  • recover模式: 输入签名,消息摘要, recoverid; 输出签名时使用的私钥对应的公钥

原因

在secp256k1我们可以根据签名r,s和消息恢复公钥,但是SM2却不能通过签名和消息恢复公钥,因为在SM2的h值计算过程中,SM2用到了公钥的坐标,所以必须知道公钥了,和只有签名和消息recover公钥相矛盾。

消息摘要h的生成过程(h在签名,verify和recover时都是需要的)

ZA = SM3 [ENTLA+IDA+a+b+Gx+Gy+Px+Py]
h = SM3 [ZA||MSG]

变通方法

因为SM2无法通过签名和消息recover公钥,所以在对交易验证的过程,需要取出公钥然后验证。但是,在类似EOS的账号系统里,一个账号可以拥有几个公钥,所以需要遍历账号的公钥验证交易,导致多公钥账号的交易执行性能会低些。幸运的是,系统内绝大多数账号只有一对公私钥,所以理论上不会对系统整体性能造成影响。

参考:
https://blog.csdn.net/weixin_39606244/article/details/112961507
https://zhuanlan.zhihu.com/p/369012651


往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
比特币系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列

密码技术--国密sm2椭圆曲线公钥密码算法及go语言应用

SM2椭圆曲线公钥密码算法SM2算法和RSA算法都是公钥密码算法,SM2算法是一种更先进安全的算法,SM2是国家密码局与2010年12月17日发布的椭圆曲线公钥密码算法,在我们国家商用密码体系中被用来替换RSA算法。SM2加解密packagemainimpor... 查看详情

sm系列国密算法(转)

原文地址:科普一下SM系列国密算法(从零开始学区块链189)众所周知,为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)那等等。其中SM... 查看详情

003国密算法【技术】

...钥算法),加密强度为256位,是一种椭圆曲线算法。公钥密码学与其他密码学完全不同,使用这种方法的加密系统,不仅公开加密算法本身,也公开了加密用的密钥。公钥密码系统与只使用一个密钥的对称传统密码不同,算法是... 查看详情

sm2国密算法工具qt版,彻底搞懂国密算法的使用(代码片段)

网上有很多网友问国密算法SM2怎么使用?什么是压缩公钥和非压缩公钥?xB和yB这参数是什么?怎么使用SM2做加解密?如何签名和验签?有没有工具来验证下?这里分享个自己用QT造的一个小工具,简单... 查看详情

sm2国密ssl证书为https加密提速

...规模访问故障和巨大安全风险。因此,GDCA致力于推广国密SSL证书,实现国际SSL证书无缝切换到国产SSL证书的应对方案,保护重要领域数据传输安全。SM2,正是一种由我国自主设计的非对称公钥密码算法,相较... 查看详情

2017-2018-220179216《网络攻防与实践》sm234算法

国密商用算法是指国密SM系列算法,包括基于椭圆曲线的非对称公钥密码SM2算法、密码杂凑SM3算法、分组密码SM4算法,还有只以IP核形式提供的非公开算法流程的对称密码SM1算法等。国密即国家密码局认定的国产密码算法。主要... 查看详情

centos7编译安装openssl1.1.1支持国密标准(代码片段)

...商业密码算法标准《GM/T0006-2012密码应用标识规范》定义国密算法OID标识《GB/T32907-2016SM4分组密码算法》(原GM/T0002-2012)《GB/T329??-2016SM2椭圆曲线公钥密码算法》(原GM/T0003-2012)《GB/T32905-2016SM3密码杂凑算法》(原GM/T0004-2012)在Centos7.6下... 查看详情

sm2国密算法公钥解压缩(代码片段)

SM2一般用到的或者第三方提供的公钥都是压缩过的,长度为66个长度,既33字节。格式如下,保密期间秘钥内容用*代替了,从02到....3F3B共33字节。66个长度06:028736002931F****************43986E66********D4FF11E9936A6CB9A3F3B14:030174... 查看详情

国密算法

参考技术A国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。SM1为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。SM2为非对称... 查看详情

skf密码设备研究(代码片段)

SKF密码设备研究密码设备mTokenGM3000国密身份认证锁是龙脉科技自主研发设计支持国密算法、完全遵照国家密码管理局颁布的《智能IC卡及智能密码钥匙密码应用接口规范》要求设计的USBKey,采用国产高性能智能卡芯片,内置SSF33... 查看详情

信息安全工程师笔记-国产密码算法(国密)概念

国产密码算法国产密码算法有SM1分组密码算法、SM2椭圆曲线公钥密码算法、SM3密码杂凑算法、SM4分组算法、SM9标识密码算法。算法名称算法特征描述SM1对称加密,分组长度和密钥长度都为128比特SM2非对称加密,用于公钥... 查看详情

国密算法的ekey的使用--简述(代码片段)

一、龙脉GMTools的使用1、产品介绍  mTokenGM3000国密身份认证锁是龙脉科技自主研发设计支持国密算法、完全遵照国家密码管理局颁布的《智能IC卡及智能密码钥匙密码应用接口规范》要求设计的USBKey,采用国产高性能智能卡芯... 查看详情

国密算法sm2sm3sm4分别用作什么

非对称加密SM2(可选支持国内SM9)算法实现数据的签名、验签和加解密对称密钥,SM3密码杂凑算法实现数据摘要的生成,对称密钥SM4加密算法实现对数据内容的加密。 查看详情

国密算法

算法分类国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。SM1为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。SM2为非对称加... 查看详情

国密算法介绍

...0c;可以通过“密钥”和“解密算法”将密文还原成明文。密码学中应用最为广泛的三类算法:对称算法(分组密码算法):AES/DES/SM4非对称算法(公钥密码算法):RSA/SM2摘要算法(杂凑算法)&#x... 查看详情

国密算法介绍

...0c;可以通过“密钥”和“解密算法”将密文还原成明文。密码学中应用最为广泛的三类算法:对称算法(分组密码算法):AES/DES/SM4非对称算法(公钥密码算法):RSA/SM2摘要算法(杂凑算法)&#x... 查看详情

技术分享|使用mpaas配置sm2国密加密指南(代码片段)

...密,在政策要求下,都需要更改网关加密算法为国密。为解决客户侧因更换加密算法造成的种种不便,mPaaS现已支持移动网关服务兼容多种加密方式。本文将就如何生成SM2密钥以及完成mPaaS配置等问题展开详细的说明... 查看详情

fabricv2.2中使用的密码学算法和国密算法对应关系

1.国密算法常用的密码学可以分为:对称加密、非对称加密以及哈希算法1.1.Fabric密码学算法和国密算法对应关系根据原生Fabric项目中/bccsp/opts文件中可知,原生Fabric支持的密码学算法有对称加密AES,非对称加密ECDSA以及哈希算法SHA:密... 查看详情