provable security1
DESCRIPTION
大学での暗号の講義(その1) 2008-2010TRANSCRIPT
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
暗号理論における安全性の証明離散対数問題に基づく暗号プリミティブの安全性議論
羽田 知史( IBM 東京基礎研究所)Satoshi Hada (IBM Research - Tokyo)
mailto: satoshih at jp ibm com
2
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
暗号理論の位置づけと役割
暗号理論の主要テーマ 安全性の定義
安全な暗号化とは?安全な電子署名とは? 安全性の証明
例:素因数分解問題が困難ならば、RSA暗号は安全である、ことを証明したい(未解決問題)。 不可能性の証明
例:プログラムの難読化は不可能 暗号 Primitive 間の関係
例:一方向性関数が存在すれば、安全な電子署名が構築できる(証明されている)。
基本的な暗号技術(暗号化、電子署名)基本的な暗号技術(暗号化、電子署名)
アクセス制御アクセス制御(ファイアウォール)(ファイアウォール)
電子選挙、オンライントレード、オークション電子選挙、オンライントレード、オークション
プロトコルプロトコル(SSL, IPSec)(SSL, IPSec)
ハードウェアハードウェア(TCG, IC(TCG, IC カードカード ))
プリミティブ(一方向性関数、擬似乱数、ゼロ知識)プリミティブ(一方向性関数、擬似乱数、ゼロ知識)
暗号
理論
ツール
アプリケーショ
ン
暗号を使って何ができて何ができない
か?を理論的に議論する
3
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
暗号理論の位置づけと役割
ビジネス要求(インターネット上に流れる顧客データを保護したい)
SSL/TLS(クライアント / サーバ認証、データの暗号化 & 改ざん防止)
計算量的困難性の仮定(離散対数問題の困難性)
ビジネス
IT満たされている?
満たされている?
4
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
暗号理論の位置づけと役割
ビジネス要求(ネットワーク上に流れる顧客データを保護したい)
SSL/TLS(クライアント / サーバ認証、データの暗号化 & 改ざん防止)
計算量的困難性の仮定(離散対数問題の困難性)
ビジネス
IT
安全性の定義:どういう安全性が提
供されるか?
安全性の証明:どういう仮定の下で安全性が保障される
か?
5
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
暗号理論の位置づけと役割
安全性の定義
実現可能
実現不可能
安全性の証明が既知(証明が可能)
安全性の証明が不可能あるいは
未解決
6
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
スケジュール
1.離散対数問題に基づく安全性議論
2. Identification Protocol (ユーザ認証プロトコル)のWitness-Hiding 性
3. Identification Protocol (ユーザ認証プロトコル)のZero-Knowledge 性
4. Program Obfuscation ( プログラムの難読化 )
7
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
第 1 回:離散対数問題に基づく安全性議論
離散対数問題: y=gx mod p
安全性の議論 一方向性関数 Collision Resistant ハッシュ関数 Diffie-Hellman 鍵共有 エルガマル暗号
8
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
第 2 回と第 3 回:ユーザ認証プロトコルの安全性の議論ユーザ認証( Identification )プロトコルとはネットワーク上にて通信相手の身元を証明、検証するためのプロトコルです。
証明者( P さん)
検証者
Interaction
本当にP さん ?
9
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
パスワード認証
悪意のある検証者は、パスワードを盗み、後に、 P さんになりすましが可能
証明者( P さん)
検証者
ID=P, PW
10
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
ディジタル署名ベースのユーザ認証プロトコル( SSL のサーバ認証など)
明らかに(署名の)情報がもれている その情報を使って、悪意のある検証者はなりすましできるかもしれない
乱数 R
PK, Sign(P’s SK, R)
証明者( P さん)
検証者
鍵ペア (PK,SK) 署名が正しいかを検証
11
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
証明者 検証者
公開鍵: v秘密鍵: s
s.t. v=g-s (mod p)
x=vegy が成り立てばAccept
左辺: x=gr
右辺: vegy =g-esgr+es=gr
e
x=gr (mod p)
y=r+es (mod q)
乱数:r Z∈ q
乱数:e ( n bits )
安全なユーザ認証プロトコルの例: Schnorr のプロトコル
離散対数が困難という仮定の下では、公開鍵から秘密鍵を計算できない
秘密鍵の情報が漏れないでいて欲しい
12
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
第 4 回:プログラムの難読化( Obfuscation )の安全性の議論
The winning entry for the 1998 International Obfuscated C Code Contest
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
離散対数問題に基づく安全性議論
14
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
準備(1)
セキュリティパラメーター 例:鍵の長さ
計算のモデル 「暗号アルゴリズムやプロトコルが効率的に実装可能」を表現する計算モデル
確率的多項式時間チューリングマシン
「攻撃者が効率的に実装可能」を表現する計算モデル 非一様な( Non-uniform)確率的多項式時間チューリングマシン
強い計算モデル:セキュリティパラメータ毎に異なるAdvice を使用できるa1, a2, …, an,…
Advice をどのように計算するかに制限はない
15
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
準備( 2 )
Pr[x1 ← X1; x2 ← X2 ; …. : E(x1,x2,…)] は、 x1 が確率分布 X1 から生成され、 x2 が確率分布 X2 から生成され、…た結果、事象 E(x1,x2,…) が発生する確率
X1,X2,… が集合の場合は、一様な確率分布を意味する 例:
サイコロの目をあらわす確率分布 X
Pr[x ← X : x=1] = 1/6 Pr[x ← X : x is even] = ½
独立な2つのサイコロの目をあらわす確率分布 X, Y
Pr[x ← X ; y ← Y : x=1 and y=1] = 1/36 Pr[x ← X ; y ← Y : x and y is even] = ¼ Pr[x ← X ; y ← Y : x = y] = 1/6
16
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
準備( 3 )
無視できるほど小さい(確率) f(n) is negligible
if polynomial p(n), sufficiently large n, f(n) < 1/p(n)∀ ∀ if polynomial p(n), constant N s.t. n>N, f(n)<1/p(n)∀ ∃ ∀
例: f(n) = 1/2n
確率的多項式時間チューリングマシンの能力では、 negligible な確率で起こる事象を捉えることはできない。
例: f(n)=1/2n の確率で成功する攻撃を多項式時間 n5 回繰り返しても、成功する確率はせいぜい n5/2n であり、なお negligible である
否定すると(背理法などで) f(n) is NOT negligible
if polynomial p(n), infinitely many n’s, f(n) > 1/p(n)∃ ∀ if polynomial p(n), s.t. constant N, n>N, f(n)>1/p(n)∃ ∀ ∃
17
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
準備(4)
離散対数問題 y=f(p,q,g)(x)=gx mod p
x から y は多項式時間で計算できる y から x を求める問題:効率的には解けないと仮定される
Parameter generator PG
入力: 1n (セキュリティパラメータ) 出力:( p,q,g )
p: a prime of length nq: another prime s.t. q|p-1
例えば、 p=2q+1g: 位数が q の数
G(p,q,g) ={g0=1,g,g2,g3,g4,…,gq-1} は g によって生成される巡回群gq=g0=1, gq+1=g, gq+2=g2,… 1以外の要素が、位数が q の数
G(p,q,g) から一つをgとしてランダムに選ぶ掛け算(割り算)で閉じている
ga*gb =ga+b(mod q) ∈ G(p,q,g)
ga/gb =ga-b(mod q) ∈ G(p,q,g)
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
一方向性関数と Collision Resistant ハッシュ関数
19
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
一方向性関数の概念
関数FX Y
簡単に計算できる
計算が困難
20
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
安全性の定義:
1.「攻撃が成功する」を定義する。2.「任意の攻撃者にとって、 攻撃が成功する
確率が、無視できるほど小さい」、を定義する。
21
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
抽象的:一方向性関数の定義
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)
22
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
具体的:離散対数問題に基づく一方向性関数
y=f(p,q,g)(x)=gx mod p の一方向性
安全性(一方向性)の定義 攻撃が成功するとは?
(p,q,g) & y が与えられたとき、 x s.t. y= gx mod p を出力する 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
∀ 攻撃者 A, negligible function δ(n) s.t.∃
Pr[ (p,q,g) ← PG(1n) ; x ← Zq; x’ ← A(p,q,g,gx) : x=x’] <
δ(n)
Zq={0,1,2, …,q-1}
23
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
ハッシュ関数の概念
ハッシュ関
数
Collision
24
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
Collision Resistant ハッシュ関数の概念
メッセージ M に対する署名の生成 S=Sig(sk, Hash(M))
Hash() : {0,1}* →{0,1} n
任意の長さのメッセージを n ビットにハッシュ(圧縮) 問題
もし、 Hash(M)=Hash(M’) となる M’ が見つけられると、 S は M’ の Valid な署名となる。 M に署名したつもりが、 M’ にも同時に署名したことになる。
署名アルゴリズム( 署名鍵 sk)
検証アルゴリズム(検証鍵 pk )
署名対象
M署名
SValid or invalid
Hash
署名対象
Hash(M)
長い 短い
25
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
抽象的: Collision Resistant ハッシュ関数の定義
y=Hash(x) の Collision Resistance x から y の計算は簡単 Hash(x)=Hash(x’) となるペア (x,x’) を計算するのが困難
安全性( Collision Resistance )の定義 攻撃が成功するとは?
Hash が与えられたとき、 Hash(x)=Hash(x’) となるペア (x,x’)を出力する。
任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?∀ 攻撃者 A, negligible function δ(n) s.t.∃
Pr[ (x,x’) ← A(1n) : |x|=|x’|=n and Hash(x)=Hash(x’)] < δ(n)
26
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
具体的:離散対数問題に基づく Collision Resistant ハッシュ関数
y=f(p,q,g1,g2)(x1,x2)= g1x1 g2x2 mod p
2|q| ビットを |p| ビットに圧縮 Parameter generator PG
入力: 1n (セキュリティパラメータ) 出力:( p,q,g1,g2 )
p: a prime of length nq: another prime s.t. q|p-1g1,g2: 位数が q の数
攻撃が成功するとは? (p,q,g1,g2) が与えられたとき、
(x1,x2) & (x1’,x2’) s.t. g1x1 g2x2 =g1x1’ g2x2’ mod p を出力する 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
∀ 攻撃者 A, negligible function δ(n) s.t. Pr[ (p,q,g1,g2) ← PG(1∃ n) ; ((x1,x2),(x1’,x2’)) ← A(p,q,g1,g2) : g1x1 g2x2 = g1x1’ g2x2’ ] < δ(n)
27
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
安全性の証明をどうやってやるのか? 証明したいこと:
離散対数問題が困難なら、離散対数問題に基づく Collision Resistant ハッシュ関数は安全である。
∀ 攻撃者 A, negligible function δ(n) s.t., ∃Pr[(pk,sk) ← KG(1n) ;….: …] < δ(n)
すべての攻撃者に対して、確率が無視できることを証明する必要がある 問題:攻撃者は無限に 存在する
A1,A2,A3,…….. Naïve な方法
すべての攻撃者に対して、確率が無視できることを証明する。 実際に使用される方法
帰着( Reduction )背理法:ある攻撃者が離散対数問題に基づく Collision Resistant ハッシュ関
数を破るなら、離散対数問題を解けることを証明 その攻撃者を(ブラックボックスとして)使って、離散対数問題を解くア
ルゴリズムを設計
28
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
安全性( Collision Resistance )の証明:離散対数問題が困難なら、離散対数問題に基づく Collision Resistantハッシュ関数は安全である ∃攻撃者 A s.t. Pr[ (p,q,g1,g2) ← PG(1n) ; ((x1,x2),(x1’,x2’)) ← A(p,q,g1,g2) :
g1x1 g2x2 = g1x1’ g2x2’ ] が無視できない確率と仮定します
以下のように、攻撃者 A をブラックボックスとして使用し、離散対数問題を解けます。
入力: y=gx mod p ((p,q,g) ← PG(1n) かつ x ← Zq)
出力 : x s.t. y=gx mod p
g1=g, g2=y とする
A(p,q,g1,g2) を実行し、 ((x1,x2),(x1’,x2’)) を計算する。 無視できない確率で g1x1 g2x2 =g1x1’ g2x2’ mod p を満たす。
g1x1 g2x2 =g1x1’ g2x2’
g2=g1(x1’-x1)/(x2-x2’) mod p y=g(x1’-x1)/(x2-x2’) mod p
x=(x1’-x1)/(x2-x2’) mod q を出力
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
Diffie-Hellman 鍵共有とエルガマル暗号
30
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
鍵共有の概念
鍵ペア (PKa, SKa) 鍵ペア (PKb, SKb)
Alice Bob
PKb
PKa
Ka=KE(PKb, SKa)を計算
Kb=KE(PKa, SKb)を計算
•Kab=Ka=Kb として鍵を共有できる•PKa と PKb から Kab を計算できない
31
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
抽象的:鍵共有の安全性の定義
表記 Key generator KG
入力: 1n (セキュリティパラメータ) 出力: (PK,SK) ← KG(1n)
PK: a public key of length n
SK: a corresponding secret key Key Exchange Functions
(PKa,SKa) ← KG(1n) , (PKb,SKb) ← KG(1n) Kab=KE(PKb, SKa)=KE(PKa, SKb)
安全性の定義 攻撃が成功するとは?
(PKa, PKb) が与えられたとき、 Kab を出力する 任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
∀ 攻撃者 A, negligible function δ(n) s.t.∃
Pr[(PKa,SKa) ← KG(1n) ; (PKb,SKb) ← KG(1n) ; Kab’ ← A(PKa,PKb) : Kab=Kab’] < δ(n)
32
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
具体的: Diffie-Hellman 鍵共有
(PKa, SKa)s.t. PKa=gSKa mod p
(PKb, SKb)s.t. PKb=gSKb mod p
Alice Bob
PKb
PKa
Ka=KE(PKb, SKa)=(PKb) SKa mod p =g SKa*SKb mod p
Ka=Kb として鍵を共有できる
Kb=KE(PKa, SKb)=(PKa) SKb mod p =g SKa*SKb mod p
33
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
具体的: Diffie-Hellman 鍵共有の安全性の定義
離散対数問題の Parameter generator PG 入力: 1n (セキュリティパラメータ) 出力:( p,q,g )
p: a prime of length nq: another prime s.t. q|p-1g: 位数が q の数
公開鍵、秘密鍵ペアの Key generator KG (PKa,SKa) ← KG(p,q,g) s.t. PKa=gSKa mod p (SKa ← Zq)
(PKb,SKb) ← KG(p,q,g) s.t. PKb=gSKb mod p (SKb ← Zq)
攻撃が成功するとは? (p,q,g, PKa, PKb) が与えられたとき、 gSKa*SKb mod p を出力する
任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
∀ 攻撃者 A, negligible function δ(n) s.t. Pr[ (p,q,g) ← PG(1∃ n) ; (PKa,SKa) ← KG(p,q,g) ; (PKb,SKb) ← KG(p,q,g) ; Kab’← A(p,q,g, PKa,PKb) : Kab’= gSKa*SKb mod p] < δ(n)
34
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
Diffie-Hellman 鍵共有の安全性の証明
「離散対数問題が困難と仮定すると、 Diffie-Hellman鍵共有は安全です」を証明できるかどうか?未解決問題です。
(p,q,g, PKa, PKb) が与えられたとき、 gSKa*SKb mod p を計算できたとしても、 SKa, SKb を計算できるかは非自明
35
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
共通鍵暗号と公開鍵暗号の概念
共通鍵暗号暗号化と復号に同じ鍵を使用鍵の配送が課題
公開鍵暗号暗号化と復号に異なる鍵を使用さらに、暗号化に使用する鍵は公開できる
36
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
抽象的:公開鍵暗号の安全性の定義
表記 Key generator KG
入力: 1n (セキュリティパラメータ) 出力:( 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(1n) ; 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(1n) ; C ← E(pk,M); M’ ← A(pk,C) : M=M’] < δ(n)
37
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
具体的:エルガマル暗号 離散対数問題の Parameter generator PG
入力: 1n (セキュリティパラメータ) 出力:( p,q,g )
p: a prime of length nq: another prime s.t. q|p-1g: 位数が q の数
公開鍵、秘密鍵ペアの Key generator KG (PK,SK) ← KG(p,q,g) (SK ← Zq)
s.t. PK=gSK mod p
暗号化 メッセージ: M
乱数 : R ← Zq
暗号文: C=(C1, C2)=(gR, M*PKR) mod p 復号
暗号文 : (C1,C2)
C2/C1SK= M*PKR/(gR)SK = M mod p
•PK をアリスの公開鍵•C1=gR をボブの公開鍵と見ると、PKR は Diffie-Hellman 共有鍵と見ることができる
なので、この安全性は、 Diffie-Hellman 鍵共有の安全性に依存
38
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
具体的:エルガマル暗号の安全性の定義
鍵生成: (PK,SK) ← KG(p,q,g) s.t. PK=gSK mod p 暗号化: C=(C1, C2)=(gR, M*PKaR) mod p 復号: C2/C1SK= M*PKaR/(gR)SK = M mod p
攻撃が成功するとは? (p,q,g, PK, (C1,C2)) が与えられたとき、 M を出力する
任意の攻撃者にとって、攻撃が成功する確率が無視できるほど小さいとは?
∀ 攻撃者 A, negligible function δ(n) s.t. Pr[ (p,q,g) ← PG(1∃ n) ; (PK,SK) ← KG(p,q,g) ; M ← Zp ; R ← Zq ; (C1,C2 )=(gR, M*PKaR) ; M’← A(p,q,g, PK, (C1,C2)) : M’= M] < δ(n)
39
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
エルガマル暗号の安全性の証明: Diffie-Hellman 鍵共有が安全なら、エルガマル暗号は安全である ∃攻撃者 A s.t. Pr[ (p,q,g) ← PG(1n) ; (PK,SK) ← KG(p,q,g) ; M ← Zp ;
R ← q ; (C1,C2 )=(gR, M*PKaR) ; M’← A(p,q,g, PK, (C1,C2)) : M’= M]が無視できない確率と仮定します
以下のように、攻撃者 A をブラックボックスとして使用し、 Diffie-Hellman 鍵共有の安全性を Break できます。
入力: (PKa, PKb)
出力: gSKa*SKb
PK=PKa, C1=PKb とする
ダミーの暗号文を生成: C2 ← Zp
A(p,q,g, PK, (C1, C2)) を実行し、 M’ を計算する。 無視できない確率で M’=C2/C1SK mod p を満たす。
C2/M’=C1SK=PKbSKa mod p を出力 エルガマル暗号暗号化: C=(C1, C2)=(gR, M*PKaR) mod p復号: C2/C1SK= M*PKaR/(gR)SK = M mod p
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
まとめ
41
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
まとめ
安全性の定義
実現可能
実現不可能
安全性の証明が既知(証明が可能)
安全性の証明が不可能あるいは
未解決
•一方向性関数•Collision Resistantハッシュ関数•鍵共有•公開鍵暗号
•離散対数に基づく•一方向性関数•Collision Resistant ハッシュ関数
•Diffie-Hellman 鍵共有•エルガマル公開鍵暗号
•離散対数に基づく Collision Resistantハッシュ関数の安全性•エルガマル公開鍵暗号の安全性
•Diffie-Hellman 鍵共有の安全性
•NA
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
Backup
43
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
暗号理論の位置づけと役割
ビジネス要求(社内の人間による顧客情報の漏えい防止)
SSL/TLS(クライアント / サーバ認証、データの暗号化 & 改ざん防止)
計算量的困難性の仮定(離散対数問題の困難性)
ビジネス
IT満たされていそうにない
満たされている?
44
Tokyo Research Laboratory
講義資料 © 2008 IBM Corporation
暗号理論の位置づけと役割
ビジネス要求(社内の人間による情報漏えい防止)
特殊な暗号プロトコルを設計してみました
計算量的困難性の仮定(離散対数問題の困難性)
ビジネス
IT
本当に満たされている?