ppt - 茨城大学

Download Report

Transcript ppt - 茨城大学

情報セキュリティ特論(5)
黒澤 馨 (茨城大学)
[email protected]
演習 (2)
p=11, q=17, e=3
•
•
•
•
gcd((p-1)(q-1), e)の値を求めよ。
公開鍵pk、秘密鍵skを求めよ。
平文m=7に対する暗号文Cを求めよ。
上記のCを復号せよ。
2015/4/13
confidential
2
演習 (2)
p=11, q=17, e=3 の場合
• (p-1)(q-1)=10×16=160
• ユークリッドの互除法より、
gcd((p-1)(q-1), e) = gcd(160, 3)
=1
2015/4/13
confidential
3
演習 (2)
p=11, q=17, e=3 の場合
• (p-1)(q-1)=10×16=160
• ユークリッドの互除法より、
gcd((p-1)(q-1),3)=gcd(160, 3)=1
• 拡張ユークリッドの互除法より、
3×107=1 mod 160
2015/4/13
confidential
4
演習 (2)
p=11, q=17, e=3 の場合
• N=pq=187
• 公開鍵 pk=(N,e)=(187,3)
• 秘密鍵 d=107
2015/4/13
confidential
5
演習 (2)
• 公開鍵 pk=(N,e)=(187,3)
• 平文 m=7
• 暗号文 C= me mod N
= 73 mod 187
= 156
2015/4/13
confidential
6
演習 (2)
•
•
•
•
公開鍵 pk=(N,e)=(187,3)
秘密鍵 d=107
暗号文 C=156
復号 m= Cd mod N
= 156107 mod 187
=7
2015/4/13
confidential
7
ハッシュ関数
長いメッセージ m
ハッシュ関数
H
短い
H(m)
SHA-1の場合、
160ビット
衝突ペア
• H(m)=H(m’) となる (m,m’)
• ただし、m≠m’
衝突困難なハッシュ関数
• 衝突ペア(m,m’)を求めることが困難な
ハッシュ関数 H
鳩ノ巣原理
• 鳩:n+1羽
• 巣:n個
• 2羽以上の鳩が入る巣が、
少なくとも1つは存在する。
系1
• 366人集まると、誕生日が一致するペアが
必ず存在する。
系2
• H(m)= k ビットのとき、
Hを 2k+1 回計算すると、
必ず衝突ペアが求まる。
証明
m_{2k+1}
m=鳩
H(m)=巣:2k個
m1
0…0
…
…
m_2k
1…1
バースディ・パラドックス
• √365=19人集まっただけで、
Pr[誕生日が一致するペアが存在]≧0.3
定理
• q=√n個のボールを
n個のバケツに投げ入れたとき、
Pr[2個以上のボールが
同じバケツに入る]≧0.3
q個のボール
バケツ
1
バケツ
2
…
バケツ
n
考え方
• Pr[①、②が同じバケツに入る]=1/n
Pr[②、③が同じバケツに入る]=1/n
…
• Pr(衝突)~(1/n) ×qC2
= (1/n) ×q(q-1)/2
~ (1/n) ×q2/2
• q=√nのとき、Pr(衝突)~1/2=0.5
定理
• q=√n個のボールを
n個のバケツに投げ入れたとき、
Pr[2個以上のボールが
同じバケツに入る]≧0.3
系3
• H(m)= k ビットのとき、
Hを √2k=2k/2 回計算すると、
0.3以上の確率で、衝突ペアが求まる。
SHA-1
• 米国標準のハッシュ関数
• H(m)=160ビット
• Hを2160/2= 280回計算すると、
0.3以上の確率で衝突ペアが求まる。
• しかし、 280回=1億年
基本圧縮関数
512ビット
f
160ビット
160ビット
メッセージのPadding
• m || 0…0 (512ビットの倍数)
= x1 || x2 || … xB ||
• M=x1 || x2 || … ||xB || L(=mのビット長)
• ただし、各|xi|=512ビット
Merkle-Damgard 変換
…
x1
L
f
f
IV=0…0
h1
…
hB
ハッシュ値
H(m)
定理
• fが衝突困難なら、Hも衝突困難
証明
• H(m)=H(m’)となる(m,m’)が見つかったと仮
定
• |m|≠|m’|の場合
|m|≠|m’|の場合
X B+1‘= |m’|
xB+1= |m|
f
f
hB
H(m)
= f (|m|, hB)
hB‘
H(m)=H(m’)なので、f(|m|, hB)=f(|m’|, hB’)
いま、|m|≠|m’|なので、fの衝突ペアが求まった。
H(m’)
= f (|m’|, hB‘)
|m|=|m’|の場合
X B+1‘=|m’|
xB+1=|m|
f
f
hB
H(m)
= f (|m|,hB)
hB‘
H(m)=H(m’)なので、f(|m|, hB)=f(|m’|, hB’)
hB≠hB’なら、fの衝突ペアが求まった。
H(m’)
= f (|m’|,hB‘)
hB=hB’の場合
x B‘
xB
f
f
hB-1
hB
hB-1‘
hB=hB’なので、f(xB, hB-1)=f(xB’, hB-1’)
いま、 (xB, hB-1)≠(xB’, hB-1’)なら、
fの衝突ペアが求まった。
hB’
m≠m’なので、
• (x1, …, xB)≠(x1’, …, xB’)
• よって、
どこかで fの衝突ペアが求まる。
(証明終)
RSA暗号
公開鍵:N(=p・q)、e
秘密鍵:d s.t. ed = 1 mod (p-1)(q-1) (1)
平文: M ∈ ZN
暗号文: C  M e mod N
復号: M  C d mod N
ディジタル署名
公開鍵:N(=p・q)、e
秘密鍵:d
平文: M
d
署名文:   H (M ) mod N
dを知っている人しか計算できない
ディジタル署名
公開鍵:N(=p・q)、e
秘密鍵:d
平文: M
d
署名文:   H (M ) mod N
検査:  e  ( H ( M ) d ) e mod N
 ( H (M ) )
