LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 链动精灵丨一种基于Schnoor算法的比特币多签

链动精灵丨一种基于Schnoor算法的比特币多签

2021-01-19 链动精灵科技 来源:区块链网络

链动精灵丨一种基于 Schnoor 算法的比特币多签

近日比特币核心客户端发布了新的一个大版本,这次发布主要带来了 Schnorr 签名 Taproot 技术。Schnorr 是一项优雅,简洁,可以提升交易隐私性,节省空间,同时还能实现聚合多签的一种的签名算法。同时它有别于传统的 ESDSA 签名技术,其在技术及实现方式上有着明显的特点,目前已经较广泛的应用在不同公链的不同环节上。

ECDSA签名回顾

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

?特币签名算法——

基于 SECP256k1 曲线的ECDSA

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

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

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),

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

基于Schnorr签名的多签?案

1.多签?案

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

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

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

Schnoor签名算法的好处

Schnorr 开发者Andrew Poelstra认为,人们之所以对Schnoor感兴趣,是因为它提高了比特币的可伸缩性,并允许人们创建具有非常多参与者的多签交易,这里边的参与者不仅指多个人,也可能是Liquid网络、闪电网络、智能合约等等。

此外,Andrew 认为Schnorr 签名在结合Taproot 和Scriptless Scripts后,会让所有比特币交易看起来都一样,无论这是一个普通交易还是一个复杂交易,这种方式将极大改善比特币的隐私情况。

这些优势源于在多签的情况下,如果使用的是ECDSA,用N个公钥加锁,就需要有与之对应的N个签名来做验证解锁,验证的工作也需要进行N次;如果使用的是Schnorr,N个公钥可以聚合为一个公钥,验证时也只需用一个聚合签名做一次验证。

这种「线性」的特质让Schnorr在性能、体积、隐私等方面均优于ECDSA。

结论

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

更多区块链知识请关注微信公众号:链动精灵科技

抖音号:链动精灵

—-

编译者/作者:链动精灵科技

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...