An E-voting Protocol on Blockchainを読んだ

概略

https://eprint.iacr.org/2017/1043.pdf

ブロックチェーンを用いて投票をしよう,というプロトコルの紹介

 

手法

アリスが投票者,ボブが認証局,カルロスがinspecterとする.

 

投票内容Vは以下の仕様

f:id:nuuuma22:20180702162858p:plain

 

  • 最初の2ビットが候補者の選択.今回の場合,候補者Bに10を割り当てている.
  • yビットが全て0で投票の整合性を確認
  • zはランダム

1.アリスのターン

  • 投票Vをハッシュ関数にかける
  • C(ブラインド署名のC)でサインする
  • C(hash(V))を含むメッセージを二つ作る.(片方は認証局へ,もう片方は検証者へ)
  • C(hash(V))をボブへ

2.ボブのターン

  • アリスの本人認証
  • ボブの署名でアリスのC(hash(V))に署名(ブラインド署名)
  • アリスにブラインド署名を送り返す.

3.アリスのターン

  • ボブからの認証の署名をもらったら,ステップ1で作ったもう一つのメッセージを検証者カルロスに,ブロックチェーンを用いて送る.

4.カルロスのターン

  • アリスの本人認証がボブによってされていることの確認と,ボブに同じメッセージが送られていることの確認.
  • 二つの確認が取れたら,アリスのC(hash(V))に署名し,アリスに送信.

以上の行為で,アリスは認証局ボブと検証者カルロスから二つの署名をもらっていることとなる.アリスはボブに投票Vと二つのブラインド署名を得たメッセージの三つを送信する.

 

f:id:nuuuma22:20180702162211p:plain

※上記論文より引用

 

投票後,ボブは投票を集計する.

以下のアルゴリズムで投票の整合性を確認.

f:id:nuuuma22:20180702162456p:plain

Vertificationは,ブロックチェーン上に記録されるので,参加者全員が見れることにより公平性を確認.

 

改善点

  1. ネットワーク解析から投票者のIPアドレスとVoteの繋がりがわかってしまうかもしれない.この解決策はTORや複数プロキシを使用し,投票者のIPを秘匿する策が考えられる.
  2. ブロックチェーンの透明性から,投票内容が途中で見れてしまう可能性がある.投票内容が途中で見れることにより,投票結果への影響が考えられる.この解決方法としては,Permissioned blockchainを使う方法がある.しかし,選挙の透明性という点からorganizerが作ったチェーンで選挙を行うのは不透明性が存在すると言えてしまう.この問題はトレードオフである.
  3. 2のもう一つの改善策としては,organizerが鍵を配布する方法である.投票内容を見えなくするために鍵を配布して,organizer側で復号する方法である.これは,organizerが復号時に不正をした場合,投票者が問い合わせて検証ができる.(これ良いかも)
  4. organizerとinspecterの結託:vertiificationを担う二つの役割が結託することによって,不正が起こるかもしれない.これはinspecterの数を増やすことで不正を防ぐことができる.inspecterのinspecterがいれば良いと思ったけど,それだと無限にinspecterが必要になる.