定理(ランポート署名)の証明のアイデア
メッセージ m = m1 ・・・ml の、vk = (y1,0, y2,0, ・・・, yl,0 : y1,1, y2,1, ・・・, yl,1)に関するランポート署名は
- σ = (x1,m1, x2,m2, ・・・, xl,ml).
攻撃者Fが署名オラクルから入手した、メッセージ m' = m'1 ・・・m'l の署名は
- σ' = (x1,m'1, x2,m'2, ・・・, xl,m'l).
ゲームのルールより、ある i* があって、
よって、攻撃者Fは、あるi*とmi*について、
yi*,mi*に関する f の逆像 xi*,mi* を自力で計算できていなければならない。
定理(ランポート署名)の証明
ランポート署名Ωに対する任意の効率的な偽造者をFとする。
偽造者Fを用いて一方向関数 f のインバーターBを構成する。
インバーターB: y (= f(x))を入力として、
- i* ← [1..l], b* ← {0,1}, yi*,b* = y
- i ∈ [1..l], b ∈ {0,1} with (i,b) ≠ (i*,b*) :
- xi,b ← {0,1}n, yi,b = f(xi,b)
- vk = (y1,0, y2,0, ・・・, yl,0 : y1,1, y2,1, ・・・, yl,1) を入力としてFを起動:
- Fから署名オラクルに対する問い合わせ m' を受け取ったら、
- その i* 番目のビット m'i* が b* だったら、諦めてアボートする。
- そうでなければ、σ = (x1,m'1, ・・・, xl,m'l) を m の署名として応答する。
- Fが出力(m, σ = (x1,...,xl))で終了したら、
- σが妥当な署名で、かつ m'i* = 1-b* かつ mi* = b* ならば(すなわち、(i*,b*)において偽造に成功していたら)、
- そうでなければアボートする。
インバーターBの解析:
- m≠m'より、Fが偽造に成功するならば、Fはある(i,b)において偽造に成功する。
- よって、偽造に成功するという条件のもとで、Fが(i*,b*)において偽造に成功する確率は 1/(2l)。
- Fが(i*,b*)において偽造するならば、m'i* ≠ b*なので、署名オラクルのシュミレーションは完ぺきで、
- その出力 xi* は必ず y の逆像となっている。
以上より、
- Pr[Bが成功] ≧ Pr[Fが(i*,b*)において偽造に成功] ≧ 1/(2l) Pr[Fが偽造に成功].
よって、
- Pr[Fが偽造に成功] ≦ 2l Pr[Bが成功].
仮定より f は一方向関数なので、右辺はネグリジブル。よって、Pr[Fが偽造に成功]もネグリジブル。
最終更新:2009年10月22日 19:44