定理(2DH)の証明のアイデア
プロトコル(2DH)のトランスクリプトは
ここで、
出力されるセッション鍵は
AMモデルなので、攻撃者はメッセージの改ざんや挿入はできない。
判定DH仮定より、攻撃者にとってセッション鍵γ = gxy は一様ランダム。
定理(2DH)の証明
構成(2DH)が定義(SK安全)の条件1を満たすことは明らか。
条件2を満たすことを示す。
構成(2DH)に対する、AMモデルにおける、任意の攻撃者をAとする。
Aのセッション呼び出し回数の上限をlとおく。
Aを用いて判定DH問題の識別者Dを構成する:
識別者D: (q, g, α*, β*, γ*)を入力として、
- ※ γ*がDH(g,α*, β*)なのか一様ランダムなのか、判定したい。
- r ← {1,...,l}
- (q,g)を2DHプロトコルの公開パラメータにセットし、攻撃者Aを呼び出す:
- Aが第n(≠r)番目のセッションについて、あるパーティPkに実行要求または入力メッセージを発したら、
- パーティPkの代わりにプロトコル2DHをオネストに実行し返答を返す。
- AがPiに第r番目のセッションの実行要求(Pi,Pj,sr)を発したら、
- Piの出力メッセージとして、(Pi, sr, α*)を返す。
- AがPjに入力メッセージとして(Pi, sr, α*)を発したら、
- Pjの出力メッセージとして(Pj, sr, β*)を返し、Pjでローカル出力が生成されたことを知らせる。
- AがPiに入力メッセージとして(Pi, sr, β*)を発したら、
- AがあるパーティPkにコラプト命令を発したら、
- k = i or j で、第r番目のセッションがまだ失効していないならば、
- b' ← {0,1}を出力してアボート。※ DはPiとPjの内部状態は知らない。
- そうでないならば、パーティPkのすべての内部状態を返す。
- Aがあるパーティ内のあるセッションにセッション状態開示クエリを発したら、
- 該当セッションがsrなら、b' ← {0,1}を出力してアボート。※ Dはセッションsrの内部状態は知らない。
- そうでないならば、該当セッションの状態を返す。
- Aがあるパーティ内のあるセッションにセッション出力クエリを発したら、
- 該当セッションがsrで、
- セッションsrが未失効なら、b' ← {0,1}を出力して停止。※ Dはセッションsrの内部状態は知らない。
- セッションsrが失効なら、空文字を返す。
- そうでないならば、該当セッションのセッション鍵を返す。
- Aがあるパーティ内のあるセッションにセッション失効クエリを発したら、
- Aがあるパーティ内のあるセッションをテストセッションに指定したら、
- 該当セッションがsrでなければ、b' ← {0,1}を出力して停止。
- 該当セッションがsrならば、γ* を返す。
- Aが出力b'で停止したら、
[識別者Dの解析:]
イベント GoodChoice: 『テストセッションが第r番目のセッションsrである』
- Pr[ b' = b | ¬GoodChoice ] = 1/2.
- Pr[ b' = b | GoodChoice ] = Pr[ (AMモデルで)Aが成功 ] =: 1/2 + ε.
- AMモデルなので、Dによるテストセッションsrのシミュレーション、とくにγ*の分布は正しい。
よって、
- Pr[ Dが成功 ] = Pr[ b' = b ]
- = Pr[¬GoodChoice]・(1/2) + Pr[GoodChoice]・(1/2 + ε)
- = (1-1/l)・(1/2) + (1/l)・(1/2 + ε)
- = 1/2 + ε/l.
よって、判定DH仮定より、ε/l はネグリジブル。
よって、εもネグリジブル。
Q.E.D.
最終更新:2009年12月02日 17:55