lecture_no03_公開鍵暗号の基礎_20111021
TRANSCRIPT
ネットワークセキュリティ第3回 公開鍵暗号の基礎
ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21
公開鍵暗号の特徴• 暗号化の為の鍵(公開鍵)と復号の為の鍵(秘密
鍵)が異なっている– 公開鍵を用いて秘密鍵を求められない仕組みが必
要• 一方向性関数
– xからyを求めるのは容易: y = f(x)– yからxを求めることが困難: x = f-1(y)
» 困難• 現在考え得る計算能⼒を持ってしても、意味のある時
間内に解を得ることができない• 例: 上記の記述を用いると…
– yを公開鍵、xを秘密鍵と考えれば、公開鍵から秘密鍵を求めることが困難
2
ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21
一方向性関数: 公開鍵暗号の安全性• 数学的問題の「難しさ」を利用
– 素因数分解問題• 合成数 n(=p×q) の素因数 p と q を求める問題
– 離散対数問題• y(= gx mod p) における g の指数 x を求める問題
– 「難しさ」の利用• 効率的な解法が「まだ」未発⾒• 計算量的安全性
– 問題のサイズ(ビット⻑など)を⼤きくとると、現実的な計算時間とメモリ量で解くことが難しい
• 例: 素因数分解問題– n の桁数: 小さい → 簡単に解ける
• 例: 15 = 3 × 5– n の桁数: ⼤きい → コンピュータを用いても困難
• 例: 561,263 = ? × ?• 例: 300桁程度の合成数の素因数分解
3
ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21
公開鍵暗号技術の数学的基礎• 代数学
– 代数系• 代数的構造を持つ集合• 集合 S とその演算の規則の C の組 (S, C)
– 群、環、体• 初等整数論
– 約数・倍数– ユークリッドの互除法– 素数– 法・合同式– フェルマーの小定理– 原始根、指数– オイラー関数– 平方剰余、ルジャンドルの記号・ヤコビの記号– 1のn乗根– 連分数
4
ネットワークセキュリティ 第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
ネットワークセキュリティ 第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
ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21
数学的準備: 体• 体K: 加法と乗法の二つの二項演算子をもつ集合–加法「+」: アーベル群–乗法「*」: モノイド(半群+単位元)
• 加法の零元を除く全ての元が群をなす• 例
– 有理数の全体Q、実数の全体Z、複素数の全体C– 集合Zp = {0, 1, …, p-1}、ただしpは素数
• 素数pを法とした剰余集合
7
ネットワークセキュリティ 第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
ネットワークセキュリティ 第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
ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21
フェルマーの小定理• 定理
– ap-1 ≡ 1 (mod p)• p: 素数• a: pと互いに素な整数
• オイラーの定理: 法を自然数に拡張– aφ(n) ≡ 1 (mod n)
• n: 自然数• φ(n): n未満のnに素な自然数の個数• a: nと互いに素な整数
10
フェルマーの小定理: 例• 例: 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)
ネットワークセキュリティ 第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
ネットワークセキュリティ 第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
ネットワークセキュリティ 第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
ネットワークセキュリティ 第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
ネットワークセキュリティ 第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
ネットワークセキュリティ 第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
ネットワークセキュリティ 第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
まとめ• 一方向性関数
– 公開鍵暗号方式における安全性の基礎– 例: 素因数分解問題、離散対数問題
• 初等整数論– フェルマーの小定理– オイラーの定理– ユークリッドの互除法
• 逆元の演算
ネットワークセキュリティ 第3回 公開鍵暗号の基礎 2011/10/21 19