一. 引言
在国家的十四个五年规划和2035年远景目标纲要中的第五篇《加快数字化发展 建设数字中国》中第二节中提出培育壮大人工智能、大数据、区块链、云计算、网络安全等新兴数字产业:区块链部分明确要求通过推动区块链的技术创新,进一步为区块链服务平台和金融科技,供应链管理,政务服务等应用方案做好基础服务,并进一步完善管理机制。最新的《“十四五”数字经济发展规划》提到,“构建基于区块链的可信服务网络和应用支撑平台”。作为数字经济时代重要底层技术之一,区块链对推动企业数字化转型,促进产业数字化发展,推进数字中国建设都起着强大支撑作用。当前,政策叠加效应深度释放,我国区块链产业发展驶入“快车道”,已经成为驱动数字经济高质量发展的重要引擎。
签名算法是区块链的重要技术之一,签名算法同时也是区块链安全的重要研究点之一,区块链的地址,公钥,私钥,钱包管理等都和签名算法相关。区块链的交易系统中使用了一个假名,但是如何允许用户和多个机构使用不同的假名在匿名条件下进行交互,且用户和机构之间共谋不能识别出其他用户是否是同一个用户,存在这样的需求。私钥是证明用户拥有数字资产的唯一凭证,所以私钥的安全性对于区块链来说尤为重要,现有的区块链公链中,有利用多签机制或者阈值签名机制来解决用户部分私钥丢失问题的解决方案。区块链中私钥的生成,存储,恢复,销毁等全生命周期的在用户端完成,在保证用户端能抵御私钥的丢失和被盗的风险,同时又保证用户对账户中的数字资产拥有完全的控制权。但是在用户端完全控制数字资产和解决私钥丢失的问题没有一个完美的解决办法。下面通过进一步分析签名算法,和大家一起探索适合各种应用场景的区块链如何选择合适的签名算法。
二、区块链地址的生成过程
区块链的所有权是通过私钥、区块链地址和数字签名来确定的。私钥只有用户自己拥有,仅存储在用户端。管理用户私钥的软件或者硬件我们一般称为钱包。钱包的管理,如私钥生成、签名过程等都不需要网络连接,是独立于区块链网络而运行的,钱包的构建不需要与任何第三方信任机构交互。数字资产所有权的认证和管理都是基于密码学可证明的安全模型,因此可以说区块链的信任是建立在密码学的可证明安全基础上的。
以比特币为例,比特币的数字资产存放在和私钥相关的地址上,只有通过此私钥签名的交易才是一个有效的交易,而只有有效的交易才会经过节点验证后写入区块中并上链。比特币采用的是椭圆区块签名算法,私钥是一个数字,通常随机产生。此处需要注意,需要产生一个熵比较大的随机数,推荐采用密码算法中的随机数生成算法。有些钱包设计中采用了一般语言的随机数生成,这样就会很容易被爆破,也就是我们所说的短地址攻击。比特币的地址生成如下图所示。
图1 比特币地址生成过程
三、Schnorr签名算法与DSA
数字签名由公钥密码发展而来,数字签名能够使验证者相信消息的完整性,签名者的不可伪造性,同时也说明的签名者对签名的不可抵赖性。数字签名需要用到哈希函数,下文用函数H(·)表示。
3.1
Schnorr签名算法
图2 Schnorr签名算法过程
3.2
DSA签名算法
DSS(Digital Signature Standard)是由美国NIST 1991年公布的一种签名技术,也称为DSA(Digital Signature Algorithm),随后美国政府对其做了一些修改,现已成为一个应用广泛的国际标准。
图3 DSA签名算法过程
四、基于椭圆曲线的签名算法
大部分区块链项目使用的是椭圆曲线算法ECDSA(Elliptic Curve Digital Signature Algorithm),使用椭圆曲线离散对数问题构建的签名算法,是对数字签名算法DSA的模拟,只是使用的数学困难问题不同。ECDSA在1998年被ISO接收,1999年成为ANSI标准,并于2000年成为NIST和IEEE标准。椭圆曲线离散对数问题与普通的离散对数问题和大数分解不同,没有亚指数时间的解决方法。
4.1
ECDSA算法
图4 ECDSA算法过程
4.2
区块链的签名算法选择
椭圆曲线签名算法只是给出了一种算法,可是椭圆曲线的参数选择是多样的。一般而言,椭圆曲线被分为两类,“伪随机曲线”和Koblitz曲线,NSA在椭圆曲线签名算法中提出的secp256r1是随机参数:
这个随机参数来自于一个种子,但是这个种子怎么来的,为何这个种子不是一个单纯的数字?另外根据斯诺登揭露美国国家安全局密码标准的消息中,一个很重要的点是说这个种子是以某种方式精心选择的,NSA知道这条曲线的弱化方法。因此绝大多数区块链都没有选择这条曲线,而是选择了Koblitz曲线,secp256k1(a=0,b=7),如果传闻为真,如果NSA掌握了secp256r1的弱化方法,那么区块链的曲线参数的选择使他们躲过了NSA的陷阱。
4.3
区块链中签名算法的安全问题
2014年2月24日,Mt. Gox暂停交易并下线。最终,人们发现 Mt. Gox 的基础设施在几年内多次被攻击者利用,他们通过操纵部分交易数据(一种称为交易延展性的特征)慢慢抢劫了其比特币的交易所,这导致了 Mt. Gox 的攻击。这个持续的攻击最后据统计超过744,000 个比特币被盗,当时价值约 3500 万美元,现在价值近 300 亿美元。
那么什么是椭圆曲线ECDSA的延展性,攻击者如何利用ECDSA的延展性进行攻击的呢?我们可以看到上面的椭圆曲线签名算法,整个计算过程中和验证过程中可以在用户签名基础上,消息不变的情况下,可以构造另一个签名(r,-s)这样验证也可以通过。
图5 区块链延展性攻击的节点网络结构
具体的攻击步骤如下:
经过了大量的安全事件后,比特币改进协议中提出隔离验证,来规避ECDSA签名的交易延展性攻击。现在隔离验证已被比特币主网使用。另外比特币改进协议也有提出适用Schnorr签名算法替代ECDSA,这是因为Schnorr具有线性关系,可以构建区块链签名的特殊需求。
4.4
国密SM2替代
SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,其中包含5个部分,总则、数字签名算法、密钥交换协议、公钥加密算法、参数定义。
4.4.1
SM2的参数选择
SM2选择的曲线方程和参数如下:
4.4.2
SM2签名算法
使用上面SM2椭圆曲线公钥密码算法推荐参数,提出了SM2签名算法可满足多种密码应用中的身份鉴别和数据完整性、真实性的安全需求。它同时使用了SM3密码杂凑算法,国家密码管理局批准的随机数发生器。SM2签名算法具体如下
图6 Bob以“同或门”为例对混淆电路进行解密
4.4.3
SM2和ECDSA的应用于区块链的比较
SM2和ECDSA都是使用椭圆曲线的签名算法,其思想来源都是来自于DSA,但是由于算法的设计不同,其特性还是有一些差异,下面对ECDSA和SM2进行比较。
相同点:
不同点:两者在算法和特征上还是有些许不同的
综合以上分析SM2签名算法与ECDSA算法相比较,虽然安全性在同一个级别上,但是SM2算法具有更好的合理性检查提高了安全性,并且可以更高效的计算。SM2在区块链项目中替代现有的ECDSA,是一个可行的且可以提高区块链安全性的选择。而且由于SM2的签名参数s具有线性关系,可以结合区块链实际应用进行一些特殊需求的签名算法设计,满足区块链特殊的需求。
五、总结
区块链的签名算法是区块链应用和安全的重要研究方向之一,通过对区块链签名算法的研究,设计适合区块链业务的签名算法,实现更加高效和安全的区块链系统;另外通过对区块链签名算法的分析,为您在区块链签名算法的国密替代提供参考。
区块链虽然具有天然的匿名性,但是其匿名性是通过假名实现的。已经有大量的研究和区块链分析产品,通过对交易数据的启发式聚类分析,把区块链的地址和用户关联起来,弱化了区块链的匿名性。如何增强区块链的匿名性是一个需要持续研究的问题。同时,区块链滋生了很多违法活动,所以区块链的监管问题也是一个棘手的问题。如何实现既保护用户的身份隐私又对监管友好的区块链交易系统是一个值得深入探讨的问题。下一篇将通过环签名和群签名介绍,进一步讨论其他签名算法在区块链系统中的应用。
参考文献
1.《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》公布[J];都市快轨交通;2021年02期
2.杨波. 现代密码学 : 第4版[M]. 清华大学出版社, 2017.
3. Antonopoulos A M. Mastering Bitcoin: Programming the Open Blockchain.2017.
4. Hankerson D, Hernandez J L, Menezes A. Software Implementation of Elliptic Curve Cryptography over Binary Fields[C]// International Workshop on Cryptographic Hardware & Embedded Systems. Springer, Berlin, Heidelberg, 2000.
5. GB/T 32918.2-2016 信息安全技术 SM2椭圆曲线公钥密码算法[S].
内容编辑:创新研究院 吕 亮
责任编辑:创新研究院 董炳佑
本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。