CN108306737A - 一种以太坊密码算法国产化的方法 - Google Patents
一种以太坊密码算法国产化的方法 Download PDFInfo
- Publication number
- CN108306737A CN108306737A CN201711395856.3A CN201711395856A CN108306737A CN 108306737 A CN108306737 A CN 108306737A CN 201711395856 A CN201711395856 A CN 201711395856A CN 108306737 A CN108306737 A CN 108306737A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- encryption algorithm
- type
- encrypted
- ethereum
- 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.)
- Pending
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 264
- 238000000034 method Methods 0.000 title claims abstract description 39
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 title description 4
- 230000004807 localization Effects 0.000 claims abstract description 15
- 230000008676 import Effects 0.000 claims description 17
- 238000009795 derivation Methods 0.000 claims description 5
- 238000012795 verification Methods 0.000 abstract description 6
- 238000012545 processing Methods 0.000 description 14
- 101100203322 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SKS1 gene Proteins 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
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/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
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- 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
-
- 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)
- Power Engineering (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供的以太坊密码算法国产化的方法,所述方法应用于所述区块链平台,包括:获取待加密信息;根据所述待加密信息的类型,获取与所述类型相对应的加密算法;其中,所述加密算法是替代以太坊开源代码国外密码算法的国产密码算法;根据所述加密算法对所述待加密信息进行加密处理,以生成加密信息。本发明实施例提供的以太坊密码算法国产化的方法,使用国产密码算法替换以太坊中的国外密码算法,并进行参数的调整、SM3散列值长度的扩展、通过恢复公钥实现SM2签名算法的验证等,由于国外密码算法不安全,可能有植入后门,使用替代后的国产密码算法能够实现真正意义上的自主可控。
Description
技术领域
本发明实施例涉及区块链技术领域,具体涉及一种以太坊密码 算法国产化的方法。
背景技术
区块链技术起源于比特币,是一种利用密码学方法保护数据安 全的分布式存储技术,具有不可篡改、不可伪造等显著特性,被广 泛应用于数字经济、互联网治理和大数据发展等多个技术领域。区 块链的本质是安全可靠的数据存储和处理,于是密码算法就成为了 区块链平台的最关键的部分。
然而,目前主流的区块链平台普遍使用的是国外密码算法,如 ECDSA椭圆曲线签名算法、SHA3密码杂凑算法、RIPEMD160密 码杂凑算法、AES分组密码算法等。这些算法大多是美国标准化的 算法。
信息安全已经上升为国家战略的今天,区块链的核心算法—密 码算法理应自主可控。
发明内容
针对现有技术存在的问题,本发明实施例提供一种以太坊密码 算法国产化的方法。
本发明实施例提供一种以太坊密码算法国产化的方法,所述方 法包括:
获取待加密信息;
根据所述待加密信息的类型,获取与所述类型相对应的加密算 法;其中,所述加密算法是替代以太坊开源代码国外密码算法的国 产密码算法;
根据所述加密算法对所述待加密信息进行加密处理,以生成加 密信息。
本发明实施例提供的以太坊密码算法国产化的方法,使用国产 密码算法替换以太坊中的国外密码算法,并进行参数的调整、SM3 散列值长度的扩展、通过恢复公钥实现SM2签名算法的验证等,由 于国外密码算法不安全,可能有植入后门,使用替代后的国产密码 算法能够实现真正意义上的自主可控。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下 面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍, 显而易见地,下面描述中的附图是本发明的一些实施例,对于本领 域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 这些附图获得其他的附图。
图1为本发明实施例以太坊密码算法国产化的方法流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将 结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例是本发明一部分实施例, 而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于 本发明保护的范围。
图1为本发明实施例以太坊密码算法国产化的方法流程示意图, 如图1所示,本发明实施例提供的一种以太坊密码算法国产化的方 法,包括以下步骤:
S1:获取待加密信息。
具体的,区块链平台中的加密处理装置获取待加密信息。待加 密信息可以包括不同的类型。
S2:根据所述待加密信息的类型,获取与所述类型相对应的加 密算法;其中,所述加密算法是替代以太坊开源代码国外密码算法 的国产密码算法。
具体的,加密处理装置根据所述待加密信息的类型,获取与所 述类型相对应的加密算法;其中,所述加密算法是替代以太坊开源 代码国外密码算法的国产密码算法。待加密信息的类型可以包括签 名字符、公钥字符和摘要字符等,与签名字符相对应的加密算法可 以是SM2数字签名算法;与公钥字符相对应的加密算法可以是SM2 公钥加密算法;与摘要字符相对应的加密算法可以是SM3密码杂凑 算法。需要说明的是:上述的SM2数字签名算法、SM2公钥加密算 法和SM3密码杂凑算法都是国产密码算法;可以用SM2数字签名 算法替代以太坊开源代码的椭圆曲线签名算法ECDSA;可以用SM2 公钥加密算法替代以太坊开源代码的椭圆曲线综合加密算法ECIES; 可以用SM3密码杂凑算法替代以太坊开源代码的一系列哈希算法, 可以是SHA3算法。
S3:根据所述加密算法对所述待加密信息进行加密处理,以生 成加密信息。
具体的,加密处理装置根据所述加密算法对所述待加密信息进 行加密处理,以生成加密信息。举例说明如下:
一、数字签名算法示例数据
椭圆曲线签名算法ECDSA示例:
以太坊的crypto子模块中包含了所有密码学算法接口的封装, 在crypto模块下还有secp256k1子包,该包实现了secp256k1曲线域 上的基本运算,使用secp256k1曲线y^2=x^3+ax+b为例进行说明:
曲线参数:
p=FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFEFFFFFC2F
a=00000000 00000000 00000000 00000000 00000000 00000000 0000000000000000
b=00000000 00000000 00000000 00000000 00000000 00000000 0000000000000007
基点G:
Gx=79BE667E F9DCBBAC 55A06295CE870B07 029BFCDB 2DCE28D9 59F2815B16F81798
Gy=483ADA77 26A3C465 5DA4FBFC 0E1108A8FD17B448 A6855419 9C47D08FFB10D4B8
阶n:
n=FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8CD0364141
生成公私钥对:
Prv=4d17899cbd204fdef0ddcac345dd8ae826de063d39d30a5b270dfb58cf32bdd0
Pub=(744444566f38297da677000ba1f09d897180c53d22fb8abc108b7f88c6121f0c,
886ef5e9d6ce015dd9cdd0c7927ff13b649510a959d212f1446577f4 8895983d)
签名字符串(签名字符):
“may4thbwizu”
签名输出:
r=caa814bf03e32cc2c5f2b72151af83172d3e2902389186e43788b0a2d1352ae4e3
s=a1fab94862e83b50e929630fbd44d62cf7399e9ca2faab1bc8bb24a 22d9ad200
SM2数字签名算法示例:
参数使用SM2标准中给出的曲线。
生成公私钥对:
Prv=9655826314c9cfddb1e17341ad52afe009c625b159c9cc7d5cde41733d3b9cf3
Pub=(2bdcd5db5042bbc0d1fcee1aeef964fc22a8254354ad8be30d13052ddddf61cd,
144ad97e61ce26d200d3b7688581b508072b96b1aa7a923e6539a7e e8233b816)
签名字符串(签名字符):
“may4thbwizu”
签名输出:
r=b1578406895b69bb3bc6bec3874bd0fc7e00c6caae3b8a401ddd2a 20603c9412
s=9b802e5eb1115193e26388421c643f9cc998f3006f66f64f5a298ba a578e98e。
二、公钥加密算法示例数据:
椭圆曲线综合加密算法ECIES示例:
生成公私钥对:
Prv=13d08f4a34a9c87db08c102485c017f62c97988e33621b099c7b17a55d47c95f
Pub=(76b7de101c63816487232bd25539fd4c07090012b643856a1782b65351d5992e,
de3aae59b3b988c69b92eecf0b67ce4291e9ae08b82420aaabbbb72a eb9c258f)
加密字符串(公钥字符):
“Hello,world.”
加密后密文:
04ec30defd14b52d1bf427f21e072f5e15a11591a6258a652729ea0c5b9baea3e015f4147ee6163ea1a4106b0683087220ccae44bbc2caafad29ddac73e905b08bab17afd574ec08ded8fec7c6127afd197218ff8644ad48d143508a143f890274d99da70497235b0cbc1317a5cc05b507b82865553e 0810167de5b74a4c
解密后消息:
48656c6c6f2c20776f726c642e,即“Hello,world.”的ASCII 编码。
SM2公钥加密算法示例:
生成公私钥对:
Prv=ded17a6bf28bf5c469a882ccc37bf618d1cda2e543767dbd7d36 de6cd8cafe4
Pub=(2d282e530b9a377de1a0dbc2a6059084be5d6220cbea083909b31a9b9dd360ac,
180991a4f674eb43f906acdfa0fad9205652caa3d0a74b55bdf6ad839 609ae5b)
加密字符串(公钥字符):
“Hello,world.”
加密后密文:
04435dd04fafcbd7eb9bac470ae973f3bd4560a0398373e20d4926789130882afb208551e8bd21b8ef3cfdf31dccc93eb76859a66a2c8cc1539c5f4a8db18219feabb9768cfad8a2f3af2c02cd6377d268ee9b3be3ea9f4a33c95443beaf80db16ec48cf92a52dfe9b0fe19889b4
解密后消息:
48656c6c6f2c20776f726c642e,即“Hello,world.”的ASCII 编码。
三、密码杂凑算法示例数据:
安全哈希算法3SHA3摘要示例:
输入数据(摘要字符):
“abc”
摘要结果:
4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa 12d6c45
SM3密码杂凑算法示例:
输入数据(摘要字符):
“abc”
摘要结果:
66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8 f4ba8e0。
下面对SM2椭圆密码算法,SM3密码杂凑算法具体实现如何与 以太坊兼容做进一步详细描述。
数字签名算法替换
ECDSA算法简介
首先介绍ECDSA算法的工作流程。下文中系统参数为系统参 与方所共享的一组数据,它对任何用户都是已知的。我们以用户A 表示消息的签名方,用户B表示消息的验证方,dA表示用户A的私 钥,QA表示其公钥。
系统参数:(CURVE,G,n),其中CURVE为算法所基于的椭圆曲 线,在以太坊中该曲线为SEC2-V2标准中指定的secp256k1曲线; G为椭圆曲线域上一个阶为素数的基点,n为基点G的阶。
密钥生成:
用户A选取安全的随机数dA∈[1,n-1]作为其私钥
用户A计算QA=dA×G作为其公钥
数字签名:用户A使用其私钥dA对消息m进行签名
计算e=HASH(m)
选取安全的随机数k∈[1,n-1]
计算椭圆曲线上的点(x1,y1)=k×G
计算r=x1modn
计算s=k-1(z+r·dA)modn
输出最终的签名(r,s)
签名验证:用户B获取了用户A对消息m′的签名(r′,s′)以及其 合法公钥QA,尝试验证签名的正确性。
计算e′=HASH(m′)
计算w=s-1modn
计算u1=e′w mod n以及u2=rw mod n
计算椭圆曲线点(x1,y1)=u1×G+u2×QA
若u1=r′,则该签名是合法的;否则,签名非法
恢复公钥:ECDSA算法中一项特殊的操作为从签名中恢复出签 名者的公钥。在通信、存储资源受限的场合,该操作可以免去传输、 存储签名者公钥的必要。以太坊中大量使用了恢复公钥的操作。从 签名中恢复公钥的流程如下。
根据签名r(将r作为点的横坐标)计算出椭圆曲线上的两个点 R1,R2
计算签名r的逆r-1
计算签名消息的摘要Z=H(M)
计算签名者公钥QA
若v=0,则输出公钥QA=r-1(sR1-zG)
若v=1,则输出公钥QA=r-1(sR2-zG)
SM2签名算法简介
以下对SM2算法的工作流程作简单介绍。与ECDSA算法相同, 下文中系统参数为系统参与方所共享的一组数据,它对任何用户都 是已知的。我们以用户A表示消息的签名方,用户B表示消息的验 证方,dA表示用户A的私钥,QA表示其公钥。
系统参数:(CURVE,G,n),其中CURVE为算法所基于的椭圆曲 线,我们使用了与以太坊相同的secp256k1曲线;G为椭圆曲线域上 一个阶为素数的基点,n为基点G的阶。
密钥生成:
用户A选取安全的随机数dA∈[1,n-1]作为其私钥
用户A计算QA=dA×G作为其公钥
数字签名:用户A使用其私钥dA对消息m进行签名
计算e=HASH(m)
选取安全的随机数k∈[1,n-1]
计算椭圆曲线上的点(x1,y1)=k×G
计算r=(e+x1)modn
计算s=((1+dA)-1(k+r·dA))modn
输出最终的签名(r,s)
签名验证:用户B获取了用户A对消息m′的签名(r′,s′)以及其 合法公钥QA,尝试验证签名的正确性。
计算e′=HASH(m′)
计算t=(r′+s′)modn
计算u1=e′w mod n以及u2=rw mod n
计算椭圆曲线点(x1,y1)=s′×G+t×QA
计算R=(e′+x1′)modn
若R=r′,则该签名是合法的;否则,签名非法
恢复公钥:考虑到以太坊中大量使用了从签名中恢复公钥的操 作,若替换的算法不支持该操作势必会造成严重的接口不兼容性, 导致整个系统都需要进行改动。我们发现在SM2算法中的签名(r,s) 具有与ECDSA签名类似的结构,并且通过一定的推导也能够从SM2 签名中恢复出签名者的公钥。
计算签名消息的摘要计算e=HASH(m)
根据签名r(x-横坐标)计算椭圆曲线上点R′的横坐标 x=(r-e)mod n
计算(r+s)的逆invrps=(r+s)-1
计算minuss=(r+s)-1·s
计算签名者公钥QA=invrps·R-minuss·G
算法替换概要
根据1、2小节的描述对比ECDSA与SM2算法。
表1ECDSA与SM2-DSA算法对比
从表1及1、2小结的描述中可以看到SM2算法与ECDSA算法 不论是在数据结构还是签名、验证等操作上都是相同的,故在进行 替换时只需要对签名函数内部的实现进行修改(显然,SM2与ECDSA签名的计算方法是不同的),而无需对暴露给其他模块的相 关接口进行调整。此外,由于两种算法的公私钥、签名结构相同, 故可以直接借助以太坊ECDSA的数据结构存储这些数据。
算法替换详述
以太坊的crypto子模块中包含了所有密码学算法接口的封装。 在gb/crypto包中含有国产SM2/3/4算法的实现。在crypto模块下还 有secp256k1子包,该包实现了secp256k1曲线域上的基本运算。以 下列出crypto模块中所有签名相关的接口,并给出其替换方案。
表2接口替换列表
公钥加密算法替换
ECIES算法简介
以下对ECIES算法的工作流程作简单介绍。在以太坊中,ECIES 算法用于节点之间的P2P加密通信。下文中系统参数为系统参与方 所共享的一组数据,它对任何用户都是已知的。我们以用户B表示 数据的发送者,他使用用户A的公钥加密一段数据。,用户A表示 数据的解密者,他从用户B收到加密后的消息并使用自己的私钥对 其进行解密。dA表示用户A的私钥,QA表示其公钥。
系统参数:(CURVE,G,n,s1,s2),其中CURVE为算法所基于的 椭圆曲线,在以太坊中该曲线为SEC2-V2r标准中指定的secp256k1 曲线;G为椭圆曲线域上一个阶为素数的基点,n为基点G的阶;S1,S2为共享的辅助输入
密钥生成:
用户A选取安全的随机数dA∈[1,n-1]作为其私钥
用户A计算QA=dA×G作为其公钥
数据加密:用户B使用用户A的公钥QA对加密消息m
选取安全的随机数k∈[1,n-1]
计算椭圆曲线上的点R=k×G
计算椭圆曲线上的点(x1,y1)=k×QA
计算kE||kM=KDF(x1||S1)
加密消息c=E(kE;m)
计算d=MAC(kM;c||S2)
输出密文R||c||d
数据解密:用户A获取了加密后的密文C’=R′||c′||d′,尝试使 用其私钥dA解密
计算椭圆曲线上的点(x1′,y1′)=R′×dA=k×dA×G=k×QA
计算kE′||kM′=KDF(x1′||S1)
验证d′=MAC(kM′;c′||S2)
解密消息m′=D(kE′;c′)
SM2加密算法简介
以下简单介绍SM加密算法的工作流程。下文中系统参数为系 统参与方所共享的一组数据,它对任何用户都是已知的。我们以用 户B表示数据的发送者,他使用用户A的公钥加密一段数据。,用 户A表示数据的解密者,他从用户B收到加密后的消息并使用自己 的私钥对其进行解密。dA表示用户A的私钥,QA表示其公钥。
系统参数:(CURVE,G,n,s1,s2),其中CURVE为算法所基于的 椭圆曲线,在以太坊中该曲线为SEC2-V2标准中指定的secp256k1 曲线;G为椭圆曲线域上一个阶为素数的基点,n为基点G的阶;S1,S2为共享的辅助输入
密钥生成:
用户A选取安全的随机数dA∈[1,n-1]作为其私钥
用户A计算QA=dA×G作为其公钥
数据加密:用户B使用用户A的公钥QA对加密消息m
选取安全的随机数k∈[1,n-1]
计算椭圆曲线上的点C1=k×G,C1按照GB/T 32918.1-2016第 1部分4.2.8和4.2.4给出的方法转换为比特串
计算椭圆曲线点(x1,y1)=k×QA
计算t=KDF(x1||y1||S1,klen)
加密消息
计算C3=Hash(x1||m||y1||S2)
输出密文C=C1||C2||C3
数据解密:用户A获取了加密后的密文C’=C1′||C2′||C3′,尝 试使用其私钥dA解密
计算椭圆曲线上的点(x1′,y1′)=C1′×dA=k×dA×G=k× QA
计算t′=KDF(x1′||y1′||S1,klen)
验证C3′=Hash(x1′||m||y1′||S2)
解密消息
算法替换说明
根据1、2小结的描述将ECIES与SM2算法进行比较.
表3ECIES与SM2-PKE算法对比
可以看到ECIES与SM2算法在数据结构、操作方法上也保持着 一致性。我们在crypto/sm2子模块中给出了SM2公钥加密算法的实 现,其实现接口参照以太坊的ECIES算法。
表4ECIES(SM2)算法实现接口
以太坊中其他模块在使用ECIES算法时是通过其包名ecies调 用函数的。以p2p/rlpx.go第318行为例:
h.randomPrivKey,err=ecies.GenerateKey(rand.Reader, crypto.S256(),nil)
由于新加入的SM2加密算法属于另一个子包sm2,替换时我们 借助了一个小技巧来解决名称空间的不一致问题:将导入的sm2子 包命名为“ecies”,由于两者提供的接口是完全相同的,故不会影响 到程序原有的功能,而新的系统在调用“ecies”名称下的方法时实 际上调用的是sm2子包中的方法。
密码杂凑算法替换
不同于ECDSA、SM2这些公钥密码算法,密码杂凑算法通常都 具有相同的形式。在使用SM3替换以太坊中所使用的SHA3系列算 法时,我们主要关注算法输出长度的问题。在发明内容的第三小节 中我们提到,使用SM3替换的主要问题是其输出长度仅有256比特,而以太坊使用了输出长度为512比特的SHA3算法。
我们采用了SEC2-V2标准中给出的KDF3函数将SM2算法的 输出长度扩充到512个字节。
KDF3函数
通过KDF3函数,我们可以将杂凑算法Hash的输出长度扩展到 任意l个字节长度。
输入:(x,l);其中x为原始杂凑函数的输出,l为扩展后的杂凑函 数输出
输出: Hash.eval(I2OSP(0,pamt)||x)||...||Hash.eval(I2OSP(k- 1,pamt)||x)
其中
在本文的实现中,我们以SM3作为需要扩充的Hash杂凑函 数,x为SM3算法的输出,l为512,pamt取4.
2算法替换说明
修改crypto模块中的SHA3算法接口,在不修改接口名的前提 下将算法替换为SM3算法以及使用KDF3扩充后的算法。
表5以太坊SHA3/Keccak256算法接口
本发明实施例提供的以太坊密码算法国产化的方法,使用国产 密码算法替换以太坊中的国外密码算法,并进行参数的调整、SM3 散列值长度的扩展、通过恢复公钥实现SM2签名算法的验证等,由 于国外密码算法不安全,可能有植入后门,使用替代后的国产密码 算法能够实现真正意义上的自主可控。
在上述实施例的基础上,所述国产密码算法包括SM2数字签名 算法;所述类型包括签名字符;相应的,所述根据所述待加密信息 的类型,获取与所述类型相对应的加密算法,包括:
若所述待加密信息的类型为签名字符,获取与所述类型相对应 的加密算法为SM2数字签名算法;其中,所述SM2数字签名算法 替代以太坊开源代码中的椭圆曲线签名算法ECDSA。
具体的,加密处理装置若判断获知所述待加密信息的类型为签 名字符,获取与所述类型相对应的加密算法为SM2数字签名算法; 其中,所述SM2数字签名算法替代以太坊开源代码中的椭圆曲线签 名算法ECDSA。可参照上述实施例,不再赘述。
本发明实施例提供的以太坊密码算法国产化的方法,通过用 SM2数字签名算法替代ECDSA,并生成加密信息,有利于管控密码 算法。
在上述实施例的基础上,所述国产密码算法包括SM2公钥加密 算法;所述类型包括公钥字符;相应的,所述根据所述待加密信息 的类型,获取与所述类型相对应的加密算法,包括:
若所述待加密信息的类型为公钥字符,获取与所述类型相对应 的加密算法为SM2公钥加密算法;其中,所述SM2公钥加密算法 替代以太坊开源代码中的椭圆曲线综合加密算法ECIES。
具体的,加密处理装置若判断获知所述待加密信息的类型为公 钥字符,获取与所述类型相对应的加密算法为SM2公钥加密算法; 其中,所述SM2公钥加密算法替代以太坊开源代码中的椭圆曲线综 合加密算法ECIES。可参照上述实施例,不再赘述。
本发明实施例提供的基于以太坊和国产密码算法的加密信息处 理方法,通过用SM2公钥加密算法替代ECIES,并生成加密信息, 有利于管控密码算法。
在上述实施例的基础上,所述国产密码算法包括SM3密码杂凑 算法;所述类型包括摘要字符;相应的,所述根据所述待加密信息 的类型,获取与所述类型相对应的加密算法,包括:
若所述待加密信息的类型为摘要字符,获取与所述类型相对应 的加密算法为SM3密码杂凑算法;其中,所述SM3密码杂凑算法 替代以太坊开源代码中的一系列哈希算法。
具体的,加密处理装置若判断获知所述待加密信息的类型为摘 要字符,获取与所述类型相对应的加密算法为SM3密码杂凑算法; 其中,所述SM3密码杂凑算法替代以太坊开源代码中的一系列哈希 算法。可参照上述实施例,不再赘述。
本发明实施例提供的以太坊密码算法国产化的方法,通过用 SM3密码杂凑算法替代一系列哈希算法,并生成加密信息,有利于 管控密码算法。
在上述实施例的基础上,所述方法还包括:
采用密钥派生函数KDF3将所述SM3密码杂凑算法哈希值的输 出长度扩展到字节长度L。
具体的,加密处理装置采用密钥派生函数KDF3将所述SM3密 码杂凑算法哈希值的输出长度扩展到字节长度L。
不同于ECDSA、SM2这些公钥密码算法,密码杂凑算法通常都 具有相同的形式。在使用SM3替换以太坊中所使用的SHA3系列算 法时,主要关注算法输出长度的问题。使用SM3替换的主要问题是 其输出长度仅有256字节,而以太坊使用了输出长度为512字节的 SHA3算法。为此,可以采用SEC2-V2标准中给出的密钥派生函数 KDF3将SM3算法的输出长度扩充到512个字节。可以采用如下方 法实现:
输入:(x,L);其中x为原始杂凑函数的输出,L为扩展后的杂凑 函数输出(扩展后的字节长度)
输出:Hash.eval(I2OSP(0,pamt)||x)||...||Hash.eval(I2OSP(k- 1,pamt)||x)
其中其中OutputLen表示Hash函数 的输出长度;表示对L/Hash.OutputLen的计算 结果进行向上取整。
在本发明实施例实现过程中,以SM3作为需要扩充的Hash杂 凑函数,x为SM3算法的输出,L为512,pamt取4。由于L为512, 从而实现了将字节长度扩展为512字节。
本发明实施例提供的以太坊密码算法国产化的方法,能够将 SM3密码杂凑算法哈希值的输出长度扩展到字节长度L。
在上述实施例的基础上,所述获取待加密信息的步骤之前,所 述方法还包括:
根据所述加密算法的类型对所述加密算法进行配置。
具体的,加密处理装置根据所述加密算法的类型对所述加密算 法进行配置。针对上述三种情况,具体说明如下:
一、SM2椭圆曲线签名算法替换ECDSA
以以太坊的目录为根目录,ECDSA是在crypto/secp256k1中实 现的,SM2椭圆曲线签名算法是在gb/crypto/sm2(存储路径)中实 现的,替换的时候需要将gb文件夹拷贝到以太坊下vendor文件夹 (指定文件)中,并将以太坊中所有import "github.com/ethereum/go-ethereum/crypto/secp256k1"(导入路径)替 换为import"gb/crypto/sm2",即将对ECDSA包的导入替换为对SM2 包的导入。
二、SM2椭圆曲线综合加密算法替换ECIES
以以太坊的目录为根目录,ECIES是在crypto/ecies中实现的, SM2椭圆曲线综合加密算法是在gb/crypto/sm2(存储路径)中实现 的,替换的时候需要将gb文件夹拷贝到以太坊下vendor文件夹(指 定文件)中,并将以太坊中所有import "github.com/ethereum/go-ethereum/crypto/ecies"(导入路径)替换为 import"gb/crypto/sm2",即将对ecies包的导入替换为对SM2包的导 入。
三、SM3密码杂凑算法替换SHA系列密码杂凑算法
以以太坊的目录为根目录,SHA3系列的密码杂凑算法在 crypto/sha3中实现的,SHA256(SHA2系列)算法是调用go库中 go/src/crypto/sha256实现的,SM3算法和KDF3算法是在 gb/crypto/sm3(存储路径)中实现的,替换的时候需要将gb文件夹 拷贝到以太坊下vendor文件夹(指定文件)中,并将以太坊中所有 import"github.com/ethereum/go-ethereum/crypto/sha3"(导入路径)替 换为import"gb/crypto/sm3",即替换为对SM3包的导入。
本发明实施例提供的以太坊密码算法国产化的方法,通过预先 配置加密算法,保证了算法替代的顺利进行。
在上述实施例的基础上,所述根据所述加密算法的类型对所述 加密算法进行配置,包括:
根据所述加密算法的类型,获取与所述加密算法的类型相对应 的所述加密算法的存储路径。
具体的,加密处理装置根据所述加密算法的类型,获取与所述 加密算法的类型相对应的所述加密算法的存储路径。可参照上述实 施例,不再赘述。
根据所述存储路径,获取所述加密算法,并将所述加密算法拷 贝到指定文件中。
具体的,加密处理装置根据所述存储路径,获取所述加密算法, 并将所述加密算法拷贝到指定文件中。可参照上述实施例,不再赘 述。
将与所述加密算法的类型相对应的以太坊开源代码的类型的导 入路径替代为所述加密算法的存储路径。
具体的,加密处理装置将与所述加密算法的类型相对应的以太 坊开源代码的类型的导入路径替代为所述加密算法的存储路径。可 参照上述实施例,不再赘述。
本发明实施例提供的以太坊密码算法国产化的方法,通过具体 的配置加密算法,进一步保证了算法替代的顺利进行。
本领域普通技术人员可以理解:实现上述方法实施例的全部或 部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存 储于一计算机可读取存储介质中,该程序在执行时,执行包括上述 方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的实施例仅仅是示意性的,其中所述作为分离部件 说明的单元可以是或者也可以不是物理上分开的,作为单元显示的 部件可以是或者也可以不是物理单元,即可以位于一个地方,或者 也可以分布到多个网络单元上。可以根据实际的需要选择其中的部 分或者全部模块来实现本实施例方案的目的。本领域普通技术人员 在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了 解到各实施方式可借助软件加必需的通用硬件平台的方式来实现, 当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者 说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该 计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、 磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个 人计算机,服务器,或者网络设备等)执行各个实施例或者实施例 的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的 技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施 例进行了详细的说明,本领域的普通技术人员应当理解:其依然可 以对前述各实施例所记载的技术方案进行修改,或者对其中部分或 者全部技术特征进行等同替换;而这些修改或者替换,并不使相应 技术方案的本质脱离本发明的实施例各实施例技术方案的范围。
Claims (7)
1.一种以太坊密码算法国产化的方法,所述方法应用于区块链平台,其特征在于,包括:
获取待加密信息;
根据所述待加密信息的类型,获取与所述类型相对应的加密算法;其中,所述加密算法是替代以太坊开源代码国外密码算法的国产密码算法;
根据所述加密算法对所述待加密信息进行加密处理,以生成加密信息。
2.根据权利要求1所述的方法,其特征在于,所述国产密码算法包括SM2数字签名算法;所述类型包括签名字符;相应的,所述根据所述待加密信息的类型,获取与所述类型相对应的加密算法,包括:
若所述待加密信息的类型为签名字符,获取与所述类型相对应的加密算法为SM2数字签名算法;其中,所述SM2数字签名算法替代以太坊开源代码中的椭圆曲线签名算法ECDSA。
3.根据权利要求1所述的方法,其特征在于,所述国产密码算法包括SM2公钥加密算法;所述类型包括公钥字符;相应的,所述根据所述待加密信息的类型,获取与所述类型相对应的加密算法,包括:
若所述待加密信息的类型为公钥字符,获取与所述类型相对应的加密算法为SM2公钥加密算法;其中,所述SM2公钥加密算法替代以太坊开源代码中的椭圆曲线综合加密算法ECIES。
4.根据权利要求1所述的方法,其特征在于,所述国产密码算法包括SM3密码杂凑算法;所述类型包括摘要字符;相应的,所述根据所述待加密信息的类型,获取与所述类型相对应的加密算法,包括:
若所述待加密信息的类型为摘要字符,获取与所述类型相对应的加密算法为SM3密码杂凑算法;其中,所述SM3密码杂凑算法替代以太坊开源代码中的一系列哈希算法。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
采用密钥派生函数KDF3将所述SM3密码杂凑算法哈希值的输出长度扩展到字节长度L。
6.根据权利要求1所述的方法,其特征在于,所述获取待加密信息的步骤之前,所述方法还包括:
根据所述加密算法的类型对所述加密算法进行配置。
7.根据权利要求6所述的方法,其特征在于,所述根据所述加密算法的类型对所述加密算法进行配置,包括:
根据所述加密算法的类型,获取与所述加密算法的类型相对应的所述加密算法的存储路径;
根据所述存储路径,获取所述加密算法,并将所述加密算法拷贝到指定文件中;
将与所述加密算法的类型相对应的以太坊开源代码的类型的导入路径替代为所述加密算法的存储路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711395856.3A CN108306737A (zh) | 2017-12-21 | 2017-12-21 | 一种以太坊密码算法国产化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711395856.3A CN108306737A (zh) | 2017-12-21 | 2017-12-21 | 一种以太坊密码算法国产化的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108306737A true CN108306737A (zh) | 2018-07-20 |
Family
ID=62870562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711395856.3A Pending CN108306737A (zh) | 2017-12-21 | 2017-12-21 | 一种以太坊密码算法国产化的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108306737A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109104287A (zh) * | 2018-07-27 | 2018-12-28 | 众安信息技术服务有限公司 | 在区块链中进行通信的方法和装置 |
CN109547195A (zh) * | 2018-11-13 | 2019-03-29 | 阳光保险集团股份有限公司 | 一种密码数据处理方法及装置 |
CN111654378A (zh) * | 2020-05-28 | 2020-09-11 | 广东纬德信息科技股份有限公司 | 一种基于电力安全网关的数据安全自检方法 |
CN112968778A (zh) * | 2021-02-04 | 2021-06-15 | 西安电子科技大学 | 区块链国密算法的转换方法、系统、计算机设备及应用 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104901810A (zh) * | 2015-06-02 | 2015-09-09 | 浪潮集团有限公司 | 一种基于国产密码算法的数据加密存储的方法 |
CN106130738A (zh) * | 2016-08-25 | 2016-11-16 | 杭州天谷信息科技有限公司 | 一种支持国密算法的区块链系统 |
CN107241196A (zh) * | 2017-06-30 | 2017-10-10 | 杰创智能科技股份有限公司 | 基于区块链技术的数字签名方法及系统 |
-
2017
- 2017-12-21 CN CN201711395856.3A patent/CN108306737A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104901810A (zh) * | 2015-06-02 | 2015-09-09 | 浪潮集团有限公司 | 一种基于国产密码算法的数据加密存储的方法 |
CN106130738A (zh) * | 2016-08-25 | 2016-11-16 | 杭州天谷信息科技有限公司 | 一种支持国密算法的区块链系统 |
CN107241196A (zh) * | 2017-06-30 | 2017-10-10 | 杰创智能科技股份有限公司 | 基于区块链技术的数字签名方法及系统 |
Non-Patent Citations (1)
Title |
---|
姚忠将等: ""基于区块链原理及应用的综述"", 《科研信息化技术与应用》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109104287A (zh) * | 2018-07-27 | 2018-12-28 | 众安信息技术服务有限公司 | 在区块链中进行通信的方法和装置 |
CN109547195A (zh) * | 2018-11-13 | 2019-03-29 | 阳光保险集团股份有限公司 | 一种密码数据处理方法及装置 |
CN111654378A (zh) * | 2020-05-28 | 2020-09-11 | 广东纬德信息科技股份有限公司 | 一种基于电力安全网关的数据安全自检方法 |
CN111654378B (zh) * | 2020-05-28 | 2021-01-05 | 广东纬德信息科技股份有限公司 | 一种基于电力安全网关的数据安全自检方法 |
CN112968778A (zh) * | 2021-02-04 | 2021-06-15 | 西安电子科技大学 | 区块链国密算法的转换方法、系统、计算机设备及应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11936774B2 (en) | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys | |
US10785019B2 (en) | Data transmission method and apparatus | |
WO2019214070A1 (zh) | 区块链上用户通信加密方法、装置、终端设备及存储介质 | |
WO2019101134A1 (zh) | 一种多分布式的sm9解密方法与介质及密钥生成方法 | |
JP2019511855A (ja) | 秘密共有のための楕円曲線暗号化を利用したパーソナルデバイスセキュリティ | |
TWI760546B (zh) | 用於高安全性高速資料加密及傳輸的電腦實施系統與方法 | |
CN104301108B (zh) | 一种从基于身份环境到无证书环境的签密方法 | |
CN109873699B (zh) | 一种可撤销的身份公钥加密方法 | |
US12034840B2 (en) | Computer implemented system and method for sharing a common secret preliminary class | |
TW202029693A (zh) | 用以分配數位簽署資料之份額的電腦實施系統及方法 | |
CN113711564A (zh) | 用于加密数据的计算机实现的方法和系统 | |
CN108306737A (zh) | 一种以太坊密码算法国产化的方法 | |
CN104753947A (zh) | 一种固定密文长度的可验证外包解密的属性基系统及方法 | |
CN106878322A (zh) | 一种基于属性的定长密文与密钥的加密、解密方法 | |
CN114448641A (zh) | 一种隐私加密方法、电子设备、存储介质以及芯片 | |
CN107682158B (zh) | 一种可托管的认证加密方法 | |
CN108933659A (zh) | 一种智能电网的身份验证系统及验证方法 | |
WO2022033122A1 (zh) | 一种密钥管理系统 | |
CN116346336B (zh) | 一种基于多层密钥生成中心的密钥分发方法及相关系统 | |
CN117828645A (zh) | 一种轻量级敏感数据访问控制方法 | |
CN110932847A (zh) | 一种针对具有密文同态性的身份标识密码系统的用户撤销方法 | |
UPDATE | CHAPTER FOURTEEN DESIGN, RELEASE, UPDATE, REPEAT: THE BASIC EVOLUTION PROCESSES OF A SECURITY PROTOCOL’S EVOLUTION NATHAN D. HUNTER AND YOUNG B. CHOI | |
CN116015628A (zh) | 一种基于同源的后量子秘密握手方法 | |
CN117061117A (zh) | 一种基于商用密码sm9的前向安全的公钥加密方法 | |
CN116318964A (zh) | 云边端环境下可验证的轻量化可搜索加密方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180720 |