今天研究了一下盲签名,参考了https://en.wikipedia.org/wiki/Blind_signature
考虑一个需求:Alice需要Bob对消息MSG做数字签名,但是Alice又不想让Bob知道MSG,怎么做到?这就是盲签名(Blind signature)要解决的问题。具体的操作流程:
1、Alice引入一个盲化因子factor对MSG进行盲化,得到BMSG。我的理解,盲化就是一种特殊的对称加密操作,盲化因子factor就是对称密钥,BMSG就是MSG的秘文,通过BMSG无法推导出MSG;
2、Alice发送BMSG到Bob,Bob对BMSG进行数字签名,签名结果BMSG-signature返回给Alice;
3、Alice用自己拥有的信息(MSG、factor、BMSG-signature)计算出MSG-signature,这个签名和Bob直接对MSG的签名结果是等效的,可以用Bob的公钥验证通过;
在这个过程中,Bob无法得知MSG是什么,Bob也不知道自己什么时候对MSG做了签名,即若Bob进行了多次签名,当公布出某一具体的MSG-signature时,Bob并不知道这个签名是自己在那一次进行签署的。另一个优化后的操作是对MSG做哈希运算,然后对哈希值进行盲化,并进行盲签名操作,因为数字签名计算都是非对称加密运算,操作对象尺寸简短而固定可以提高计算效率。
网友评论