揭秘CodeChain中的Schnorr签名

曲速未来安全区
曲速未来安全区 机构得得号

Oct 22, 2018 专注于为读者提供区块链安全领域最新讯息

摘要: Schnorr签名是椭圆曲线数字签名,一系列连接私钥、公钥和签名的数学规则,它是ECDSA的替代品,也在CodeChain中实现。

Schnorr,是一种签名算法:一系列连接私钥、公钥和签名的数学规则,Schnorr来源于它的发明人的姓名Claus-Peter Schnorr。很多密码学家认为Schnorr签名在相关应用中是最好的,因为它有很高水平的正确性,没有延展性问题,验证速度相当快,最重要的是支持多重签名:可以把多个签名聚合成一个新的签名。

Schnorr签名是椭圆曲线数字签名,它是ECDSA的替代品,也在CodeChain中实现。

首先,Schnorr签名的四大优势如下:

  • ​Schnorr签名比ECDSA更容易操作,速度更快。ECDSA在计算中具有模块化逆和点乘的繁重操作,而Schnorr签名相对于ECDSA的操作相对较少。
  • 与ECDSA相比,Schnorr签名具有较小的签名大小。ECDSA签名包括支持公钥恢复的恢复参数。具有隐式Y坐标的Schnorr签名允许在没有恢复参数的情况下恢复公钥。
  • 可以使用Schnorr签名执行批量验证,即同时验证一个块中的签名。这是由于Schnorr签名的线性,使得允许添加多个验证方程而没有问题。以这种方式,一次验证所有签名可以减少点乘法的数量。 
  • Schnorr签名的引入减少了多重签名的大小。当多个人加入multisig时,大多数区块链会逐个存储他们的签名。这更快地处理签名签名,但是,验证很慢并且签名的大小随参与者的数量线性增加。如果使用Schnorr签名,则可以使用具有常量签名大小的多个多重签名方案。代表性方案是MuSig。

CodeChain上的Schnorr签名实现

CodeChain使用在比特币的libsecp256k1中实验性实现的Schnorr签名代码。为了实际使用Rust,在此使用一个名为rust-secp256k1的Rust包装器。

开始在CodeChain的JavaScript Primitives中提供了Schnorr签名的简单实现,基于此,然后创建了JavaScript SDK和Keystore的Schnorr版本。CodeChain和SDK的Schnorr版本已经过测试,可以在从ECDSA移至Schnorr时传递所有现有测试,而无需对现有代码进行任何更改。

CodeChain基于Schnorr签名的多重签名

如前所述,MuSig具有m-of-m多重签名方案,其优点是不需要单独的签名验证实现,并且可以以与验证单个签名相同的方式进行验证。由于在输入Schnorr签名时可以使用MuSig,因此CodeChain将通过JavaScript SDK和RPC支持MuSig签名签名。

此外,CodeChain将利用使用MuSig的树签名来支持m-of-n阈值签名。树签名只能使用锁定脚本创建,不需要额外的实现。它们还具有更快验证的优势。对于CodeChain,Tree签名的锁定脚本作为标准脚本包含在内,SDK和RPC将支持签名签名,就像MuSig一样。

通过使用Schnorr签名,不仅可以加强隐私,最重要的是可以降低每个人的交易费用。实际上,为了使用最优隐私选项,需要支付一个成本,这只是一个人人可以选择的选项,它大大加强了隐私的保护。

(作者:曲速未来安全区,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 曲速未来安全区 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信