定理(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