定理(SIG-DH)の証明のアイデア

プロトコル(SIG-DH)のトランスクリプトは
  • (Pi, s, α), (Pj, s, β, σ), (Pi, s, σ').
ここで、
  • σ ← Sign(skj, (Pj,s,β,α,Pi)),
  • σ' ← Sign(ski, (Pi,s,α,β,Pj)).

このトランスクリプトについて、署名σ, σ' の効果により、攻撃者は
  • 送信者や受信者を偽ったり、
  • αやβを書き換えたり、
  • 他のセッションのメッセージに置き換えたり、
できないので、
  • (Pi, s, α), (Pj, s, β)
は、AMモデルにおけるプロトコル(2DH)のトランスクリプトとみなせる。

よって、定理(SIG-DH)は定理(2DH)より従う。

定理(SIG-DH)の証明

プロトコル(SIG-DH)に対する、UMモデルにおける、任意の攻撃者をUとする。
Uを用いて、AMモデルにおける、プロトコル(2DH)の攻撃者Aを構成する:

攻撃者A:
  • ※ メッセージを改ざん・挿入することなしにプロトコル(2DH)を攻撃したい。
  • 大域変数としてキューMを空に初期化。※ 改ざん・挿入をしないようにメッセージの送受信にはキューMを用いる。
  • 各パーティの署名用鍵ペア(ski,vki)を生成し、初期化関数Iにセット。
  • 攻撃者Uのコードを実行する:
    • Uから実行要求(establish_session, Pi, Pj, s) を受け取ったら、
      • 実行要求 (establish_session, Pi, Pj, s) をパーティPi、Pjに発する。
    • パーティPiからPj宛て出力メッセージ (Pi, s, α) を受け取ったら、
      • アイテム(Pi, Pj, s, α)をキュー M に格納する。
      • Uに(Pi, s, α)をPiのPj宛て出力メッセージとして渡す。
    • UからPj宛て入力メッセージ (Pi, s, α) を受け取ったら、
      • キュー Mにアイテム(Pi, Pj, s, α)が存在するならば、
        • それをキューMから削除するとともに、(Pi, s, α)をパーティPjに入力メッセージとして渡す。
        • ※ キューMに存在していたということは、Uが改ざん・挿入したメッセージではないということ。
      • キューMに該当アイテムがないならば、自身の外部パーティに対しセッションsをアボート。(アボート1)
    • パーティPjからPi宛て出力メッセージ (Pj, s, β) を受け取ったら、
      • アイテム(Pj, Pi, s, α, β)をキュー M に格納する。
      • 署名σ ← Sign(skj, (Pj,s,β,α,Pi)) を計算し、
      • Uに(Pj, s, β,σ)をPjのPi宛て出力メッセージとして渡す。
    • UからPi宛て入力メッセージ (Pj, s, β,σ) を受け取ったら、
      • 署名σがPjによる(Pj,s,β,α,Pi)の正しい署名でなければ、
        • Uに対しセッションsをアボート。(イベント1)
      • 署名σが正しければ、
        • キュー Mにアイテム(Pj, Pi, s, α,β)が存在するならば、
          • それをキュー Mから削除するとともに、(Pj, s, β)をパーティPiに入力メッセージとして渡し、
          • 署名σ' ← Sign(ski, (Pi,s,α,β, Pj)) を計算し、
          • Uに(Pi, s, σ')をPiのPj宛て出力メッセージとして渡す。
        • キューMに該当アイテムがないならば、自身の外部パーティに対しセッションsをアボート。(アボート2)
    • UからPj宛て入力メッセージ (Pi, s, σ') を受け取ったら、
      • 署名σ'がPiによる(Pi,s,α,β,Pj)の正しい署名でないならば、
        • AUに対しセッションsをアボートする。(イベント2)
        • ただし、Aは自身の外部パーティに対しセッションsをアボートしない。(すでに完了しているのでアボートできない。)
    • Uから、テストセッションクエリを含む、他のクエリを受け取ったら、
      • それをチャレンジャーまたは該当外部パーティにフォワードし、受け取った結果をUにバックワードする。

[攻撃者Aの解析]:
キューMの用い方から、Aはメッセージの改ざん・挿入はできない。よって、AMモデルの攻撃者として妥当。
テストセッションの識別について、UA以上の能力をもち得るのは以下のケースが発生する場合のみ:
  • アボート1∧¬イベント1∧¬イベント2:
    • Uは、第1メッセージを改ざん・挿入したセッションsを完了しているのに(¬イベント1,2)、
    • Aはセッションsをアボートした(アボート1)。
  • アボート2∧¬イベント1∧¬イベント2:
    • Uは、第2メッセージを改ざん・挿入したセッションsを完了しているのに(¬イベント1,2)、
    • Aはセッションsをアボートした(アボート2)。
ところが、これらいずれのケースにおいても、
  • UはキューMには存在しないアイテムについて正しい署名を生成していることになる。しかし、
  • A自身が作る署名は、必ずキューMに格納されたアイテムを対象としている。
よって、これらのケースは、Uによる署名の偽造を意味する。

したがって、署名の偽造不可能性より、Uの識別利得はAのそれを越えるとしても、ネグリジブルな程度。

Q.E.D.

















最終更新:2009年12月17日 19:47