学习笔记
签名属性
- 信息鉴定(接收者可以验证消息的来源)
- 完整性(接收方可以验证消息自签名以来未被修改)
- 不可否认性(发送方不能错误地声称它们没有签署消息)
https://zh.wikipedia.org/wiki/%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D%E7%AE%97%E6%B3%95
DSA
- 依赖加法同态性 g^x mod p
- 依赖hash绑定特性,即不可碰撞
- 依赖离散对数难问题
- 签名是两个数字(r,s)
- 签名验证:包含求指数模,模逆元等。
https://en.wikipedia.org/wiki/Digital_Signature_Algorithm
https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm
http://www.528btc.com/blocknews/37685.html
https://medium.com/cryptoadvance/how-schnorr-signatures-may-improve-bitcoin-91655bcb4744
https://medium.com/cryptoadvance/bls-signatures-better-than-schnorr-5a7fe30ea716
Schnorr
- 依赖加法同态性
- 依赖hash绑定特性,即不可碰撞
- 依赖离散对数难问题
- 预言机模型模型算法
- 签名是一个数字一个点(R,s)
- 签名验证:两个倍乘和一个加法
○ 比ECDSA高效
- 高级特性
○ 支持批量验证,多个签名验证等于一个复杂的签名验证
§ 可以将多个签名的s减小为1个,多个签名的R不变
□ (R1,s1), (R2,s2) --> (s, R1,R2,..)
○ 支持秘钥聚合 P=P1+P2 = k1G + k2G, (R,s)=(R1+R2, s1+s2)
§ 问题
□ 需要多轮交互,先计算出公共的R=r1G+r2G..
□ 恶意秘钥攻击
□ 重复随机数会导致秘钥泄露
○ 支持Musig: P=hash(L,P1)×P1+…+hash(L,Pn)×Pn
§ 解决恶意秘钥攻击
○ 支持ring signature: 支持 1 out of n 或者 k out of n
○ 支持merkle Musig: 支持k out of n. 构造一个聚合公钥merkle tree
- 优点
○ 单次验证高效,且支持批量验证
○ 聚合秘钥以支持多重签名,无法区分是否使用了多重签名
○ 支持ring signature
- 缺点
○ 多重签名在签名时,需要需要多轮交互,依赖随机数生成器(不能重复使用随机数),支持k out of n的merkle musig中的merkle tree可能会很大
○ 不能任意聚合区块链中的签名为一个签名
BLS签名
- 优点
○ 不存在schnorr的缺点,可以任意组合区块链签名为一个签名
§ 聚合签名可以减小签名大小到32bytes,但仍所有的公钥需要保存,所有的公钥,且仍需要计算n+1次pairing函数
□ Size: n*32 -> 32bytes
□ Time: 2*n -> n+1次pairing函数
○ 更小的签名只是一个点S
○ 上面这两个特性,可以减小区块链中签名数据的存储
- 缺点
○ 执行效率低
○ 引入了pairing安全假设
- 签名G * (k*Point(m)) = kG * Point(m)
- 依赖加法同态性
- 依赖hash绑定特性,即不可碰撞
- 依赖离散对数难问题
- 依赖pairing安全假设
- 不依赖随机性,没有随机性
- 验证签名:pairing check
○ 验证签名效率低
- 高级特性
○ 支持任意签名的聚合
○ 支持秘钥聚合: P=P1+P2+P3, S=S1+S2+S3
○ 支持multi-sign: n out of n
○ 支持threshold sign: k out of n
其它
Ring signature
- schnorr
Multi-signature
- Schnorr
- BLS
Thread signature
- Schnorr
- BLS
Blind signature
- Blind RSA signatures
Dangers of RSA blind signing: Due to this multiplicative property of RSA, the same key should never be used for both encryption and signing purposes.
https://blog.csdn.net/win_in_action/article/details/39156579
https://en.wikipedia.org/wiki/Blind_signature
RSA blinding used in Coinshuffle