您当前的位置: 首页 > 

mutourend

暂无认证

  • 2浏览

    0关注

    661博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

盲签名 blind signature

mutourend 发布时间:2021-11-06 23:01:07 ,浏览量:2

1. 引言

前序博客有:

  • Coconut:可selective disclosure credentials的门限发行签名机制
  • ECDSA VS Schnorr signature VS BLS signature
  • 密码学算法——RSA

盲签名(blind signature)为: 一种数字签名的方式,在消息内容被签名之前,对于签名者来说消息内容是不可见的。

类比例子:对文件签名就是通过在信封里放一张复写纸,签名者在信封上签名时,他的签名便透过复写纸签到文件上。

盲签名除具有普通数字签名特征之外,还额外具有如下特征:

  • 1)签名者对其所签署的消息是不可见的,即签名者不知道其所签署消息的具体内容。
  • 2)签名消息不可追踪,即当签名消息被公开时,签名者无法知道其哪次签署了该消息。

盲签名的基本流程为: 在这里插入图片描述 实现盲签名的方案主要有:

  • 基于RSA的盲签名
  • 基于BLS-signature的盲签名
2. 基于RSA的盲签名

基本背景参看:

  • 密码学算法——RSA

( e , n ) (e,n) (e,n)为公钥, d d d为私钥,其中 e d ≡ ( p − 1 ) ( q − 1 ) m o d    n ed\equiv (p-1)(q-1)\mod n ed≡(p−1)(q−1)modn。 m ∈ [ 0 , n − 1 ] m\in[0,n-1] m∈[0,n−1]为待签名消息。 为让签名者不知道所签名的消息 m m m,需引入一个参数 r r r(仅用户可知),使得 g c d ( r , n ) = 1 gcd(r,n)=1 gcd(r,n)=1。 基于RSA的盲签名流程为:

  • 1)用户blinding消息: m ′ ≡ m r e ( m o d    n ) m'\equiv mr^e(\mod n) m′≡mre(modn)
  • 2)签名者对已盲化的消息进行签名: s ′ ≡ ( m ′ ) d ( m o d    n ) s'\equiv(m')^d(\mod n) s′≡(m′)d(modn)
  • 3)用户收到签名后进行unblinding操作: s ≡ s ′ ⋅ r − 1 ( m o d    n ) s\equiv s'\cdot r^{-1}(\mod n) s≡s′⋅r−1(modn)
  • 4)任何人,采用公钥 ( e , n ) (e,n) (e,n),可对 m m m和 s s s验签: s e ≡ m e d ( m o d    n ) = m ( m o d    n ) s^e\equiv m^{ed}(\mod n)=m(\mod n) se≡med(modn)=m(modn)。

基于RSA的盲签名方案有效的原因是: 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'\cdot r^{-1}\equiv (m')^dr^{-1}\equiv m^dr^{ed}r^{-1}\equiv m^drr^{-1}\equiv m^d(\mod n) s≡s′⋅r−1≡(m′)dr−1≡mdredr−1≡mdrr−1≡md(modn)

基于RSA的盲签名存在的一个问题是: 通过RSA blinding attack,可能可利用盲签名将一个消息解密为另一消息。 因为盲签的过程等价为使用签名者使用私钥 d d d解密的过程,攻击者可提供已 经签名者公钥加密的消息 m ′ = m e m'=m^e m′=me,具体流程为:

  • 1)攻击者blinding消息: m ′ ′ ≡ m ′ r e ( m o d    n ) ≡ ( m e ( m o d    n ) ⋅ r e ) ( m o d    n ) = ( m r ) e ( m o d    n ) m''\equiv m'r^e(\mod n)\equiv (m^e(\mod n)\cdot r^e)(\mod n)=(mr)^e(\mod n) m′′≡m′re(modn)≡(me(modn)⋅re)(modn)=(mr)e(modn)
  • 2)签名者签名: s ′ ≡ ( m ′ ′ ) d ( m o d    n ) ≡ ( ( m r ) e ( m o d    n ) ) d ( m o d    n ) ≡ ( m r ) e d ( m o d    n ) ≡ m ⋅ r ( m o d    n ) s'\equiv (m'')^d(\mod n)\equiv ((mr)^e(\mod n))^d(\mod n)\equiv (mr)^{ed}(\mod n)\equiv m\cdot r (\mod n) s′≡(m′′)d(modn)≡((mr)e(modn))d(modn)≡(mr)ed(modn)≡m⋅r(modn)
  • 3)攻击者unblinding: s ≡ s ′ ⋅ r − 1 ( m o d    n ) ≡ m ( m o d    n ) ≠ m ′ s\equiv s'\cdot r^{-1}(\mod n)\equiv m(\mod n)\neq m' s≡s′⋅r−1(modn)≡m(modn)​=m′。本来发送给签名者的加密消息 m m m应只有签名者通过私钥获知,而此时攻击者借助盲签名,获知了相应的加密消息 m m m。
3. 基于BLS-signature的盲签名

基本背景参看:

  • ECDSA VS Schnorr signature VS BLS signature 在这里插入图片描述
参考资料

[1] Which blind signature schemes exist, and how do they compare? [2] 维基百科 Blind signature [3] 盲签名 blind signature 简介

关注
打赏
1664532908
查看更多评论
立即登录/注册

微信扫码登录

0.0403s