情報セキュリティ特論(4) 黒澤 馨 (茨城大学) [email protected] 2015/10/1 confidential 1 演習 CBC-MACについて、以下の M=(m1, m2), Tagを基に、偽造せよ。 2015/10/1 (m1, m 2) E_K E_K confidential Tag 2 (m1, m2 m1+Tag m 2) m1 Ek Ek Ek Tag 2015/10/1 Ek Tag confidential 3 共通鍵暗号系 鍵k 平文m 暗号化 アルゴリズム 暗号文 C E m D 敵 2015/10/1 復号 アルゴリズム confidential 解読したい 4 どうやって、鍵Kを共有? 鍵k 平文m 暗号化 アルゴリズム 暗号文 C E m D 敵 2015/10/1 復号 アルゴリズム confidential 解読したい 5 公開鍵暗号系 暗号化の鍵Pkを公開 平文m 暗号化 アルゴリズム 暗号文 C E 復号 アルゴリズム m D 復号鍵Skは秘密 2015/10/1 confidential 6 mod 5 において mod 7 において 14 1 14 1 24 1 2 1 3 1 3 1 44 1 44 1 4 4 4 ・・・ 54 1 64 1 2015/10/1 confidential 7 p が素数のとき 1 2 ( p 1) p 1 1 mod p 1 a p 1 なる p 1 1〃 任意のaに対し p 1 (1 a p 1) 1〃 a p 1 フェルマーの定理 2015/10/1 1 mod p For any a such that 1 a p 1 a p 1 1 mod p confidential 8 共通鍵暗号系 • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 共通鍵 p,e,d p,e,平文 m 2015/10/1 暗号化 アルゴリズム 共通鍵 p,e,d C me mod p confidential 復号 アルゴリズム m C d mod p 9 ed 1 mod ( p 1) ed 1 k ( p 1) C (m ) mod p d e d m ed 〃 m1 k ( p 1) 〃 m m k ( p 1) 〃 2015/10/1 = m フェルマーの定理より m 1 confidential p 1 1 mod p 10 共通鍵暗号系 • Pohlig-Hellman暗号 = = = = 共通鍵 11 3 7 10 素数 p 及び ed = 1 mod (p-1) となる (e,d) 52 3 mod11 5 4 32 9 〃 例:m=3,e=3,d=7,p=11の場合 11= p,e =3 = 3 p,e,平文 m 11= p,d =7 C m mod p 暗号化 アルゴリズム C 33 e 5 mod11 2015/10/1 confidential 復号 アルゴリズム 5 6 32 3 5 〃 57 5 5 3 〃 m C d mod p m 57 3 mod11 11 共通鍵暗号系 • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 共通鍵 p,e,d p,e,平文 m 2015/10/1 暗号化 アルゴリズム 共通鍵 p,e,d C me mod p confidential 復号 アルゴリズム m C d mod p 12 共通鍵暗号系 • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 共通鍵 X p,e,d p,e,平文 m 2015/10/1 暗号化 アルゴリズム 共通鍵 Xp,e,d X C me mod p confidential 復号 アルゴリズム m C d mod p 13 公開鍵方式にすると • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 公開鍵 p,e p,e,平文 m 2015/10/1 暗号化 アルゴリズム 秘密鍵 d C me mod p confidential 復号 アルゴリズム m C d mod p 14 公開鍵暗号にすると 敵は、秘密鍵d • Pohlig-Hellman暗号 を計算できる 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 公開鍵 p,e, p,e,平文 m 暗号化 アルゴリズム 秘密鍵 d C me mod p 復号 アルゴリズム m C d mod p 敵 2015/10/1 confidential 15 素因数分解 • p,qから、N=pqを計算するのは簡単 • N(=pq)を素因数分解するのは困難 • |N|=1024ビットのとき、10億年 2015/10/1 confidential 16 公開鍵暗号系 • RSA暗号 (鍵生成アルゴリズム) 512ビットの素数 p,q をランダムに生成 N = pq とおく ed = 1 mod (p-1)(q-1) となる (e,d) を求める 公開鍵 平文 m 2015/10/1 N(=pq),e 秘密鍵 d C me mod N 暗号化 復号 アルゴリズム アルゴリズム confidential m C d modN 17 RSA暗号 公開鍵 平文 m 秘密鍵 N(=pq),e 暗号化 アルゴリズム C me mod N 敵 d 復号 アルゴリズム m C d modN p,qを求めることはできない ed = 1 mod (p-1)(q-1) 敵は、(p-1)(q-1)を計算できない よって、敵はdがわからない 2015/10/1 confidential 18 ed 1 mod ( p 1)(q 1) ed 1 k ( p 1)(q 1) 〃 C ( m ) mod p d e d m ed 〃 m1 k ( p 1)( q 1) 〃 mm 2015/10/1 1 p 1 1 mod p k ( p 1)( q 1) 1 mod p m 〃 = m k ( p 1)( q 1) フェルマーの定理より m confidential 19 C d m 0 modq 同様に d C m 0 mod p p,q は互いに素なので d C m 0 mod p q C m mod N d 2015/10/1 confidential 20 C d m 0 modq 同様に d C m 0 mod p 互いに素でない p,q は互いに素なので d C m 0 mod p q C m mod N d 2015/10/1 confidential 24 0 mod6 24 0 mod8 24 0 mod6 8 21 C d m 0 modq 同様に d C m 0 mod p 互いに素でない p,q は互いに素なので d C m 0 mod p q C m mod N d 24 0 mod6 24 0 mod8 24 0 mod6 8 互いに素 C m p q d 素因数 2015/10/1 confidential 22 RSA暗号 • 公開鍵 : N ( =pq ), e • 秘密鍵 : d ただし ed = 1 mod (p-1)(q-1) • 平 文:M • 暗号文 : C M e modN • 復 号 : M C d modN 2015/10/1 confidential 23 RSA暗号 • 公開鍵 : N ( =pq ), e • 秘密鍵 : d ただし ed = 1 mod (p-1)(q-1) • このようなdをどう求めるか? 2015/10/1 confidential 24 (問題) 7x = 1 mod 10 を解け = = 10 7 a,b 2015/10/1 ユークリッド アルゴリズム confidential gcd(a,b) =1 25 (問題) 7x = 1 mod 10 を解け = = 10 7 a,b 拡張 ユークリッド confidential 1 ax + by = gcd(a,b) = 2015/10/1 7 = アルゴリズム 10 -2 3 となる(x,y) 26 (問題) 7x = 1 mod 10 を解け = = 10 7 a,b 拡張 ユークリッド 7 1 ax + by = gcd(a,b) = = アルゴリズム 10 -2 3 となる(x,y) 両辺の mod 10 をとる 7y = 1 mod 10 = 3 2015/10/1 confidential 27 (問題) 7x = 1 mod 10 を解け = = 10 7 拡張 a,b ユークリッド 7 1 ax + by = gcd(a,b) = = アルゴリズム 10 -2 3 となる(x,y) 両辺の mod 10 をとる 7y = 1 mod 10 = 3 = 3 ∴ 7x = 1 mod 10 2015/10/1 confidential 28 • ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3 7 = 3 × 2 ・・・ 1 3 = 1 × 3 ・・・ 0 2015/10/1 confidential 29 • ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3 gcd(10,7) = gcd(7,3) を証明する。 7 = 3 × 2 ・・・ 1 3 = 1 × 3 ・・・ 0 = gcd(10,7) 2015/10/1 confidential 30 (10,7)の ・ d1 公約数 (10,7)の公約数は (7,3)の公約数の 部分集合であることを証明 (7,3)の公約数 ① d1 が (10,7) の公約数と仮定すると ② 10 = 7 × 1 + 3 2015/10/1 confidential 31 (10,7)の公約数は (7,3)の公約数の 部分集合であることを証明 (10,7)の ・ d1 公約数 (7,3)の公約数 ① d1 が (10,7) の公約数と仮定すると ② 10 = 7 × 1 + 3 d1は割り切る 2015/10/1 d1は割り切る confidential 32 (10,7)の公約数は (7,3)の公約数の 部分集合であることを証明 (10,7)の ・ d1 公約数 (7,3)の公約数 ① d1 が (10,7) の公約数と仮定すると d1は両方割り切る ② 10 = 7 × 1 + 3 d1は割り切る 2015/10/1 d1は割り切る confidential 33 (10,7)の ・ d1 公約数 (10,7)の公約数は (7,3)の公約数の 部分集合であることを証明 (7,3)の公約数 ① d1 が (10,7) の公約数と仮定すると d1は両方割り切る ② 10 = 7 × 1 + 3 d1は割り切る d1は割り切る ③ d1 は (7,3) の公約数 2015/10/1 confidential 34 (10,7)の 公約数 ・ d1 (7,3)の ・ d2 左図の様ならば、 同様に①~③より d2は(7,3)の公約数 公約数 2015/10/1 confidential 35 (10,7)の 公約数 ・ d2 ・ d1 つまり、(10,7)の公約数の集合は (7,3)の公約数の集合の部分集合 でなければならない (7,3)の公約数 2015/10/1 confidential 36 (7,3)の 公約数 (10,7)の ・d 次に、(7,3)の公約数は (10,7)の公約数の 部分集合であることを証明 公約数 2015/10/1 confidential 37 (7,3)の 公約数 ・d ① d が (7,3) の公約数と仮定すると ② dは割り切る dは割り切る 10 = 7 × 1 + 3 (10,7)の 公約数 2015/10/1 confidential 38 (7,3)の 公約数 (10,7)の 公約数 2015/10/1 ・d ① d が (7,3) の公約数と仮定すると ② dは割り切る dは割り切る 10 = 7 × 1 + 3 dは両方割り切る よって ③ d は (10,7) の公約数 confidential 39 (7,3)の 公約数 ・d つまり、(7,3)の公約数の集合は (10,7)の公約数の集合の部分 集合である (10,7)の公約数 2015/10/1 confidential 40 (1) { (10,7)の公約数 } ⊆ { (7,3)の公約数 } (2) { (10,7)の公約数 } ⊇ { (7,3)の公約数 } よって { (10,7)の公約数 } = { (7,3)の公約数 } ゆえに gcd(10,7) = gcd(7,3) 2015/10/1 confidential 41 • 定理 a = q・b + c のとき gcd(a,b) = gcd(b,c) (証明) (1) { (a,b)の公約数 } ⊆ { (b,c)の公約数 } (2) { (a,b)の公約数 } ⊇ { (b,c)の公約数 } よって { (a,b)の公約数 } = { (b,c)の公約数 } ゆえに gcd(a,b) = gcd(b,c) 2015/10/1 confidential 42 • ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3 gcd(10,7) = gcd(7,3) 7 = 3 × 2 ・・・ 1 gcd(7,3) = gcd(3,1) =1 3 = 1 × 3 ・・・ 0 = gcd(10,7) 2015/10/1 confidential 43 • 拡張ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3 10 = 10×1 + 7×0 7 = 10×0 + 7×1 7 = 3 × 2 ・・・ 1 3 = 1 × 3 ・・・ 0 3 = 10×1 + 7×(-1) = 1 = 10×(-2) + 7×3 gcd(10,7) x y gcd(10,7) 2015/10/1 confidential 44 (問題) 7x = 1 mod 10 を解け = = 10 7 拡張 a,b ユークリッド 7 1 ax + by = gcd(a,b) = = アルゴリズム 10 -2 3 となる(x,y) 両辺の mod 10 をとる 7y = 1 mod 10 = 3 = 3 ∴ 7x = 1 mod 10 2015/10/1 confidential 45 RSA暗号 • 公開鍵 : N ( =pq ), e • 秘密鍵 : d ただし ed = 1 mod (p-1)(q-1) • このようなdをどう求めるか? 2015/10/1 confidential 46 • p = 素数のとき 0 < a < p なる任意の a に対し gcd(p,a) = 1 よって 例: p = 5 のとき px + ay = 1 gcd(5,1) = 1 となる(x,y)が存在 gcd(5,2) = 1 a y = 1 mod p = gcd(5,3) = 1 1 a 乗法逆元: mod p 2015/10/1 gcd(5,4) = 1 confidential 47 • すなわち 0 < a < p なる任意の a に対し mod p における乗法逆元が存在する 例:mod 5 において 1×1 = 1 mod 5 2×3 = 1 〃 3×2 = 1 〃 4×4 = 1 〃 1 1 1 2 1 3 1 4 乗法逆元 2015/10/1 confidential 1 m od5 3 〃 2 〃 4 〃 48 • (問) 2x = 3 mod 5 を解け 2015/10/1 confidential 49 • (問) 2x = 3 mod 5 を解け • (解) 1 3 m od5 なので 2 1 1 2x 3 〃 2 2 x 3 3 〃 9 〃 4 〃 2015/10/1 confidential 50 • 群 : +、- ができる世界 • 環 : +、-、× ができる世界 • 体 : +、-、×、÷ ができる世界 (例) 実数の世界 mod 5 の世界 体 = GF(5) 2015/10/1 confidential 51 • 有限体(ガロア体) 要素数が有限の体 • GF(p) 要素数が p の体 • GF(2) 要素数が最小の体 2015/10/1 confidential 52 • 定理 GF(q) が存在する q p or q p = = 基礎体 拡大体 2015/10/1 confidential k ただし、pは素数 53 • フェルマーの定理 p = 素数のとき 0 < a < p なる任意の a に対し a 2015/10/1 p 1 1 mod p confidential 54 • (簡単な証明) 2 1 2 mod5 2 2 4 〃 2 3 1 〃 2 4 3 〃 2015/10/1 confidential 55 • (簡単な証明) 2 1 2 mod5 2 2 4 〃 2 3 1 〃 × 2 4 3 〃 24 (1 2 3 4) (1 2 3 4) mod5 2015/10/1 confidential 56 • (簡単な証明) 2 1 2 mod5 2 2 4 〃 2 3 1 〃 × 2 4 3 〃 24 (1 2 3 4) (1 2 3 4) mod5 2015/10/1 24 1 〃 confidential 57 • p が合成数のとき 2 1 2 mod6 2 2 4 〃 2 3 0 〃 2 4 2 〃 × 2 5 4 〃 25 (1 2 3 4 5) 0 mod6 2015/10/1 confidential 58 • (証明) a 1 b1 mod p a 2 b2 〃 a ( p 1) b p 1 〃 2015/10/1 confidential 59 • (補題) {b1 , b2 , bp1 } {1,2,, p 1} 2015/10/1 confidential 60 • (証明) まず 0 ≦ bi ≦ p-1 bi = 0 と仮定すると a×i = 0 mod p 両辺 i で割ると ∴a = 0 〃 これは矛盾 よって 1 ≦ bi ≦ p-1 2015/10/1 confidential 61 • (証明 続き) 次にある i ≠ j に対し bi = bj と仮定すると a×i = a×j mod p ∴i = j 〃 これは矛盾 2015/10/1 confidential 1~p-1 1 2 b p 1 p 1 b1 b2 62 • (フェルマーの定理の証明) a 1 b1 mod p a 2 b 2 〃 × a ( p 1) b( p 1) 〃 a p 1 (1 2 p 1) (1 2 p 1) mod p ap-1=1 mod p 2015/10/1 confidential 63 RSA暗号の生成 ① 大きな素数 p,q を生成 ② ed = 1 mod (p-1)(q-1) となる (e,d) を求める ③ C M e modN の計算 d M C modN 2015/10/1 confidential 64 RSA暗号の生成 ① 大きな素数 p,q を生成 ② ed = 1 mod (p-1)(q-1) となる (e,d) を求める ③ C M e modN の計算 d M C modN d=21024 程度なので、1億年 2015/10/1 confidential 65 a x の高速計算法 n ビット x 19 (10011) 2 y a 2 a (10 ) 2 y y 2 a (100 ) 2 y y 2 a a (1000 ) 2 a a (1001) 2 高々 2(n-1)回の乗算 y y 2 a a (10010 ) 2 a 2015/10/1 a (10011) 2 confidential 66 • 素数は無限個存在する (証明) 素数の集合 = { 2,5,7,11 } p = 2×5×7×11+1 とおく。すると p は 2 で割り切れない (と仮定する) ・ ・ ・ p は 11 で割り切れない よって、 p はどの素数でも割り切れない ゆえに p は素数である。 これは矛盾 2015/10/1 confidential 67 (N,e),C N 2015/10/1 解読 素因数分解 m (1億年) p,q (10億年) confidential RSA仮定 素因数分解仮定 68 確率的多項式時間アルゴリズム 鍵生成 1,・・・,1 アルゴリズム N(=pq),e,d ただし |N| = nビット nビット 乱数テープ 2015/10/1 confidential 69 解読 (N,e),C m (1億年) RSA仮定 乱数テープR Pr(解読) < ε (N,e) この体積 全体積 成 功 C R 2015/10/1 confidential 70 • RSA仮定 任意の確率的多項式時間解読アルゴリズム Aに対し Pr(解読) < ε ただし、確率は 鍵生成アルゴリズムの乱数テープ 解読アルゴリズム A の乱数テープ 平文 m についてとる 2015/10/1 confidential 71 • 定理 確率εで素因数分解に成功する 確率的多項式時間解読アルゴリズムBが 存在 確率εでRSA解読に成功する 確率的多項式時間解読アルゴリズムAが存 在 2015/10/1 confidential 72 • 定理 確率εで素因数分解に成功する 難しい 確率的多項式時間解読アルゴリズムBが 存在 (?) 確率εでRSA解読に成功する 易しい 確率的多項式時間解読アルゴリズムAが存 在 2015/10/1 confidential 73 (証明) A N,e,C 2015/10/1 N B p,q confidential 74 (証明) A N,e,C N p,q B 乱数テープR 2015/10/1 confidential 75 (証明) A N,e,C N p,q B e d 1 mod ( p 1)(q 1) より d を求める m C d modN m 乱数テープR 2015/10/1 confidential 76 演習 (1) Mod 15の世界において、以下のxを求めよ。 • 2x=1 • 4x=1 • 7x=1 • 8x=1 • 11x=1 • 13x=1 • 14x=1 2015/10/1 confidential 77 演習 (2) p=11, q=17, e=3とするRSA暗号 について考える。 • • • • gcd((p-1)(q-1),3)の値を求めよ。 公開鍵pk、秘密鍵skを求めよ。 平文m=7に対する暗号文Cを求めよ。 上記のCを復号せよ。 2015/10/1 confidential 78
© Copyright 2025 ExpyDoc