-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathSchnorr 签名(链芝士)
30 lines (22 loc) · 2.69 KB
/
Schnorr 签名(链芝士)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
目前使用的最流行的签名算法是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 协议需要与签名者进行三轮协调,第一轮要求各方产生唯一的输入,并共同进行哈希运算,以确保不会使用相同的随机数来签署相同的消息。
目前正在进行联合签名的优化研究,通过使用零知识证明,以确保适当的熵,将沟通的轮数减少到两轮。