780 likes | 932 Views
情報セキュリティ特論( 4 ). 黒澤 馨 (茨城大学) kurosawa@mx.ibaraki.ac.jp. 演習. m 2 ). ( m 1 ,. E_K. E_K. Tag. CBC-MAC について、以下の M=(m 1 , m 2 ), Tag を基に、偽造せよ。. E k. E k. E k. E k. m 2. m 2 ). ( m 1 ,. m 1 + Tag. m 1. Tag. Tag. 共通鍵暗号系. 鍵 k. 暗号化 アルゴリズム E. 復号 アルゴリズム D. 暗号文 C. 平文 m. m.
E N D
情報セキュリティ特論(4) 黒澤 馨 (茨城大学) kurosawa@mx.ibaraki.ac.jp confidential
演習 m2) (m1, E_K E_K Tag CBC-MACについて、以下の M=(m1, m2), Tagを基に、偽造せよ。 confidential
Ek Ek Ek Ek m2 m2) (m1, m1+Tag m1 Tag Tag confidential
共通鍵暗号系 鍵 k 暗号化 アルゴリズム E 復号 アルゴリズム D 暗号文 C 平文m m 敵 解読したい confidential
どうやって、鍵Kを共有? 鍵 k 暗号化 アルゴリズム E 復号 アルゴリズム D 暗号文 C 平文m m 敵 解読したい confidential
公開鍵暗号系 暗号化の鍵Pkを公開 暗号化 アルゴリズム E 復号 アルゴリズム D 暗号文 C 平文m m 復号鍵Skは秘密 confidential
mod 5 において mod 7 において ・・・ confidential
p が素数のとき フェルマーの定理 confidential
共通鍵暗号系 • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 共通鍵 共通鍵 p,e,d p,e,d 暗号化 アルゴリズム 復号 アルゴリズム p,e,平文 m confidential
フェルマーの定理より =1 confidential
共通鍵暗号系 • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 11= 3= 7= 10= 例:m=3,e=3,d=7,p=11の場合 p,e p,d 11= =3 11= =7 3= 暗号化 アルゴリズム 復号 アルゴリズム p,e,平文 m confidential
共通鍵暗号系 • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 共通鍵 共通鍵 p,e,d p,e,d 暗号化 アルゴリズム 復号 アルゴリズム p,e,平文 m confidential
共通鍵暗号系 • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 共通鍵 共通鍵 X p,e,d p,e,d X X 暗号化 アルゴリズム 復号 アルゴリズム p,e,平文 m confidential
公開鍵方式にすると • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 公開鍵 秘密鍵 p,e d 暗号化 アルゴリズム 復号 アルゴリズム p,e,平文 m confidential
公開鍵暗号にすると 敵は、秘密鍵d を計算できる • Pohlig-Hellman暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d) 公開鍵 秘密鍵 p,e, d 暗号化 アルゴリズム 復号 アルゴリズム p,e,平文 m 敵 confidential
素因数分解 • p,qから、N=pqを計算するのは簡単 • N(=pq)を素因数分解するのは困難 • |N|=1024ビットのとき、10億年 confidential
公開鍵暗号系 • RSA暗号 (鍵生成アルゴリズム) 512ビットの素数 p,q をランダムに生成 N = pq とおく ed = 1 mod (p-1)(q-1) となる (e,d) を求める 公開鍵 N(=pq),e 秘密鍵 d 暗号化 アルゴリズム 復号 アルゴリズム 平文 m confidential
RSA暗号 公開鍵 N(=pq),e 秘密鍵 d 暗号化 アルゴリズム 復号 アルゴリズム 平文 m 敵 p,qを求めることはできない ed = 1 mod (p-1)(q-1) 敵は、(p-1)(q-1)を計算できない よって、敵はdがわからない confidential
フェルマーの定理より =1 confidential
同様に p,q は互いに素なので confidential
同様に p,q は互いに素なので 互いに素でない confidential
同様に p,q は互いに素なので 互いに素でない 互いに素 素因数 confidential
RSA暗号 • 公開鍵 : N ( =pq ), e • 秘密鍵 : dただし ed = 1 mod (p-1)(q-1) • 平 文 : M • 暗号文 : • 復 号 : confidential
RSA暗号 • 公開鍵 : N ( =pq ), e • 秘密鍵 : dただし ed = 1 mod (p-1)(q-1) • このようなdをどう求めるか? confidential
(問題) 7x = 1 mod 10 を解け 10= 7= ユークリッド アルゴリズム a,b gcd(a,b) =1 confidential
(問題) 7x = 1 mod 10 を解け 10= 7= 拡張 ユークリッド アルゴリズム a,b 10 7 1 ax + by = gcd(a,b) となる(x,y) =2 =3 - confidential
(問題) 7x = 1 mod 10 を解け 10= 7= 拡張 ユークリッド アルゴリズム a,b 10 7 1 ax + by = gcd(a,b) となる(x,y) =2 =3 - 両辺の mod 10 をとる 7y = 1 mod 10 =3 confidential
(問題) 7x = 1 mod 10 を解け 10= 7= 拡張 ユークリッド アルゴリズム a,b 10 7 1 ax + by = gcd(a,b) となる(x,y) =2 =3 - 両辺の mod 10 をとる 7y = 1 mod 10 =3 3= ∴ 7x = 1 mod 10 confidential
ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3 7 = 3 × 2 ・・・ 1 3 = 1 × 3 ・・・ 0 confidential
ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3 gcd(10,7) = gcd(7,3) を証明する。 7 = 3 × 2 ・・・ 1 3 = 1 × 3 ・・・ 0 = gcd(10,7) confidential
(10,7)の 公約数 (10,7)の公約数は (7,3)の公約数の 部分集合であることを証明 ・ d1 (7,3)の公約数 ① d1 が (10,7) の公約数と仮定すると ② 10 = 7 × 1 + 3 confidential
(10,7)の 公約数 (10,7)の公約数は (7,3)の公約数の 部分集合であることを証明 ・ d1 (7,3)の公約数 ① d1 が (10,7) の公約数と仮定すると ② 10 = 7 × 1 + 3 d1は割り切る d1は割り切る confidential
(10,7)の 公約数 (10,7)の公約数は (7,3)の公約数の 部分集合であることを証明 ・ d1 (7,3)の公約数 ① d1 が (10,7) の公約数と仮定すると ② 10 = 7 × 1 + 3 d1は両方割り切る d1は割り切る d1は割り切る confidential
(10,7)の 公約数 (10,7)の公約数は (7,3)の公約数の 部分集合であることを証明 ・ d1 (7,3)の公約数 ① d1 が (10,7) の公約数と仮定すると ② 10 = 7 × 1 + 3 ③ d1 は (7,3) の公約数 d1は両方割り切る d1は割り切る d1は割り切る confidential
(10,7)の 公約数 ・ d2 左図の様ならば、 同様に①~③より d2は(7,3)の公約数 (7,3)の 公約数 ・ d1 confidential
(10,7)の 公約数 ・ d2 つまり、(10,7)の公約数の集合は (7,3)の公約数の集合の部分集合 でなければならない ・ d1 (7,3)の公約数 confidential
(7,3)の 公約数 ・ d 次に、(7,3)の公約数は (10,7)の公約数の 部分集合であることを証明 (10,7)の 公約数 confidential
(7,3)の 公約数 ① d が (7,3) の公約数と仮定すると ② 10 = 7 × 1 + 3 ・ d dは割り切る dは割り切る (10,7)の 公約数 confidential
(7,3)の 公約数 ① d が (7,3) の公約数と仮定すると ② 10 = 7 × 1 + 3 よって ③ d は (10,7) の公約数 ・ d dは割り切る dは割り切る (10,7)の 公約数 dは両方割り切る confidential
(7,3)の 公約数 ・ d つまり、(7,3)の公約数の集合は (10,7)の公約数の集合の部分 集合である (10,7)の公約数 confidential
{ (10,7)の公約数 } ⊆ { (7,3)の公約数 } (2) { (10,7)の公約数 } ⊇ { (7,3)の公約数 } よって { (10,7)の公約数 } ={ (7,3)の公約数 } ゆえに gcd(10,7) = gcd(7,3) confidential
定理 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) confidential
ユークリッドアルゴリズム 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) confidential
10 = 10×1 + 7×0 7 = 10×0 + 7×1 • 拡張ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3 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) confidential
(問題) 7x = 1 mod 10 を解け 10= 7= 拡張 ユークリッド アルゴリズム a,b 10 7 1 ax + by = gcd(a,b) となる(x,y) =2 =3 - 両辺の mod 10 をとる 7y = 1 mod 10 =3 3= ∴ 7x = 1 mod 10 confidential
RSA暗号 • 公開鍵 : N ( =pq ), e • 秘密鍵 : dただし ed = 1 mod (p-1)(q-1) • このようなdをどう求めるか? confidential
p = 素数のとき 0 < a < p なる任意の a に対し gcd(p,a) = 1 よって px + ay = 1 となる(x,y)が存在 a y = 1 mod p 例: p = 5 のとき gcd(5,1) = 1 gcd(5,2) = 1 gcd(5,3) = 1 gcd(5,4) = 1 = 乗法逆元: confidential
すなわち 0 < a < p なる任意の a に対し mod p における乗法逆元が存在する 例:mod 5 において 1×1 = 1 mod 5 2×3 = 1 〃 3×2 = 1 〃 4×4 = 1 〃 乗法逆元 confidential
(問) 2x = 3 mod 5 を解け confidential
(問) 2x = 3 mod 5 を解け • (解) confidential