CN105743655B - 哈希计算和签名验签计算分离的sm2签名验签实现方法 - Google Patents
哈希计算和签名验签计算分离的sm2签名验签实现方法 Download PDFInfo
- Publication number
- CN105743655B CN105743655B CN201610176957.0A CN201610176957A CN105743655B CN 105743655 B CN105743655 B CN 105743655B CN 201610176957 A CN201610176957 A CN 201610176957A CN 105743655 B CN105743655 B CN 105743655B
- Authority
- CN
- China
- Prior art keywords
- interface
- sign test
- signature
- hash
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
- H04L9/3252—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种哈希计算和签名验签计算分离的SM2签名验签实现方法,该方法在实现哈希计算接口时记录消息与哈希值之间的对应关系,在实现签名和验签计算接口时根据哈希值查询对应的原消息并通过原消息计算得到SM2签名或验签所需的哈希值。从而分离了SM2算法的哈希计算与签名/验签计算,达到了哈希计算接口可以单独使用的目的并且签名/验签的哈希值输入可以直接使用哈希计算的结果的目的;在原本使用其他密码算法并且相应接口符合国际通用API接口规范的***中,可以不修改上层代码,直接替换接口实现部分以达到使用SM2算法替换原有密码算法的目的。
Description
技术领域
本发明属于信息安全密码算法安全领域,具体涉及一种哈希计算和签名验签计算分离的SM2签名验签实现方法。
背景技术
SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。SM2签名算法是基于SM2密码算法的签名算法。
设待签名的消息为M,为了获取消息M的数字签名(r,s),r、s为椭圆曲线公钥算法计算中用到的两个结果参数,SM2签名算法中将其整体视为数字签名。SM2签名算法流程如下:
1.计算其中ZA为用户其他信息,||为连接符号。
SM2算法中用户其他信息“ZA”描述如下:作为签名者的用户A具有长度为entlenA比特的可辨识标识IDA,记ENTLA是由整数entlenA转换而成的两个字节,在SM2椭圆曲线数字签名算法中,签名者和验证者都需要用密码杂凑函数求得用户A的杂凑值ZA。按GM/T0003.1—20124.2.6和4.2.5给出的方法,将椭圆曲线方程参数a、b、G的坐标xG、yG和PA的坐标xA、yA的数据类型转换为比特串,计算ZA=Hv(ENTLA||IDA||a||b||xG||yG||xA||yA)。
2.计算H为签名验签双方约定好的哈希算法,v表示哈希计算得到的消息摘要长度。将e按照一定规则转换为整数。
3.针对转换后的e,利用SM2公钥密码算法计算(r,s),具体参见GM/T 0003.1—2012 4.2.6和4.2.5。
为了验证M’及其数字签名(r’,s’),验签算法流程如下:
1.设置
2.计算将e’转换为整数。
3.根据SM2公钥密码算法验证e’与(r’,s’)是否匹配,匹配则验证通过,不匹配则衍生不通过。
其他常用的签名验签算法与SM2签名验签算法有所不同,例如对于消息M,RSA签名算法流程如下:
1.计算e=Hv||M,计算消息的哈希值。
2.利用RSA公钥密码算法的私钥加密e,得到消息的签名。
对于消息M’和签名s,验签算法流程如下:
1.计算e′=Hv||M′,计算消息的哈希值。
2.利用RSA公钥密码算法的公钥解密s得到e”,验证e’=e”是否成立,成立则验证通过,不成立则验证不通过。
哈希计算与签名验签计算接口是一种常用的信息安全相关的API接口。由密码算法实现者编程实现API接口和相应的密码算法,接口调用者通过调用API接口实现复杂的哈希计算与签名验签计算。常用密码算法实现模块遵循通用API接口规范(以下简称“通用接口规范”);通用接口规范中哈希计算接口输入原始消息,输出消息的哈希值;签名计算接口输入消息的哈希值,输出消息的签名;验签计算接口输入签名与消息的哈希值,输出是否验证通过。
签名计算接口和验签计算接口是两个不同的API接口,但在本发明中与这两个接口相关的许多操作都是相同的,因此后文中的提到的签名验签接口指代两个API接口,并且对这两个接口可以采用相同的操作。
通用接口规范中哈希计算与签名验签计算接口是分离的可以单独使用,实际签名验签时依次调用哈希计算接口与签名验签计算接口。首先通过哈希计算接口计算出消息的哈希值,再通过签名验签计算接口对哈希值进行签名或验证签名。例如:
微软Windows***提供的Cryptography模块的API如下:
哈希计算接口:
签名计算接口:
按照以上API接口格式开发SM2算法在Windows上的签名验签模块是难以实现的。SM2算法签名验签计算的输入不是原消息的哈希值,而是添加了用户其他信息后的哈希值。这会导致SM2算法签名验签时符合国际通用接口规范的哈希计算接口的计算结果无法直接作为签名验签计算接口的输入,原本基于RSA等国际算法的符合通用接口规范的代码改用SM2算法时,接口不一致,无法直接将原来的签名验签库替换为新的SM2签名验签库。
发明内容
本发明的目的是解决如何让SM2算法哈希计算接口与签名验签计算接口符合通用接口规范的同时又可以结合在一起使用完成SM2签名验签的功能的问题,提出了一种SM2算法的哈希计算接口和签名验签计算接口的实现方法,使用该方法实现的算法库,可以按照通用接口规范分离哈希计算接口和签名验签计算接口,同时上层代码可以依次调用两个接口以完成SM2签名验签功能。
本发明的一种哈希计算和签名验签计算分离的SM2签名验签实现方法,其实现的哈希计算接口和SM2签名验签计算接口是分离的,符合国际通用API接口规范;哈希计算接口可以独立使用,计算消息的哈希值,使用上述哈希计算接口计算得到的哈希值可以直接用于调用SM2签名验签计算接口计算签名或验证签名。如前文所述,本发明中SM2签名验签计算接口指代SM2签名计算接口和SM2验签计算接口这两个API接口。
本发明规定在实现哈希计算接口时,计算原消息的哈希值并返回,但将哈希值和原消息的对应关系存储在一个对照表(或称对应关系表)中。该对照表应当是哈希计算和签名验签计算共享的,可以通过全局变量、文件存储、数据库等方式实现。
在实现签名/验签计算接口时,通过输入参数中的哈希值查找上一步存储的对照表,找到哈希值对应的原消息,计算用户其他信息ZA,得到ZA=Hv(ENTLA||IDA||a||b||xG||yG||xA||yA),式子中Hv是特定的哈希算法,按照我国标准一般为SM3算法,ENTLA是IDA的长度,IDA为用户签名验签时唯一标示身份的ID,a、b、xG、yG是椭圆曲线算法的预配置参数,都是固定的,xA、yA为公钥PA的坐标,可以从公钥中获得,这些信息在签名验签计算时都是很容易获取的。计算得到新消息,使用新消息计算哈希值用于签名验签。
按照本发明设计的接口实现方法,SM2算法的哈希计算接口和签名验签计算接口符合通用接口规范,同时可以依次调用以完成SM2签名验签功能。
本发明还提供一种符合哈希计算和签名验签计算分离接口的SM2签名验签实现***,包括分离的哈希计算接口和SM2签名验签计算接口,所述哈希计算接口用于计算消息的哈希值,所述SM2签名验签计算接口用于使用所述哈希计算接口计算得到的哈希值计算签名或验证签名。
进一步地,所述哈希计算接口记录哈希值与原消息之间的对应关系,形成消息—哈希值对应关系表;所述SM2签名验签计算接口通过输入参数中的哈希值查询本地存储的消息—哈希值对应关系表,获取该哈希值对应的原消息,然后为原消息添加用户其他信息后计算新的哈希值,用于后续的SM2签名验签计算。
现有技术中,由于SM2签名验签计算的输入异于国际通用算法,不是原消息的哈希计算结果,是在原消息基础上添加了用户其他信息后的扩展消息的哈希值,因此SM2的哈希计算与签名验签计算无法分离实现。本发明在实现哈希计算接口时记录消息与哈希值之间的对应关系,在实现签名和验签计算接口时查询哈希值对应的原消息并通过原消息计算得到SM2签名或验签所需的哈希值用于签名和验签计算,从而分离了SM2算法的哈希计算与签名/验签计算,达到了哈希计算接口可以单独使用的目的、并且签名/验签的哈希值输入可以直接使用哈希计算的结果的目的。
本发明实现的SM2算法哈希计算接口与签名验签计算接口符合国际通用API接口规范,在原本使用其他密码算法并且相应接口符合国际通用API接口规范的工程中,可以不修改上层代码,直接替换接口实现部分以达到使用SM2算法替换原有密码算法的目的。
附图说明
图1为哈希计算接口实现流程。
图2为签名验签计算接口实现流程。
图3为哈希计算接口和签名验签计算接口实现的总流程图。
具体实施方式
下面通过具体实施例和附图,对本发明做进一步说明。
图1为本发明的哈希计算接口的实现方法的流程图,具体包括如下步骤:
1)输入原消息;
2)正常计算消息的哈希值;
3)将消息的哈希值与原消息存储在(消息——哈希值)对照表(对应关系表)中;该对照表应当是哈希计算和签名验签计算共享的,可以通过全局变量、文件存储、数据库等方式实现;
4)将哈希值作为返回值返回。
图2为本发明的签名验签计算接口的实现方法的流程图,具体包括如下步骤:
1)输入要计算签名或者验签的哈希值;
2)根据哈希值查找原消息:在(消息——哈希值)对照表中,查找传入参数中的哈希值对应的原消息,如果查找不到原消息,则返回失败结果,告知签名验签失败,并给出失败原因;
3)获取用户其他信息,计算得到ZA;
4)连接ZA和原消息,即计算得到新消息;
5)计算新消息的哈希值用于后续的签名验签计算;
6)根据SM2算法标准计算签名或验证签名,返回结果。
图3为哈希计算接口和签名验签计算接口实现的总流程图,为图1和图2中流程的结合,具体步骤见上文,此处不再赘述。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (6)
1.一种哈希计算和签名验签计算分离的SM2签名验签实现方法,其特征在于,采用分离的哈希计算接口和SM2签名验签计算接口,首先通过所述哈希计算接口计算消息的哈希值,然后将得到的哈希值用于调用SM2签名验签计算接口以计算签名或验证签名;在实现哈希计算接口时,记录哈希值与原消息之间的对应关系,形成消息—哈希值对应关系表,将对应关系存储在签名验签计算代码可访问的位置;在实现SM2签名验签计算接口时,通过输入参数中的哈希值查询所存储的消息—哈希值对应关系表,获取该哈希值对应的原消息,然后为原消息添加SM2算法规定的用户其他信息后计算新的哈希值,用于后续的SM2签名验签计算。
2.根据权利要求1所述的方法,其特征在于,所述SM2签名验签计算接口包括SM2签名计算接口和SM2验签计算接口。
3.根据权利要求1所述的方法,其特征在于,所述哈希计算接口与签名验签计算接口符合国际通用API接口规范;在原本使用其他密码算法并且相应接口符合国际通用API接口规范的工程中,不修改调用密码计算的上层应用代码,直接替换接口实现部分以达到使用SM2算法替换原有密码算法的目的。
4.根据权利要求1所述的方法,其特征在于,所述消息—哈希值对应关系表的存储通过全局变量、文件存储、或数据库方式实现。
5.根据权利要求1所述的方法,其特征在于,所述用户其他信息的表达式为:
ZA=Hv(ENTLA||IDA||a||b||xG||yG||xA||yA),
其中,Hv是哈希计算时使用的哈希算法,ENTLA是IDA的长度,IDA为用户签名验签时唯一标示身份的ID,a、b、xG、yG是椭圆曲线算法的预配置参数,xA、yA从公钥中获得;然后计算得到新消息,其中M为待签名的消息,使用新消息计算哈希值用于签名验签计算。
6.一种符合哈希计算和签名验签计算分离接口的SM2签名验签实现***,其特征在于:包括分离的哈希计算接口和SM2签名验签计算接口,所述哈希计算接口用于计算消息的哈希值,所述SM2签名验签计算接口用于使用所述哈希计算接口计算得到的哈希值计算签名或验证签名;所述哈希计算接口记录哈希值与原消息之间的对应关系,形成消息—哈希值对应关系表,将对应关系存储在签名验签计算代码可访问的位置;所述SM2签名验签计算接口通过输入参数中的哈希值查询所存储的消息—哈希值对应关系表,获取该哈希值对应的原消息,然后为原消息添加SM2算法规定的用户其他信息后计算新的哈希值,用于后续的SM2签名验签计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610176957.0A CN105743655B (zh) | 2016-03-25 | 2016-03-25 | 哈希计算和签名验签计算分离的sm2签名验签实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610176957.0A CN105743655B (zh) | 2016-03-25 | 2016-03-25 | 哈希计算和签名验签计算分离的sm2签名验签实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105743655A CN105743655A (zh) | 2016-07-06 |
CN105743655B true CN105743655B (zh) | 2019-07-16 |
Family
ID=56251559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610176957.0A Active CN105743655B (zh) | 2016-03-25 | 2016-03-25 | 哈希计算和签名验签计算分离的sm2签名验签实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105743655B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108809658B (zh) * | 2018-07-20 | 2021-06-01 | 武汉大学 | 一种基于sm2的身份基的数字签名方法与*** |
CN110941861B (zh) * | 2019-12-16 | 2022-04-29 | 中国南方电网有限责任公司 | 文件防护方法、装置、计算机设备及介质 |
CN112926983A (zh) * | 2021-04-13 | 2021-06-08 | 无锡井通网络科技有限公司 | 一种基于区块链的存证交易加密***及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103138938A (zh) * | 2013-03-22 | 2013-06-05 | 中金金融认证中心有限公司 | 基于csp的sm2证书申请及应用方法 |
CN104735068A (zh) * | 2015-03-24 | 2015-06-24 | 江苏物联网研究发展中心 | 基于国密的sip安全认证的方法 |
-
2016
- 2016-03-25 CN CN201610176957.0A patent/CN105743655B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103138938A (zh) * | 2013-03-22 | 2013-06-05 | 中金金融认证中心有限公司 | 基于csp的sm2证书申请及应用方法 |
CN104735068A (zh) * | 2015-03-24 | 2015-06-24 | 江苏物联网研究发展中心 | 基于国密的sip安全认证的方法 |
Non-Patent Citations (2)
Title |
---|
《SM2密码算法的Java实现与评测》;聂意新等;《信息网络安全》;20130810;全文 * |
《SM2椭圆曲线门限密码算法》;尚铭等;《密码学报》;20140415;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN105743655A (zh) | 2016-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106504008B (zh) | 一种基于区块链的公平合同签署方法 | |
US10594688B2 (en) | Privacy-enhanced biometrics-secret binding scheme | |
Omar et al. | Identity management in IoT networks using blockchain and smart contracts | |
EP2417546B1 (en) | Combined authentication of a device and a user | |
CN107395368B (zh) | 无介质环境中的数字签名方法及解封装方法与解密方法 | |
CN102307096B (zh) | 一种基于伪rsa密钥的新近公开密钥加密算法的数据加密*** | |
CN105743655B (zh) | 哈希计算和签名验签计算分离的sm2签名验签实现方法 | |
US20140173287A1 (en) | Identifier management method and system | |
CN104717232B (zh) | 一种面向群组的密码*** | |
JP2014002365A (ja) | プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム | |
CN109245899B (zh) | 一种基于sm9密码算法信任链设计方法 | |
CN102571355B (zh) | 一种不落地导入密钥的方法及装置 | |
CN110401615A (zh) | 一种身份认证方法、装置、设备、***及可读存储介质 | |
CN107809311A (zh) | 一种基于标识的非对称密钥签发的方法及*** | |
CN112311538A (zh) | 一种身份验证的方法、装置、存储介质及设备 | |
CN107707354A (zh) | 一种基于椭圆曲线加密法的云存储数据验证方法及*** | |
CN106209730B (zh) | 一种管理应用标识的方法及装置 | |
CN115021913B (zh) | 工业互联网标识解析体系密钥生成方法、***与存储介质 | |
CN104734847B (zh) | 面向公钥密码应用的共享对称密钥数据加密和解密方法 | |
CN113452705B (zh) | 一种加密通信方法、装置、电子设备和存储介质 | |
CN107104788A (zh) | 终端及其不可抵赖的加密签名方法和装置 | |
EP3824595A1 (en) | Methods, systems, and devices for managing digital assets | |
CN107919963B (zh) | 一种认证器及其实现方法 | |
CN113343255A (zh) | 一种基于隐私保护的数据交互方法 | |
CN106856431A (zh) | 改进的椭圆曲线数字签名算法及验签方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |