情報セキュリティ特論( 7 )
DESCRIPTION
情報セキュリティ特論( 7 ). 黒澤 馨 (茨城大学) [email protected]. 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 安全性 - PowerPoint PPT PresentationTRANSCRIPT
情報セキュリティ特論( 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
敵
m0, m1
pk
b←{0,1}C=E(mb)
b’
IND-CPA 安全 if |Pr(b’=b)-1/2|<ε
チャレンジャー
(pk,sk)←G
敵
m0, m1
pk
b←{0,1}C=E(mb)
b’
IND-CPA 安全 if |Pr(b’=b)-1/2|<εfor 全ての多項式時間の敵
チャレンジャー
(pk,sk)←G
敵
m0, m1
pk
b←{0,1}C=E(mb)
b’
ElGamal 暗号の IND-CPA 安全性
チャレンジャー
x← ランダムy=gx mod p
敵
m0, m1
g, y
b←{0,1}C=(gr, mbyr)
b’
C
Pr( b’=b )≃ 1/2
定理
• ElGamal 暗号は IND-CPA 安全 under DDH 仮定• (証明) 演習
RSA≠IND-CPA 安全
チャレンジャー 敵の動作
m0=0, m1=1
(N,e)
b←{0,1}C=mb
e mod N
b’=0 if C=0b’=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 暗号を利用した擬似乱数生成器
2)0(
AES
0k
K
2)1(
AES
2)2(
AESK K
1k 2k
…
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,sk)←G
敵
pk
(C, K0) ← E(pk)K1= ランダム
b←{0,1}
b’
C, Kb
Pr( b’=b ) ~ 1/2
KEM は CPA 安全
• If 全ての多項式時間の敵に対し、 |Pr(b’=b)-1/2|<ε
KEM のC P A安全性 in RO
敵
b’
H
r1, r2,
H(r1), H(r2),
pk, C, Kb
Pr( b’=b ) ~ 1/2
RSA-KEM のC P A安全性 in RO
敵
b’
H
r1, r2,
H(r1), H(r2),
(N,e), C(=re mod N), K0 =H(r) or K1 = 乱数
定理
• 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ε
• (証明完了)
r
敵H
r1, r2,
H(r1), H(r2),
b’
(N, e), C=re mod N
(N, e), C, b←{0,1} 、 Kb = 乱数
RSA-KEM の CPA 安全性の証明
敵H
補題よりどこかで r
(N, e), C=re mod N
(N, e), C, Kb = 乱数
敵H
補題よりどこかで r
(N, e), C=re mod N
(N, e), C, Kb = 乱数
r if C=re mod N
敵H
(N, e), C=re mod N
(N, e), C, Kb = 乱数
r1
r=r1 if C=r1e mod N
敵H
(N, e), C=re mod N
(N, e), C, Kb = 乱数
r1
H(r1)= 乱数
C≠r1e mod N のとき
敵H
(N, e), C=re mod N
(N, e), C, Kb = 乱数
r2
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,sk)←G
b←{0,1}(c1*, K*)←KEM(pk) c2*=mb+ 擬似乱数 (K*)
チャレンジャー 敵
m0, m1
pk
C*=(c1*, c2*)
m0, m1
b’
Game 0
(pk,sk)←G
b←{0,1}(c1*, K* )←KEM(pk) c2*=mb+ 擬似乱数 (seed=K* )
チャレンジャー 敵
m0, m1
pk
C*=(c1*, c2*)
m0, m1
b’
Game 1
b←{0,1}(c1*, K*)←KEM(pk) c2*=mb+ 擬似乱数 (seed= 乱数 )
(pk,sk)←G
チャレンジャー 敵
m0, m1
pk
C*=(c1*, c2*)
m0, m1
b’
補題1
• ハイブリッド暗号において Pr(b’=b in Game 0) ~ Pr(b’=b in Game
1)
if KEM is CPA 安全• ( 証明) ハイブリッド暗号の敵を基に、 KEM の敵を以下のように構成する。
KEM のチャレンジャー
(pk,sk)←G
(c1*, K0)←KEMK1← ランダムd←{0,1}
b’
ハイブリッド暗号の敵
pk
C*=(c1*, c2*)
b←{0,1}c2*= mb + 擬似乱数 (seed=Kd)
c1*, Kd
m0, m1
pk
KEM の敵
d’ =1if b’=b
d=0 のとき
KEM のチャレンジャー
(pk,sk)←G
(c1*, K0)←KEMK1← ランダムd←0
b’
ハイブリッド暗号の敵
pk
C*=(c1*, c2*)
b←{0,1}c2*= mb + 擬似乱数 (seed=K0)
c1*, K0
m0, m1
pk
KEM の敵
d’ =1if b’=b
Game 0
d=1 のとき
KEM のチャレンジャー
(pk,sk)←G
(c1*, K0)←KEMK1← ランダムd←1
b’
ハイブリッド暗号の敵
pk
C*=(c1*, c2*)
b←{0,1}c2*= mb + 擬似乱数 (seed=K1)
c1*, K1
m0, m1
pk
KEM の敵
d’ =1if b’=b
Game 1
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
b←{0,1}(c1*, K*)←KEM(pk) c2*=mb+ 擬似乱数 (seed= 乱数 )
(pk,sk)←G
チャレンジャー 敵
m0, m1
pk
C*=(c1*, c2*)
m0, m1
b’
Game 1
b←{0,1}(c1*, K*)←KEM(pk) c2*=mb+ 擬似乱数 (seed= 乱数 )
(pk,sk)←G
チャレンジャー 敵
m0, m1
pk
C*=(c1*, c2*)
m0, m1
b’c2* は、 c1* とは独立な one-time-padなので、Pr(b’=b)=1/2
補題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
m0, m1
pk
b←{0,1}C=E(mb)
b’
復号オラクル
C 以外の暗号文を復号してもらえる
KEM の CCA 安全性
(C, K0) ← E(pk)K1= ランダム
b←{0,1}
チャレンジャー
(pk,sk)←G
敵
pk
b’
C, Kb
C 以外の暗号文を復号してもらえる
復号オラクル
DEM (共通鍵暗号)の CCA 安全性
チャレンジャー 敵
m0, m1
b’
CCA 安全 if |Pr(b’=b)-1/2|<ε
復号オラクル
C 以外の暗号文を復号してもらえる
K← ランダムb←{0,1}C=EK(mb)
C
KEM-DEM フレームワーク
• CCA 安全な KEM (公開鍵暗号) + CCA 安全な DEM (共通鍵暗号) = IND-CCA 安全な公開鍵暗号
公開鍵暗号の暗号文C=KEM( 共通鍵 K)+DEM( 共通鍵 K,m)
定理
• RSA 仮定の下で、• RSA-KEM は CCA 安全• In the RO モデル
CCA 安全な DEM の構成法
• K → →
• 暗号文 C=(E, Tag)1KME
)(2EMACTimeOneTag K
21,KK擬似乱数生成器
敵は、 MAC オラクルに1回だけ質問して偽造する(通常の MAC で十分)
IND- CCA安全なハイブリッド暗号
Nr e mod
r ← ランダム 共通鍵 K=H
(r)暗号文 C=(φ, χ)
χ =( E, Tag)
RSA 仮定の下で、 IND- CCA安全 in the RO model
公開鍵 (N,e)
KEM の暗号文
DEM の暗号文 (鍵 K)
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
a
Pr(X=a)
Pr(Y=a)
Statistically distance
a
Pr(X=a)
Pr(Y=a)
|X-Y|
X and Y are statistically indistinguishable if
a
Pr(X=a)
Pr(Y=a)
|X-Y|<ε
補題
a
Pr(X=a)
Pr(Y=a)
この面積=この面積
証明
a
Pr(X=a)
Pr(Y=a)
A
B=1-A C=1-A
系
a
Pr(X=a)
Pr(Y=a)
|X-Y| = 2× この面積
Distinguisher
DX 0 or 1
Px = Pr(D=1)
例 (1)
a
Pr(X=a)
Pr(Y=a)
D=1 D=0
PX = Pr(D=1)
例 (1)
a
Pr(X=a)
Pr(Y=a)
D=1 D=0
PY = Pr(D=1)
例 (1)
a
Pr(X=a)
Pr(Y=a)
2×(PX-PY) = |X-Y|
例 (2)
a
Pr(X=a)
Pr(Y=a)
D=1 D=0
PY = Pr(D=1)
例 (2)
a
Pr(X=a)
Pr(Y=a)
D=1 D=0
Px = Pr(D=1)
例 (2)
a
Pr(X=a)
Pr(Y=a)
D=1 D=0
2×(PX-PY) < |X-Y|
定理
• 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
DX= (g,ga,gb,gab) Px = Pr(D=1)
DY= (g,ga,gb,gc) 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 を構成
せよ。
23/04/21 confidential 97
ElGamal 暗号
• 公開鍵: p, q, g, y(=gx mod p)
• 秘密鍵 : x
• 平文: m
• 暗号化: r ← zp-1
E(m)=(gr, myr)
23/04/21 confidential 98
直感的な証明
• 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 に関する情報は、もれていない
ElGamal 暗号の IND-CPA 安全性
チャレンジャー
x← ランダムy=gx mod p
敵
m0, m1
g, y
b←{0,1}C=(gr, mbyr)
b’
C
Pr( b’=b )≃ 1/2