几种盲签名方案

目录

一、RSA盲签名方案

1. 初始化阶段

2.签名阶段

3.验签阶段

证明:

二、ElGamal盲签名方案

1.初始化阶段

2.签名阶段

3.验签阶段

证明:

三、Schnorr盲签名方案

1.初始化阶段

2.签名阶段

3.验签阶段

证明:

评价

一、RSA盲签名方案

1. 初始化阶段

        签名者B选取两个大素数p, q, \varphi(n)=(p-1)(q-1), 随机选取 e 满足 1<e<\varphi(n) ,且 gcd(e, n) = 1 ,计算d 满足de\equiv 1 \mod \varphi(n) , B的公钥为 (n, e) ,私钥为 d , h(·)是Hash函数。

2.签名阶段

  1. 盲化: 消息拥有者A 选取随机数k ,  gcd(k, n)=1,计算m'=h(m)k^{e}\ mod \ n,并将m' 发送给签名者B.
  2. 签名: B收到m' 后,计算s'\ =(m')^{d}\ mod\ n,并将s' 发送给A.
  3. 脱盲: A接收到s' 后,计算s\ =s'k^{-1}\ mod\ n,s 是B 对m 的签名.

3.验签阶段

        接受者收到签名(m, s) 后,计算v\ =s^{e}\ mod\ n ,验证v\ =h(m) 是否成立,若成立,表示签名有效,否则无效。

证明:

签名: s'\ \equiv(m')^{d}\ \equiv(h(m)k^{e})^{d}\ \equiv [h(m)]^{d}\ (mod\ n)

脱盲:s\ \equiv s'k^{-1}\equiv [h(m)]^{d}\ (mod\ n)

验签:v\ \equiv s^{e} \equiv [h(m)]^{de} \equiv h(m)\ (mod\ n)

二、ElGamal盲签名方案

1.初始化阶段

        签名者B 首先选择一个大素数 p,然后选取生成元 g\ \epsilon\ Z_{p}^{*}, 和随机数 x\ \epsilon\ Z_{p-1}^{*}, 计算y\ =\ g^{x}\ mod\ p, 则公钥为 y、g 和 p, 私钥为 x 。A为消息 m 的提供者,B 为签名者。

2.签名阶段

  1. B 选取随机数 k \epsilon\ Z_{p-1} , 计算 r=g^{k}\ mod\ p, 并发送 r 给 A;
  2. 盲化: A 随机选取 \beta\ \epsilon\ Z_{p-1}, 计算m'=r^{\beta}m\ mod(p-1), 然后把 m' 发送给 B;
  3. 签名: B 通过 m'=xr+ks\ mod(p-1), 计算得到 s , 把签名 (m',(r,s)) 发送给A;
  4. 脱盲: A 计算 r'= r^{1-\beta}\ mod(p-1)s'=(1-\beta)^{-1}r^{-\beta}s\ mod(p-1) ;则 A 得到签名 (m,(r',s')) .

3.验签阶段

        接收者收到签名 (m,(r',s')) 后,验证 g^{m}=y^{r'}(r')^{s'}\ mod\ p 是否成立,若成立,表示签名有效,否则无效。

证明:

由于

m'=r^{\beta}m\ =\ g^{k\beta}\ mod(p-1)

s'=k^{-1}(m'-xr)\ mod(p-1)

m=r^{-\beta}m'=r^{-\beta}(xr+ks)\ mod(p-1)

则验证阶段等式右边: 

y^{r'}(r')^{s'}=g^{xr^{1-\beta}}(g^{k(1-\beta)})^{(1-\beta)^{-1}r^{-\beta}s}=g^{xr^{1-\beta}}g^{kr^{-\beta}s}

=g^{xr^{1-\beta}+kr^{-\beta}s}=g^{r^{-\beta}(xr+ks)}=g^{m}\mod p 等于等式左边

三、Schnorr盲签名方案

1.初始化阶段

        p, q 是大素数,q|(p-1) , 并且保证 Z_{p} 中求解离散对数困难;选取 g\ \epsilon\ Z_{p}^{*} ,并且g^{q}\equiv 1\ mod\ q ; 选取 x\ \epsilon\ Z_{p}^{*} 为签名私钥, y=g^{x}\ mod\ p 为签名公钥, H(·)是Hash函数; A 为消息 m 的提供者, B 为签名者。

2.签名阶段

  1. B 选取随机数 k \epsilon\ Z_{p} , 计算 r=g^{k}\ mod\ p, 并发送 r 给 A;
  2. 盲化:A 随机选取盲因子 \alpha,\beta\ \epsilon\ Z_{q}^{*}, 计算 r'=rg^{\alpha}y^{\beta}\ mod\ p ,e'=H(m,r')\ mod\ qe=e'+\beta\ mod\ q, A 将 e 传给 B;
  3. 签名:B 计算 s=xe+k\ mod\ q , 满足 g^{s}y^{-e}=r\ mod\ p, 把 s 传给 A ;
  4. 脱盲:A 计算 s'=s+\alpha\ mod\ q , 则 (e',s') 是消息 m 的盲签名。

3.验签阶段

        签名接收者通过检验等式 e'=H(m,g^{s'}y^{-e'}mod\ p)\ mod\ q 是否成立,若成立则接受,否则拒绝。

证明:

验签阶段的等式等价于验证 g^{s'}y^{-e'}=r'\ mod\ p ,

则可得  g^{s'}y^{-e'}=g^{s+\alpha}y^{\beta-e}=g^{s}y^{-e}*g^{\alpha}y^{\beta}=rg^{\alpha}y^{\beta}=r'\ mod\ p

评价

        较之于 RSA 盲签名方案, 此方案更复杂,交互的次数要更多; 较之于ElGamal盲签名方案,此方案具有更高的安全性及效率。

        此方案不能提供不可追踪性,具体攻击如下:

①签名者保存所有盲签名过程中的记录(r, e, s);

②对于每组消息及其盲签名,给定(m,e,s),签名者可计算 \alpha=s'-s\ mod\ q 和 \beta=e-e'\ mod\ q

③签名者计算并判定 e' 和 H(m, r') 是否相等;

④如果相等则找到了签名记录,否则遍历所有记录。

参考文献:

  1. [1]宋敏.盲签名技术理论及应用研究[D].山东大学,2013

  2. 【区块链与密码学】第7-2讲:经典盲签名算法(一) - 知乎
  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值