欢迎关注“blocksight”公众号,获取更多内容。原文链接https://mp.weixin.qq.com/s/Vm9v3Jd_sy82yNleVatQWQ
CSDN Markdown显示有点问题。
写在前面
本文接着前一篇BLS密钥聚合,讲下原始的聚合密钥签名可能出现的问题,需要一些背景知识铺垫,以Schnorr签名为例来说明,对此不熟悉的可先参考相关文章:Schnorr签名与椭圆曲线 和Schnorr密钥聚合
密钥消除攻击
在Schnorr密钥聚合一文中,是最简单的聚合方式,现在可以进一步说下了。
这种方式的前提是要求参与者都是诚实的,实际实现中要加入额外的公钥验证,否则会出现安全问题。
下面说下可能的安全问题:
假设有两个参与者A和B,分别是二者的公钥。
假设B不诚实,参与密钥聚合过程中,提供假的公钥 = , 导致聚合公钥:
P = ,
这样就控制了聚合公钥成为自己的公钥,从而只用B自己的签名来覆盖A的签名,本来需要A,B共同签名的交易,现在只要B单独签名(伪造聚合签名)就可以了。
这种攻击可称为“密钥消除攻击”,亦属于“Rogue Key Attacks”。
简单的解决方案是在密钥聚合操作中,参与者提供公钥所有权证明,即签署任意消息,但这会增加交互过程,如果这个所有权证明也放到区块链上,增