您现在的位置是:首页 >技术教程 >Threshold ECDSA——web3.0开发中的门限签名网站首页技术教程
Threshold ECDSA——web3.0开发中的门限签名
多重签名
1.联名账户,任何一个密钥都能打开账户。
2.储蓄账户,需要所有密钥才能打开账户。
3.级联账户,可以使用部分密钥做部分功能,需要所有密钥才能执行全部功能。
4.在加密货币中,多重签名通过创建一个多重签名路径来运作,并且在创建多重签名路径时,要指定与该路径关联的密钥以及签署交易需要多少把密钥。当创建了一个交易,有人用密钥对其进行签名,之后就可以给定的密钥进行验证签名。
比如创建了具有三把关联密钥的多重签名地址,并且至少需要两把密钥才能提供签名。
5.使用哪把密钥来履行交易的信息是公开的。对于某些应用场景来霁,这可能是一种优点,但是对于其他一些需要更大匿名性的场景来说,则可能是一种缺点。另外,在可以使用多少把密钥上也有一些限制。一旦创建了多重签名路径,安全策略就固定下来了。因此,则不能在一段时间之后改变策略,比如对原本要五把密钥想改成三把,它需要创建一个有着新安全环境的新多重签名路径,并把所有资金转移过去。
6.在以太坊中的运作方式有些不同,因为以太坊没有多重签名的概念。以太坊上总要有一个地址来签署一笔交易并花费 gas。但是,有一些多重签名钱包,它们基本上是智能合约,能够存储代币并且要求发起的交易需要接受某些要求,包括特定的签名配置。
注:以太坊的Gas(中文直译:气体),是以太坊上衡量工作量的计量单位,类似于每小时用了多少度电用kilowatt/hours, 千瓦/小时。以太坊上产生的各种交易、存储等活动都是需要Gas来推动的,Gas好比是燃料,推动以太坊虚拟机(EVM)来工作。
7.多重签名机制是依赖于多方单独而唯一的密钥的,在使用这些密钥来对一笔交易进行签名,签名者一个接一个地提供其签名。当验证者想要验证交易时,则需要分别检查每个签名。
门限签名
1.对于门限签名,情况有所不同,门限签名只有一把公钥,一把秘钥和一个签名。在上图中,左侧有一组签名者。每个签名者都有相同的公钥和私钥的一个唯一部分。签名者使用一种特殊的通信协议进行协作,该协议不会为了生成签名而暴露密钥,并且只会生成一个签名。现在,验证者只需检查一个签名即可确定交易是否正确。
2.门限签名有哪些不同,避免了基于契约的多重签名。有了门限签名,就可以让多方签署交易,而无需将代币锁在智能合约钱包中。其次,门限签名在链上是不可区分的。
3.在验证方面,门限签名交易比多重签名交易更便宜。多重签名需要为每个签名者创建一个新的签名,并且成本随着签名者数量的增加而增加。对于门限签名来说,只有一个签名,因此在验证方面的成本是固定的。
4.门限签名需要签名者保持在线状态。对于多重签名来说,你可以提供你的签名,然后下线,同时,其他人来了,提供了一个签名,交易就被接受了。对于门限签名,签名者需要合作(至少是一定数量的合作)才能产生签名。
T / N 门限签名方案
1.N个参与者中的任意T人(门限值),就可以计算签名。
拉格朗日插值,少于t个信息不能重构t-1次多项式,且都是普通运算,适合搬到有限域。
2.任意参与者都不知道(组内共享)私钥本身的内容。
3.参与者拥有的是私钥碎片(share of the secret)。
3.1 碎片并不是对原私钥的切片分割。
3.2 N个共享一个私钥,每个人都拥有一部分的私钥
4.计算人数少于门限T则无法构造签名。
5.如果部分碎片丢失(小于T值),私钥仍可恢复。
与多重签名的区别
1.参与签名的是私钥碎片而不完整的私钥。
2.没有也不需要在计算前先恢复私钥。
3.计算结果与直接用私钥签名没有区别。从外部接收的签名无法推断出是完整私钥签名出来,还是使用门限碎片签名出来的。
4.完整的私钥没有人知道但确定存在。
优势
1.没有单点故障。
2.遇到特殊情况仍可恢复私钥。
3.方便集成。
4.隐私保护。
4.1 传统的多重签名,比如三个用户共同控制一笔资源,当拥有两个及以上的用户就可以使用这笔资源,处理的过程中会使用A的公钥,B的公钥,A的签名,B的签名。
4.2 多重签名是可以查看到参与签名公钥。
4.3 门限签名是组内N个人中T个人参与了签名,而计算结果与直接用私钥签名没有区别,是查到签名参与者。
ICP Threshold ECDSA
1. 公钥生成
1.1 在门限签名中,密钥是以N共享方式来生成的,使得若少T方则无法知悉该密钥信息。所有方生成相同的公钥,而各自不同的密钥共享。
1.2 隐私:任意参与者都不知道(组内共享)私钥本身的内容。
2.签名
2.1 多方交互完成签名。若有N方对同一消息签名,则最终会生成一个签名。而若少于T方参与签名,则无法生成相应的签名。
2.2 各方的输入为:同一消息和各自的私钥碎片,最终的输出为签名。
3. 验签
输入为公钥、消息和签名,输出为True/False。