定理(FDH)の証明のアイデア
vk = (i,H) に関する、メッセージ m のFDH署名σは
を満たさなければならない。
ランダムオラクルモデルのもとでは、偽造者が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