プロキシ再暗号化を用いた投票者と候補者を繋ぐ

投票システムの提案

発表内容

1. 研究背景

2. 提案する投票システム

3. 提案手法の評価

4. まとめ

1. 研究背景

2. 提案する投票システム

3. 提案手法の評価

4. まとめ

発表内容

電子投票システム

  • 紙の投票方式に代わる電子投票システムが盛んに研究されている
  • 候補者は投票に直接的に関与しないのが一般的
    • 候補者は自身に投票してくれた投票者を識別することができない

研究背景 > 電子投票システム

候補者\(C\)

投票者A

投票者B

投票

投票プロセス

候補者\(\bar{C}\)

識別不可

認証プロセス

候補者C

投票

電子投票システムの拡張

  • 候補者が自身に投票してくれた投票者を識別したい場面がある
    • 例えば,政策を決定するときに本当に投票してくれた人だけを 対象にアンケートをとるなど

研究背景 > 電子投票システムの拡張

候補者\(C\)

投票者A

投票者B

投票

候補者\(\bar{C}\)

投票

候補者\(C\)

Aにアンケートを取りたい

投票の証明とセキュリティ

  • 投票者が特定の候補者に投票したという事実を第三者に証明できてはいけない 無証拠性(Receipt-freeness) という特性                           
  • 投票の証明ができると以下の問題が発生する可能性がある
    • 投票者が投票を売買
    • 投票者が特定の候補者に投票するよう強制される

研究背景 > 投票の証明とセキュリティ

研究目標

研究背景 > 研究目標

  • 認証情報を提供する投票システムの構築
    • 投票者が候補者に投票した事実の証明を満たす
    • 無証拠性を含むセキュリティプロパティを満たす

1. 研究背景

2. 提案する投票システム

3. 提案手法の評価

4. まとめ

発表内容

暗号技術

提案する投票システムで使用する主な暗号技術は2つ

提案する投票システム > 暗号技術

1. プロキシ再暗号化

 

2. \((k,n)\)閾値法

プロキシ再暗号化

ユーザAの公開鍵で暗号化された暗号文をプロキシに委任して,再暗号化鍵という鍵を用いて,ユーザBの公開鍵で暗号化された暗号文に変換する仕組み

提案する投票システム > 暗号技術 > プロキシ再暗号化

ユーザA

ユーザB

プロキシ

再暗号化鍵

暗号文のまま再暗号化

\((k,n)\)閾値法

秘密値を\(n\)個のシェアに分散させ,\(k\)個のシェアが集まれば復元できるようにした秘密分散の仕組み

提案する投票システム > 暗号技術 > \((k,n)\) 閾値法

\(k=2, n=3 で秘密分散\)

2個集まれば復元可能

エンティティ

提案する投票システム > エンティティ

  • Administrator
    • ​選挙の管理者
  • ​Proxy
    • 再暗号化などを行う
    • プロトコルには従うが不正に情報を入手する可能性がある
  • ​​​Voter
    • ​投票権を持つ投票者
  • ​Candidate
    • ​選挙の候補者
  • ​Bulletin Board(BB)
    • ​書き込み専用の公開データベース
  • ​Provider
    • 選挙を終えた後にアンケートなどのサービスを提供する

キーアイデア

提案する投票システム > キーアイデア

1. 投票システム内で認証情報を秘密分散させ,投票終了後にシェアを集めて復元することで認証する

 

2. 候補者は投票者が自身に投票してくれたという事実を  プロキシ再暗号化を用いることで保証する

キーアイデア

提案する投票システム > キーアイデア

1. 投票システム内で認証情報を秘密分散させ,投票終了後にシェアを集めて復元することで認証する

 

2. 候補者は投票者が自身に投票してくれたという事実を  プロキシ再暗号化を用いることで保証する

認証情報の秘密分散

提案する投票システム > キーアイデア > 認証情報の秘密分散

シェア

認証用ランダム値

Candidate

Candidate

Voter

Voter

Provider

Administrator

send

send

復元して得た値

\(\overset{?}=\)

検証

\(k=n=3\)で秘密分散

投票システム

認証システム

認証情報の秘密分散

提案する投票システム > 認証情報の秘密分散

  • Provider だけが認証できるようにすることで,Voter とCandidate の間では投票の事実を証明できない

 

  • 認証情報のシェアが投票してくれた投票者から得られることを保証する必要がある

Candidate

Voter A

投票

投票

シェアに投票の事実が必要

Voter A

キーアイデア

提案する投票システム > キーアイデア

