1k likes | 1.39k Views
情報セキュリティ特論( 7 ). 黒澤 馨 (茨城大学) kurosawa@mx.ibaraki.ac.jp. RSA 暗号. C=M e mod N C=0 のとき、 M=0 とわかってしまう。 C=1 のとき、 M=1 とわかってしまう。 平文 M のどんな部分情報も 漏れないようにするには?. 公開鍵暗号系. 鍵生成アルゴリズム G 暗号化アルゴリズム E 復号アルゴリズム D. 公開鍵暗号系の安全性. IND-CPA 安全性 Chosen Plaintext (平文) Attack IND-CCA 安全性
E N D
情報セキュリティ特論(7) 黒澤 馨 (茨城大学) kurosawa@mx.ibaraki.ac.jp
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 (pk,sk)←G m0, m1 b←{0,1} C=E(mb) b’
IND-CPA安全 if |Pr(b’=b)-1/2|<ε チャレンジャー 敵 pk (pk,sk)←G m0, m1 b←{0,1} C=E(mb) b’
IND-CPA安全 if |Pr(b’=b)-1/2|<εfor 全ての多項式時間の敵 チャレンジャー 敵 pk (pk,sk)←G m0, m1 b←{0,1} C=E(mb) b’
ElGamal暗号のIND-CPA安全性 チャレンジャー 敵 g, y x←ランダム y=gx mod p m0, m1 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=H(r) • c1=re mod N • c2=M+擬似乱数生成器(K) (One-Time-PAD) • 暗号文 C=(c1, c2) 公開鍵暗号でKを暗号化 共通鍵暗号で平文Mを暗号化
IND-CPA安全なRSA-based暗号 • r←ランダム • c1=re mod N • c2=M + H(r) mod N • 暗号文 C=(c1, c2)
AES AES AES AES暗号を利用した擬似乱数生成器 Seed … … 出力 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 (pk,sk)←G (C, K0) ← E(pk) K1=ランダム b←{0,1} C, Kb b’ Pr( b’=b )~1/2
KEMはCPA安全 • If 全ての多項式時間の敵に対し、 |Pr(b’=b)-1/2|<ε
pk, C, Kb r1, r2, H 敵 H(r1), H(r2), b’ KEMのCPA安全性 in RO Pr( b’=b )~1/2
(N,e), C(=re mod N), K0 =H(r) or K1=乱数 r1, r2, H 敵 H(r1), H(r2), b’ RSA-KEMのCPA安全性 in RO
定理 • 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ε • (証明完了)
(N, e), C=re mod N (N, e), C, b←{0,1}、Kb =乱数 r1, r2, H 敵 H(r1), H(r2), b’ RSA-KEMのCPA安全性の証明 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 敵 C≠r1e mod Nのとき H(r1)=乱数
(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 モデル • r←ランダム、K=H(r) • c1=re mod N • c2=M+擬似乱数生成器(K) (One-Time-PAD) • 暗号文 C=(c1, c2) RSA-KEM
証明 • CPA安全なKEM(公開鍵暗号) + One-Time-PAD = IND-CPA安全な公開鍵暗号 RSA-KEMはCPA安全、を証明した。 (証明終)
ハイブリッド暗号の効能 • IND-CPA (IND-CCA) 安全な公開鍵暗号 を簡単に作れる • 平文は、任意の長さのビット列でよい。
ハイブリッド暗号に関する定理 • CPA安全なKEM(公開鍵暗号) + One-Time-PAD = IND-CPA安全な公開鍵暗号 (証明)
ハイブリッド暗号のIND-CPA チャレンジャー 敵 pk (pk,sk)←G m0, m1 m0, m1 b←{0,1} (c1*, K*)←KEM(pk) c2*=mb+擬似乱数(K*) C*=(c1*, c2*) b’
Game 0 チャレンジャー 敵 pk (pk,sk)←G m0, m1 m0, m1 b←{0,1} (c1*, K* )←KEM(pk) c2*=mb+擬似乱数(seed=K* ) C*=(c1*, c2*) b’
Game 1 チャレンジャー 敵 pk (pk,sk)←G m0, m1 m0, m1 b←{0,1} (c1*, K*)←KEM(pk) c2*=mb+擬似乱数(seed=乱数) 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 Game 0 (c1*,K0)←KEM K1←ランダム d←0 c1*, K0 m0, m1 b←{0,1} c2*= mb + 擬似乱数(seed=K0) C*=(c1*, c2*) b’ d’ =1 if b’=b