定理(GQ1)の証明のアイデア
pk = (N, e, X), sk = (N, e, x)に関する、GQプロトコルのトランスクリプトは
- コミットメント (Y), チャレンジ (c), レスポンス (z).
これについて、
が成り立てば、検証者Vは受理する。
[トランスクリプトから秘密鍵xの(大事な)情報が漏れないこと]
トランスクリプトは、秘密鍵x を用いなくても、
- z' ← ZN*, c' ← {0,1}l, Y' = z'e X-c' mod N
と生成できる。
よって、トランスクリプトは(秘密鍵xをもたない)誰にでも生成できる。
[秘密鍵xをもたなければ、証明者になりすませないこと]
攻撃者Aがなりすましを試み、
コミットメントYを送った時点を考える。
Aが(無視できない確率で)なりすましに成功するならば、Aは、
2通りのc
1、c
2に対し、それぞれ、妥当な応答z
1、z
2を返せるはず:
- z1e ≡ YXc1 (mod N),
- z2e ≡ YXc2 (mod N).
このとき、
- (z1/z2)e ≡ Xc1-c2 (mod N).
これから、we ≡ X (mod N) となるwを効率的に計算できる。
つまり、Aは秘密鍵w=xを知っている。
定理(GQ1)の証明
GQプロトコルに対する任意の受動的な攻撃者をA=(A1 , A2)とする。
Aを用いて、primeGenRSAが生成する(e,N)について、
RSA問題(e,N,X)を解くアルゴリズムBを構成する:
B: (e, N, X)を入力として、
- ※ Bは we ≡ X (mod N) となるwを計算したい。
- pk = (e, N, X) を入力としてA1を起動する:
- A1 がトランスクリプトを要求したら、
- z' ← ZN*, c' ← {0,1}l, Y' = z'e X-c' mod N
- (Y', c', z')を返す。
- A1の出力stを受け取り、A2をstを入力として起動する。
- ※ ここで、A2(st)は決定的としてよい。(stに必要なランダムテープが含まれているとしてよいから。)
- A2からYを受け取ったら、c1 ← {0,1}l を返す。
- A2からz1を受け取ったら、
- z1e ≡? YXc1 (mod N) でないならば、アボート。
- A2を再びstを入力として起動する。
- A2から(先と同一の)Yを受け取り、c2 ← {0,1}l を返す。
- A2からz2を受け取ったら、
- z2e ≡? YXc2 (mod N) でないならば、アボート。
- c1 = c2 ならばアボート。
- (z1/z2)e ≡ Xc1-c2 (mod N) より、we ≡ X (mod N) となるwを計算し、出力する。
- ※ gcd(c1 - c2, e) = 1 なので 補題(CS)を適用できる。
[Bの解析]:
明らかに、Bがアボートしなければ、その出力wはRSA問題(e,N,X)の正しい解。よって、
- Pr[BがRSA問題を解く] = Pr[Bがアボートしない].
一方、BのAに対するシミュレーションは完ぺきなので、
- 『 Bがアボートしない 』 ≡ 『 証明者Q=A2(st)に対し、イベントRESが成り立つ 』。
よって、補題(Reset)より
- Pr[Bがアボートしない] = Pr[RES] ≧ (Pr[Aがなりすましに成功] - 1/2l)2.
以上より、
- Pr[BがRSA問題を解く] ≧ (Pr[Aがなりすましに成功] - 1/2l)2.
仮定より、
- l はスーパーログなので、1/2lはネグリジブル。
- Pr[BがRSA問題を解く]もネグリジブル。
よって、Pr[Aがなりすましに成功]もネグリジブル。(ただし、ネグリジブルの「度合い」は半分。)
Q.E.D.
最終更新:2009年11月19日 17:57