5.3 盲签名
数字签名协议的一个基本特征是文件的签署者知道他们在签署什么。这是个好的构想,除非当我们不想让他们知道时。
有时候我们想要别人签署一个他们从未看过其内容的文件。也有办法让签名者能大体知道他们要签什么,只不过不准确而已。
完全盲签名
Bob是一个公证员,Alice要他签一个文件,但又不想让他知道他在签什么。Bob不关心文件中说些什么,他只是证明他在某一时刻公证过这个文件。他愿意这样进行:
(1)Alice取出文件并将它乘以一个随机值,这个随机值称为盲因子;
(2)Alice送这份隐蔽好的文件给Bob;
(3)Bob在这个隐蔽好的文件上签名;
(4)Alice将其除以隐蔽因子,留下Bob签过的原始文件。
只有当签名函数和乘法函数是可交换时,这个协议才能有效。如果不是,有别的方法可代替乘法来修改文件。相关的算法出现在23.12节中。现在,假设运算是乘法,并且所有数学上的要求都满足。
Bob能进行欺骗吗?他能收集到他所签的文件的任何信息吗?如果盲因子是真正随机的并使隐蔽文件真正随机的,那么他不能。在步骤(2)中,Bob签的隐蔽好的文件一点也不象Alice开始用的文件。在步骤(3)中,带有Bob签名的隐蔽好的文件也一点不象步骤(4)末的已签了名的文件。即使Bob可染指这个文件,并且文件上带有他的签名,在完成这个协议之后,他也不能证明(向他自己或任何其他人)他在那个特殊的协议中签了这个文件。他知道他的签名是有效的。他也可以象其他人一样验证他的签名。但是,他没有办法把已签了名的文件和他在协议中收到的任何信息相关联。如果他用这个协议签了一百万份文件,他照样没有办法知道在哪种情况下他签了哪一份文件。
完全盲签名的性质是:
——Bob在文件上的签名是有效的。签名就是Bob签署这份文件的证据。如果把文件给Bob看,Bob确信他签署过这份文件。在2.6节中也讨论过的数字签名具有的所有其他性质。
——Bob不能把签署文件的行为与签署了的文件相关联。即使他记下了他所作的每一个盲签名,他也不能确定他在什么时候签署了该文件。
Eve在中间观看了这个协议,他得到的信息甚至比Bob还少。
盲签名
用完全盲签名协议,Alice能让Bob签任何东西:“Bob欠Alice一百万美元”,“Bob欠Alice的头生子”,“Bob欠Alice一袋软糖。”可能的事远远不止于此。这个协议在许多场合都无用。
然而,有一个办法可以让Bob知道他在签什么,同时仍保持盲签名的有用性质。这个协议的核心是分割选择技术,考虑一个例子,每天很多人进入这个国家,而移民局要确信他们没有走私可卡因。官员们可以搜查每一个人,但他们换用了一种概率解决办法。他们检查入境人中的十分之一。十个人中有一个人的行李被检查,其余的九个畅通无阻。长期的走私犯会在大多数时间里逍遥法外,但他们有10%的机会被抓住。并且如果法院制度有效,则抓住一次的处罚将远远超出其它九次所得到的。
如果移民局想增大抓住走私犯的可能性,他们将不得不搜查更多的人。如果他们要减少这种可能性,他们只须搜查少量的人。通过操纵概率,他们可以控制协议抓住走私犯的成功程度。
盲签名协议以类似的方式发挥作用。Bob将得到一大堆不同的隐蔽好的文件,他打开即检查除一个文件以外的所有文件,然后对最后一个文件签名。
把隐蔽文件想象为装在信封里,隐蔽文件的过程就是把文件装进信封,去除隐蔽因子就是打开信封。当文件在信封里时,没人能读它。文件则是用一张复写纸签署在信封里:当签名人签署信封时,他的签名通过复写纸也签在了文件上。
这个剧情涉及到一组反间谍人员。他们的身份是秘密的,甚至反间谍机构也不知道他们是谁。这个机构的头子想给每个特工一份签名的文件,文件上写有:“这个签名文件的持有人(这里插入特工的化名)享有完全的外交豁免权。”所有的特工有他们自己的化名名单,故这个机构不能仅仅是分发签名文件。特工们不想把他们的化名送给所属机构,敌方或许已经破坏了这个机构的计算机。另一方面,机构也不想盲目地签特工送来的文件。聪明的特工可能会代之一条消息,象:“特工(名字)已经退休并获得一年一百万美元的养老金。签名:总统先生”。在这种情况下,盲签名可能是有用的。
假设所有特工都有十个可能的化名,这些化名都是他们自己选的,别人不知道。同时假设特工们并不关心他们将在哪个化名下得到外交豁免权。再假设这个机构的计算机是情报局大型情报计算机ALICE,我们的特定代理部门是波哥大行动局:BOB。
(1)BOB准备了n份文件,每一个使用不同的化名,并给予那个特工外交豁免权。
(2)BOB用不同的盲因子隐蔽每个文件。
(3)BOB把这n份隐蔽好的文件给ALICE。
(4)ALICE随机选择n-1份文件并向BOB索要每份文件的盲因子。
(5)BOB向ALICE发送适当的盲因子。
(6)ALICE打开(即去掉盲因子)n-1份文件,并确信它们是正确的¾¾而不是退休授权。
(7)ALICE在第十个文件上签名并把它送给BOB。
(8)BOB去掉盲因子并读出他的新化名:“The Crimson Streek”。签署的文件在那个名字下给予他外交豁免权。
这个协议能防止BOB欺骗。他要欺骗,他必须准确地预测ALICE不会检查哪一份文件。他这样做的机会是n分之一,不是很好。ALICE也知道这一点并且有把握签一份她不可能检查的文件。用这份文件,这个协议就和先前的盲签名协议一样,并保持了它所有的匿名性质。
有一种方法可以使BOB的欺骗机会更小,在步骤(4)中,ALICE随机选择n/2份文件提出质疑,并在步骤(5)中发送给她合适的盲因子。在步骤(7)中,ALICE使所有非质疑文件一块儿相乘并签署这分大文件。在步骤(8)中,BOB去掉所有的盲因子,ALICE的签名只有在它是n/2相同文件乘积的有效签名时才是可以接受的。要欺骗BOB就得能够准确地猜测ALICE将质疑哪一个子集;其机会要比猜测ALICE不会质疑哪一份文件的机会小得多。
BOB有另一种方法进行欺骗。他可产生两份不同的文件,一份ALICE愿意签署,一份ALICE不愿签署。然后他可以找两个不同的盲因子,把每份文件变成相同的隐蔽文件。这样,如果ALICE要检查文件,BOB就给她把文件变成良性文件的盲因子;如果ALICE不要求看文件,并签署文件,则他可以使用盲因子把文件变为恶意文件。虽然这在理论上是可行的,但涉及到特定算法,使BOB能找到这样一对盲因子的机会变得微乎其微。实际上,可以使它同BOB能自己在一份任意消息上产生签名的机会一样小。这个问题在23.12节中进一步讨论。
专利
CHAUM已取得了几种盲签名的专利(见表5.1)。
TABLE 5.1
Chaum’s 盲签名专利
美国专利 |
时期 |
名称 |
4,759,063 |
7/19/88 |
盲签名系统[323] |
4,759,064 |
7/19/88 |
盲的非参与签名系统[324] |
4,914,698 |
3/3/90 |
一次显示盲签名系统[326] |
4,949,380 |
8/14/90 |
返回值盲签名系统[328] |
4,991,210 |
2/5/91 |
不可预测的盲签名系统[331] |