私は準同型暗号についてのウィキペディアを読んでいて、一部は少し混乱しました:
「さまざまな暗号システムの準同型特性を使用して、安全な投票システムを作成できます...」
どのようにしてホモモーフィック暗号化を使用して投票プロセスを保護しますか?もちろん、結果を傍受することはできませんが、誰かが自分の暗号文を投票暗号文に「挿入」したらどうなるでしょうか。
暗号化されたデータを改ざんすることにより、選挙を偽造することは可能ではないでしょうか?
準同型暗号は、電子投票プロトコルの2つの主要な構造の1つですが、暗号化の部分はwholeプロトコルではありません。
準同型暗号化がうまく機能するのはtallyingです。このようなシステムでは、各有権者は自分の投票(0または1)を暗号化します。投票は暗号化されているので、かなり簡単に管理できます。投票と有権者を関連付けることに問題はありません。そのため、投票は公共の掲示板に蓄積され、誰もが自分の投票が考慮されているか、誰も2度投票していないかを確認できます。すべての票が取得されると、準同型が適用されて票のsumが暗号化され、合計が復号化されます。復号化秘密鍵は、この単一の復号化のためだけに協力するいくつかの部分的に信頼された機関の間で分割されます。少なくとも1つの当局が正直である限り、個々の投票は解読できず、投票の匿名性は維持されます(誰が何に投票したかはわかりません)。
そのようなシステムのトリッキーな部分は、暗号化された投票が実際に0または1の暗号化であり、他の何かの暗号化ではないことを確認する方法です。準同型暗号化に依存する電子投票のための実用的なプロトコルは 非対話型ゼロ知識証明 を使用します。これはかなり技術的ですが、次のように要約されます。問題で十分な数学がスローされれば、それは可能ですsome非対称暗号化アルゴリズムと有権者自身の協力を得て、暗号化された値が実際には0または1の暗号化であり、それ以外のものではないことを証明します。もちろん、これは有権者自身の協力なしに行うことはできません。そうでなければ、暗号化システムの全体的な弱点になります。
電子投票プロトコルのもう1つの主な構造はmix networksです。投票は、ランダムにシャッフルするエンティティのシーケンスを通過します(これには、電子投票以外のアプリケーションがあります。たとえば、 Tor )。入れ子の暗号化を使用して、シャッフルを外部から追跡できないようにします。最後のミキサーの出力では、投票は復号化されますが、少なくとも1つのミキサーが正直である限り、投票者に関連付けることはできません。投票は解読されるので、構文的に正しいことが簡単に検証されます(0または1、それ以外)。一方、投票が失われなかった、または誰も2度投票しなかったと有権者を納得させることは、はるかに難しくなります。その解決策には、いくつかのZK証明も含まれます。
国際暗号研究協会 は、理事を選出するために投票する必要がある場合、準同型暗号化に依存する Helios Voting を使用します( ElGamal を使用)アルゴリズム、およびChaum-Pedersen ZK証明)。
そうです、電子投票の問題は暗号化ではなく検証です。暗号化の前にその場で値を変更できます。重要なのは、事後に投票をチェックできることです。
Scantegrity これで問題は解決しました。ワンタイムパッドを使用して、各投票用紙に固有のコードを各候補者に割り当てます。
コードと投票番号は公開されています。選挙結果の非常に高い統計的信頼性を得るためにチェックする必要があるのは、ごく一部の票だけです。不一致がある場合は、投票用紙を再度手で数えることができます。
オンライン投票 バージョンは、上記のタイプと同様の投票用紙を郵送します。ウェブサイトで、ユーザーは投票用紙と候補者に対応するコードをコードに入力します。投票/候補の投票の選択肢はそれぞれ固有であるため、マルウェアは優先候補に対応するコードを知らないため、単に投票を変更することはできません。
Scantegrityと同様に、投票用紙と候補者番号(対応する候補者名は除く)が公開されます。メールの返送は、さらなる検証および(技術的な問題の場合は)修正手順として機能します。