3. 概要 はじめに ユークリッド互除法 RSA 暗号 安全性の根拠 暗号化の高速化
公開鍵暗号
送信側 受信側
m
平文
-暗号化
f c := f (m)
暗号文
- 送信 -· · · - 受信 -
c
暗号文
復号化
f −1
-
m := f −1(c)
平文
暗号化 f 復号化 f −1 メリット 用途
共通鍵暗号 秘密 秘密 計算が高速 戦争
公開鍵暗号 公開 秘密 f から f −1 が インター
類推されにくい ネット
公開鍵暗号の例: RSA 暗号 (Rivest, Shamir, Adleman, 1976)
3 / 12
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 1 回: RSA 暗号
4. 概要 はじめに ユークリッド互除法 RSA 暗号 安全性の根拠 暗号化の高速化
ユークリッド互除法
Z: 整数全体
a, b, c ∈ Z, b ̸= 0
. 1 b|a
def
⇐⇒ k ∈ Z s.t. bk = a
.
2 a mod b = c
def
⇐⇒
{
b|(a − c)
0 ≤ c ≤ |b| − 1
.
3 (a, b) を a, b の最大公約数 > 0 として、
b|a =⇒ (a, b) = |b|
a modb = c =⇒
{
(a, b)|c
(b, c)|a
=⇒
{
(a, b)|(b, c)
(b, c)|(a, b)
=⇒ (a, b) = (b, c)
{ai }n
i=1 :
a2 ̸= 0
ai mod ai+1 = ai+2 ̸= 0, i = 1, · · · , n − 2
an−1 mod an = 0
=⇒ (a1, a2) = · · · = (an−1, an) = an
4 / 12
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 1 回: RSA 暗号
6. 概要 はじめに ユークリッド互除法 RSA 暗号 安全性の根拠 暗号化の高速化
b ̸= 0 のとき、同値関係 a ≡ c (mod b)
def
⇐⇒ b|(a − c)
a1 ≡ c1, a2 ≡ c2 (mod b) =⇒ a1 + a2 ≡ c1 + c2 (mod b)
a1 ≡ c1, a2 ≡ c2 (mod b) =⇒ a1a2 ≡ c1c2 (mod b)
b ̸= 0, (a, b) = 1 =⇒ ∃x ∈ Z s.t.ax ≡ 1(mod b)
.
(a, b) = 1 であれば、ax + by = 1 なる x, y ∈ Z が存在するから
6 / 12
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 1 回: RSA 暗号
7. 概要 はじめに ユークリッド互除法 RSA 暗号 安全性の根拠 暗号化の高速化
RSA 暗号: 鍵生成
公開鍵 (n, e) と秘密鍵 d の生成
.
.
.
各自が、それぞれの公開鍵 (n, e) を公開、秘密鍵 d を秘密に
.
1 素数 p ̸= q を選ぶ
.
2 n := pq, ϕ := (p − 1)(q − 1)
.
3 (e, ϕ) = 1 なる e (mod ϕ) を選ぶ (1 ≤ e ≤ ϕ − 1)
.
4 ex ≡ 1 (mod ϕ) なる x = d を選ぶ (1 ≤ d ≤ ϕ − 1)
ed ≡ ed′
≡ 1 (mod ϕ) =⇒ e(d − d′
) ≡ 0 (mod ϕ)
=⇒ d − d′
≡ 0 (mod ϕ)
k ∈ Z, ed ≡ 1 (mod ϕ) =⇒ e(d + kϕ) ≡ 1 (mod ϕ)
7 / 12
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 1 回: RSA 暗号
8. 概要 はじめに ユークリッド互除法 RSA 暗号 安全性の根拠 暗号化の高速化
RSA 暗号: 暗号化と復号化
平文 m ∈ [0, n − 1] を暗号化して、c := me mod n
.
.
.
送信側は、受信側の公開鍵 (n, e) で平文 m を暗号化
長ければ、短いブロックに区切り、それぞれを n 通りの平文
送信側 受信側
m
-暗号化
c := me
mod n- 送信 -· · · - 受信 -
c
復号化 -
m = cd
mod n
(me
)d
≡ m (mod n)
仮定: (n, e) → d の計算が膨大で、d はわからない
8 / 12
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 1 回: RSA 暗号
9. 概要 はじめに ユークリッド互除法 RSA 暗号 安全性の根拠 暗号化の高速化
Fermat の小定理: p: 素数, m ∈ Z (m ≥ 0)
(m, p) = 1 =⇒ mp−1
≡ 1 (mod p)
1 ≤ k ≤ p − 1 =⇒
k!
(
p
k
)
=
∏p
j=p−k+1 j ≡ 0 (mod p)
k! ̸≡ 0 (mod p)
=⇒
(
p
k
)
≡ 0 (mod p)
(c1 + c2)p
− (cp
1 + cp
2 ) =
p−1∑
k=1
(
p
k
)
ck
1 cp−k
2 ≡ 0 (mod p)
数学的帰納法で一般の m に拡張し、c1 = · · · = cm = 1 とおくと
(1 + · · · + 1
m
)p
− (1p
+ · · · + 1p
m
) ≡ 0 (mod p)
m(mp−1
− 1) ≡ 0 (mod p)
9 / 12
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 1 回: RSA 暗号
10. 概要 はじめに ユークリッド互除法 RSA 暗号 安全性の根拠 暗号化の高速化
med
≡ m (mod n)
ed ≡ 1 (mod ϕ) より、ed = 1 + kϕ なる整数 k が存在.
1 (m, p) = 1 であれば、Fermat の小定理から
mp−1
≡ 1 (mod p)
m1+kϕ
= m1+k(p−1)(q−1)
= m · (mp−1
)k(q−1)
≡ m (mod p)
med
≡ m (mod p) (4)
.
2 (m, p) = p でも (4) は成立
p, q を入れ替えても (4) は成立する。
med
≡ m (mod q)
p ̸= q より、(p, q) = 1 であるので、
med
≡ m (mod pq)
10 / 12
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 1 回: RSA 暗号
12. 概要 はじめに ユークリッド互除法 RSA 暗号 安全性の根拠 暗号化の高速化
参考: me
mod n の高速化
再帰的に計算して、e ではなく、log2 e に比例する程度の計算
me
mod n =
(me/2 mod )2 mod n (e : even, e ̸= 0)
m · (m(e−1)/2 mod n)2 mod n (e : odd)
1 (e = 0)
12 / 12
実験数学 3, (大阪大学理学部数学科 3 年・4 年), 第 1 回: RSA 暗号