当前位置:首页 > 物联网 > 区块链
[导读] DAEX Lab将持续为各位区块链技术爱好者与开发者带来相关的基础知识与热门讨论,深度剖析区块链底层算法、经济模型、系统架构和应用开发等方面的硬核干货与技术细节。 比特币网络可能在202

DAEX Lab将持续为各位区块链技术爱好者与开发者带来相关的基础知识与热门讨论,深度剖析区块链底层算法、经济模型、系统架构和应用开发等方面的硬核干货与技术细节。

比特币网络可能在2020年上线Schnorr签名,来替代目前正在使用的基于Secp256k1曲线的ECDSA签名算法用于多重签名。那么Schnorr签名是什么,与目前的签名算法有何不同,与目前算法相比优势如何,应用端钱包将会怎样变化,本文将为你一一介绍。

一、ECDSA签名回顾

数字签名是对签名的数字模拟。最早的数字签名算法是由Rivest、Shamir、Adleman三人于1978年提出的RSA签名算法,其安全性基于大整数分解的难解性,广泛地运用于数字认证与CA等领域。但是由于RSA算法的密钥尺寸较大,存储效率不及后来的基于椭圆曲线的签名算法。所以目前广泛运用于密码货币的签名几乎都是ECDSA算法,只是所基于的底层椭圆曲线不同。ECDSA的安全性是基于椭圆曲线离散对数难解性。

二、比特币签名算法--基于 SECP256k1 曲线的ECDSA

比特币目前所使用的签名算法是基于SECP256k1 曲线的ECDSA算法。将交易的详细信息m作消息摘要,即z=SHA256(m),对摘要z作核心签名算法。

密码学意义上安全的数字签名需要通过添加随机数来实现签名的随机性。但是根据RFC6979标准,签名算法中的随机数是从消息摘要z中提取出,这不是密码学意义上的随机数。这个方案在众多密码学代码库中,并应用于大多数区块链项目中。

另一方面,ECDSA签名方案中,对于签名并没有扩展性。换句话说,如果2个签名,必须用各自的公钥来验证各自签名的合法性,没有方法能一次性验证两个签名是否都正确。更精确地说,例如Alice拥有私钥sk,她对于消息摘要z 所作出的签名σ,只有私钥sk对应的公钥pk才能验证通过。并且如果Bob拥有私钥sk‘,sk’对应的公钥是pk‘,他对于同样的消息摘要z 所作出的签名是σ’,除非单独验证σ在pk合法并且σ‘在pk’合法,没有一种算法层面的方法能得到一个Alice和Bob共同的签名σs,并且这个签名可以验证它是由Alice和Bob共同参与并产生的,而这在比特币的多重签名环境中有强烈的需求。这种方式可以大幅度降低多签的存储资源和计算资源。

三、Schnorr签名的平凡方案

Schnorr签名可以解决上面所提出的多签消耗资源的问题。Schnorr是由Claus-Peter Schnorr在1989年美密会上提出的数字签名算法,并申请了专利保护。就签名算法本身而言,它相对于ECDSA算法具有,可证明安全性、可扩展性的特点。

主要算法实现如下:

初始化:

G:椭圆曲线基点,椭圆曲线算术群

密钥产生:

用户私钥:x

公钥:X=xG

签名:

2.1 选择随机数r

2.2 计算R=rG

2.3 计算s=r+H(X,R,m)x

2.4 输出签名(R,s)

验签:

验证sG==R+H(X,R,m)X

可以看出Schnorr签名也基于椭圆曲线算术,目前广泛部署于各大代码库、芯片指令中的底层算术模块依然可以有效利用,但是需要将再重新从底层接口封装指令来实现Schnorr算法。这点对于软件钱包升级比较便利。但是对于硬件钱包,升级成本可能较高。

四、Schnorr签名方案的线性性质

假设Alice和Bob分别对于消息m进行签名。具体地,假设Alice的公私钥对为(x1,X1=x1G),Bob的公私钥对为(x2,X2=x2G),

以上Alice和Bob分别通过各自的私钥同时对于相同的消息摘要h计算签名,得 到σ1和σ2并公布,其他验证人在获得这两个签名之后,结合Alice和Bob各自的公钥X1和X2,令X=X1+X2, σ=(R1+R2,s1+s2),那么用“公钥和”X来可以来验证“签名和”σ的合法性。这里发现,签名的结构是具有线性性质的。并且根本无法区分σ是通过求和的方式还是原始签名的方式作出的。这一性质可以用来作数字资产的多签方案来替代现在基于脚本的多签协议。

以上的方案只是为了展示Schnorr签名的线性性,并不能直接用于实际应用,因为这个方案可能会导致Rouge key Attack。

五、基于Schnorr签名的多签方案

5.1多签方案

以n-of-m多签方案为例。

1、假设有m个参与者,其中每个参与者Ui拥有公私钥对(xi,Xi=xiG)。

2、对于所有的m个参与者,令

3、对于n个参与多签的签名人,不妨设前n个为签名人。每个签名人Uj,Rj=rjG,rj是Uj选择的随机数,Uj与其他签名人共享Rj。再令

4、每个签名人Uj计算,其中m是交易数据。

5、再令

(R,s)是一n-of-m多签签名。可以在公钥(注意是n个签名者的“公钥和”)下可验签通过。

5.2 钱包服务架构

钱包分为服务器端(S端)和客户端(C端),C端将有多个逻辑点,对应多个用户。

C端:

1、m个参与者各自创建公私钥对

2、m个参与者将各自公钥发送给S端

3、n个签名人各自选择随机数rj,并计算Rj=rjG,将Rj发送给S端

4、n个签名人各自计算sj=rj+H(X,R,m)H(L,Xj)xj并发送给服务器

S端:

1、收集m个参与者的公钥,并计算

并将L和X广播发送给m个参与者。X是“公钥和”,可作为多签地址;

2、收集n个签名人的Rj,并计算

将R广播发送给n个签名人;

3、收集n个签名人的sj,并计算

将(R,s)编码在原始交易数据中,并广播到主网。

这里的S端和C端只是逻辑上的,可以在一个物理设备上既有S端也有C端,也可能是多个物理设备上的。

六、结论

对于Schnorr的线性性质以及签名可累积性质,使得在比特币多签交易的执 行中,不需 要过多的用户签名数据,只需要“签名和”与“公钥和”即可验证交易合法性。这会让比特币的多签交易大小大幅降低,从而区块能容纳的多签交易数量得到较大提高。以2-3多签为例,目前比特币多签的定脚本需要3个公钥地址,这部分会被压缩为脚本,所以升级之后大小无变化,但是解锁脚本需要2个公钥与2个签名,在升级为Schnorr之后,只需要一个“公钥和”与“签名和”。对于更通用的n-m多签,目前比特币多签的解锁脚本需要n个公钥与n个签名,Schnorr签名依然只需要一个“公钥和”与一个“签名和”。也就是说签名人越多,Schnorr签名的空间利用率越高。

数字资产的存储是DAEX生态的重要环节,为了及时响应比特币的这次重要的底层升级,DAEX正在积极研发和升级自己的软硬件钱包,会在比特币主网上线Schnorr签名的第一时间支持Schnorr多签。如果Schnorr签名在比特币上的创新获得成功,我们可以想象将会有更多的数字资产支持Schnorr多签,我们会在积极地支持用户运用Schnorr多签来保护自己的数字资产。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