定理(CPA暗号)の証明のアイデア

構成(CPA暗号)の暗号文は、
  • c = (m + (hci(fil-1(r)), hci(fil-2(r)), ..., hc(r)), fil(r)).

(hci(fil-1(r)), hci(fil-2(r)), ..., hc(r),fil(r))は、
真の乱数(p, s) と区別がつかない。(p,sはそれぞれlビット、nビット)

よって、cは
  • c' = (m + p, s)
と区別がつかない。

c'は完全にmを隠しているので、cも(効率的な攻撃者に対しは)mを隠す。

定理(CPA暗号)の証明

構成(CPA暗号)をΠとし、Πに対する任意の効率的な攻撃者をAとする。
Aの成功確率 | Pr[CPAΠ,A(n) = 1] - 1/2 | がネグリジブルであることを示したい。

まず、Game G0を定義する。Game G0は、試行 CPAΠ,A(n)をΠ=構成(CPA暗号)として具体化したものである:

Game G0:
  • (pk, sk) = (i, ti) ← G(1n)
  • pk=iを入力としてAを起動する。
    • Aから同じ長さlの2つのメッセージからなるチャレンジクエリ(m0,m1)を受け取ったら、
      • 0または1をランダムに選択し、bとする。
      • mbをpkで暗号化し、c*をえる:
        • r ← {0,1}n
        • fi(r), fi2(r), ..., fil(r) を計算。
        • p = ( hci(fil-1(r)), hci(fil-2(r)), ..., hc(r) )
        • c* = (mb + p, fil(r))
      • c*をチャレンジクエリに対する応答として返す。
  • Aが出力b'で終了したら、b =? b' の1ビットを出力とする。

Game G1では、Game G0で疑似乱数であるpを真の乱数に変更する:
Game G1:
  • (pk, sk) = (i, ti) ← G(1n)
  • pk=iを入力としてAを起動する。
    • Aから同じ長さlの2つのメッセージからなるチャレンジクエリ(m0,m1)を受け取ったら、
      • 0または1をランダムに選択し、bとする。
      • mbをpkで暗号化し、c*をえる:
        • r ← {0,1}n
        • p ← {0,1}l
        • c* = (mb + p, r)
      • c*をチャレンジクエリに対する応答として返す。
  • Aが出力b'で終了したら、b =? b' の1ビットを出力とする。

主張1
Pr[ G1 = 1] = 1/2.
証明 pが真にランダムなので、c* = (mb + p, r) は、b=0のときも b=1のときも、(l+n)ビットの乱数である。
よって、Aのview(Aが入手するすべての情報)はbと統計的に独立である。
よって、Aの出力もbと統計的に独立なので、b = b' となる確率は1/2である。Q.E.D.

主張2
| Pr[G1 = 1] - Pr[G0= 1] | はネグリジブルである。
証明 攻撃者Aを用いて、構成(PSG3)の疑似乱数生成器Gに対する識別者Dを構成する:
識別者D: 長さ(n+l)ビットの文字列(w, p)を入力として、インデックスiを補助入力として、
  • pk=iを入力としてAを起動する。
    • Aから同じ長さlの2つのメッセージからなるチャレンジクエリ(m0,m1)を受け取ったら、
      • 0または1をランダムに選択し、bとする。
      • mbをpkで暗号化し、c*をえる:
        • c* = (mb + p, w)
      • c*をチャレンジクエリに対する応答として返す。
  • Aが出力b'で終了したら、b =? b' の1ビットを出力とする。

[識別者Dの解析]:
  • 入力(w,p)が疑似乱数(fil(r), hci(fil-1(r)), hci(fil-2(r)), ..., hc(r))のとき、
    • (識別者D内のAが受け取るc*) ≡ (G0におけるc*)
  • 入力(w,p)が真のn+lビット乱数のとき、
    • (識別者D内のAが受け取るc*) ≡ (G1におけるc*)

よって、識別者Dの識別利得は
  • | Pr[G1(1n) = 1] - Pr[G0(1n) = 1] |
に等しく、Gは疑似乱数生成器なので、これはネグリジブルである。Q.E.D.

主張1より、
  • | Pr[CPAΠ,A(n) = 1] - 1/2 | = |Pr[G0 = 1] - Pr[G1 = 1] |
であり、主張2よりこれはネグリジブルである。
Q.E.D.















最終更新:2009年10月03日 17:58