Schnorr签名

目前使用的最流行的签名算法是【Rivest-Shamir-Adleman(RSA)】和【数字签名算法(DSA)】。 RSA是为加密和签名而构建的,而DSA最初仅针对签名构建,但此后也支持加密。 这两种算法依赖于不同的加密假设:RSA依赖于因子分解,而DSA依赖于离散对数问题。它们都基于公私密钥对,在使用公钥验证签名时,需要使用私钥对邮件进行签名。 从技术方面来说,密钥是非常大的数字,在计算中作为可能值的数字集称为字段或组。

目前,比特币使用【椭圆曲线数字签名算法(ECDSA)】,这是对数字签名算法(DSA)的修改,用于处理椭圆曲线。 该曲线定义了用于计算的数学组,它指明密钥操作的格式和值集 ECDSA的优势在于,基于椭圆曲线加密,用户可以使用较小的密钥实现与 RSA 相同的安全性。这使 ECDSA 与比特币成为天作之合,因为较小的密钥占用空间相对也小,从而减少数据并使操作更迅捷

Schnorr签名与ECDSA签名相比具有许多优势:

  1. Schnorr签名占用空间较小 大多数 ECDSA 签名是71或72 字节,而 Schnorr 签名都是 64 字节
  2. Schnorr签名更紧凑 目前比特币的m-of-n签名方案需要m个签名的呈现和验证,而Schnorr 多签方案只需要一个签名就可以呈现和验证所有缔约方
  3. 跨输入的签名聚合 不仅可以将多签名输入的签名压缩成单个签名,还可以将来自多个输入的签名聚合到单个签名中,与 CoinJoin 结合使用时,可以让交易变得更便宜,更私密。即使没有 CoinJoin,也可大大减少交易的规模和成本。仅仅通过让用户在输入之间进行签名聚合,比特币区块链就会缩减 25%-30%

目前所使用的ECDSA,由于没有签名聚合,因此nonce可以基于正在签名的内容来确定。 但是当引入聚合时,需要一个真正的随机熵源来创建签名。 存在的问题是,当多方加入创建签名时,恶意方可以启动具有相同nonce和相同输入的两个多重签名的请求,并在完成之前中止请求,以对受害者的私钥进行逆向工程。

由于恶意方可能使用特定的 nonce 进行攻击,Blockstream 以此提出 【MuSig 解决方案】 ,其通过在签名创建过程中添加更多轮来解决问题,以确保没有人能够通过操纵随机数来伤害系统。 目前 MuSig 协议需要与签名者进行三轮协调,第一轮要求各方产生唯一的输入,并共同进行哈希运算,以确保不会使用相同的随机数来签署相同的消息。

目前正在进行联合签名的优化研究,通过使用零知识证明,以确保适当的熵,将沟通的轮数减少到两轮。

Leave a Reply

Your email address will not be published.