定理(NACMA+Σ)の証明のアイデア

検証鍵 vk' = (vk, pkΣ)のもとで、
z = (σ*,x*,y*)がm*の(NACMA+Σ)署名による妥当な署名であるためには、
  • Det(pkΣ, x*, H(m*), y*) ∧ Verify(vk, x*, σ*)
でなければならない。

このとき、
  • x* はメッセージm* とは独立に生成できるので、x*を守る署名σ*は非適応的な攻撃に対して安全であればよい。
  • H(m*)は偽造者にとっても値をコントロールできないので、Σプロトコルの特殊健全性より、
    • x*,H(m*)に対し妥当なy*を作れるのは、skΣを知っている正当な署名者のみ。

定理(NACMA+Σ)の証明

Ω'に対する任意の効率的な偽造者をFとする。Fの署名クエリ回数の上界をt(n)とする。
CMAΩ',F(n)において、
  • Fは第i回目の署名クエリとして mi を発し、その応答として zi = (σi,xi,yi) を得た。
  • Fは (m*, z = (σ*,x*,y*)) を偽造署名として出力した。
とする。

Type1 : 『ある j について、x* = xj。』
Type2 : 『どんな i についても、x* ≠ xi。』

(Type1の偽造が発生するならば)
ある効率的な攻撃者MがΣの特別健全性を破る。

攻撃者M: Σプロトコルの公開鍵 pkΣ を入力として、
  • ※ c ≠ c' である2つの説得的なトランスクリプト(x,c,y), (x,c',y')を生成したい。
  • (vk, sk) ← Ω.Gen
  • vk' = (vk, pkΣ) を入力としてFを起動する。
  • Fから署名オラクルに対するi番目の問い合わせmiを受け取ったら、
    • (xi,yi) ← Sim(pkΣ, H(mi))
    • σi ← Sign(sk, xi)
    • zi = (σi, xi, yi)を応答する。
  • Fが(m*, z = (σ*,x*,y*))を出力して停止したら、
    • x* = xj となる j を検索する。
    • ※ Type1の仮定より、このような j は必ず存在する。
    • (x*, H(mj), yj), (x*, H(m*), y*) を出力して停止する。

攻撃者Mの解析
  • ΣプロトコルのHVZK性より、Fに与えている署名ziは、真の署名と識別不可能。
  • m* ≠ mjとHの衝突困難性より、H(m*)≠H(mj).

よって、
  • Pr[MがΣプロトコルの特殊健全性を破る] ≧ Pr[FがType1の偽造に成功] - (ネグリジブル).
  • ∴ Pr[FがType1の偽造に成功] ≦ (ネグリジブル).

(Type2の偽造が発生するならば)
ある効率的な偽造者BがΩを非適応的選択文書攻撃で破る。

偽造者B: Ωの検証鍵 vk を入力として、
  • ※ 検証鍵vkに関する署名を非適応的に偽造したい。
  • (pkΣ, skΣ) ← Σ.Gen(1n)
  • i ∈ [1..t(n)] : (xi, ri) ← Com(pkΣ)
  • x1, ... , xt をチャレンジャーに出力し、vk, σ1, ... , σt を受け取る。
  • vk' = (vk, pkΣ) を入力としてFを起動する。
  • Fから署名オラクルに対するi番目の問い合わせmiを受け取ったら、
    • yi ← Res(skΣ, ri, H(mi))
    • zi = (σi, xi, yi) を返答する。
  • Fが(m*, z = (σ*,x*,y*))を出力して停止したら、
    • (x*, σ*)を出力して停止する。
    • ※ Type2の仮定より、x* ≠ xi  (∀i).

偽造者Bの解析
  • 明らかに、BのFに対するシミュレーションは完ぺきである。
  • Fの出力するType2の偽造署名(m*, z = (σ*,x*,y*))について、(x*, σ*)はΩの偽造署名として妥当である。

よって、
  • Pr[BがΩの署名の偽造に成功] = Pr[FがType2の偽造に成功].
  • ∴ Pr[FがType2の偽造に成功] ≦ (ネグリジブル).

Q.E.D.
















最終更新:2009年11月25日 17:41