如果需要以某种办法切断投票者与选票的关系,同时仍能保持鉴别,就需要使用盲签名协议。
(1)每个投票者产生10个消息集,每个集合对每一种可能结果都有一张有效选票(例如,如果选票是一个“Yes”或“No”,则每个集合中包含两张选票,一张“Yes”且另一张“No”)。在同一个集合中,每条消息也包含一个相同的随机产生的识别号,这个数要大到足以避免和别的投票者重复。
(2)每个投票者使用盲因子隐蔽所有的消息,并把它们送给CTF。
(3)CTF检查它的数据库以保证投票者先前不曾以他们的签名提交过隐蔽好的选票。它打开9个集合,并索取对应的盲因子,以检查它们是否正确形成,然后它分别签名余下的那个集合中的每一条消息。接着把它们送还给投票者,并把投票者的名字存在它的数据库中。
(4)投票者除去这些消息的隐蔽,留下由CTF签名的一组选票(这些选票签了名,但未加密,故投票者能轻易地知道哪张选票是“Yes”及哪张是“No”)。
(5)投票者选择其中一张选票,并用CTF的公开密钥对它加密。
(6)投票者投出他们的选票。(www.daowen.com)
(7)CTF将选票解密,检查签名,检查它的数据库是否有重复的识别号,保存这个序号并将选票制表。公布选举结果和每个序号及其相关的选票。
一个恶意的投票者,我们不妨称之为Mallory,他不可能欺骗这个系统。盲签名协议确保他的选票是独一无二的。如果他试图在同一次选举中投两次票,则CTF将会在第(7)步中发现重复的识别号并把第二张选票扔掉。如果他试图在第(2)步中得到多张签了名的选票,则CTF将在第(3)步中发现这一点。因为Mallory不知道这个机构的私钥,故他也不能产生他自己的选票。同样他也不能截取和改变其他人的选票。
第(3)步的分割—选择协议是为了保证选票的唯一性。没有这一步,Mallory可以制造出大量相同的选票,除了识别号不同,这些选票全都有效。
一个恶意的CTF不可能了解个人如何投票。因为盲签名协议防止了这个机构在人们投票前看到选票上的识别码,所以CTF无法把它签名的隐蔽好的选票与最终投出的选票联系起来。公布系列号清单和它们的相关选票使得投票者能肯定他们的选票被正确地统计制表。
这里仍然有问题。如果第(6)步不是匿名的,CTF能记录下谁投了哪张选票,那么它就能知道谁投谁的票。但是,如果它收到的选票在一个锁着的选票箱里,并且随后把它们制表,则它就不能记录谁投了哪张选票。另外,虽然CTF不能把选票同个人联系起来,但它能产生大量签名的有效选票,供它自己进行欺骗。而且如果Alice发现CTF修改了她的选票,她没有办法证明。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。