mod N
 H (M )
mod N
e d
デジタル署名
• 署名文σは、
秘密鍵dを知っている人しか計算できない。
• (m, σ)の正当性は、
公開鍵(N,e)を使って誰でも検査できる。
敵の攻撃法
•
•
•
•
公開鍵only攻撃
既知平文攻撃
Non-adaptive 選択平文攻撃
Adaptive 選択平文攻撃
平文の代わりにメッセージという場合もあり。
公開鍵only攻撃
N(=p・q)、e
敵
(m*、σ*)
Hが無い場合(1)
• 検査式は、σe=m mod N
• 公開鍵only攻撃
(1) σをランダムに選ぶ。
(2) m=σe mod Nとする。
(3) (m,σ)を出力
既知平文攻撃
N(=p・q)、e
敵
m1、m2、...
σ1、σ2、...
(m*、σ*)
署名
オラクル
Non-adaptive 選択平文攻撃
N(=p・q)、e
m1、m2、...
敵
σ1、σ2、...
(m*、σ*)
署名
オラクル
Hが無い場合(2)
σ=md mod N
N(=p・q)、e
r=乱数
m’=rem mod N
署名
オラクル
敵
σ’=(rem)d
=(re)dmd
(m,
σ’/r=md)
=r md
Adaptive 選択平文攻撃
N(=p・q)、e
m1
敵
σ1
(m*、σ*)
署名
オラクル
敵は、σ1に基づいてm2を選ぶ。
N(=p・q)、e
m2
敵
σ2
(m*、σ*)
署名
オラクル
敵は、σ1,σ2基づいてm3を選ぶ。
N(=p・q)、e
m3
敵
σ3
(m*、σ*)
署名
オラクル
望ましい署名方式
• Adaptive選択平文攻撃に対しても、偽造が
不可能な署名方式
ランダムオラクルモデル
• ハッシュ関数Hを理想化したモデル
ランダムオラクル
H
H(x) ← 乱数
x
各参加者
選択平文攻撃
in the ランダムオラクル
モデル
N(=p・q)、e
m’1、m’2、...
H
H(m)←乱数
m1、m2、...
署名
オラクル
敵
σ’1、σ’2、...
σ1、σ2、...
~
~
(m,  )
RSA問題
• N,e,y(=xe mod N)から、xを求めよ。
RSA仮定
• RSA問題を解く多項式時間アルゴリズムは
存在しない。
定理
• RSA署名方式は、adaptive選択平文攻撃に
対しても偽造が不可能
under RSA仮定
in the ランダムオラクルモデル。
証明
• Adaptive 選択平文攻撃によって
偽造に成功する敵のプログラムAが
存在したと仮定すると、
RSA問題を解けるアルゴリズムBを
構成できることを示す。
N、e、y(=xe mod N)
B
N(=p・q)、e
qH回質問
m’1、m’2、...
H
H(m)←乱数
qs回質問
m1、m2、...
署名
オラクル
敵A
σ1、σ2、...
H(m’1), H(m’2), …
~
~
(m,  )
x
確率
確率εで出力
 

