盲签名是由David Chaum提出的一种特殊签名方式,盲签名允许消息拥有者先将消息盲化后,把盲化后的消息发送给签名者进行签名,最后消息的拥有者对签名进行去盲因子处理,得到原消息的签名。盲签名就是接收者在不让签名者获取所签署消息具体内容的情况下所采取的一种特殊的数字签名技术,盲签名需要满足如下两个特殊性质:
- 签名者不知道所签署消息的具体内容
- 当签名消息被公布后,签名者无法知道这是他哪次签署的
根据不同的公钥密码体制构造依赖于不同密码假设下的盲签名方案,通常使用的有基于RSA的盲签名算法、基于Elgamal的盲签名算法、基于ECC的盲签名算法以及最近很火的基于格的盲签名。下面依次介绍(除了基于格的盲签名,格真是太难了)。
1 基于RSA的盲签名
消息m的拥有者选取一个随机数r,使得,N为RSA中的模数,即选择一个与N互素的数,对消息m的盲化,计算如下:(其中为盲因子,e为签名者的公钥。)
消息的拥有者发送给签名者,签名者的私钥为d,公钥为e,签名者进行如下计算:
签名者将s'发送给拥有者,拥有者进行去盲因子处理,进行如下计算:
由于RSA中公私钥对的性质,使得,因此,消息m的签名是s,正确性如下: