lecture_no03_公開鍵暗号の基礎_20111021

19

Click here to load reader

Upload: hung-tran

Post on 28-Jul-2015

29 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ第3回 公開鍵暗号の基礎

Page 2: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

公開鍵暗号の特徴• 暗号化の為の鍵(公開鍵)と復号の為の鍵(秘密

鍵)が異なっている– 公開鍵を用いて秘密鍵を求められない仕組みが必

要• 一方向性関数

– xからyを求めるのは容易: y = f(x)– yからxを求めることが困難: x = f-1(y)

» 困難• 現在考え得る計算能⼒を持ってしても、意味のある時

間内に解を得ることができない• 例: 上記の記述を用いると…

– yを公開鍵、xを秘密鍵と考えれば、公開鍵から秘密鍵を求めることが困難

2

Page 3: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

一方向性関数: 公開鍵暗号の安全性• 数学的問題の「難しさ」を利用

– 素因数分解問題• 合成数 n(=p×q) の素因数 p と q を求める問題

– 離散対数問題• y(= gx mod p) における g の指数 x を求める問題

– 「難しさ」の利用• 効率的な解法が「まだ」未発⾒• 計算量的安全性

– 問題のサイズ(ビット⻑など)を⼤きくとると、現実的な計算時間とメモリ量で解くことが難しい

• 例: 素因数分解問題– n の桁数: 小さい → 簡単に解ける

• 例: 15 = 3 × 5– n の桁数: ⼤きい → コンピュータを用いても困難

• 例: 561,263 = ? × ?• 例: 300桁程度の合成数の素因数分解

3

Page 4: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

公開鍵暗号技術の数学的基礎• 代数学

– 代数系• 代数的構造を持つ集合• 集合 S とその演算の規則の C の組 (S, C)

– 群、環、体• 初等整数論

– 約数・倍数– ユークリッドの互除法– 素数– 法・合同式– フェルマーの小定理– 原始根、指数– オイラー関数– 平方剰余、ルジャンドルの記号・ヤコビの記号– 1のn乗根– 連分数

4

Page 5: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

数学的準備: 群• 群の公理: 集合Gとその二項演算子「*」が群で

ある条件– 結合律: (半群)

• (a*b)*c = a*(b*c)– 単位元

• ∀a∊Gに対して、a*e = e*a = aとなるe∊Gが存在– 逆元

• ∀a∊Gに対して、a*a-1 = a-1*a = eとなるa-1∊Gが存在• 可換群(アーベル群)

– 群の公理– 可換律

• ab = ba

5

Page 6: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

数学的準備: 環• 環R: 加法と乗法の二つの二項演算子をもつ集合

– 加法「+」: アーベル群– 乗法「*」: ∀a, b, c∊Gが以下の性質を満たす

• 結合律– (a*b)*c = a*(b*c)

• 左分配律– a*(b+c) = (a*b)+(a*c)

• 右分配律– (a+b)*c = (a*c)+(b*c)

• 可換環: ab = ba• 例

– 整数– Zn = {0, 1, …, n-1}、ただしnは正の整数

• 正の整数nを法とした剰余集合6

Page 7: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

数学的準備: 体• 体K: 加法と乗法の二つの二項演算子をもつ集合–加法「+」: アーベル群–乗法「*」: モノイド(半群+単位元)

• 加法の零元を除く全ての元が群をなす• 例

– 有理数の全体Q、実数の全体Z、複素数の全体C– 集合Zp = {0, 1, …, p-1}、ただしpは素数

• 素数pを法とした剰余集合

7

Page 8: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

数学的準備: 初等整数論: 合同式• 2つの整数a, bがnを法として合同

– a-bが自然数nで割り切れる– 合同式: a ≡ b (mod n)

