盲签名

数字签名的一个基本特征就是文件签署者知道自己签署的是什么东西,这是一个习以为常的想法,但是当我们不想让签署者知道文件内容是什么或者只让文件签署者知道一点相关的内容该怎么做呢?

1,完全盲签名

Alice想让Bob签署一个文件,但是又不想让Bob知道其内容,而Bob只想证明他在某一时刻签署过这个文件,对文件内容并不感兴趣,则Alice可以这样做:

流程:

  • (1)Alice取出一个文件,并将这个文件乘以一个是随机值(这个随机值叫做盲因子),将这个文件隐藏起来。
  • (2)Alice将这个隐藏文件发给Bob。
  • (3)Bob对这个隐藏文件签名。然后再发给Alice
  • (4)Alice将其除以隐藏因子,最后只剩下留有Bob签名的原始文件。

注解:

  • 流程中使用到了两个函数,一个是乘法函数,一个是签名函数。
  • 只有当乘法函数和签名函数可交换时,这个协议才有效,不过不是,可以采用其他方法代替乘法函数。本文中采用的是乘法函数,并且假设满足所有的数学要求。

分析:

Bob能够进行欺骗吗?他能够知道他签署文件的内容吗?假设Bob在第(3)步骤中染指文件,并恶意偷看,则他只能看到隐藏文件,因为他并不知道隐藏因子是多少。

完全盲签名的性质:

  • Bob的签名是有效的,如果让Bob看到这个文件的签名,他能够确认他签署过这个文件。
  • Bob不能把签署文件的行为和签署的文件相关联,也就是说Bob无法获知文件内容。

缺点:

Alice可以让Bob签署任何文件,例如“Bob欠Alice100万元钱”等等,对Bob来说不公平。

算法:

盲签名_第1张图片
算法

2,盲签名协议

面对完全盲签名的缺点该如何改变呢?
考虑这样一个例子,古代过城门,会有很多士兵对来进城人进行盘查,如果有携带武器者,则会被扣押,现在的问题是,进城人数很多,对每一个人盘查不太现实,所以他们采用一个概率方法来解决,首先对进城人10人一盘查,10人中只盘查前九个,剩下一个畅通无阻,也就是说如果前九个没有出现任何问题,则默认第十个人是安全的。盲签名协议以类似的方式发挥作用。
Bob收到一堆隐藏文件,假设是n个,则随机对其中的n-1个文件打开检查,然后对剩下的一个文件进行签名,如果Alice想造假,那么他必须想法设法去骗Bob,然而这是不可能的,因为,他无法确定Bob会信任哪个文件而不去检查。
假设这样一个剧情,一组反间谍人员,他们的头儿想给他们每个人起个化名,但是这个化名只能他们自己知道,除他们自己以外的其他任何人都不能知道这个化名,同时,他们还得让自己那个化名被授予外交豁免权,假设特工每个人都拥有10个化名,这10个化名都是他们自己选的,他们并不关心哪个化名才会有外交豁免权。Bob为他们的代理机构,需要给Alice签名,则流程为:

流程:

  • Bob准备了n份文件,每一个使用不同的化名,并给予那个特工外交豁免权。
  • Bob用不同的盲因子隐藏每个文件,然后发给Alice。
  • Alice随机选择n-1个隐藏文件,并向Bob所要盲因子。
  • Bob向Alice发送盲因子。
  • Alice打开n-1个文件,并确认他们是正确的,并不是其他什么需要授权的文件。
  • Alice在第n个文件签名,并发送给Bob.
  • Bob收到后,去掉盲因子,可以读出他的新化名,并拥有该化名的外交豁免权。

分析:

这个流程能防止Bob欺骗,如果他欺骗Alice,就要确保Alice随机选取的n-1个文件没有包含他所欺骗的那个文件,然而这个几乎是不可能的事情。

总结:

盲签名技术发展越来越块,Chaum取得了众多的研究成果例如:非参与盲签名系统、一次显示盲签名系统等等,慢慢学吧,O(∩_∩)O

你可能感兴趣的:(盲签名)