[黑特] 我相信柯粉比较笨了!

楼主: jayfrog (寫不出coding)   2024-01-18 06:07:05
※ 引述《rdadi (不专业技术员)》之铭言:
: 不在籍的电子投票
: 还没有实行
: 或是可行性的模型
: 其实可以一直讨论
: 现在都有先进的IT跟OT技术
: 加上流程还是可以加入人工验证
: 并不是完全没有讨论的空间
如果要达到匿名投票的线上投票,以目前的的技术来看完全不可能。
我这篇完全不考虑骇客或是造假的情况发生,但光是这样,以目前的技还是不可能达到
匿名投票的线上投票。
以学术一点的用语来说,我这篇的攻击者属于半诚实的攻击者,也就是他会造你设计的
流程执行,但他会记下他所有他经手过的资料来攻击。
匿名投票主要有两个特性要达到,一是匿名,另一个则是正确计票。
匿名的意思很简单,就是不知道这张票是谁投的。但是匿名也是有分等级的。
一个是在投票的时候不知道是谁投的,再来是就算开票后,还是不知道是谁投的。
而正确计票的意思也很简单,就是每个人的票要正确且只能被计到一次。
没有正确计到有分成你的票没有被计到或是你的票被记错两种情形,所以如果要正确计票
的话,那这两种情形都要考虑进去。
而只能被计到一次,就是字面上的意思。要确保你的票只能被计到一次。
那来看看目前比较常提到的几种技术。
最简单的方法就是公钥加密。公钥加密是一种密码学上的技术,你可以将讯息用公钥加密
起来,然后只有私钥的人才有办法解密看讯息。所以只要每个人用公钥把自己的票加密给
中选会,然后中选会在开票的时候,再将票解密公布就好。不过这个方法大概会有几个问
题,首先,你没有办法确保每个人可以传几张票给你。除非有设计别的方法让每个人都只
能传一张票。不过当我可以确保每个人都只传一张,那我其实就可以知道你投的人是谁。
所以匿名性就消失了。因为我前面有说,这篇的攻击者是半诚实的攻击者,所以就不考虑
中间人攻击这种主动攻击。不过,这种纯加密的方式还蛮容易被窜改内容的。
再来是区块链,区块链的特性是不可窜改。所以只要一上链,就可以确保资料完整性。
而且区块链还有一个特性是柯文哲最爱的公开透明,你只要一上链,你的投票结果就会被
知道了。因此在设计上,通常不会直接把选票上链,而且将选票用公钥加密后,再上链。
这样一来,在开票之前,除了有私钥的人(通常是选务中心,在这应该就是中选会)可以偷
看票的结果外,其他人都没有办法知道投票结果。
之后只要在开票时候,中选会把私钥公开,让选票解密完后,就可以简单知道投票结果。
除了开票后会知道每个人投票以外这个匿名性,其他的条件都满足了。
应该会有人问说,区块链不就是匿名?那应该没有问题。
那就要看你是怎么拿到钱包的,应该是也是中选会发的,所以只要中选会记下每个人对应
的钱包位址,那就直接失去匿名性。
这个方法其实还不错,只要你相信中选会不会在投票过程偷看。
但不是每个人都相信中选会,所以有人提了一个技术叫Verifiable delay function(VDF)
VDF概念很简单,他会有一个数学式跟一个值,你必须花一定的时间,才有办法把答案算
出来。只要把答案设计成选票号码,在投票时间你没有办法知道投票结果。连中选会也
没有办法,因为他必须花时间才办法算出答案。
但,一样的问题。只要算出答案就可以知道每个人票投给谁了。不过这个方法可以预防中
选会在投票过程偷看。但还是没有办法达到开票后的匿名性。
以上的几种方法都是在设计线上投票常见方法。
基本上,所有的方法就必须要相信中选会是公正的。又或是让中选会的影响最小。
但即使是最小,还是没有办法达到一开始所说的那些条件。
至于你说的,在点餐机加隔版就看不到投票内容。
怎么会看不到,只要记下你投票的时间跟机台,再开票的时候对照数据库的时间。
我就知道你投给谁了。这就是没有开票后的匿名性。
而目前的投开票机制是要怎么达到匿名性及正确计票呢?
匿名性在实体反而简单,因为人跟票是分开的。所以只要投完票后,票就匿名了。
而在正确计票方面,选务人员会点票,他会看已领票跟末领票加起来是否等于原来给的票
这样就可以确保每张票都有被计到。不会多也不会少。
当然如果有人真的有方法可以达到上述的条件,欢迎提出来。
我应该会指出哪边的条件没有达成。

Links booklink

Contact Us: admin [ a t ] ucptt.com