1. 投票システム内で認証情報を秘密分散させ,投票終了後にシェアを集めて復元することで認証する

 

2. 候補者は投票者が自身に投票してくれたという事実を  プロキシ再暗号化を用いることで保証する

投票システムの全体像

提案する投票システム > キーアイデア > 投票の事実の保証 > 投票システムの全体像

Proxy

BB

Candidate

投票用秘密鍵

認証用秘密鍵

S

S

クレデンシャルの有効性検証

P

S

P

S

P

key

value

ハッシュテーブル

送信

参照

投票用再暗号化鍵

クレデンシャルのハッシュ値

認証用再暗号化鍵

S

P

S

P

S

P

S

P

S

S

タイムスタンプ

投票トランザクション

Voterの鍵で暗号化されたシェア

Candidateの鍵で暗号化されたシェア

※ 通信経路は全て盗聴可能なパブリックチャンネル

Voter

Voterの秘密鍵

P

=

+

S

クレデンシャル

Voterの公開鍵

署名

P

S

S

P

投票用公開鍵

認証用公開鍵

P

P

Voterによる投票

提案する投票システム > キーアイデア > 投票の事実の保証 > Voterによる投票

BB

Voter

Voterの秘密鍵

P

=

+

S

クレデンシャル

Voterの公開鍵

署名

投票用再暗号化鍵

クレデンシャルのハッシュ値

認証用再暗号化鍵

S

P

S

P

送信

参照

※ 通信経路は全て盗聴可能なパブリックチャンネル

S

S

Proxy

key

value

ハッシュテーブル

S

S

P

P

S

P

Voterの鍵で暗号化されたシェア

Candidateの鍵で暗号化されたシェア

クレデンシャルの有効性検証

P

S

P

タイムスタンプ

投票トランザクション

P

S

S

P

投票用公開鍵

認証用公開鍵

P

P

Candidate

投票用秘密鍵

認証用秘密鍵

S

S

Proxyによる検証・再暗号化

提案する投票システム > キーアイデア > 投票の事実の保証 > Proxyによる検証・再暗号化

Proxy

BB

クレデンシャルの有効性検証

P

S

P

key

value

ハッシュテーブル

S

P

S

P

タイムスタンプ

投票トランザクション

S

P

Voterの鍵で暗号化されたシェア

Candidateの鍵で暗号化されたシェア

事前に準備

送信

参照

※ 通信経路は全て盗聴可能なパブリックチャンネル

投票用秘密鍵

認証用秘密鍵

S

S

S

S

Candidate

投票用再暗号化鍵

クレデンシャルのハッシュ値

認証用再暗号化鍵

S

P

S

P

Voter

Voterの秘密鍵

P

=

+

S

クレデンシャル

Voterの公開鍵

署名

P

S

S

P

投票用公開鍵

認証用公開鍵

P

P

Candidateによる開票

提案する投票システム > キーアイデア > 投票の事実の保証 > Candidateによる開票

BB

Candidate

投票用秘密鍵

認証用秘密鍵

S

S

S

S

クレデンシャルの有効性検証

P

S

P

タイムスタンプ

投票トランザクション

Proxy

key

value

ハッシュテーブル

S

P

S

P

S

P

Voterの鍵で暗号化されたシェア

Candidateの鍵で暗号化されたシェア

送信

参照

※ 通信経路は全て盗聴可能なパブリックチャンネル

投票用再暗号化鍵

クレデンシャルのハッシュ値

認証用再暗号化鍵

S

P

S

P

Voter

Voterの秘密鍵

P

=

+

S

クレデンシャル

Voterの公開鍵

署名

P

S

S

投票用公開鍵

認証用公開鍵

P

P

投票した事実の保証

提案する投票システム > キーアイデア > 投票した事実の保証

1, 2 から復号できれば投票と同じクレデンシャルと公開鍵と秘密鍵のペアが使われることが保証される

⇔ 得られる認証情報には投票の事実が保証される

  1. 投票トランザクション      の生成には次の2つが必要
    • クレデンシャル        (タイムスタンプの暗号化)
    • 投票者の秘密鍵        (投票用再暗号化鍵の生成)                             
  2. 暗号化された候補者のシェア      の生成には次の2つが必要
    • クレデンシャル       (候補者のシェアの暗号化)
    • 投票者の秘密鍵       (認 証用再暗号化鍵の生成)

S

S

1. 研究背景

2. 提案する投票システム

3. 提案手法の評価

4. まとめ

発表内容

無証拠性の評価

