一般来说,不记名投票需要达到几件事:
1.匿名性:不可以让其他人知道你投给谁。
2.身份验证:确保投票的人是你。
3.正确性:确保你投的票是准确并记碌一票。
这三个性质中,最麻烦的就是匿名性及正确性之间的影响。
你不想让别人知道你投了什么票,但是那一票又要准确的开出"一票"。
在现实中的做法就是把所有的票都混在一起,然后再打开。
这样就可以简单达到这两个性质所要的特性。
但是在数位上,难度就比较高了。
如果投的票是公开,那只要看你投票的时间,谁的票数增长就知道你投给谁了。
就算投的票是加密的状态,在开票时候,也会把每张票的内容公布,这样也知道你投给谁
再来,你真的相信拥有解密能力的人或单位,不会事先偷看票吗?
再来,数位资料的好处就是复制容易,所以会不会有某些人的票明明没有人投,
但是利用ctrl+c跟ctrl+v就生出一大堆票。
要避免这个方法也很简单,只要在每张票上记名,就不怕重复计票的问题。
但用这个方法的同时,匿名性也就消失了。
当然这个方法可以再加强一下,就是记的不是名,记得是随机生成的乱数,
然后买票的人可以轻易的从你给的乱数,确认你投给谁。
而不记名投票的不记名就是为了避免这些事的发生,但这样绕了一大圈还是没有达到目的
总归来说,目前的线上投票不是上述的性质有几个没达到,就是相信开票方是正确的。
对!你只要相信开票方是对的,其实你什么事都不用做。
相信开票方不会偷看票,
相信开票方不会偷记名,
相信开票方计票是正确,
这样其实就可以线上投票了。
当然你可以相信开票方不会做其中几件事再去构造你的投票模型啦!
不过都已经选择相信了,干么不全信。
哦!对了,这篇还没说到线上验证的问题。
线上投票其真的没有那么难,只要相信就好了。
但你信吗?