情報セキュリティ特論(7) 黒澤 馨 (茨城大学) [email protected] RSA暗号 • C=Me mod N • C=0のとき、M=0とわかってしまう。 • C=1のとき、M=1とわかってしまう。 • 平文Mのどんな部分情報も 漏れないようにするには? 公開鍵暗号系 • 鍵生成アルゴリズム G • 暗号化アルゴリズム E • 復号アルゴリズム D 公開鍵暗号系の安全性 • IND-CPA安全性 Chosen Plaintext(平文)Attack • IND-CCA安全性 Chosen Ciphertext(暗号文) Attack IND-CPAを定義するゲーム チャレンジャー (pk,sk)←G 敵 pk m 0, m 1 b←{0,1} C=E(mb) b’ IND-CPA安全 if |Pr(b’=b)-1/2|<ε チャレンジャー (pk,sk)←G 敵 pk m 0, m 1 b←{0,1} C=E(mb) b’ IND-CPA安全 if |Pr(b’=b)-1/2|<ε for 全ての多項式時間の敵 チャレンジャー (pk,sk)←G 敵 pk m 0, m 1 b←{0,1} C=E(mb) b’ ElGamal暗号のIND-CPA安全性 チャレンジャー x←ランダム y=gx mod p 敵 g, y m 0, m 1 b←{0,1} C=(gr, mbyr) C b’ Pr( b’=b )≃1/2 定理 • ElGamal暗号はIND-CPA安全 under DDH仮定 • (証明) 演習 RSA≠IND-CPA安全 チャレンジャー 敵の動作 (N,e) m0=0, m1=1 b←{0,1} C=mbe mod N b’=0 if C=0 b’=1 if C=1 Pr( b’=b )=1 Pr(b’=b)=1なので、 • |Pr(b’=b)-1/2|=|1-1/2|=1/2≧ε • よって、 RSA暗号≠IND-CPA安全 IND-CPA安全なRSA-based暗号 • r←ランダム • c1=re mod N • c2=M + H(r) mod N ただし、Hはハッシュ関数 • 暗号文 C=(c1, c2) IND-CPA安全なRSA-based暗号 • • • • r←ランダム 公開鍵暗号でKを暗号化 K=H(r) c1=re mod N c2=M+擬似乱数生成器(K) (One-Time-PAD) 共通鍵暗号で平文Mを暗号化 • 暗号文 C=(c1, c2) IND-CPA安全なRSA-based暗号 • r←ランダム • c1=re mod N • c2=M + H(r) mod N • 暗号文 C=(c1, c2) AES暗号を利用した擬似乱数生成器 Seed (0) 2 K 出力 AES k0 (2) 2 (1) 2 K AES k1 K AES … k2 … AES暗号が擬似ランダム置換と仮定すると、 これは、標準モデルで擬似乱数生成器 ハイブリッド暗号 • C= 公開鍵暗号(共通鍵K) + 共通鍵暗号(K,平文m) • 公開鍵を使うので、 ハイブリッド暗号は公開鍵暗号の1つ ハイブリッド暗号 • C= 公開鍵暗号(共通鍵K) ← KEM + 共通鍵暗号(K,平文m) ← DEM • 公開鍵を使うので、 ハイブリッド暗号は公開鍵暗号の1つ KEM-DEMフレームワーク • CPA安全なKEM + One-Time-PAD = IND-CPA安全な 公開鍵暗号(ハイブリッド暗号) KEM • 鍵生成アルゴリズム G • 暗号化アルゴリズム E E(pk)=(暗号文 C, 鍵 K) • 復号アルゴリズム D D(C, sk)=K RSA-KEM • 公開鍵 (N,e) • 暗号化 r ← ランダム 暗号文 C=re mod N 鍵 K=H(r) KEMのCPA安全性 チャレンジャー (pk,sk)←G (C, K0) ← E(pk) K1=ランダム 敵 pk C, Kb b←{0,1} b’ Pr( b’=b )~1/2 KEMはCPA安全 • If 全ての多項式時間の敵に対し、 |Pr(b’=b)-1/2|<ε KEMのCPA安全性 in RO pk, C, Kb r1, r2, 敵 H H(r1), H(r2), b’ Pr( b’=b )~1/2 RSA-KEMのCPA安全性 in RO (N,e), C(=re mod N), K0 =H(r) or K1 =乱数 r1, r2, 敵 H H(r1), H(r2), b’ 定理 • RSA仮定の下で、 RSA-KEMはCPA安全 in the ランダム・オラクル・モデル 補題 • Pr(b’=b)-1/2=ε (non-negligible) と仮定すると Pr(敵がrをHオラクルに質問する)≧2ε 証明 • X=敵がrをHオラクルに質問する事象 • Pr(b’=b)= Pr(b’=b, X)+ Pr(b’=b, ¬X) 証明 • X=敵がrをHオラクルに質問する事象 • Pr(b’=b)= Pr(b’=b, X)+ Pr(b’=b, ¬X) =Pr(b’=b | X) Pr(X) + Pr(b’=b | ¬ X) Pr(¬ X) 証明 • X=敵がrをHオラクルに質問する事象 • Pr(b’=b)= Pr(b’=b, X)+ Pr(b’=b, ¬X) =Pr(b’=b | X) Pr(X) + Pr(b’=b | ¬ X) Pr(¬ X) ≦Pr(X) + 1/2 Pr(¬ X) 証明 • X=敵がrをHオラクルに質問する事象 • Pr(b’=b)= Pr(b’=b, X)+ Pr(b’=b, ¬X) =Pr(b’=b | X) Pr(X) + Pr(b’=b | ¬ X) Pr(¬ X) ≦Pr(X) + 1/2 Pr(¬ X) =Pr(X) + 1/2 (1-Pr(X)) 証明 • X=敵がrをHオラクルに質問する事象 • Pr(b’=b)= Pr(b’=b, X)+ Pr(b’=b, ¬X) =Pr(b’=b | X) Pr(X) + Pr(b’=b | ¬ X) Pr(¬ X) ≦Pr(X) + 1/2 Pr(¬ X) =Pr(X) + 1/2 (1-Pr(X)) =1/2+1/2Pr(X) 証明 • X=敵がrをHオラクルに質問する事象 • Pr(b’=b)= Pr(b’=b, X)+ Pr(b’=b, ¬X) =Pr(b’=b | X) Pr(X) + Pr(b’=b | ¬ X) Pr(¬ X) ≦Pr(X) + 1/2 Pr(¬ X) =Pr(X) + 1/2 (1-Pr(X)) =1/2+1/2Pr(X) ゆえに、1/2Pr(X)≧ Pr(b’=b)-1/2=ε 補題 • Pr(b’=b)-1/2=ε (non-negligible) と仮定すると Pr(敵がrをHオラクルに質問する)≧2ε • (証明完了) RSA-KEMのCPA安全性の証明 (N, e), C=re mod N (N, e), C, b←{0,1}、Kb =乱数 r1, r2, 敵 H H(r1), H(r2), b’ r (N, e), C=re mod N (N, e), C, Kb =乱数 補題より どこかでr H 敵 (N, e), C=re mod N (N, e), C, Kb =乱数 補題より どこかでr H 敵 r if C=re mod N (N, e), C=re mod N (N, e), C, Kb =乱数 r1 H 敵 r=r1 if C=r1e mod N (N, e), C=re mod N (N, e), C, Kb =乱数 r1 敵 H H(r1)=乱数 C≠r1e mod Nのとき (N, e), C=re mod N (N, e), C, Kb =乱数 r2 H 敵 r=r2 if C=r2e mod N 定理 • RSA仮定の下で、 RSA-KEMはCPA安全 in the RO モデル • (証明完了) 定理 • RSA仮定の下で、以下の暗号系はCPA安全 in the RO モデル RSA-KEM • r←ランダム、K=H(r) • c1=re mod N • c2=M+擬似乱数生成器(K) (One-Time-PAD) • 暗号文 C=(c1, c2) 証明 • CPA安全なKEM(公開鍵暗号) + One-Time-PAD = IND-CPA安全な公開鍵暗号 RSA-KEMはCPA安全、を証明した。 (証明終) ハイブリッド暗号の効能 • IND-CPA (IND-CCA) 安全な公開鍵暗号 を簡単に作れる • 平文は、任意の長さのビット列でよい。 ハイブリッド暗号に関する定理 • CPA安全なKEM(公開鍵暗号) + One-Time-PAD = IND-CPA安全な公開鍵暗号 (証明) ハイブリッド暗号のIND-CPA チャレンジャー (pk,sk)←G 敵 pk m0, m1 b←{0,1} (c1*, K*)←KEM(pk) c2*=mb+擬似乱数(K*) m 0, m 1 C*=(c1*, c2*) b’ Game 0 チャレンジャー (pk,sk)←G 敵 pk m0, m1 b←{0,1} (c1*, K* )←KEM(pk) c2*=mb+擬似乱数(seed=K* ) m 0, m 1 C*=(c1*, c2*) b’ Game 1 チャレンジャー (pk,sk)←G 敵 pk m0, m1 b←{0,1} (c1*, K*)←KEM(pk) c2*=mb+擬似乱数(seed=乱数) m 0, m 1 C*=(c1*, c2*) b’ 補題1 • ハイブリッド暗号において Pr(b’=b in Game 0)~ Pr(b’=b in Game 1) if KEM is CPA 安全 • (証明) ハイブリッド暗号の敵を基に、 KEMの敵を以下のように構成する。 KEMの敵 KEMの チャレンジャー ハイブリッド暗号の敵 pk pk (pk,sk)←G (c1*, K0)←KEM K1←ランダム d←{0,1} c1*, Kd m0, m1 b←{0,1} c2*= mb + 擬似乱数(seed=Kd) C*=(c1*, c2*) b’ d’ =1 if b’=b d=0のとき KEMの敵 KEMの チャレンジャー ハイブリッド暗号の敵 pk pk (pk,sk)←G (c1*, K0)←KEM K1←ランダム Game 0 c1*, K0 m0, m1 d←0 b←{0,1} c2*= mb + 擬似乱数(seed=K0) C*=(c1*, c2*) b’ d’ =1 if b’=b d=1のとき KEMの敵 KEMの チャレンジャー ハイブリッド暗号の敵 pk pk (pk,sk)←G (c1*, K0)←KEM K1←ランダム Game 1 c1*, K1 m0, m1 d←1 b←{0,1} c2*= mb + 擬似乱数(seed=K1) C*=(c1*, c2*) b’ d’ =1 if b’=b d’=1 if b’=b なので、 • Pr(d’=1 when d=0)=Pr(b’=b in Game 0) • Pr(d’=1 when d=1)=Pr(b’=b in Game 1) 証明 • Pr(d’=1 when d=0)=Pr(b’=b in Game 0) • Pr(d’=1 when d=1)=Pr(b’=b in Game 1) KEMの敵は、d=0 or 1を区別できないので、 • Pr(d’=1 when d=0)~ Pr(d’=1 when d=1) よって、 • Pr(b’=b in Game 0) ~ Pr(b’=b in Game 1) 補題1 • ハイブリッド暗号において Pr(b’=b in Game 0)~ Pr(b’=b in Game 1) if KEM is CPA 安全 (証明完了) 補題2 • Pr(b’=b in Game 1)~1/2 Game 1 チャレンジャー (pk,sk)←G 敵 pk m0, m1 b←{0,1} (c1*, K*)←KEM(pk) c2*=mb+擬似乱数(seed=乱数) m 0, m 1 C*=(c1*, c2*) b’ Game 1 チャレンジャー (pk,sk)←G 敵 pk m0, m1 b←{0,1} (c1*, K*)←KEM(pk) c2*=mb+擬似乱数(seed=乱数) c2*は、c1*とは独立なone-time-pad なので、 Pr(b’=b)=1/2 m 0, m 1 C*=(c1*, c2*) b’ 補題2 • Pr(b’=b in Game 1)~1/2 • (証明完了) ハイブリッド暗号に関する定理 • CPA安全なKEM(公開鍵暗号) + One-Time-PAD = IND-CPA安全な公開鍵暗号 (証明) 補題1、補題2より。 公開鍵暗号系の安全性 • IND-CPA安全性 Chosen Plaintext(平文)Attack • IND-CCA安全性 Chosen Ciphertext(暗号文) Attack 公開鍵暗号のIND-CCA安全性 チャレンジャー (pk,sk)←G 復号オラクル 敵 pk m 0, m 1 b←{0,1} C=E(mb) C以外の暗号文を 復号してもらえる b’ KEMのCCA安全性 チャレンジャー (pk,sk)←G (C, K0) ← E(pk) K1=ランダム 敵 復号オラクル pk C, Kb C以外の暗号文を 復号してもらえる b←{0,1} b’ DEM(共通鍵暗号)のCCA安全性 復号オラクル チャレンジャー 敵 m 0, m 1 K←ランダム b←{0,1} C=EK(mb) C C以外の暗号文を 復号してもらえる b’ CCA安全 if |Pr(b’=b)-1/2|<ε KEM-DEMフレームワーク • CCA安全なKEM(公開鍵暗号) + CCA安全なDEM(共通鍵暗号) = IND-CCA安全な公開鍵暗号 公開鍵暗号の暗号文 C=KEM(共通鍵K)+DEM(共通鍵K,m) 定理 • RSA仮定の下で、 • RSA-KEMはCCA安全 • In the RO モデル CCA安全なDEMの構成法 • K→ 擬似乱数生成器 → K1 , K 2 • 暗号文 C=(E, Tag) E M K1 Tag One Time MACK2 (E) 敵は、MACオラクルに1回だけ質問して偽造する (通常のMACで十分) IND-CCA安全なハイブリッド暗号 公開鍵 (N,e) r ← ランダム 共通鍵 K=H(r) 暗号文 C=(φ, χ) r modN KEMの暗号文 χ=(E, Tag) DEMの暗号文 (鍵K) e RSA仮定の下で、IND-CCA安全 in the RO model ROモデル IND-CPA安全な ハイブリッド暗号の 構成法 IND-CCA安全な ハイブリッド暗号の 構成法 RSA-KEM + one-time-pad RSA-KEM + one-time-pad + MAC ROなしで、IND-CPAな暗号 ElGamal暗号 Paillier暗号 DDH仮定 N次剰余仮定 N次剰余仮定 • xN = a+bN mod N2 としたとき、 • (a,b) と (a, 乱数)は computationally indistinguishable • ただし、 x←{1,2,…, N-1} Paillier暗号 • 公開鍵 N=pq • 秘密鍵 p, q • 暗号化 x ←{1,2,…, N-1} xN=a+bN mod N2 C=(a, b+m mod N) Paillier暗号 • 暗号化 x ←{1,2,…, N-1} xN=a+bN mod N2 C=(a, b+m mod N) 復号 xN =a mod N より、x=ad mod N xN=a+bN mod N2 により、bを求める 定理 • Paillier暗号は、N次剰余仮定の下で IND-CPA安全 N次剰余仮定 • xN = a+bN mod N2 としたとき、 • (a,b) と (a, 乱数)は computationally indistinguishable とは、どういう意味か? 確率変数 XとY Pr(X=a) Pr(Y=a) a Statistically distance |X-Y| Pr(X=a) Pr(Y=a) a X and Y are statistically indistinguishable if |X-Y|<ε Pr(X=a) Pr(Y=a) a 補題 この面積=この面積 Pr(X=a) Pr(Y=a) a 証明 Pr(X=a) C=1-A B=1-A Pr(Y=a) A a 系 |X-Y| = 2×この面積 Pr(X=a) Pr(Y=a) a Distinguisher X D Px = Pr(D=1) 0 or 1 例(1) PX = Pr(D=1) Pr(X=a) Pr(Y=a) a D=1 D=0 例(1) PY = Pr(D=1) Pr(X=a) Pr(Y=a) a D=1 D=0 例 (1) 2×(PX-PY) = |X-Y| Pr(X=a) Pr(Y=a) a 例(2) PY = Pr(D=1) Pr(X=a) Pr(Y=a) a D=1 D=0 例(2) Px = Pr(D=1) Pr(X=a) Pr(Y=a) a D=1 D=0 例(2) 2×(PX-PY) < |X-Y| Pr(X=a) Pr(Y=a) a D=1 D=0 定理 • 2×maxD |PX-PY| = |X-Y| • Dは、指数時間アルゴリズムでもよい。 定義 • X and Y are computationally indistinguishable if maxD |PX-PY| < ε ただし、Dは多項式時間アルゴリズム DDH仮定 • (g,ga,gb,gab)と(g,ga,gb,gc)は computationally indistinguishable • ただし、 a,b,cはランダム Distinguisher X= (g,ga,gb,gab) D Px = Pr(D=1) Y= (g,ga,gb,gc) D PY = Pr(D=1) maxD |PX-PY| < ε ただし、Dは多項式時間アルゴリズム N次剰余仮定 • xN = a+bN mod N2 としたとき、 • (a,b) と (a, 乱数)は computationally indistinguishable • ただし、 x←{1,2,…, N-1} Paillier暗号 • 公開鍵 N=pq • 秘密鍵 p, q • 暗号化 x ←{1,2,…, N-1} xN=a+bN mod N2 C=(a, b+m mod N) 定理 • Paillier暗号は、N次剰余仮定の下で IND-CPA安全 証明 • 暗号化 x ←{1,2,…, N-1} xN=a+bN mod N2 C=(a, b+m mod N) ≒ (a, 乱数+m mod N) one-time pad 演習 • ElGamal暗号のIND-CPA安全性を破る敵A が存在したと仮定すると、 DDH仮定を破るdistinguisher D が存在することを示せ。 (ヒント) Aをサブルーチンとして使い、Dを構成せよ。 ElGamal暗号 • 公開鍵: p, q, g, y(=gx mod p) • 秘密鍵: x • 平文: m • 暗号化: r ← zp-1 E(m)=(gr, myr) 2015/9/30 confidential 97 直感的な証明 • DDH仮定より (g,y,gr,yr)と(g,y,gr,gz)は多項式時間で区別不可能 ただし、zは乱数 • 暗号文: E(m) = (gr, m・yr) ~(gr, m・gz ) m×gz=m×乱数 → one-time pad mに関する情報は、もれていない 2015/9/30 confidential 98 ElGamal暗号のIND-CPA安全性 チャレンジャー x←ランダム y=gx mod p 敵 g, y m 0, m 1 b←{0,1} C=(gr, mbyr) C b’ Pr( b’=b )≃1/2
© Copyright 2025 ExpyDoc