定理(ランポート署名)の証明のアイデア

メッセージ 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* があって、
  • mi* ≠ m'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*)において偽造に成功していたら)、
      • xi*を出力して停止。
    • そうでなければアボートする。

インバーター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が偽造に成功]もネグリジブル。

Q.E.D.
上へ















最終更新:2009年10月22日 19:44