本体技术视点 | 为什么 BIP - 340 选择引入 Schnorr 签名算法?

图片

图片

引言

备受瞩目的技术升级 Taproot 软分叉将于最近激活,激活高度为 709632,距今已不足 500 个区块。此次升级包括三个改进提案,分别是 BIP - 340、BIP - 341 和 BIP - 342。其中,BIP - 340 引入了 Schnorr 签名,BIP - 342 结合先前的技术,制定了隔离见证 V1 版的花费规则,而 BIP - 342 则对前面脚本更新后的验证方式做了指导。今天,我们就一起来了解下 BIP - 340 中提到的 Schnorr 签名。

Schnorr 签名

Schnorr 签名是由德国著名密码学家 Claus Schnorr 在上世纪八十年代发明的一种数字签名算法。该算法一直受专利保护,直到 2008 年才到期。和其它数字签名算法一样,Schnorr 算法也包括三个步骤:

  • 密钥生成。该步骤的输入是一个安全参数,比如签名长度。它的输出是一个公私钥对,其中私钥用来签名,公钥用来验证签名;

  • 签名。该步骤的输入是消息和私钥,输出是用该私钥对该消息的签名结果

  • 验签。该步骤的输入是消息和公钥,输出是一个比特,用来指示该签名是否通过验证。

*在上面的步骤描述中,我们省略了公开参数的描述。

Schnorr 签名算法也是定义在群上:

假定我们拥有一个素数阶  的群 ,它的生成元是 ,并且该群上离散对数问题是困难的。另外,假定存在一个密码学哈希函数 ,任意比特串经过该哈希函数作用后,输出的哈希摘要在  中。

这里需要指出的是,在 BIP - 340 的实现中,Schnorr 算法的使用方式要比我们下面描述的复杂,但核心就是基于下面这些步骤:

正确性与安全性

可以看到 Schnorr 签名算法非常简单高效。Schorr 签名算法是将密码学中著名的 Fiat-Shamir 转换应用到 Schnorr 身份鉴别协议转换而来。算法的正确性显而易见,它的安全性也在相应的安全模型下得到了证明。

同时,就像 BIP - 340 中指出的一样,Schnorr 签名不存在延展性的问题。

图片

我们在前面的技术视点中讲过,ECDSA 具有延展性,即可以从一个 ECDSA 签名中快速推出另外一个对相同消息的有效签名结果。为了防止延展性,一般区块链系统都对 ECDSA 签名结果进行了限定。而采用 Schnorr 签名不存在这样的隐患。

另外,我们前面的技术视点也对 ECDSA 签名时随机数重用的问题进行了分析,得出了同一个签名者使用 ECDSA 签名算法对不同消息进行签名时,重用随机数将泄漏用户私钥。在 Schnorr 签名中,我们可以看到,重用随机数的安全威胁依然存在。假定 () 和 () 是两个采用相同随机数  的签名,那么有:

从该式中很容易推导出用户私钥 。因此,在使用 Schnorr 签名时,也必须避免随机数重用。

结语

Schnorr 签名算法的引进给区块链系统带来了更多优秀的特性,比如 BIP - 340 中提到的更具隐私性的多签方案等。

我们也将在以后的技术视点中对 Schnorr 签名算法在区块链系统中的应用作进一步了解。


了解最新资讯,参与精彩活动,欢迎加入本体中文电报群!扫描下方二维码或复制链接即可加入:

https://t.me/OntologyNetworkCN

图片

猜你喜欢

转载自blog.csdn.net/ontologycoding/article/details/121287631