Upload
rigel-cervantes
View
37
Download
2
Embed Size (px)
DESCRIPTION
情報セキュリティ特論( 4 ). 黒澤 馨 (茨城大学) [email protected]. 演習. 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. - PowerPoint PPT Presentation
Citation preview
23/04/20 confidential 2
演習
E_KE_K
Tag
( m1, m2 )
CBC-MAC について、以下のM=(m1, m2), Tag を基に、偽造せよ。
23/04/20 confidential 3
EkEk
Tag
m1+Tag m2 )
EkEk
Tag
( m1, m2
m1
23/04/20 confidential 4
共通鍵暗号系
暗号化アルゴリズム
E
復号アルゴリズム
D平文m
鍵 k
暗号文 C m
敵 解読したい
23/04/20 confidential 5
どうやって、鍵 K を共有?
暗号化アルゴリズム
E
復号アルゴリズム
D平文m
鍵 k
暗号文 C m
敵 解読したい
23/04/20 confidential 6
公開鍵暗号系
暗号化アルゴリズム
E
復号アルゴリズム
D平文m
暗号文 C m
暗号化の鍵 Pk を公開
復号鍵 Sk は秘密
23/04/20 confidential 7
14
13
12
11
4
4
4
4
mod 5 において
16
15
14
13
12
11
4
4
4
4
4
4
mod 7 において
・・・
23/04/20 confidential 8
〃
〃
1)1(
12
mod11
1
1
1
p
p
p
p
p
p が素数のとき
フェルマーの定理
)11(
11
pa
a
pa
に対し任意のなる
pa p mod11
pa
pa
thatsuchaanyFor
p mod1
111
23/04/20 confidential 9
共通鍵暗号系
• Pohlig-Hellman 暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d)
p,e, 平文 m
暗号化アルゴリズム
復号アルゴリズム
p,e,d p,e,d
pCm d modpmC e mod
共通鍵 共通鍵
23/04/20 confidential 10
)1(1
)1(mod1
pked
ped
m
mm
m
m
pmC
pk
pk
ed
ded
〃
〃
〃
)1(
)1(1
mod)(
=1 pm p mod11
フェルマーの定理より
23/04/20 confidential 11
共通鍵暗号系
• Pohlig-Hellman 暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d)
p,e, 平文 m
暗号化アルゴリズム
復号アルゴリズム
p,e p,d
pCm d modpmC e mod
例: m=3,e=3,d=7,p=11 の場合
11= 11=
11=
3= 7= 10==3 =7
11mod5
33
C
11mod3
57
m
3= 〃
〃
〃
3555
5335
935
11mod35
7
26
24
2
23/04/20 confidential 12
共通鍵暗号系
• Pohlig-Hellman 暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d)
p,e, 平文 m
暗号化アルゴリズム
復号アルゴリズム
p,e,d p,e,d
pCm d modpmC e mod
共通鍵 共通鍵
23/04/20 confidential 13
共通鍵暗号系
• Pohlig-Hellman 暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d)
p,e, 平文 m
暗号化アルゴリズム
復号アルゴリズム
p,e,d p,e,d
pCm d modpmC e mod
共通鍵 共通鍵X X X
23/04/20 confidential 14
公開鍵方式にすると
• Pohlig-Hellman 暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d)
p,e, 平文 m
暗号化アルゴリズム
復号アルゴリズム
p,e d
pCm d modpmC e mod
公開鍵 秘密鍵
23/04/20 confidential 15
公開鍵暗号にすると
• Pohlig-Hellman 暗号 共通鍵 素数 p 及び ed = 1 mod (p-1) となる (e,d)
p,e, 平文 m
暗号化アルゴリズム
復号アルゴリズム
p,e, d
pCm d modpmC e mod
公開鍵 秘密鍵
敵
敵は、秘密鍵 d
を計算できる
23/04/20 confidential 16
素因数分解
• p,q から、 N=pq を計算するのは簡単• N(=pq) を素因数分解するのは困難• |N|=1024 ビットのとき、1 0 億年
23/04/20 confidential 17
公開鍵暗号系• RSA 暗号 ( 鍵生成アルゴリズム )
512 ビットの素数 p,q をランダムに生成 N = pq とおく ed = 1 mod (p-1)(q-1) となる (e,d) を求める
平文 m
暗号化アルゴリズム
復号アルゴリズム
N(=pq),e d
NCm d modNmC e mod
公開鍵 秘密鍵
23/04/20 confidential 18
RSA 暗号
平文 m
暗号化アルゴリズム
復号アルゴリズム
N(=pq),e d
NCm d modNmC e mod
公開鍵 秘密鍵
敵 p,q を求めることはできない
ed = 1 mod (p-1)(q-1)
敵は、 (p-1)(q-1) を計算できない
よって、敵は d がわからない
23/04/20 confidential 19
〃)1)(1(1
)1)(1(mod1
qpked
qped
m
mm
m
m
pmC
qpk
qpk
ed
ded
〃
〃
〃
)1)(1(
)1)(1(1
mod)(
=1
pm p mod11
フェルマーの定理より
pm qpk mod1)1)(1(
23/04/20 confidential 20
同様に
p,q は互いに素なので
qmC d mod0
NmC
qpmCd
d
mod
mod0
pmC d mod0
23/04/20 confidential 21
同様に
p,q は互いに素なので
qmC d mod0
NmC
qpmCd
d
mod
mod0
pmC d mod0
86mod024
8mod024
6mod024
互いに素でない
23/04/20 confidential 22
同様に
p,q は互いに素なので
qmC d mod0
NmC
qpmCd
d
mod
mod0
pmC d mod0
86mod024
8mod024
6mod024
互いに素でない
互いに素
qpmC d
素因数
23/04/20 confidential 23
RSA 暗号
• 公開鍵 : N ( =pq ), e
• 秘密鍵 : d ただし ed = 1 mod (p-1)(q-1)
• 平 文 : M
• 暗号文 : • 復 号 :
NMC e modNCM d mod
23/04/20 confidential 24
RSA 暗号
• 公開鍵 : N ( =pq ), e
• 秘密鍵 : d ただし ed = 1 mod (p-1)(q-1)
• このようなdをどう求めるか?
23/04/20 confidential 25
(問題) 7x = 1 mod 10 を解け
a , b
ユークリッド
アルゴリズム
gcd(a,b)
10
= 7=
=1
23/04/20 confidential 26
(問題) 7x = 1 mod 10 を解け
a , b
拡張
ユークリッド
アルゴリズム
ax + by = gcd(a,b)
となる (x,y)
10
= 7=
10 7 1
=3
=2
-
23/04/20 confidential 27
(問題) 7x = 1 mod 10 を解け
a , b
拡張
ユークリッド
アルゴリズム
ax + by = gcd(a,b)
となる (x,y)
10
= 7=
10 7 1
=3
=2
-
7y = 1 mod 10
両辺の mod 10 をとる
=3
23/04/20 confidential 28
(問題) 7x = 1 mod 10 を解け
a , b
拡張
ユークリッド
アルゴリズム
ax + by = gcd(a,b)
となる (x,y)
10
= 7=
10 7 1
=3
=2
-
7y = 1 mod 10
両辺の mod 10 をとる
=3
∴ 7x = 1 mod 10
3=
23/04/20 confidential 29
• ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3
7 = 3 × 2 ・・・ 1
3 = 1 × 3 ・・・ 0
23/04/20 confidential 30
• ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3 gcd(10,7) =
gcd(7,3)
を証明する。 7 = 3 × 2 ・・・ 1
3 = 1 × 3 ・・・ 0
=
gcd(10,7)
23/04/20 confidential 31
(10,7) の
公約数
(7,3) の公約数
・ d1
① d1 が (10,7) の公約数と仮定すると ②
10 = 7 × 1 + 3
(10,7) の公約数は(7,3) の公約数の部分集合であることを証
明
23/04/20 confidential 32
(10,7) の
公約数
(7,3) の公約数
・ d1
① d1 が (10,7) の公約数と仮定すると ②
10 = 7 × 1 + 3
d1 は割り切る d1 は割り切る
(10,7) の公約数は(7,3) の公約数の部分集合であることを証
明
23/04/20 confidential 33
(10,7) の
公約数
(7,3) の公約数
・ d1
① d1 が (10,7) の公約数と仮定すると ②
10 = 7 × 1 + 3
d1 は割り切る d1 は割り切る
d1 は両方割り切る
(10,7) の公約数は(7,3) の公約数の部分集合であることを証
明
23/04/20 confidential 34
(10,7) の
公約数
(7,3) の公約数
・ d1
① d1 が (10,7) の公約数と仮定すると ②
10 = 7 × 1 + 3
③ d1 は (7,3) の公約数d1 は割り切る d1 は割り切る
d1 は両方割り切る
(10,7) の公約数は(7,3) の公約数の部分集合であることを証
明
23/04/20 confidential 35
(7,3) の
公約数
(10,7) の
公約数・ d1
左図の様ならば、同様に①~③よりd2 は (7,3) の公約数
・ d2
23/04/20 confidential 36
(10,7) の
公約数・ d1
つまり、 (10,7) の公約数の集合は
(7,3) の公約数の集合の部分集合でなければならない
・ d2
(7,3) の公約数
23/04/20 confidential 37
(10,7) の
公約数
(7,3) の
公約数・ d 次に、 (7,3) の公約数は
(10,7) の公約数の部分集合であることを証
明
23/04/20 confidential 38
(10,7) の
公約数
(7,3) の
公約数・ d
① d が (7,3) の公約数と仮定すると ②
10 = 7 × 1 + 3
d は割り切る d は割り切る
23/04/20 confidential 39
(10,7) の
公約数
(7,3) の
公約数・ d
① d が (7,3) の公約数と仮定すると ②
10 = 7 × 1 + 3
よって ③ d は (10,7) の公約数
d は両方割り切る
d は割り切る d は割り切る
23/04/20 confidential 40
(7,3) の
公約数 つまり、 (7,3) の公約数の集合は
(10,7) の公約数の集合の部分集合である
・ d
(10,7) の公約数
23/04/20 confidential 41
(1) { (10,7) の公約数 } ⊆ { (7,3) の公約数 }
(2) { (10,7) の公約数 } { (7,3)⊇ の公約数 }
よって { (10,7) の公約数 } = { (7,3) の公約数 }
ゆえに gcd(10,7) = gcd(7,3)
23/04/20 confidential 42
• 定理 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)
23/04/20 confidential 43
• ユークリッドアルゴリズム 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)
23/04/20 confidential 44
• 拡張ユークリッドアルゴリズム 10 = 7 × 1 ・・・ 3
7 = 3 × 2 ・・・ 1
3 = 1 × 3 ・・・ 0=
gcd(10,7)
10 = 10×1 + 7×0
7 = 10×0 + 7×1
3 = 10×1 + 7×(-1)
1 = 10×(-2) + 7×3gcd(10,7) x y
23/04/20 confidential 45
(問題) 7x = 1 mod 10 を解け
a , b
拡張
ユークリッド
アルゴリズム
ax + by = gcd(a,b)
となる (x,y)
10
= 7=
10 7 1
=3
=2
-
7y = 1 mod 10
両辺の mod 10 をとる
=3
∴ 7x = 1 mod 10
3=
23/04/20 confidential 46
RSA 暗号
• 公開鍵 : N ( =pq ), e
• 秘密鍵 : d ただし ed = 1 mod (p-1)(q-1)
• このようなdをどう求めるか?
23/04/20 confidential 47
• p = 素数のとき 0 < a < p なる任意の a に対し gcd(p,a) = 1
よって px + ay = 1
となる (x,y) が存在 a y = 1 mod p
乗法逆元: pamod
1
=
例: p = 5 のとき
gcd(5,1) = 1
gcd(5,2) = 1
gcd(5,3) = 1
gcd(5,4) = 1
23/04/20 confidential 48
• すなわち 0 < a < p なる任意の a に対し mod p における乗法逆元が存在する
例: mod 5 において 1×1 = 1 mod 5
2×3 = 1 〃 3×2 = 1 〃 4×4 = 1 〃
乗法逆元 〃
〃
〃
44
1
23
1
32
1
5mod11
1
23/04/20 confidential 49
• ( 問 ) 2x = 3 mod 5 を解け
23/04/20 confidential 50
• ( 問 ) 2x = 3 mod 5 を解け• ( 解 )
〃 〃
〃
〃
なので
4
9
33
32
12
2
1
5mod32
1
x
x
23/04/20 confidential 51
• 群 : +、- ができる世界• 環 : +、-、 × ができる世界• 体 : +、-、 × 、 ÷ ができる世界
(例) 実数の世界 mod 5 の世界 = GF(5)
体
23/04/20 confidential 52
• 有限体(ガロア体) 要素数が有限の体
• GF(p)
要素数が p の体
• GF(2)
要素数が最小の体
23/04/20 confidential 53
• 定理 GF(q) が存在する
ただし、 p は素数
kpqorpq
基礎体
=
拡大体
=
23/04/20 confidential 54
• フェルマーの定理 p = 素数のとき 0 < a < p なる任意の a に対し
pa p mod11
23/04/20 confidential 55
• ( 簡単な証明 )
〃 〃 〃
342
132
422
5mod212
23/04/20 confidential 56
• ( 簡単な証明 )
〃 〃 〃
342
132
422
5mod212
5mod)4321()4321(24
×
23/04/20 confidential 57
• ( 簡単な証明 )
〃 〃 〃
342
132
422
5mod212
〃 12
5mod)4321()4321(24
4
×
23/04/20 confidential 58
• p が合成数のとき
〃 〃 〃 〃
452
242
032
422
6mod212
6mod0)54321(25
×
23/04/20 confidential 59
• ( 証明 )
〃
〃
1
2
1
)1(
2
mod1
pbpa
ba
pba
23/04/20 confidential 60
• ( 補題 )
}1,,2,1{},,{ 121 pbbb p
23/04/20 confidential 61
• ( 証明 )
まず 0 ≦ bi ≦ p-1
bi = 0 と仮定すると a×i = 0 mod p 両辺 i で割ると ∴a = 0 〃 これは矛盾 よって 1 ≦ bi ≦ p-1
23/04/20 confidential 62
• ( 証明 続き )
次にある i ≠ j に対し bi = bj と仮定すると a×i = a×j mod p
∴ i = j 〃 これは矛盾
1
2
1
p
1
2
1
b
b
bp
1 ~ p-1
23/04/20 confidential 63
• ( フェルマーの定理の証明 )
〃
〃
)1()1(
22
mod11
pbpa
ba
pba
pppa p mod)121()121(1
×
ap-1=1 mod p
23/04/20 confidential 64
RSA 暗号の生成
① 大きな素数 p,q を生成 ② ed = 1 mod (p-1)(q-1)
となる (e,d) を求める③ の計算
NMC e modNCM d mod
23/04/20 confidential 65
RSA 暗号の生成
① 大きな素数 p,q を生成 ② ed = 1 mod (p-1)(q-1)
となる (e,d) を求める③ の計算
d=21024 程度なので、 1 億年
NMC e modNCM d mod
23/04/20 confidential 66
2
2
2
2
2
2
)10011(
)10010(2
)1001(
)1000(2
)100(2
)10(2
2)10011(19
a
aaayy
a
aaayy
ayy
aay
x
の高速計算法xa
高々
2(n-1) 回の乗算
n ビット
23/04/20 confidential 67
• 素数は無限個存在する
( 証明 ) 素数の集合 = { 2,5,7,11 } ( と仮定する ) p = 2×5×7×11+1 とおく。すると p は 2 で割り切れない
p は 11 で割り切れない よって、 p はどの素数でも割り切れない ゆえに p は素数である。 これは矛盾
・・・
23/04/20 confidential 68
(N,e),C 解読 m ( 1 億年)
N 素因数分解 p,q ( 10 億年)
RSA 仮定
素因数分解仮定
23/04/20 confidential 69
1, ・・・ ,1
鍵生成
アルゴリズム
N(=pq),e,d
ただし |N| = n
ビットn ビット
確率的多項式時間アルゴリズム
乱数テープ
23/04/20 confidential 70
(N,e),C m( 1 億年)
RSA 仮定乱数テープ
R
解読
成功
(N,e)
C
R
Pr( 解読 ) < ε
この体積全体積
23/04/20 confidential 71
• RSA 仮定 任意の確率的多項式時間解読アルゴリズム A に対し Pr (解読) < ε
ただし、確率は 鍵生成アルゴリズムの乱数テープ 解読アルゴリズム A の乱数テープ 平文 m
についてとる
23/04/20 confidential 72
• 定理 確率 ε で素因数分解に成功する 確率的多項式時間解読アルゴリズム B
が存在
確率 ε で RSA 解読に成功する 確率的多項式時間解読アルゴリズム A
が存在
23/04/20 confidential 73
• 定理 確率 ε で素因数分解に成功する 確率的多項式時間解読アルゴリズム B
が存在
確率 ε で RSA 解読に成功する 確率的多項式時間解読アルゴリズム A
が存在
(?)
難しい
易しい
23/04/20 confidential 74
(証明)
N,e,C p,qBN
A
23/04/20 confidential 75
(証明)
N,e,C p,q
乱数テープR
BN
A
23/04/20 confidential 76
(証明)
N,e,C p,q
乱数テープR
BN
より d を求める
)1)(1(mod1 qpde
NCm d mod m
A
23/04/20 confidential 77
演習 (1)
Mod 15 の世界において、以下の x を求めよ。• 2x=1
• 4x=1
• 7x=1
• 8x=1
• 11x=1
• 13x=1
• 14x=1
演習 (2)
p=11, q=17, e=3 とする RSA 暗号について考える。
• gcd((p-1)(q-1),3) の値を求めよ。• 公開鍵 pk 、秘密鍵 sk を求めよ。• 平文 m=7 に対する暗号文 C を求めよ。• 上記の C を復号せよ。
23/04/20 confidential 78