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 上記の構成は、衝突困難であることを示せ。