定理(CCAinRO)の証明のアイデア
攻撃者Aが構成(CCAinRO)の暗号文 c* = (fi(r*), G(r*)+m*, H(r*,m*)) を入手しても、
- fi が一方向置換なので、r* はわからない。
- r*が分からないと、G(r*)はm*と同じサイズの(r*とは独立な)ランダム文字列。
- よって、G(r*)+m* は m* を完全に隠す。
攻撃者Aが構成(CCAinRO)の妥当な暗号文 c = (a,w,b) を生成したとすると、
- a は a = fi(r) となる r を数学的に決定する。
- このrについて、等式 b = H(r, w-G(r)) が成り立っていなければならない。
- よって、Aはrを知っているはずである。
- よって、Aはcの復号文 m = w - G(r) を知っているはずである。
- Aにとって復号オラクルは意味がない。
定理(CCAinRO)の証明
構成(CCAinRO)に対する任意のCCA攻撃者をAとする。Aの成功確率を 1/2 + ε(n) とおく(識別利得はε(n))。
Aを用いてトラップドア置換 fi のインバーターBを構成する:
インバーターB: a*(=fi(r*))を入力として、インデックスiを補助入力として、
- pk=(i,G,H)を入力としてAを起動する。
- AからGオラクルに対する問い合わせrを受け取ったら、
- a* = f(r)ならば、rを出力して終了。
- G[r]が未定義ならば、g ← {0,1}l, G[r] = g
- g = G[r]を返答する。
- AからHオラクルに対する問い合わせ(r,m)を受け取ったら、
- a* = f(r)ならば、rを出力して終了。
- H[r,m]が未定義ならば、b ← {0,1}n, H[r,m] = b
- b = H[r,m]を返答する。
- Aから復号オラクルに対する問い合わせc=(a,w,b)を受け取ったら、
- b=H[r,m] かつ fi(r)=a かつ w=G(r)+m となる r,m をH記憶から検索する。
- みつかれば m を、みからなければ⊥を返答する。
- Aからチャレンジクエリ(m0,m1)を受け取ったら、
- w* ← {0,1}l, b* ← {0,1}n, c* = (a*, w*, b*)
- /* このとき、G,Hに対し、b* = H(r*, w*+G(r*)) というimplicitな関係を定義していることに注意。*/
- c*を返答する。
- Aが終了したら、終了する。
[攻撃者Bの解析]:
- AskR: 『AがGオラクルまたはHオラクルにr*をたずねる。』
- Fake: 『Aが復号オラクルにc=(a,w,b)を問い合わせ、a = fi(r), b = H(r, w+G(r))が成り立っているのに、
- (つまり、問い合わせ c は妥当な暗号文であるのに、)
- AはHオラクルに(r, w+G(r))を問い合わせていない。』
- Fakeが起きない限り、復号オラクルのシミュレーションは正しい。
- シミュレートされた復号オラクルの返答は復号アルゴリズムの返答に等しい。
- さらに、Fakeが起きない限り、
- AskRがおきないうちは、BのAに対するシミュレーションは完全である。(b*がテキトウであることがバレナイ)
- AskRがおきれば、Bは直ちに成功する。
- AskRが最後までおきなかったら、Aの成功確率は高々1/2である。
条件¬FakeのもとでのAの成功確率を 1/2 + ε'(n) とする。
条件¬Fakeのもとでの確率をPrNoFake[・]とかくことにすると、
- 1/2+ε'(n) = PrNoFake[Aが成功する | AskR] PrNoFake[AskR] + PrNoFake[Aが成功する | ¬AskR] PrNoFake[¬AskR]
- ≦ PrNoFake[AskR] + 1/2 = Pr[Bが成功する] + 1/2.
よって、仮定よりfiは一方向置換なので、ε'(n)はネグリジブルである。
さらに、
- 1/2 +ε'(n) = Pr[Aが成功する | ¬Fake] ≧ Pr[Aが成功する] - Pr[Fake] = 1/2 + ε(n) - Pr[Fake]
より
- ε(n) ≦ ε'(n) + Pr[Fake] .
よって、後は以下の主張を示せば、定理の証明は完了。
主張 Pr[Fake]はネグリジブルである。
証明 復号クエリc=(a,w,b)に対して、AはHオラクルに(r, w+G(r))を問い合わせていないのに、
- a = fi(r), b = H(r, w+G(r))
が成り立っているとする。
- r = r* かつ w+G(r) = w*+G(r*)のとき:
- (a,w,b) = (a*,w*,b*)となるので、ゲームのルールより、このケースは起こらない(としてよい)。
- r ≠r* または w+G(r) ≠ w*+G(r*)のとき:
- H(r, w+G(r))は、チャレンジ暗号文c*に含まれるb*=H(r*, w*+G(r*))とは独立な確率変数。
- 仮定より、H(r,w+G(r))はAにHオラクル経由でも入力されていない。
- 以上より、AのviewはH(r,w+G(r))と独立。したがって、Aの出力したbもH(r,w+G(r))と独立。
- よって、b = H(r, w+G(r)) となる確率はネグリジブルである。
Q.E.D.
Q.E.D.
最終更新:2009年10月10日 20:23