ppt - 茨城大学

Download Report

Transcript ppt - 茨城大学

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