• 合同式が満たす関係– 反射律: a ≡ a (mod n)– 対称律: a ≡ b (mod n) → b ≡ a (mod n)– 推移律: a ≡ b かつ b ≡ c → a ≡ c (mod n)– a ≡ b (mod n)の時、整数kと自然数mに対し以下の関係が成⽴

• 移項: a±k ≡ b±k (mod n)• 定数倍: ka ≡ kb (mod n)• べき乗: am ≡ bm (mod n)

– a ≡ b (mod n), c ≡ d (mod n)の時、整数kに対し以下の関係が成⽴• 加法、減法: a±c ≡ b±d (mod n)• 乗法: ac ≡ bd (mod n)• 除法: gcd(k, n)=1の時、ka ≡ kb (mod n)ならばa ≡ b (mod n)

8

Page 9: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

べき剰余演算• c を法とした a の b べき剰余

– 正の整数 a の b 乗を正の整数 c (法)で割った余り d – d ≡ ab mod c

• 例: a=3, c=7 – 31 = 3 ≡ 3 (mod 7)– 32 = 9 ≡ 2 (mod 7)– 33 = 27 ≡ 6 (mod 7)– 34 = 81 ≡ 4 (mod 7) ≡ 6 x 3 = 18– 35 = 243 ≡ 5 (mod 7) ≡ 4 x 3 = 12– 36 = 729 ≡ 1 (mod 7) ≡ 5 x 3 = 15– 37 = 2187 ≡ 3 (mod 7) ≡ 15 x 3

9

Page 10: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

フェルマーの小定理• 定理

– ap-1 ≡ 1 (mod p)• p: 素数• a: pと互いに素な整数

• オイラーの定理: 法を自然数に拡張– aφ(n) ≡ 1 (mod n)

• n: 自然数• φ(n): n未満のnに素な自然数の個数• a: nと互いに素な整数

10

Page 11: lecture_No03_公開鍵暗号の基礎_20111021

フェルマーの小定理: 例• 例: a=2, p=7

– 21 = 2 ≡ 2 (mod 7)– 22 = 4 ≡ 4 (mod 7)– 23 = 8 ≡ 1 (mod 7)– 24 = 16 ≡ 2 (mod 7)– 25 = 32 ≡ 4 (mod 7)– 26 = 64 ≡ 1 (mod 7)– 27 = 128 ≡ 2 (mod 7)

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21 11

• 例: a=3, p=7– 31 = 3 ≡ 3 (mod 7)– 32 = 9 ≡ 2 (mod 7)– 33 = 27 ≡ 6 (mod 7)– 34 = 81 ≡ 4 (mod 7)– 35 = 243 ≡ 5 (mod 7)– 36 = 729 ≡ 1 (mod 7)– 37 = 2187 ≡ 3 (mod 7)

Page 12: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

オイラーの定理: 例• n = 3 x 5 = 15• φ(15) = (3-1)(5-1) = 8

– 15と互いに素な数: 1, 2, 4, 7, 8, 11, 13, 14• aφ(15) ≡ 1 (mod 15)

– 21 = 2 ≡ 2 (mod 15)– 22 = 4 ≡ 4 (mod 15)– 23 = 8 ≡ 8 (mod 15)– 24 = 16 ≡ 1 (mod 15)– 25 = 32 ≡ 2 (mod 15)– 26 = 64 ≡ 3 (mod 15)– 27 = 128 ≡ 8 (mod 15)– 28 = 256 ≡ 1 (mod 15)

12

Page 13: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

ユークリッドの互除法: 2数の最⼤公約数• 2数の最⼤公約数を求める手法• 命題

– gcd(a, b) = gcd(b, r)– ただし、a>b>0かつa = qb + r

• 証明– c = gcd(a, b) ⇒ c ≦ gcd(b, r)

• r = a – qbより、cは第1項も第2項も割り切る– c’ = gcd(b, r) ⇒ c’ ≦ gcd(a, b)

• a = qb + rより、aとbは因数c’を持つ– c ≦ c’ かつ c’ ≦ c ⇒ c = c’

