1. 上司B能否推导出特工A最终的掩护名?
整个流程都使用同一种加密方法进行加密,得到的是10份不同的密文。这种加密方法对明文的变化很敏感,即使两份证明中仅有两个字不同,那密文也会显得毫无关系,这叫做
“雪崩”
效应,即一丁点的扰动就会引起结果巨大的差别。
如果没有这种特性,那特工A加密后的10份密文会非常相似,只有个别位置不同。上司B当然会知道不同之处就是掩护名的密文,B获得了10份掩护名的密文及一一对应的9份掩护名的明文,会很容易地根据这些规律推导出他签字盖章的那份证明的掩护名的明文。
而有了雪崩效应,B就找不出掩护名所对应的密文是哪个了,A也就安全了。
2. 每一个密文如何保证对应一种解法?
如果对于同一个密文有两种不同的解法,即解法1和解法2,那证明就会出现信息错误,这其中涉及
单向函数
问题。
单向函数给定了被除数和除数,这样一来余数就很容易确定。例如,被除数4除以除数3,余数是1,但给定了除数3和余数1,被除数则会有无穷多个。也就是说,正向推很容易得到确定解,反向推难以得到确定解,这就是一种单向函数。
上司B规定特工A必须使用单向函数加密,这就保证了A不可能有第二种解法。
3. 上司B如何放心?
只要特工A捣鬼了1份以上(不含)的证明,那么当场解开9份后一定会被发现;而假如A只捣鬼了1张,那么上司B恰巧没抽到的概率只占1/10,因此A欺骗成功的唯一机会十分渺茫。
为避免欺骗的发生,B事先跟A约定了一个严重的惩罚条例:只要发现A作弊就开除甚至法办。如果B还不放心,可以要求A写100份甚至更多的证明,直到B认定A不会为了这么小的可能性而去冒这么大的风险。
在盲签名应用过程中,10个样本是极少的,实际样本量可能有几百万个之多。几百万分之一的可能性才能获益,在绝大多数情况下会受到严惩的事,但凡有一点理智的人都是不会干的。因此,
用盲签名保证参与者密码协议的匿名性非常可靠。