基于RSA的盲签名方案:
传统的 RSA 加解密方案大致过程如下:
- 加密: c ≡ m e ( m o d n ) c \equiv m^e (mod n) c≡me(modn).
- 解密: m ≡ c d ( m o d n ) m \equiv c^d (mod n) m≡cd(modn).
签名者一般是基于消息的哈希值签名的, 对于盲签名的要求就是签名者不能事先知道消息,所以这里的RSA盲签名方案做了巧妙的转变,就是首先将消息 m m m 转化(盲化)为 m ′ m^{'} m′, 在此需要一个参数 r r r , 且满足 g c d ( r , N ) = 1 gcd(r, N)=1 gcd(r,N)=1。下面是基于RSA盲签名的具体过程:
- 盲化消息: m ′ ≡ m r e ( m o d N ) m^{'} \equiv mr^e (mod N) m′≡mre(modN).
- 签名消息: s ′ ≡ ( m ′ ) d ( m o d N ) s^{'} \equiv (m^{'})^d (mod N) s′≡(m′)d(modN).
- 除盲消息: s ≡ s ′ r − 1 ( m o d N ) s \equiv s^{'}r^{-1}(mod N) s≡s′r−1(modN).
方案有效性验证: r e d ≡ r ( m o d N ) r^{ed} \equiv r (mod N) red≡r(modN) s ≡ s ′ r − 1 ≡ ( m ′ ) d r − 1 ≡ m d r e d r − 1 ≡ m d r r − 1 ≡ m d ( m o d N ) s \equiv s^{'}r^{-1} \equiv (m^{'})^dr^{-1} \equiv m^dr^{ed}r^{-1} \equiv m^drr^{-1} \equiv m^d(modN) s≡s′r−1≡(m′)dr−1≡mdredr−1≡mdrr−1≡md(modN)