qs  q H
N、e、y(=xe mod N)
B
N(=p・q)、e
Hオラクル
Bがシミュレート
敵A
このプログラムAはgiven
署名
オラクル
Bがシミュレート
Bの動作
• Hオラクル、署名オラクルをシミュレートする。
• しかし、Bは秘密鍵dを知らない。
• Bは、どうやって署名オラクルをシミュレート
すればいいのか?
N、e、y(=xe mod N)
B
N(=p・q)、e
m1
H
敵A
署名
オラクル
N、e、y(=xe mod N)
B
N(=p・q)、e
m1
敵A
H
H(m1)=r1e mod N
署名
オラクル
敵Aがm1をHオラクルに質問したとき、
Bは
i
m
H(m)
1
m1
r 1e
2
…
i
…
qs+qH
σ
N、e、y(=xe mod N)
B
N(=p・q)、e
m1
m1
敵A
H
H(m1)=r1e mod N
署名
オラクル
N、e、y(=xe mod N)
B
N(=p・q)、e
m1
m1
署名
オラクル
敵A
H
H(m1)=r1e mod N
σ=r1
こうすれば、検査式 H(m1)=σ1e mod N が成立
B
N(=p・q)、e
m1
m1
署名
オラクル
敵A
H
H(m1)=r1e mod N
σ1=r1
検査式
H(m1)= r1e =σ1e mod N
敵Aがm1を署名オラクルに質問し
た時、
i
m
H(m)
σ
1
m1
r 1e
r1
2
…
i
…
qs+qH
N、e、y(=xe mod N)
B
N(=p・q)、e
m2
H
敵A
署名
オラクル
N、e、y(=xe mod N)
B
N(=p・q)、e
m2
H
署名
オラクル
敵A
σ=r2
敵Aがm2を署名オラクルに質問し
たとき、
i
m
H(m)
σ
1
m1
r 1e
r1
2
m2
…
i
…
qs+qH
r2
N、e、y(=xe mod N)
B
N(=p・q)、e
m2
H
m2
署名
オラクル
敵A
r2
N、e、y(=xe mod N)
B
N(=p・q)、e
m2
m2
署名
オラクル
敵A
H
H(m2)=r2e mod N
r2
敵Aがm2をHオラクルに質問したとき、
Bは
i
m
H(m)
σ
1
m1
r 1e
r1
2
m2
r 2e
r2
…
i
…
qs+qH
N、e、y(=xe mod N)
B
N(=p・q)、e
H
敵A
m*, σ*
署名
オラクル
N、e、y(=xe mod N)
B
N(=p・q)、e
mi =m*
H
敵A
m*, σ*
署名
オラクル
N、e、y(=xe mod N)
B
N(=p・q)、e
mi =m*
敵A
H
H(mi)=y
m*, σ*
署名
オラクル
敵Aは、i番目のmで偽造
m
H(m)
σ
1
m1
r 1e
r1
2
m2
r 2e
r2
…
i
…
qs+qH
m* =偽造
Bは、H(m)=yとおく
i
m
H(m)
σ
1
m1
r 1e
r1
2
m2
r 2e
r2
m*
y
…
i=偽造
…
qs+qH
N、e、y(=xe mod N)
B
N(=p・q)、e
mi =m*
敵A
H
署名
オラクル
H(mi)=y
m*, σ*
x= σ*
検査式
(σ*)e=H(m*)=y (=xe) mod N
敵Aは、偽造文σ*を出力
i
m
H(m)
σ
1
m1
r 1e
r1
2
m2
r 2e
r2
m*
y
σ*
…
i=偽造
…
qs+qH
Bは、y=xe mod Nの解として、x=σ*を
出力
i
m
H(m)
σ
1
m1
r 1e
r1
2
m2
r 2e
r2
m*
y
x=σ*
…
i=偽造
…
qs+qH
N、e、y(=xe mod N)
B
Bは、iの値を知らない
mi =m*
敵A
H
H(mi)=y
m*, σ*
x= σ*
署名
オラクル
Bは、iの値をランダムに推測
i
m
H(m)
σ
1
m1
r 1e
r1
2
m2
r 2e
r2
m*
y
x=σ*
…
i=推測
…
qs+qH
Pr(ランダムなiの値が当たる)=1/
(qs+qH)
i
m
H(m)
σ
1
m1
r 1e
r1
2
m2
r 2e
r2
m*
y
x=σ*
…
i=推測
…
qs+qH
N、e、y(=xe mod N)
B
N(=p・q)、e
qH回質問
m’1、m’2、...
H
H(m)←乱数
qs回質問
m1、m2、...
署名
オラクル
敵A
σ1、σ2、...
H(m’1), H(m’2), …
~
~
(m,  )
x
確率
確率εで出力
 