13

Page 14: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

ユークリッドの互除法: 例• 314と150の最⼤公約数

– 314 = 2*150 + 14⇒ gcd(315, 150) = gcd(150, 14)

– 150 = 10*14 + 10⇒ gcd(150, 14) = gcd(14, 10)

– 14 = 1*10 + 4⇒ gcd(14, 10) = gcd(10, 4)

– 10 = 2*4 + 2⇒ gcd(10, 4) = gcd(4, 2)

– 4 = 2*2 + 0⇒ gcd(4, 2) = 2

14

Page 15: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

拡張ユークリッドの互除法• ax + by = gcd(a, b)を満たす整数x, y• 例: 1071x + 1029y = gcd(1071, 1029)を満

たすx, yを求める– 1071 = 1*1029 + 42

⇒ gcd(1071, 1029) = gcd(1029, 42)– 1029 = 24*42 + 21

⇒ gcd(1029, 42) = gcd(42, 21)– 42 = 2*21

⇒ gcd(42, 21) = 21– 21 = 1029 – 24*42

= 1029 – 24*(1071-1*1029)= -24*1071 + 25*1029

15

Page 16: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

応用: 逆元の計算• 法nに互いに素な元aの逆元を求める

– xa + (-y)n = gcd(n, a)• 例: n=23, a=12• 解:

– 23 = 1*12 + 11 ⇒ 11 = 23 – 1*12– 12 = 1*11 + 1 ⇒ 1 = 12 – 1*11– 1 = 12 – 1*11 = 12 – 1*(23-1*12)

= 2*12 – 1*23 = 1– よって、12-1 mod 23 = 2– 検算: 2*12 = 24 ≡ 1 (mod 23)

16

Page 17: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

応用: 逆元の計算• 法nに互いに素な元aの逆元を求める

– xa + (-y)n = gcd(n, a)• 例: n=23, a=5• 解:

– 23 = 4*5 + 3 ⇒ 23 – 4*5 = 3– 5 = 1*3 + 2 ⇒ 5 – 1*3 = 2– 3 = 1*2 + 1 ⇒ 3 – 1*2 = 1– 1 = 3 – 1*2 = 3 – 1*(5-1*3)

= 2*3 – 1*5= 2*(23 – 4*5) – 1*5= -9*5 + 2*23 = 1

– (-9)*5 ≡ 1 (mod 23)– –9 ≡ 0 – 9 ≡ 23 – 9 ≡ 14 (mod 23) – よって、5-1 mod 23 = 14– 検算: 14 * 5 ≡ 1 (mod 23)

17

Page 18: lecture_No03_公開鍵暗号の基礎_20111021

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21

応用: 逆元の計算• 法nに互いに素な元aの逆元を求める

– xa + (-y)n = gcd(n, a)• 例: n=77(=7*11), a=17• 解:

– 77 = 4*17 + 9 ⇒ 77 – 4*17 = 9– 17 = 1*9 + 8 ⇒ 17 – 1*9 = 8– 9 = 1*8 + 1 ⇒ 9 – 1*8 = 1– 1 = 9 – 1*8 = 9 – 1*(17-1*9)

= 2*9 – 1*17= 2*(77 – 4*17) – 1*17= -9*17 + 2*77 = 1

– (-9)*17 ≡ 1 (mod 77)– -9 ≡ 0 – 9 ≡ 77 – 9 ≡ 68 (mod 77) – よって、17-1 mod 77 = 68– 検算: 68 * 17 ≡ 1 (mod 77)

18

Page 19: lecture_No03_公開鍵暗号の基礎_20111021

まとめ• 一方向性関数

– 公開鍵暗号方式における安全性の基礎– 例: 素因数分解問題、離散対数問題

• 初等整数論– フェルマーの小定理– オイラーの定理– ユークリッドの互除法

• 逆元の演算

ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21 19