詐欺を取り巻くさまざまなスキャンダルによって複雑になっているさまざまな国の選挙を観察するたびに、何世紀も前の保護メカニズムを使用して、保護するためにその正当性が必要なそのような重要なイベントはなぜですか? 初期レベルで暗号化を理解している人でさえ、理想とは程遠いものの、現在のものよりもはるかに優れているにもかかわらず、投票スキームを思い付くことができるので、これは特に奇妙です。 ちょうどそのような人々に属していることが偶然一致したので、私は考えました:なぜ試してみませんか?
電子選挙に関する多くの記事(1、2、3)がHabréで既に公開されていますが、解決され基本的な要件を満たすプロトコルは見つかりませんでした。 ようこそ、私のバージョンの電子投票プロトコル。
免責事項著者は暗号化と数学の専門家ではないため、このスキームは欠陥がないか、深く開発されていると主張していません。
このスキームは非常にシンプルであることが判明したため、自転車を発明した可能性が非常に高いです。
システム要件
私たちは何を逃げ出したいですか? 次の要件を策定しました。
- 独立した制御の可能性;
- 選挙委員会、有権者、および第三者による詐欺に対する抵抗
- 特定の有権者がどのように投票したかを知ることができない
Tl; dr:プロトコルの概要
- 投票者は選挙委員会に登録され、投票キーと検証キーを装った個人データを提供します。 選挙委員会は、偽装された投票キーに署名します。
- 投票者はマスクを解除し、署名された投票キーを受け取り、それに基づいて匿名の音声を作成して公開します。
- 有権者の中から投票ごとに有権者が選択されます。 音声の所有者は、公開鍵を使用して自分の個人データをレビュー担当者に送信します。 レビューアは、声が実際の人と一致することを確認します。
プロトコルの詳細
プロトコルでは、
非対称暗号化と
ブラインド署名アルゴリズムの 2つの暗号プリミティブのみを使用しました。 当然、暗号化とマスキングの操作は相互に可換でなければなりません。
注:署名中のハッシュ操作は、必要に応じて省略されます。
記号のリストe -暗号化キー。
d -復号化キー。
m -マスキング係数;
Ek -キーkによる暗号化。
Dk -キーkによる復号化。
Mm -係数mによるマスキング。
Nm -係数mによるマスク解除。
i -人に関する情報;
c -選択;
K -契約;
V -声;
I -検証のための情報
0.ソースデータ
投票者:
e個人 -投票者の個人デジタル署名の暗号化キー(プライベート)。
e投票 、 d投票 -暗号化および復号化キー。 特定の投票のために有権者によって作成された;
m -マスキング係数。 特定の投票のために有権者によって作成された;
e検証 、 d検証 -検証フェーズのキーのペア。 特定の投票のために投票者によって作成されます。
個人データの公開リポジトリ:
次の情報は、市民ごとに保存されます。
i - 投票者に関する情報 :氏名、生年月日、登録住所など d個人 -個人のデジタル署名の公開鍵。
Ee Largestate(i+dpersonal)) -データの正確性を証明する州の署名。
以下もリポジトリに保存されます。
dstate -州の公開鍵。
d選挙委員会 -選挙委員会の公開鍵。
状態:
estate -州の秘密鍵。
選挙委員会:
e選挙委員会 -選挙委員会の秘密鍵。
注:投票が開始された時点で、リポジトリ内の情報は正しいという仮定を使用しました。各人には1対1のデジタル署名キーがあり、そこには「死んだ魂」はありません。 この情報をチェックするメカニズムについては考えません。数学的ではなく管理的なものであるように思われます。 また、投票中は情報は変更されないと想定されています。
1.登録
各有権者は選挙委員会にデータを提示します。 彼は、投票者がまだ登録されておらず、投票する権利があることを確認します。 確認後、委員会は有権者とともに、私が
契約と呼ぶものを作成します。
契約には次のデータが含まれます。
i -有権者の身元
Mm(d投票) -投票用の秘密の有権者乗数復号化キーに偽装
Mm(etest) -検証用の秘密投票者の乗数を装った暗号化キー
Ee\大選挙委員会(Mm(d投票)) -選挙委員会によって署名された、秘密投票者の乗数を装った投票解読キー
K1=i+Mm(d投票)+Mm(e検証)+Ee\大選挙委員会(Mm(d投票))
この情報は、選挙委員会と有権者の両方によって署名されます。
K=K1+Ee\大規模な個人(K1)+Ee\大規模な選挙委員会(K1)
すべての契約は選挙委員会によって発行されます。
この段階では、次の攻撃が防止されます。
- 選挙委員会は契約の公表を拒否します。 この場合、有権者は自分の存在を証明できます。 それは選挙委員会によって署名されています。
- 投票者は再度登録を試みます。 選挙委員会は、有権者がすでに自分の署名で登録していることを証明できます。
- 選挙委員会は、存在しない人々を登録します。 この場合、オブザーバーは、データにリポジトリ内の個人データが含まれていないことを示すことでこれを証明できます。
- 選挙委員会は、実在の人物が存在しないと登録できないため、 秘密鍵がありません e個人
2.投票
投票者は署名された投票キーのマスクを解除します。
Nm(Ee選挙委員会(Mm(d投票)))=Ee\大選挙委員会(d投票)
そして、彼の性格とは無関係の
声を作成します。
V=d投票+Ee\大選挙委員会(d投票)+e検証+s+Ee\大投票(s)
どこで
c -候補者の選択。
投票者は、選挙委員会に匿名で投票を送信します。 選挙委員会はそれをパブリックドメインで公開し、入場の証拠としてそれを返します
Ee\大選挙委員会(V) 。
3.検証
残念ながら、最終段階では、選挙委員会は、実際の人格に関係なく、必要なだけ投票を行うことができるため、各投票の検証が必要です。 誰に検証を委任しますか? 私は、
デマーキーの原則に
目を向け、ランダムな投票者に検証を委ねることが最善であると信じています。 複数の投票に対して無制限の数のチェックスキームの配布スキームのペアを思いつくことができますが、私はセットをペアに分割し、互いにテストするためにそれらを割り当てることが最適であると思われます。 したがって、情報を漏らした監査人は、被監査者による説明責任を負うことができます。 どのスキームを使用する場合でも、登録の開始前にその形成のアルゴリズムを公開し、登録が終了する前に不明なキーに依存する必要があります。 たとえば、キーは為替レートから、または候補者によって公的におよび共同で(たとえば、宝くじを使用して)生成できます。 この条件を無視すると、選挙委員会は登録後に非常に多くの偽票を見つけてリストに追加できるため、すべてまたはほとんどの人が互いに確認します。
そのため、キーが生成されて公開されます。 今、各有権者は自分の検証担当者を見つけ、投票のベースから公開検証キーを受け取る必要があります
e検証 検証情報を生成
するI=V+Ee\大規模な検証\レビューアー(i+m+Ee\大規模な個人(i+m))
そして匿名で彼女を選挙委員会に送ります。 選挙委員会はそれをパブリックドメインで公開し、入場の証拠としてそれを返します
Ee\大選挙委員会(I) 。
検査官は見つける
I データベースでチェックイン
V 解読する
Ee Large検証(i+m+Ee Largepersonal(i+m)) 彼を使用して
d検証 を使用して
m マスク解除
Mm(d投票) そして
Mm(etest) そしてそれをチェックします:
- i データベースにあります i そして K ;
- 署名 Ee Largepersonal(i+m) 有効;
- d投票 に格納されている一致 K ;
- e検証 に格納されている一致 K 。
次の攻撃が防止されます。
- 被監査者が提供しない場合 I 彼の声は重要ではありません。
- 検証可能なものが虚偽の情報を提供する場合、検証者は自分の出版物によって偽造を証明することができます。 d検証 ;
- 検証者は、検証可能の個人データを公開できません。 検査対象者は検査員のデータも持っており、検査員に説明責任を持たせることができます。
- 選挙委員会は、実在の人物と関係のない投票を作成することはできません。
- 検査を受けた人は、契約に記載されているキーを置き換えることができませんでした。
- 投票者は2回投票できません。なぜなら、 選挙委員会によって署名された1つのキーのみを保持します。
- 選挙委員会は取り替えることができません c なぜなら 持たない e投票 。
結果
プロトコルの欠点:
- 残念ながら、完全な匿名性を達成することはできませんでした。1人のランダム投票者があなたが誰に投票したかを見つけます。
- このプロトコルは、投票の購入を防止しません。投票者は、自分が宣言したとおりに投票したことを証明できます。
- このプロトコルは、インターネットにアクセスできない人にとっては不便です。少なくとも2回はインターネット接続が必要です(おそらくポーリングステーションで)。 さらに、投票所は音声を追跡し、投票者の匿名化を行うことができます。 おそらく、最初の問題は、投票者が検査官の役割を放棄できるようにし、その兆候を契約と声に追加することで解決できます。 不足している小切手は残りの有権者に分配されます。
- このプロトコルは、次の問題から保護しません。選挙委員会は、単に「間違った」投票の受け入れを拒否する場合があります。 解決策として、独立したプラットフォーム(ソーシャルネットワークなど)を使用して、投票の公開を選挙委員会に送信することと同等にすることができます。
また、検証フェーズを簡素化し、
ゼロ開示の証拠を使用してより匿名にすることも可能です。 残念ながら、これを行う方法と、それが可能かどうかはまだわかりません。
知っている場合は、コメントを書いてください。 また、プロトコルの改善方法を知っている場合は、間違いや脆弱性、その他の建設的な批判を見つけます。