Provable Security2

365
-1

Published on

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

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
365
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Schnorr の認証プロトコル [Crypto’89]
  • Schnorr の認証プロトコル [Crypto’89]
  • Schnorr の認証プロトコル [Crypto’89]
  • Schnorr の認証プロトコル [Crypto’89]
  • 一つの公開鍵に複数の秘密鍵が存在するように
  • Okamoto92 認証プロトコル [Crypto’92]
  • Provable Security2

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

      Clipping is a handy way to collect important slides you want to go back to later.

    ×