Security 匿名在线投票系统

Security 匿名在线投票系统,security,voting,web-based,Security,Voting,Web Based,我是一个有几十名成员的团体。我写了一个快速网络投票系统,现在我想给它添加一些“安全性”元素。我正在尽可能的赤裸裸。我所做的是让用户在投票时必须键入一个秘密字符串(例如GUID),我已将该字符串存储在数据库中 我想到的向用户分发机密的最安全的方法是在数据库中创建一组机密字符串,打印出来并带到会议上,然后让人们从帽子里拿出一个秘密。通过这种方式,我相信我得到了两个主要好处:(1)作为投票系统的作者,我无法确定哪些人投了什么票(也不会有其他人投了什么票,只有持有秘密的人才能看到/更改该秘密必须投的票)

我是一个有几十名成员的团体。我写了一个快速网络投票系统,现在我想给它添加一些“安全性”元素。我正在尽可能的赤裸裸。我所做的是让用户在投票时必须键入一个秘密字符串(例如GUID),我已将该字符串存储在数据库中

我想到的向用户分发机密的最安全的方法是在数据库中创建一组机密字符串,打印出来并带到会议上,然后让人们从帽子里拿出一个秘密。通过这种方式,我相信我得到了两个主要好处:(1)作为投票系统的作者,我无法确定哪些人投了什么票(也不会有其他人投了什么票,只有持有秘密的人才能看到/更改该秘密必须投的票),以及(2)不“只是任何人”可以去投票,因为有效的秘密是先验的

是否有一种合理的方法来模拟实际存在的、从帽子中抽取的过程,并且不损害上述原则好处。也许这是不可能做到的,在某一点上,必须要有信任,或者我必须坚持让某人亲自在场来“提取”一个秘密(同时我保留那些被给予个人秘密的个人的记录)

我也不知道如果有人声称丢失了他们的秘密该怎么办,因为如果他们不诚实,而我只是让他们提取一个新的秘密,他们实际上会有两张选票。如果不知道“丢失”的秘密是什么,我就不能进去删除与之相关的选票(如果有的话)


我的立场是,我认为我最好的选择是让人们为每一次投票提取新的秘密,并通过实际存在传播秘密。有没有一种更优雅/自动化的方法可以实现我还不知道的上述好处?

当他们访问站点时,删除一个具有唯一ID的cookie。但是,如果他们清理了饼干,你就完蛋了。

这是一个难题。一般来说,良好的电子投票系统是一个难题。关于他们的文献很多。一个好的开始是阅读你能找到的每一篇论文:-)

你正在处理无记名投票的要求

正如你自己指出的那样,你的系统有重要的局限性,但我认为不可能做得更好

问题是把秘密(代币)分发给选民,这样你,选举当局,就不知道谁得到了哪个秘密,所有的选民都会相信。最后一部分是问题所在。一次有摘帽子协议的物理会议就可以做到这一点,因为选民可以见证并证明你没有作弊(在泄露秘密时看秘密)。我无法想象有任何协议允许你在一个远程位置做同样的工作。例如,您可以生成秘密并将其交给第三方,第三方将其洗牌并分发给选民,但随后每个人都必须信任该第三方。另一个例子是,你可以通过匿名电子邮件地址传播秘密,但你不能确保只有授权的选民才能获得秘密。我看不出有什么解决办法。即使是帽子协议也是脆弱的,除非从第一次挑选到最后一次挑选一直监视戴帽子的人

所以问题是,既然你要亲自会面,为什么不同时进行投票呢?(反对意见:表决前开会可能比表决时更方便,等等)

至少关于选民丢失代币的部分很容易回答:你不能给他们一个新的秘密。对他们来说太糟糕了

顺便说一句,还有另一个您没有解决的要求:选民可验证性


在您的系统中,基本的选民验证非常简单:只需在选举后发布所有令牌和相应的投票。但这允许选民向其他人证明他们的选票是什么(通过在选举前分享他们的代币或对代币做出零知识承诺),而这是他们不应该做的(以防止选民被胁迫和购买选票).

一个解决方案可能是构建一个服务器端服务,当投票打开时,它会自动向每个用户发送一个随机密钥,这通常是通过URL上有参数的链接来完成的。这样一来,当他们访问该网站时,它是匿名的,但每个人都必须拥有投票的密钥。密钥以一种神秘的方式将主题和为用户生成的随机密钥结合在一起,因此不容易复制,并且密钥还存储在服务器端进行验证,以确保只使用一次。我曾经使用这种方法创建了一个轮询系统。

目前的方案听起来只不过是一个非常简陋的user/pass版本,没有其他好处(除了不必编写处理用户设置密码操作的代码)。更优雅的是一个常规的用户/通行证方案。@Cheekysoft我不希望投票可以追溯到用户,但我希望用户能够更改他们的投票-有点像一个陷阱22。。。该方案还避免了“登录”,这可能会让人对投票的匿名性产生怀疑。最好调整问题,以表明你想要(接近)一个完全匿名的投票机制。只是随机套用,但折衷的办法是暂时记录对其用户的每次投票,直到他们执行“锁定”,然后删除关系并禁止任何进一步的思想改变。@Cheekysoft最终用户不能相信“锁定”这个功能确实可以消除广告中提到的关系。快速评论-如果有人丢失了它的秘密,那么所有选民的秘密都需要更新,而不仅仅是一个选民的秘密。否则,如果你知道所有可能的秘密