定理(FDH)の証明のアイデア

vk = (i,H) に関する、メッセージ m のFDH署名σは
  • fi(σ) = H(m)
を満たさなければならない。

ランダムオラクルモデルのもとでは、偽造者がmを選べたとしても、
H(m)は(mとは独立に)ランダムに選択される。

よって、うえのようなσを生成するには、
fiをランダムな値においてインバートするしかない。

定理(FDH)の証明

構成(FDH)に対する任意のPPT偽造者をFとする。Fの署名クエリ回数の上界をqとする。
一般性を失わず、
  • Fは署名オラクルにmを問い合わせるとき、必ず事前にmをHオラクルに問い合わせている
  • Fは(m,s)を出力するとき、事前にmをHオラクルに問い合わせている
としてよい。(Fにとって有利な設定)

偽造者Fを用いてトラップドア置換{fi}iのインバーターBを構成する。
インバーターB: y*(=fi(r*))を入力として、インデックスiを補助入力として、
  • ※ Bの目的は r* を求めること。
  • t ← [1..q]
  • vk=(i,H)を入力としてFを起動する。
    • FからHオラクルに対するk回目の問い合わせmkを受け取ったら(1≦k≦q)、
      • k = t ならば、y* を返答する。
      • ※ H(mt) = y* とした。
      • k ≠ t ならば、sk ← {0,1}nとし、yk = fi(sk) を返答する。
      • ※ fi(sk) = yk = H(mk)、skはmkの署名!
    • Fから署名オラクルに対する問い合わせmを受け取ったら、
      • m = mk となるkを検索する。
      • k = t ならば、アボートする。(アボート1)
      • k ≠ t ならば、skを返答する。
  • Fが出力 (m, s) で終了したら、
    • m = mk となるkを検索する。
    • k ≠ t ならば、アボートする。(アボート2)
    • k = t ならば、sを出力して終了する。
    • ※ (m,s)が正しければ、fi(s) = H(mt) = y*!

インバーターBの解析
  • アボート1が起きないとき、Bによる署名オラクルのシミュレーションは完ぺきである。
  • アボート2が起きないとき、Fが偽造に成功していれば、Bはy*のインバートに成功している。
  • アボート2が起きず、Fが偽造に成功していれば、アボート1は起きていない。

以上より、
Pr[Bが成功] ≧ Pr[Fが成功 | ¬アボート2] Pr[¬アボート2] = Pr[Fが成功] 1/q.

fiはトラップドア置換なのでPr[Bが成功]はネグリジブル。
よって、Pr[Fが成功]もネグリジブルである。
Q.E.D.

















最終更新:2009年10月29日 21:43