1

私は数十人のメンバーからなるグループに属しています。私は急ごしらえのウェブ投票システムを書きました、そして私はそれに「セキュリティ」のいくつかの要素を追加したいところにいます。私は可能な限り骨の折れるものになろうとしています。私が行ったことは、投票するときにユーザーが秘密の文字列(GUIDなど)を入力する必要があるようにすることです。これは、投票者ごとにデータベースに保存されています。

シークレットをユーザーに配布するために私が考えた最も安全な手段は、データベースにシークレット文字列の束を作成し、それらを印刷して会議に持ち込み、人々に帽子から秘密を引き出すことでした。そのようにして、私は2つの主要な利点を得ると信じています:(1)投票システムの作成者として、私はどの個人が何に投票したかを特定できません(そのことについては他の誰も、秘密の所有者だけです)有効なシークレットが事前にわかっているため、(2)「誰でも」行って投票することはできません。

上で概説した主な利点を損なうことなく、物理的に存在する帽子からの描画プロセスを仮想的にエミュレートする適切な方法はありますか?たぶんそれはできず、ある時点で信頼がなければならないか、誰かが秘密を「描く」ために物理的な存在を主張しなければなりません(私は個人的な秘密を与えられた個人の記録を保持しています)。

また、誰かが秘密を失ったと主張した場合、どうしたらよいかわかりません。なぜなら、彼らが不正直であり、私が単に彼らに新しい秘密を描かせた場合、彼らは事実上2票を投じることになるからです。「失われた」秘密が何であったかについての痕跡がなければ、私はそこに入って、それに関連する投票があったとしてもそれを削除することはできません。

私がいるところは、基本的に、投票が行われるたびに新しい秘密を人々に描いてもらい、物理的な存在を通じて秘密を配布するのが最善の選択肢だと思います。上で概説したのと同じ利点を達成するための、私がまだ気付いていない、よりエレガントで自動化された手段はありますか?

4

3 に答える 3

4

これは難しい問題です。一般的に、優れた電子投票システムは難しい問題です。それらについてはたくさんの文献があります。始めるのに良い場所は、 DavidChaumが見つけたすべての論文を読むことです:-)

あなたは秘密投票の要件に取り組んでいます。

ご指摘のとおり、システムには重要な制限がありますが、これ以上のことはできないと思います。

問題は、選挙当局であるあなたが誰がどの秘密を手に入れたのかわからないように、そしてすべての有権者がそれを信じることができるように、秘密(トークン)を有権者に配布することです。その最後の部分が問題です。有権者はあなたが不正行為をしていないという事実を目撃し、証明することができるので、帽子をかぶるプロトコルとの物理的な会議がその仕事をします(彼らが与えられた秘密を見て)。私はあなたが遠隔地にいて同じ仕事をすることを可能にするプロトコルを想像することはできません。たとえば、シークレットを生成してサードパーティに渡し、サードパーティがシークレットをシャッフルして有権者に渡すことができますが、その場合、誰もがそのサードパーティを信頼する必要があります。別の例として、匿名の電子メールアドレスを介して秘密を配布することはできますが、許可された有権者だけが秘密を取得することを保証することはできません。ここに解決策はありません。帽子をかぶっている人が最初のピックから最後のピックまで継続的に監視されない限り、帽子のプロトコルでさえ脆弱です。

とにかく直接会うので、同時に投票してみませんか?(反対意見:投票時よりも投票前に会う方が便利かもしれません...)

少なくとも、トークンを失った有権者に関する部分は簡単に答えることができます。新しい秘密を与えることはできません。彼らにとってはあまりにも悪い。

ちなみに、あなたが取り組んでいない別の要件があります:投票者の検証可能性。

システムでは、基本的な投票者の検証は非常に簡単です。選挙後にすべてのトークンと対応する投票を公開するだけです。しかし、これにより、有権者は自分の投票が他の誰かに何であったかを証明することができます(選挙前にトークンを共有するか、ゼロ知識のコミットメントを行うことによって)。投票購入)。

于 2012-05-17T16:28:15.473 に答える
0

解決策は、投票が開始されたときに各ユーザーへのランダムキーの送信を自動化するサーバー側サービスを構築することです。これは通常、URLにパラメーターを持つリンクを使用して行われます。そうすれば、彼らがサイトにアクセスするとき、それは匿名ですが、それでも誰もが投票するための鍵を持っている必要があります。キーは、トピックと、ユーザー用に生成されたランダムキーの両方を組み合わせて、簡単に複製されないようにします。また、キーは、一度だけ使用されることを確認するための検証のためにサーバー側にも保存されます。ある時点で、この方法を使用してポーリングシステムを作成しました。

于 2012-05-17T16:32:26.540 に答える
-2

サイトにアクセスしたときに、一意のIDを持つCookieをドロップします。ただし、Cookieをクリアすると、乾杯します。

于 2012-05-17T16:27:40.757 に答える