評価 > 無証拠性の評価

  • 攻撃者が候補者の(投票用 or 認証用)秘密鍵,有効なクレデンシャルを取得できれば投票の証明が可能

P

S

P

S

  • 攻撃者が投票者,候補者,管理者のシェア,認証ランダム値を取得できれば投票の証明が可能

\(\overset{?}=\)

S

適当な平文

無証拠性の評価

評価 > 無証拠性の評価

  • 攻撃者が候補者の(投票用 or 認証用)秘密鍵,有効なクレデンシャルを取得できれば投票の証明が可能

P

S

P

S

  • 攻撃者が投票者,候補者,管理者のシェア,認証ランダム値を取得できれば投票の証明が可能

\(\overset{?}=\)

S

適当な平文

クレデンシャルのハッシュ値しか取得できない

無証拠性の評価

評価 > 無証拠性の評価

  • 攻撃者が候補者の(投票用 or 認証用)秘密鍵,有効なクレデンシャルを取得できれば投票の証明が可能

P

S

P

S

  • 攻撃者が投票者,候補者,管理者のシェア,認証ランダム値を取得できれば投票の証明が可能

\(\overset{?}=\)

S

適当な平文

クレデンシャルのハッシュ値しか取得できない

管理者のシェア,認証ランダム値はパブリックチャンネルに送信されないので取得できない

1. 研究背景

2. 提案する投票システム

3. 提案手法の評価

4. まとめ

発表内容

まとめ

まとめ

  • 従来の電子投票方式にはなかった候補者と投票者を投票の事実を証明した上で繋ぐ投票システムを提案した

 

  • 電子投票システムにおいて重要な特性である無証拠性を満たすことを示した

課題

  • Providerの信頼条件の緩和
  • 認証時の時間計算量
    • 現在は候補者の得票数の2乗オーダー

質問

投票者と候補者の繋がり

  • 候補者の公開鍵で暗号化するだけではダメか?
    • VoterとBB間の中間者攻撃に脆弱
    • \(Ballot\)と同じクレデンシャル(\(PK_i\))を持った投票者からの投票である保証が必要
    • 候補者の公開鍵による暗号化は誰でもできるので改ざんされててもわからない
    • \(PK_i\)で暗号化されたものを再暗号化して復号できればちゃんと同じクレデンシャルを持った投票者とわかる

投票者と候補者の繋がり

  • 投票者が署名するのではダメか?
    • 検証時にその投票者の公開鍵が必要となる
    • 匿名性が失われ,Coercion-resistanceを満たさなくなる

投票の中間者攻撃

  • Proxyから投票者に鍵をディスパッチするときに中間者攻撃が考えられる
    • クレデンシャルには管理者による署名が含まれている
    • 投票者は検証すればわかる

計算・通信コスト

  • 1投票あたりの計算・通信コスト
    • ​計算時間をShiら[1]のベンチマークから算出
  • 現実的

[1] E. Shi, J. Bethencourt, T.H. Chan, D. Song, and A. Perrig, “Multi-dimensional range query over encrypted data,” 2007 IEEE Symposium on Security and Privacy (SP ’07), pp.350–364, May 2007.

提案手法(拡張後)

Zhangらの手法(拡張前)

認証用ランダム値の桁数

  • 認証用ランダム値が衝突しない必要がある
    • 衝突していると複数人の投票者が結託して情報を得る可能性があるため
    • 英語 + 数字 = 36通りなので8桁もあれば十分
      • \(36^8 \simeq 3\times 10^{12}\)  \(=3\)兆通り

Providerの信頼条件の緩和

  • 現在は Administrator が持つ認証用ランダム値と管理者のシェアのデータベースに投票終了後にアクセスできるような仮定をしている

 

  • 復元した値と認証用ランダム値を比較するためにこの権限が必要となる
    • この比較なしに認証することができるようにすれば改善できる

認証の計算量

  • 投票者と管理者のシェアは\(O(1)\)で対応付けることが可能だが,候補者との対応関係がない
    • 候補者が投票で得た\(n\)個のシェアで試す必要があるので\(O(n^2)\)

 

複数人検証者署名

  • 署名者が指定した検証者集合によってのみ有効性を検証できる署名を発行できる仕組み

  • 指定された検証者がすべての秘密情報を攻撃者と共有したとしても,攻撃者は署名の有効性を検証できない

提案する投票システム > 暗号技術 > 複数人検証者署名

検証者集合

攻撃者

署名者

検証者に指定

秘密情報共有

  • 秘密情報の真偽を確認する手段がない
  • 署名の有効性を検証できない

検証可能

Made with Slides.com