V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
meeop
V2EX  ›  问与答

如何实现匿名投票?

  •  
  •   meeop · 81 天前 · 866 次点击
    这是一个创建于 81 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问了 ai,感觉方案都有缺陷

    前置条件:

    允许事先对每个人验证身份,并官方提供可能的认证信息

    要求:

    1 投票结果是准确的,即可以确定确实是有资格的 n 个人投票并投给特定提案

    2 投票是匿名的,即只能确定投票人有投票资格,而不知道具体是谁(包括主持人或者组织者也不知道)

    3 完全线上化,算法化

    其他边界条件:

    一人一票

    只能本人投票,不可代他人投票

    除非全部参与者坐到一起提供全部信息并且不撒谎,否则无法确认每一票的投票人

    假定大多数人是诚信的,少数人可能会破坏投票

    如果有破坏者,是可以在大多数人配合的情况下找到的

    11 条回复    2024-02-10 16:32:44 +08:00
    laminux29
        1
    laminux29  
       81 天前
    非常简单:

    1.官方打印一堆全局唯一的随机数字,10 - 12 位就行,不能是连续的。如果不缺钱,甚至可以做成刮刮卡形式的,要刮开才能看到随机数。

    2.随机数或刮刮卡,以抽卡的形式发放,保证每个人是随机抽取到的,不能使用发放的形式,不然大家会觉得随机数或刮刮卡上面有记号。

    3.投票时,需要输入这些随机数字,才能投票。这样就保证了投票人是有资格的。

    4. [不可代他人投票] ,这一条是做不到的,因为它与匿名投票冲突了。就连大会堂的投票,都能发生代投票。
    Aoang
        2
    Aoang  
       81 天前
    只要程序不记录,就能匿名。不然还不是追着痕迹找到人。

    问题核心在于如何信任程序会不记录
    meeop
        3
    meeop  
    OP
       80 天前
    @laminux29 只要是物理领票或者投票,就有可能通过比如隐藏监控,或者领票后查看票池判断你的身份

    不可代投,我想表达的是不可冒用别人身份投,可以通过每个人对投票信息私有签名来保证
    meeop
        4
    meeop  
    OP
       80 天前
    @Aoang 所以强调一定得是算法安全,不能信任任何人
    laminux29
        5
    laminux29  
       80 天前
    @meeop

    1.请仔细看第 2 条:保证每个人是随机抽取到的。
    也就是每个人领取时,是随机抽取,就算有监控,也无法看到那个人到底拿了啥。而且如果是刮刮卡,保密性更好。我觉得你应该从没参与过现场纸质匿名投票与抽票,你可以自己先试一下。

    2.只要是匿名投票,就做不到不可代投,这是原理问题。你说的私有签名,持有者是可以主动把私有签名发送给其他人的。
    wcxu1123
        6
    wcxu1123  
       80 天前 via Android
    我感觉既然有途径找到所谓的“破坏者”,那这还是多了很多弯弯绕绕实名制。一个有权限投票的人投什么都是他的自由,什么情况会成为破坏者呢?破坏预期结果的人?
    meeop
        7
    meeop  
    OP
       80 天前
    @laminux29 在主办方作弊情况下,这个随机领取是无法保证的,比如各种彩票,也可以通过取票后检查剩余哪些票来判断你取了哪张。

    扑克作弊有一种方法就是在扑克背面隐藏信息(比如图案🈶细微差别),这个刮刮卡完全可以从很多我不知道的角度做手脚,从而观察到我拿走哪张或者至少观察到剩余哪些
    meeop
        8
    meeop  
    OP
       80 天前
    @laminux29 我没表达清楚,不是不能在别人授权下代投,是不能在别人未授权冒用别人的身份投,即不能(被代表)
    meeop
        9
    meeop  
    OP
       80 天前
    @wcxu1123 如果有人不想这个投票完成,就一直搞破坏。如果破坏者不能被发现
    ,那么就可以用暗中破坏的方式让投票永远完不成

    比如美国大选懂王确定落选情况下,就有可能无限破坏投票
    laminux29
        10
    laminux29  
       80 天前
    @meeop 我们讨论这个话题的前提是,主办方是公正的。

    如果主办方不公正,随便你用什么办法,如果我是主办方,我都能作弊,这样就没有讨论的意义了。
    meeop
        11
    meeop  
    OP
       77 天前
    @laminux29 恩恩对的,所以我在想有没有办法在任何一方都可能作弊的情况下达成匿名投票。

    如果是实名投票,用区块链合约可以轻松实现可靠投票
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1041 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:33 · PVG 02:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.