qs  q H
N、e、y(=xe mod N)
B
N(=p・q)、e
m’1、m’2、...
H
H(m)←乱数
qs回質問
m1、m2、...
署名
オラクル
敵A
σ’1、σ’2、...
σ1、σ2、...
~
~
(m,  )
x
確率εで出力
確率   

qs
(Coron’2000)
Katz and Wang (2003)
署名文:   H (0, m) or H (1, m)
e
検査:   H (0, m) or H (1, m)
d
定理:
 

2
d
N、e、y(=xe mod N)
B
N(=p・q)、e
qs回質問
(0,m1)
m1、m2、...
(1,m2)...
署名
オラクル
敵A
H
H(0,m1)←乱数
H(1,m2)←乱数
σ1、σ2、...
.
.
.
~
~
(m,  )
Bがうまくシミュレート
Bがうまくシミュレート
確率ε

x
確率    2
Bはオラクルを以下の様にシミュ
レート
mi bi ←ランダム H (bi , mi )
m1
0
m2
1
.
.
.
.
.
.
H (bi , mi )
H (0, m1 )  r1e H (1, m1 )  yt1e
H (1, m2 )  r2e H (0, m2 )  yt2e
.
.
.
σi
r1
r2
.
.
.
(注)ri、tiはランダムに選ばれる
~ ~e
~
~



H
(
0
,
m
)
or
H
(
1
,
m
)
敵Aの出力する は
e
~
~) の場合
  H (0, m
mi bi ←ランダム H (bi , mi )
H (bi , mi )
σi
m1
0
H (0, m1 )  r
H (1, m1 )  yt1e
r1
m2
1
H (1, m2 )  r
H (0, m2 )  yt2e
r2
.
.
.
mj
=
1
Pr[ b j  1] 
2
e
2
.
.
.
.
.
.
H (b j , m j )  rje H (b j , m j )  yt ej
=
=
m~
.
.
.
e
1
1
0
~ )  yt e
~ e  H (0, m
j
~  ~ 
y  e 
t j  t j 
e
e
~
x
tj
1
e
~
Pr[ H (0, m)  yt j ]  Pr[ b j  1] 
なので
2
1
Bがxを出力する確率は
2
e
~
~) の場合
  H (1, m
mi bi ←ランダム H (bi , mi )
H (bi , mi )
σi
m1
0
H (0, m1 )  r
H (1, m1 )  yt1e
r1
m2
1
H (1, m2 )  r
H (0, m2 )  yt2e
r2
.
.
.
mj
=
1
Pr[ b j  0] 
2
e
2
.
.
.
.
.
.
H (b j , m j )  rje H (b j , m j )  yt ej
=
=
m~
.
.
.
e
1
0
1
~ )  yt e
~ e  H (1, m
j
~  ~ 
y  e 
t j  t j 
e
e
~
x
tj
1
e
~
Pr[ H (1, m)  yt j ]  Pr[ b j  0] 
なので
2
1
Bがxを出力する確率は
2
~
~
今、敵Aが (m,  )を確率

で
出力すると仮定する。
このとき、Bが x を出力する確率は
1
Pr[xを出力] = 2  
演習(1)
• n>kと仮定する。
• このとき、nビットのメッセージをkビットに圧縮
すると、必ず衝突ペアが存在するのはなぜ
か。
演習(2)
• ハッシュ値が40ビットであるハッシュ関数Hを
考える。確率0.3以上で衝突ペアを求めたい。
Hを何回計算すればいいか。
メッセージのPadding
• m || 0…0 (512ビットの倍数)
= x1 || x2 || … xB ||
• M=x1 || x2 || … ||xB || L(=mのビット長)
• ただし、各|xi|=512ビット
Merkle-Damgard 変換
…
x1
L
f
f
IV=0…0
h1
…
hB
ハッシュ値
H(m)
演習(3)
…
x1
xB
f
f
IV=0…0
h1
…
hB-1
H(m)=hB
上記の構成においては、衝突ペアが求まることを示せ。
演習(4)
…
x1
xB
f
IV=0…0
f
h1
…
hB-1
hB
H(m)=hB||L
上記の構成は、衝突困難であることを示せ。