定理(LinearTBE)の証明のアイデア
攻撃者Aが構成(LinearTBE)のタグt*、公開鍵
- pk = (q, g1, g2, z, u1, u2)
に関する暗号文
- ctbe* = (c*1=g1r1, c*2=g2r2, d1 = zt*r1 u1r1, d2 = zt*r2 u2r2, e = m zr1+r2)
を入手したとする。
判定線形仮定より、上のzr1+r2は群G上のランダムな要素と思ってよい。
よって、ctbe* はmの情報を漏らさない。
- 厳密には、d1やd2にもr1, r2が含まれるので、この議論は不十分。
攻撃者Aが構成(LinearTEB)の妥当な暗号文 ctbe = (c1, c2, d1, d2, e) を生成できたとする。
- 正しいd1, d2を計算したのだから、Aはci=giriとなるr1, r2を知っているだろう。
- そうならば、m = e/zr1+r2なので、
攻撃者Aは最初からmを知っていることとなり、復号オラクルは役に立たないはず。
定理(LinearTBE)の証明
構成(LinearTBE)に対する任意のタグ選択攻撃者をAとする。Aを用いて判定線形仮定における識別者Dを構成する:
識別者D: (g1, g2, z, g1r1, g2r2, w)を入力として、
- ※ Dはwについて、w=zr1+r2 なのか、それとも独立なランダム要素なのか、識別したい。
- 1nを入力としてタグ選択攻撃者Aを起動し、ターゲットタグt*を受け取る。
- γ1,γ2 ← Zq, u1 = z-t*g1γ1, u2 = z-t*g2γ2
- pk = (g1, g2, z, u1, u2)をAに送る。
- ※ タグt*についてだけは、u1zt*, u2zt*のg1,g2に関する離散対数γ1, γ2がわかる!
- ※ x1 := logg1(z), x2 := logg2(z), y1 := logg1(u1) = -t*x1 + γ1, y2 := logg2(u2) = -t*x2 + γ2.
- Aからチャレンジクエリ(m0,m1)を受け取ったら、
- b ← {0,1} をランダムに選択し、
- ctbe* = (c1*=g1r1, c2*=g2r2, d1* = (g1r1)γ1, d2* = (g2r2)γ2, e* = mbw)を返す。
- ※ di* = (giri)γi = (uizt*)ri.
- ※ よって、w = zr1+r2のとき、ctbe*はmbの正当な暗号文。
- Aからタグ t (≠t*) について復号クエリ ctbe = (c1, c2, d1, d2, e) を受け取ったら、
- Pvtbe(pk, t, ctbe) =? 0 : ランダムメッセージを返す。
- else k = ( (d1 d2)/(c1γ1 c2γ2) )1/(t-t*), m = e/k を返す。
- ※ di = citxi+yi = citxi+(-t*xi+γi) = (cixi)t-t* ciγi.
- ※ ∴ (di/ciγi)1/(t-t*) = cixi.
- Aが出力b' で終了したら、b =? b' を出力して終了。
識別者Dの解析:
- w = zr1+r2のとき、Pr[D=1] = Pr[Aが成功].
- wがランダムのとき、Pr[D=1] = 1/2.
よって、Dの識別利得 = Aの識別利得 ≦ ネグリジブル(n).
Q.E.D.
最終更新:2009年11月04日 17:30