Provable Security2
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Provable Security2

on

  • 336 views

大学での暗号の講義(その2)

大学での暗号の講義(その2)
2008-2010

Statistics

Views

Total Views
336
Views on SlideShare
336
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Schnorr の認証プロトコル [Crypto’89]
  • Schnorr の認証プロトコル [Crypto’89]
  • Schnorr の認証プロトコル [Crypto’89]
  • Schnorr の認証プロトコル [Crypto’89]
  • 一つの公開鍵に複数の秘密鍵が存在するように
  • Okamoto92 認証プロトコル [Crypto’92]

Provable Security2 Presentation Transcript

  • 1. 暗号理論における安全性の証明: Identification Protocol (ユーザ認証プロトコル)の Witness-Hiding 性 羽田 知史( IBM 東京基礎研究所) Satoshi Hada (IBM Research - Tokyo) mailto: satoshih at jp ibm com
  • 2. 主要な参考文献
    • C. Schnorr: Efficient Identification and Signatures for Smart Cards. CRYPTO 1989: 239-252
    • T. Okamoto: Provably Secure and Practical Identification Schemes and Corresponding Signature Schemes. CRYPTO 1992: 31-53
  • 3. 安全性の証明を行うには、まず安全性を定義する必要があります。そのための、2つの基本的なアプローチがあります。
    • 攻撃ベースの定義
      • 一方向性関数
      • 公開鍵暗号
      • ユーザ認証プロトコル (Identification Protocol)
          • Okamoto92 の安全性の証明
    • Simulation Paradigm に基づく定義
      • 公開鍵暗号
      • ゼロ知識認証プロトコル ( Zero-Knowledge Identification Protocol )
  • 4. どうやって安全性を定義するか? その1:攻撃ベースの定義
  • 5. 攻撃ベースの定義は、安全性を定義する直観的にわかりやすい方法です。
    • 「攻撃が成功する」を定義する。
    • 「任意の攻撃者にとって、 攻撃が成功する確率が、無視できるほど小さい」、を定義する。
  • 6. 一方向性関数の定義
    • y=f(x) の一方向性
      • x から y の計算は簡単
      • y から x を計算するのが困難
    • 安全性(一方向性)の定義
      • 攻撃が成功するとは?
        • y が与えられたとき、 x s.t. y=f (x) を出力する
      • 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
        • ∀ 攻撃者 A, ∃negligible function δ(n) s.t.
          • Pr[x ← {0,1} n ; x’ ← A(f (x)) : x=x’] < δ(n)
  • 7. 公開鍵暗号の安全性の定義
    • 表記
      • Key generator KG
        • 入力: 1 n (セキュリティパラメータ)
        • 出力:( pk,sk )
          • pk: a public key of length n
          • sk: a corresponding secret key
      • Encryption/decryption algorithms
        • C ← E(pk, M): {0,1} n ×{0,1} n ->{0,1} n
        • M=D(sk, C)
          • ∀ n, ∀ M ∈{0,1} n , Pr[(pk,sk) ←KG(1 n ) ; C ← E(pk, M) : D(sk, C)=M]=1
    • 安全性の定義
      • 攻撃が成功するとは?
        • (pk, C) が与えられたとき、 M s.t. D(sk, C)=M を出力する
      • 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
        • ∀ 攻撃者 A, ∃negligible function δ(n) s.t.
          • Pr[ M ← {0,1} n ; (pk,sk) ← KG(1 n ) ; C ← E(pk,M); M’ ← A(pk,C) : M=M’] < δ(n)
  • 8. ユーザ認証( Identification )プロトコルとはネットワーク上にて通信相手の身元を証明、検証するためのプロトコルです。 証明者( P さん) 検証者 Interaction 本当に P さん ?
  • 9. パスワード認証
    • 悪意のある検証者は、パスワードを盗み、後に、 P さんになりすましが可能
    証明者( P さん) 検証者 ID=P, PW
  • 10. ディジタル署名ベースのユーザ認証プロトコル( SSL のサーバ認証など)
    • 明らかに(署名の)情報がもれている
    • その情報を使って、悪意のある検証者はなりすましできるかもしれない
    乱数 R PK, Sign(P’s SK, R) 証明者( P さん) 検証者 鍵ペア (PK,SK) 署名が正しいかを検証
  • 11. Identification プロトコルの安全性も攻撃ベースで定義できます
    • 表記
      • Key generator KG
        • 入力: 1 n (セキュリティパラメータ)
        • 出力:( pk,sk )
          • pk: a public key of length n
          • sk: a corresponding secret key
      • Identification プロトコル (P,V)
        • (P,V) への共通入力 pk
        • P への秘密入力 sk
        • 出力 < P(pk,sk), V(pk) > : V の decision
        • Pr[(pk,sk) ←KG(1 n ) ; d ← < P(pk,sk), V(pk) >: d=Accept]=1
    • 安全性の定義
      • 攻撃が成功するとは?
        • P と通信したあとに、 P になりますことができる
      • 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
        • ∀ 攻撃者 (A1, A2), ∃negligible function δ(n) s.t.,
          • Pr[(pk,sk) ← KG(1 n ) ; view ← < P(pk,sk), A1(pk) >; d ← <A2(pk,view), V(pk)> : d=Accept] < δ(n)
          • A1: 悪意のある検証者
          • A2: 悪意のある証明者
    2 種類の悪意: 悪意のある検証者 悪意のある証明者
  • 12. 証明者 検証者 公開鍵: v 秘密鍵: s s.t. v=g -s (mod p) x=v e g y が成り立てば Accept 左辺: x=g r 右辺: v e g y =g -es g r+es =g r e x=g r (mod p) y=r+es (mod q) 乱数: r ∈ Z q 乱数: e ( n bits ) Schnorr の Identification プロトコル は離散対数問題の困難性に基づいたプロトコルです 離散対数が困難という仮定の下では、公開鍵から秘密鍵を計算できない
  • 13. 証明者 検証者 公開鍵: v 秘密鍵: s s.t. v=g -s e y=r+es (mod q) 乱数: r ∈ Z q 乱数: e ( n bits ) 悪意のある証明者の観点から、 プロトコル は安全か? x=v e g y ? x=g r (mod p) e が予測できれば、 s を知らなくても、なりすましは簡単だが、正しく予測できる確率は 1/2 n (negligible)
  • 14. 証明者 検証者 公開鍵: v 秘密鍵: s s.t. v=g -s e y=r+es (mod q) 乱数: r ∈ Z q 乱数: e ( n bits ) 悪意のある証明者の観点から、 プロトコル は安全か? x=v e g y ? x=g r (mod p) ある x=g r を送信したとき、2つの異なる (e,e’) に対して、正しく返事できるなら、つまり、 (y,y’) s.t. x=v e g y =v e’ g y’ を計算できるなら、秘密鍵を s=(y’-y)/(e-e’) mod q として計算できる。つまり、高い確率で、なりすましできるためには、 s の知識が必須である。
  • 15. 証明者 検証者 公開鍵: v 秘密鍵: s s.t. v=g -s e y=r+es (mod q) 乱数: r ∈ Z q 乱数: e ( n bits ) 悪意のある検証者の観点から、 プロトコル は安全か? x=v e g y ? x=g r (mod p) y から s を計算するには、 r を計算する必要があるが、 x から r を計算するのは困難(離散対数問題)。
  • 16. 離散対数問題の困難性と Schnorr の Identification プロトコルの安全性の関係は未解決な部分があります
    • 自明な定理:
      • Schnorr の Identification プロトコルが安全なら、離散対数問題は困難
      • 証明(背理法)
        • 離散対数問題が簡単なら、公開鍵から秘密鍵を計算することは可能。
        • したがって、なりすましも容易。
    • 非自明な定理:
      • 離散対数問題が困難なら、 Schnorr の Identification プロトコルは安全である
        • これを証明したいが、未解決問題です。
        • 安全性が証明できるような修正版 (Okamoto92@CRYPTO’92) が提案されています
  • 17. Okamoto92 では、一つの公開鍵に複数の秘密鍵が存在するように公開鍵/秘密鍵の関係式を一般化している (関係式は、 Collision Resistant ハッシュ関数と同じ) v=g -s (mod p) v= g1 -s1 g2 -s2 関係式 秘密鍵 公開鍵 v v s∈Z q s1, s2 ∈Z q Schnorr Okamoto92 システム p, q, g p, q, g1, g2
  • 18. 証明者 検証者 公開鍵: v 秘密鍵: s1,s2 s.t. v= g1 -s1 g2 -s2 x=v e g1 y1 g2 y2 をチェック e x= g1 r1 g2 r2 y1=r1+e*s1 y2=r2+e*s2 乱数: r1,r2 ∈ Z q 乱数: e ( n bits ) Okamoto92 公開鍵 v から秘密鍵 (s1,s2) を計算する問題は、離散対数問題と等価
  • 19. 離散対数問題の困難性と Okamoto92 の安全性は等価であることが知られています
    • 自明な定理:
      • Okamoto92 が安全なら、離散対数問題は困難
      • 証明(背理法)
        • 離散対数問題が簡単なら、公開鍵から秘密鍵を計算することは可能。
          • f (p,q,g) (x)=g x と f (p,q,g1,g2) (x1,x2) の一方向性が等価だから
        • したがって、なりすましも容易。
    • 非自明な定理:
      • 離散対数問題が困難なら、 Okamoto92 は安全である
        • どうやって証明するか?
  • 20. Okamoto92 の安全性の証明の流れ
    • Step 1: Okamoto92 の2つの性質を証明
      • 知識の証明 (Proof of Knowledge) である。
      • 離散対数問題の困難性の仮定の下では、 Witness Hiding プロトコルである。
    • Step2: 一般的な定理を証明
      • 「 WH 性」を持つ「知識の証明」は、安全な Identification プロトコルである
  • 21. 知識の証明( Proof of Knowledge )とは?
    • 表記
      • Key generator KG
        • 入力: 1 n
        • 出力:( pk,sk )
          • pk: a public key of length n
          • sk: a corresponding secret key
      • Identification プロトコル (P,V)
        • (P,V) への共通入力 pk
        • P への秘密入力 sk
        • 出力 < P(pk,sk), V(pk) > : V の decision
        • Pr[(pk,sk) ←KG(1 n ) : < P(pk,sk), V(pk) >=Accept]=1
    • 知識の証明の定義
      • ある証明者 P’ が、検証者 V を accept させることができるなら、 P’ を使って秘密鍵 s を抽出できるような Knowledge Extractor が存在する。つまり、 P’ は秘密鍵 s を知っているはずです。
      • ∃ probabilistic polynomial-time machine E (knowledge extractor) s.t. ∀ prover P’,
          • If Pr[(pk,sk) ←KG(1 n ) ; d ← < P’(pk), V(pk) > : d=Accept] is not negligible, then Pr[(pk,sk) ←KG(1 n ) ; sk ← E P’ (pk) > : sk is a secret key corresponding to pk] is not negligible
  • 22. Okamoto92 は知識の証明である
    • Pr[(pk,sk) ←KG(1 n ) ; d ← < P’(pk), V(pk) > : d=Accept] is not negligible と仮定します
    • P’ を以下のように使って Knowledge Extractor を構築します。
      • P’ から第一メッセージ x を受信
      • e∈Z q をランダムに生成して P’ に送信
      • P’ から (y1, y2) s.t. x=v e g1 y1 g2 y2 を受信 ( 無視できない確率で )
      • P’ の計算の状態を Step1 直後まで巻き戻す (rewinding)
      • e’ ∈Z q (not equal to e) をランダムに生成して P’ に送信
      • P’ から (y1’, y2’) s.t. x=v e’ g1 y1’ g2 y2’ を受信 ( 無視できない確率で )
      • v e g1 y1 g2 y2 =v e’ g1 y1’ g2 y2’
        • v e-e’ =g1 y1’-y1 g2 y2’-y2
        • v=g1 y1’-y1/e-e’ g2 y2’-y2/e-e’
        • つまり、 v に対応する秘密鍵を生成できる ( 無視できない確率で )
  • 23. Witness Hiding プロトコルとは?
    • 表記
      • Key generator KG
        • 入力: 1 n (セキュリティパラメータ)
        • 出力:( pk,sk )
          • pk: a public key of length n
          • sk: a corresponding secret key
      • Identification プロトコル (P,V)
        • (P,V) への共通入力 pk
        • P への秘密入力 sk
        • 出力 < P(pk,sk), V(pk) > : V の decision
        • Pr[(pk,sk) ←KG(1 n ) : < P(pk,sk), V(pk) >=Accept]=1
    • WH 性の定義 ( 攻撃ベースの考え方で定義 )
      • 攻撃が成功するとは?
        • P と通信したあとに、 sk を計算できる
      • 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
        • ∀ 攻撃者 A, ∃negligible function δ(n) s.t.,
          • Pr[(pk,sk) ← KG(1 n ) ; s ← < P(pk,sk), A(pk) > : s is a secret key corresponding to pk] < δ(n)
  • 24. Crucial Observation: O kamoto92 は Witness Indistinguishability (WI) という性質を満たします
    • 同じ公開鍵に対して複数の秘密鍵が存在します(ハッシュ関数)。
      • v=g1 -s1 g2 -s2 =g1 -s1’ g2 -s2’
    • Witness Indistinguishability: 検証者の観点からは、 ( s1,s2 )と( s1’,s2’ )のどちらの秘密鍵を所持しているか 情報理論的に識別不可能 です。
      • 理由:(悪意のある)検証者の観点からは、どのような e を送ろうが、 ( s1,s2 )を所持しているときの (x,y1,y2) の確率分布と( s1’,s2’ )を所持しているときの (x,y1,y2) の確率分布がまったく同じだからです。無限の計算パワーがあっても、識別できません。
    e x= g1 r1 g2 r2 y1=r1+e*s1 y2=r2+e*s2
  • 25. 離散対数問題の困難性の仮定の下では、 Okamoto92 は WH プロトコルである
    • 証明(背理法)
      • WH プロトコルではないと仮定する
        • ∃ 攻撃者 A, ∃polynomial p(n) s.t.,
          • Pr[(pk=(p,q,g1,g2),sk=(s1,s2)) ← KG(1 n ) ; s ← < P(pk,sk), A(pk) > : s is a secret key] > 1/p(n)
    • この A を使って、離散対数問題を解く
      • 入力: (p,q,g,g x )
        • g1=g, g2= g x と表記
      • 鍵ペアをランダムに生成 v,(s1,s2) s.t. v=g1 -s1 g2 -s2
      • <P(v,(s1,s2)), A(v)> を simulate
      • A は( s1’,s2’ ) s.t. v=g1 -s1’ g2 -s2’ を 1/p(n) の確率で出力
        • WI 性により (s1,s2)= ( s1’,s2’ )となる確率は無視できる (1/q)
      • v=g1 -s1 g2 -s2 =g1 -s1’ g2 -s2’ が成り立つ
        • g2=g1 s1-s1’/s2’-s2
        • x=s1-s1’/s2’-s2
    • 離散対数問題の困難性に矛盾
  • 26. 「 WH 性」を持つ「知識の証明」は、安全な Identification プロトコルである
    • 証明(背理法)
      • 安全な Identification プロトコルでないと仮定
        • ∃ 攻撃者 (A1, A2), ∃polynomial p(n) s.t.,
          • Pr[(pk,sk) ← KG(1 n ) ; view ← < P(pk,sk), A1(pk) >; d ← <A2(pk,view), V(pk)> : d=Accept] > 1/p(n)
      • 知識の証明だから、 A2 を使う Knowledge Extractor が存在する
        • ∃ 攻撃者 (A1, A2), ∃ knowledge extractor E, ∃polynomial p(n) s.t.,
          • Pr[(pk,sk) ← KG(1 n ) ; view ← < P(pk,sk), A1(pk) >; s ← E A2(pk,view) (pk) : s is a secret key] > 1/p(n)
      • A1 と E A2 を組み合わせて、新しい攻撃者 A を作ると
        • ∃ 攻撃者 A, ∃polynomial p(n) s.t.,
          • Pr[(pk,sk) ← KG(1 n ) ; s ← < P(pk,sk), A(pk) > : s is a secret key] > 1/p(n)
      • A の存在は、 WH 性に矛盾します
  • 27. Schnorr のプロトコルの安全性の証明は何故難しい?
    • 何故?
      • Schnorr のプロトコルが知識の証明であることは、同様に、証明可能です。
      • では、 Schnorr のプロトコルの WH 性はどうでしょうか???
        • Okamoto92 に対する証明を Schnorr のプロトコルに適用するとどうなるでしょうか?
    • 参考:離散対数問題よりも強い仮定の下では、安全性が証明されています。
      • M. Bellare and A. Palacio, GQ and Schnorr Identification Schemes: Proofs of Security against Impersonation under Active and Concurrent Attacks, CRYPTO 2002.   http://www-cse.ucsd.edu/~mihir/papers/gq.pdf
  • 28. どうやって安全性を定義するか? その2: Simulation Paradigm に基づく定義
  • 29. 攻撃者ベースの公開鍵暗号の安全性定義には問題があります(1)
    • 先ほどの安全性の定義
      • 攻撃が成功するとは?
        • (pk, C) が与えられたとき、 M s.t. D(sk, C)=M を出力する
      • 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
        • ∀ 攻撃者 A, ∃negligible function δ(n) s.t.
          • Pr[M ← {0,1} n ; (pk,sk) ← KG(1 n ) ; C ← E(pk,M); M’ ← A(pk,C) : M=M’] < δ(n)
    • 問題点
      • 平文 M の特定のビットは、暗号文Cから漏れるかもしれない、という可能性を否定するほど強い定義ではない
  • 30. 攻撃者ベースの公開鍵暗号の安全性定義には問題があります(2)
    • 修正した安全性の定義
      • 攻撃が成功するとは?
        • predicateπ と (pk, C) が与えられたとき、 π(M) を出力する
      • 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
        • ∀ predicate π , ∀ 攻撃者 A, ∃negligible function δ(n) s.t.
          • Pr[M ← {0,1} n ; (pk,sk) ← KG(1 n ) ; C ← E(pk,M); b ← A(pk,C) : π(M)=b ] < ½+δ(n)
    • 問題点
      • 一見、問題が解決しているように見えるが、常に π(M) =1(True) になるような π の場合はどうか?
        • その場合、常に 1 を出力する攻撃者は、確率1で攻撃に成功する
        • しかし、上記の安全性の要求としては、この確率も ½ 程度でなければならない。つまり、上記安全性の定義の要求は強すぎると言える。
        • 攻撃ベースの定義では、「一切、情報が漏れない」を適切に表現するのは難しそう。
  • 31. Simulation Paradigm は、「一切、情報が漏れない」を表現する方法で、前述の問題を解決することができます
    • アイデア:攻撃者が計算できるものは、攻撃の対象がなくても、計算できる。
      • 例:攻撃者が(公開鍵、暗号文)から計算できるものは、その(公開鍵、暗号文)がなくても計算できる。
        • つまり、攻撃者の出力を(公開鍵、暗号文)がなくても Simulate できる。
      • ∀ 攻撃者 A 、∃ Simulator S s.t. anything A can compute from public key and ciphertexts, S can compute without them.
  • 32. Simulation Paradigm に基づいて、より強い公開鍵暗号の安全性を定義でき、前述の問題を解決します。
    • 修正した安全性の定義
      • 攻撃が成功するとは?
        • function f と (pk, C) が与えられたとき、 f(M) を出力する
      • 任意の攻撃者に対して、 Simulator が存在するとは?
        • ∀ function f , ∀ 攻撃者 A, ∃simulator S, ∃negligible function δ(n) s.t.
        • Pr[M ← {0,1} n ; (pk,sk) ← KG(1 n ) ; C ← E(pk,M); v ← S(1 n ) : f(M)=v] > Pr[M ← {0,1} n ; (pk,sk) ← KG(1 n ) ; C ← E(pk,M); v ← A(pk,C) : f(M)=v] -δ(n)
    • さきほどの問題がどう解消されるか?
      • 常に π(M) =1(True) になるような π の場合、常に 1 を出力する攻撃者に対しては、 Simulator も同様に常に 1 を出力すればいい。
  • 33. Witness Hiding 性の定義も同様の問題があります。
    • Witness Hiding 性の定義
      • 攻撃が成功するとは?
        • P と通信したあとに、 sk を計算できる
      • 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
        • ∀ 攻撃者 A, ∃negligible function δ(n) s.t.,
          • Pr[(pk,sk) ← KG(1 n ) ; s ← < P(pk,sk), A(pk) > : s=sk] < δ(n)
      • 問題点
        • sk の特定のビットは、 P と通信することにより漏れるかもしれない、という可能性を否定するほど強い定義ではない
        • ただし、 Identification プロトコルの安全性には十分
    • ゼロ知識性は、この問題を解決できます
  • 34. ゼロ知識性は、ユーザ認証プロトコルにおいて1ビットたりとも漏れない、という性質で、 Simulation Paradigm に基づいて定義されます
    • 表記
      • Key generator KG
        • 入力: 1 n (セキュリティパラメータ)
        • 出力:( pk,sk )
          • pk: a public key of length n
          • sk: a corresponding secret key
      • Identification プロトコル (P,V)
        • (P,V) への共通入力 pk
        • P への秘密入力 sk
        • 出力 < P(pk,sk), V(pk) > : V の decision
        • Pr[(pk,sk) ←KG(1 n ) : < P(pk,sk), V(pk) >=Accept]=1
        • 悪意のある検証者 A が得る情報 < P(pk,sk), A(pk) > は、 A の使う乱数 R と交換されるメッセージ
    • ゼロ知識性の定義
      • ∀ 攻撃者(悪意のある検証者) A, ∃simulator S, 以下の 2 つの確率分布が(計算量的に)識別不可能
        • {(pk,sk) ← KG(1 n ) ; history ← < P(pk,sk), A(pk) > : history } と
        • {(pk,sk) ← KG(1 n ) ; history ← S(pk) : history}
  • 35. まとめ
  • 36. まとめ 安全性の定義 実現可能 実現不可能 安全性の証明が既知 (証明が可能) 安全性の証明が 不可能あるいは 未解決
    • ユーザ認証プロトコル
    • WH プロトコル
    • 離散対数に基づく
      • Schnorr のプロトコル
      • Okamoto92
    • Okamoto92 の安全性
    • Schnorr のプロトコルの安全性
    • 強すぎる公開鍵暗号の安全性定義
  • 37. Backup
  • 38. Okamoto92 の公開鍵生成の一方向性:公開鍵から秘密鍵を計算できるか?
    • Schnorr
      • y=f (p,q,g) (x)=g x mod p
      • Parameter generator PG
        • 入力: 1 n (セキュリティパラメータ)
        • 出力:( p,q,g )
          • p: a prime of length n
          • q: another prime s.t. q|p-1
          • g: a generator of GF(p) of order q
        • ∀ 攻撃者 A, ∃negligible function δ(n) s.t.
          • Pr[ (p,q,g) ← PG(1 n ) ; x ← Z q ; x’ ← A(p,q,g,f (p,g) (x)) : x=x’] < δ(n)
    • Okamoto92
      • y=f (p,q,g1,g2) (x1,x2)= g1 x1 g2 x2 mod p
      • Parameter generator PG
        • 入力: 1 n (セキュリティパラメータ)
        • 出力:( p,q,g1,g2 )
          • p: a prime of length n
          • q: another prime s.t. q|p-1
          • G1,g2: a generator of GF(p) of order q
        • ∀ 攻撃者 A, ∃negligible function δ(n) s.t.
          • Pr[ (p,q,g1,g2) ← PG(1 n ) ; (x1,x2) ← Z q ; (x1’,x2’) ← A(p,q,g1,g2,f (p,g1,g2) (x1,x2)) : g1 x1’ g2 x2’ = g1 x1 g2 x2 ] < δ(n)
  • 39. Okamoto92 の公開鍵生成の一方向性は離散対数問題の困難性と等価です。
    • f (p,q,g) (x)=g x が一方向性関数ならば、 y=f (p,q,g1,g2) (x1,x2)= g1 x1 g2 x2 も一方向性関数である。
    • 証明(背理法)
      • f (p,q,g1,g2) (x1,x2) が一方向性関数でないと仮定する。
        • ∃ 攻撃者 A, ∃polynomial p(n) s.t.
          • Pr[ (p,q,g1,g2) ← PG(1 n ) ; (x1’,x2’) ← Z q ; (x1,x2) ← A(p,q,g1,g2,f (p,q,g1,g2) (x1’,x2`)) : g1 x1’ g2 x2’ = g1 x1 g2 x2 ] > 1/p(n)
      • A を使って、 f (p,q,g) (x) に対する攻撃者 A’ を構築
        • 入力 : (p,q,g) & y=f (p,q,g) (x)
        • 乱数生成 :r1,r2 ← Z q
        • A(p,q,g,y,g r1 y r2 ) を実行して、 (r1’,r2’) s.t. g r1 y r2 =g r1’ y r2’ を計算
          • (g,y) を (g1,g2) と解釈する
          • r1=r1’ & r2=r2’ となる確率は無視できるほど小さい
        • x=r2’-r2/r1-r1’ を出力する
      • 離散対数問題の困難性に矛盾