最近持续读比特币白皮书,正在准备一系列比特币的视频,希望大家关注。 比特币架构的核心——数字签名 通过签名,用户才能发送或接收比特币。中本聪在《比特币白皮书:一种点对点的电子现金系统》第二章《交易》里定义:
当初,有许多签名方案可供选用。其中,比较突出的是 RSA,ECDSA 和 Schnorr 。 昔日,ECDSA 算法胜出 RSA 算法的密钥,尺寸较大、存储效率较低。与 3072 位的 RSA 密钥相比,256位 的ECDSA 密钥,具有相同的安全性。 Schnorr 算法,是密码学家 Claus-Peter Schnorr 在1989年提出的数字签名算法,并申请了专利保护。虽然,相对于 ECDSA 算法,Schnorr 算法更安全、更具扩展性,但是因为之前的专利保护(该专利保护在2008年2月过期)Schnorr 算法并没有普及,没有被标准化,也没有被广泛采用。 最终,中本聪选择了 开源的、被标准化的、被广泛采用的 的 ECDSA ( 椭圆曲线数字签名算法)。当时,ECDSA 已包含在互联网广泛使用的 OpenSSL 安全工具集中。 如今,Schnorr 算法卷土重来 多重签名的需求 最初的比特币,只能用一个私钥签署交易。无论是谁,只要获得该私钥,就能够支配对应公钥名下的比特币。然而,一个安全可靠的系统必须具备单点故障免疫(单点故障,single point of failure,缩写SPOF,是指系统中的一点失效,就会让整个系统无法运作)。如果一旦丢失或泄露私钥,就失去了对其比特币的合法拥有权,这对大额账户来说,相当不友好。 于是,2011年12月20日,比特币核心开发团队,在比特币核心代码里,添加了多重签名功能。 多重签名是指一个交易需要两个或者更多签名才能生效。多一个签名,多一份保障。 比如,使用多重签名技术,小明、小张和隔壁老王,三人共同监管1个 BTC,如果要动用这个 BTC ,至少需要他们中的两人同意。就算小明的私钥被盗,这个 BTC 还是安全的。尽管黑客掌握了小明的私钥,他也无法转出这个 BTC,而小张和老王可以共同签名转走它。 ECDSA 算法不适合多重签名 但是,ECDSA 算法不适合多重签名。因为它不具备扩展性。 比如,3人中的2人签名,必须用各自的公钥来验证各自签名的合法性,不能一次性验证两个签名是否都正确。 比如,小张的私钥 sk1,签名 σ1,只有私钥 sk1 对应的公钥 pk1 才能验证通过。老王的私钥sk2,签名 σ2,只有私钥 sk2 对应的公钥 pk2 才能验证通过。 最初,多重签名支持密钥数为3个,后来扩展到最多支持15个。如今大量的联合或托管账户使用多重签名,大量的比特币交易使用了多重签名。而 ECDSA 在多签时,占用了太多的存储资源和计算资源。 同时,多重签名的地址以数字“3”开头,采用 ECDSA 多签,入侵者可以识别多重签名交易,还可以看到参与者的所有公钥,非常不利于保护隐私。
Schnorr 算法更适合多重签名 与 ECDSA 相比,Schnorr 签名 有如下优点: 更安全:Schnorr签名有安全性证明——假设椭圆曲线离散对数问题(ECDLP)很难,则在随机预言模型中可以轻松证明 Schnorr 签名的安全性。ECDSA 不存在此类证明。 不可恶意攻击。ECDSA 签名是可延展的,可以将给定公钥和消息的现有有效签名,更改为对同一密钥和消息有效的另一个签名。比特币一直存在延展性攻击,直到 SegWit 激活(使用 Segwit 交易)后才得以修复。BIP62 和 BIP66 对此有详细描述。而 Schnorr 签名,证明是不可被恶意篡改的。 线性。Schnorr签名算法是线性的!这点非常酷,基于这点可衍生出许多应用,其中最重要的就是多重签名。多签时,采用 ECDSA ,就会有 N 个签名,验证同样需要做 N 次。 但是,如果使用 Schnorr,由于线性特性,则可以进行签名叠加,仅保留最终的叠加签名。同一个交易无论输入数量多少,均可叠加为一个签名,一次验证即可。 比如:小明、小张、老王的多重签名如果设定签名数为3,在 ECDSA 中,需要签名 3次,验证3次;而在 Schnorr 中,可以三方协作,产生对其公钥总和有效的签名,而且验证一次即可。 极大的提高了效率和隐私。 密钥聚合 借助 Schnorr 签名方案,多签环境中的所有参与者,都可以将其密钥组合为 “单个密钥”。要花费这笔资金,只能使用这个密钥。此属性称为“密钥聚合( key aggregation )”。 为了验证所有密钥的总和,比特币核心引入一个名为 OP_CHECKDLS 的新代码,它包括离散日志签名(DLS)验证系统,以使用更少的操作码更有效地验证签名,执行效率更高。 密钥聚合属性,也可以在单个交易事务中使用。在该交易,只需一次签名验证,即可花费所有输入。 通过密钥聚合,Schnorr签名方案不仅通过减少所需的签名数量,释放了一些空间,而且还为希望保护了使用多重签名方案的用户的信息。 交互式聚合签名 在Schnorr签名方案下,可以将一笔交易的所有输入签名组合为称为 IAS(“Interactive Aggregate Signature,交互式聚合签名)的单个签名,该签名代表所有输入签名的总和。 IAS 可用于交易中的所有输入。使用 OP_CHECKDLS 很容易验证新签名。一笔比特币交易,通常具有多个输入。过去,每个输入都需要单独签名才能成功完成交易。而 IAS 签名可以验证所有输入。 一些分析家说,这种交叉输入聚合,可以释放多达 25%的空间,可用于容纳更多交易,从而增加每秒的交易数量。 结论 2014年,比特币核心开始讨论如何实现 Schnorr 签名。经过深入研究,Pieter Wuille(著名的比特币核心开发人员之一)提交 Schnorr BIP 。 目前,Schnorr 签名方案已经实现标准化。最著名、被广泛采用的 Schnorr 签名方案是 ed25519,已被许多加密货币采用。 Schnorr 签名方案、及密钥聚合、以及 IAS 签名 ,通过更少的签名和更易于验证的方式,优化了比特币交易,更好的保护了交易的隐私性,更具扩展性,改善了比特币的架构,为更健康的比特币生态系统打下基础。 参考文章 比特币多重签名的现状 「注意」 我是金马,别人离开币圈的时候,正是我深耕的时候。 —- 编译者/作者:金马 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
比特币签名的未来:Schnorr 签名、密钥聚合和交互式聚合签名(IAS)
2020-01-20 金马 来源:区块链网络
LOADING...
相关阅读:
- “数字货币”最大亮点,让一部分先富起来!2020-08-06
- XONE:2020年黑马交易所的破局之路2020-08-05
- Stegos首次AMA直播回顾2020-08-04
- 孙哥搞事,这个什么Aladdin也搞事?Aladdin说了是为入门级用户贴心打造的2020-08-03
- 莱特币 [LTC] 首席开发人员说,Mimblewimble Testnet将于9月启动2020-08-03