我在一個有幾十個成員的小組。我寫了一個速度很快的網絡投票系統,而且我希望在其中添加一些「安全」元素。我試圖儘可能地變成赤裸裸的骨頭。我所做的就是讓用戶在投票時輸入一個祕密字符串(例如GUID),並且每個選民都存儲在數據庫中。匿名在線投票系統
我想到的用於向用戶分發祕密的最安全的方法是在數據庫中創建一串祕密字符串,將它們打印出來並帶到會議中,並讓人們從帽子中吸取祕密。這樣,我相信我會得到兩個主要的好處:(1)我作爲投票系統的作者,將無法確定哪些人投了贊成票(對於這個問題也不會有其他人,只有祕密持有人(2)不能「只有任何人」可以去投票,因爲有效的祕密是先驗已知的。
有沒有一種合理的方式來模擬實際存在的,從頭到尾的過程,而不會影響上面概述的原則優勢。也許這是不可能完成的,並且在某些時刻必須要有信任,否則我必須堅持要有人「親自」畫一個祕密(同時我記錄了那些被給予了個人祕密的人)。
我也不知道如果有人聲稱已經失去了他們的祕密該怎麼辦,因爲如果他們不誠實,我只是讓他們畫一個新的祕密,他們將有兩個投票。如果沒有找到「失去」祕密的痕跡,我不能進去,並刪除與之相關的選票。
我所在的地方是我認爲我最好的選擇是基本上讓人們爲每次通過實際存在發佈和分發祕密的投票畫出新的祕密。是否有一種更優雅/自動化的方式來實現上述同樣的好處,我還沒有意識到?
這個當前的方案聽起來只不過是一個真正的janky版本的用戶/通行證,沒有額外的好處(除了不必編寫處理用戶設置密碼操作的代碼)。更優雅的將是一個普通的用戶/通行證計劃。 – Cheekysoft
@Cheekysoft我不希望投票可以追溯到用戶,但我希望用戶能夠改變他們的投票結果 - 這種計劃可以避免「登錄」,這可能會對投票產生懷疑匿名投票。 – vicatcu
可能更好地調整問題以表明您想要(接近)完全匿名投票機制。只是隨機抽取,但妥協可能是臨時記錄每個投票,直到他們執行「鎖定」,然後刪除該關係並且不允許進一步的變化。 – Cheekysoft