RSA暗号 - 東北大学大学院理学研究科数学専攻

2009/8/26
暗号
赤間陽二
東北大学理学研究科数学専攻
2009/8/26
計算機数学A
1
理想の暗号
高速に暗号化でき復号化できる
 鍵を変更せずに何度でも使える
 盗聴者は解読不可能

2009/8/26
計算機数学A
2
1
2009/8/26
共通鍵暗号
送受信者の暗号表の同期が
大変
k人の間ではk(k-1)/2個の同
期
南北戦争の北軍の暗号表
→
2009/8/26
3
計算機数学A
公開鍵暗号[ディフィ・ヘルマン19 76 ]の長所
暗号化の方法を秘密にしなくてよい
 鍵を知っていれば
鍵を知
れば
- 効率よく暗号化・復号化可能
- 何回でも使える

Diffie(Sun Microsystems)
2009/8/26
Hellman(Stanford),
計算機数学A
Merkle(UCB→Stanford)
4
2
2009/8/26
公開鍵暗号による電子署名
受信者Zが送信者Aから「署名」
受信者
が送信者 から「署名
付きの文をもらうと、Aのその
「署名」を盗聴者もZも改竄でき
ない。
5
計算機数学A
2009/8/26
公開鍵暗号のアイデア
平文m
鍵の発行、正当な送受信者の計算は易
KZ,KZ’,Decryt,Encrypt 易
Zの公開鍵KZ
公開鍵と秘密鍵は互いに“逆”機能
Encrypt
Decrypt(Encrypt(m,KZ),KZ’)=m
Encrypt(Decrypt(c,KZ’),KZ)=c
秘文c
Zの秘密鍵KZ’
傍受者の秘密鍵の推測は難
Encrypt(m,KZ),KZ → m 難
秘文c
Decrypt
平文m
A発Z宛てのmも暗号送信
2009/8/26
計算機数学A
6
3
2009/8/26
公開鍵暗号による電子署名
「拝啓、Z様、…敬具、A」
1.AはZへ
c=Encrypt(KZ, Decrypt(KA’, “私”))
を送る。KZはZの公開鍵、KA’はAの秘密鍵
2.Zは受信文cから
E
Encrypt(KA,
t(KA Decrypt(c,KZ’))
D
t( KZ’))
を計算すると、“私”という意味のある語を得るから、
cはAの秘密鍵KA’により計算されたとわかる。KA’は
Aのみが持つから、cはAが署名したと確認できる。
計算機数学A
2009/8/26
7
公開鍵暗号系の実現(1/2)
RSA暗号[1977]

因数分解の困難さを利用
Adi Shamir, Ronald Rivest, and Leonard Adleman
(Students at MIT)
2009/8/26
計算機数学A
8
4
2009/8/26
公開鍵暗号系の実現(2/2)
Elgamal暗号[1984]

群論における離散対数問題
群として楕円曲線の有理点全体など
を使えば楕円曲線暗号
Taher Elgamal(b.1955. Stanford→Cairo U.)
2009/8/26
9
計算機数学A
Euler関数Φ(n)とnの素因数分解



Φ(n) : nと素なn以下の正整数の個数
例. 異なる素数p,q.
- Φ(p)=p-1.
- Φ(pq)=(p-1)(q-1)=Φ(p) Φ(q).
● pq未満の、正整数:pq-1個
● pq未満の、pの倍数:q-1個
● pq未満の、qの倍数:p-1個
● pq未満の、pqの倍数:0個
Eulerの定理. xとb素⇒xΦ(b)=1 mod b.
2009/8/26
計算機数学A
10
5
2009/8/26
鍵の発行,
送受信者の暗号化・復号化は易
公開鍵 K :=(e,pq),
:=(e pq) ここで p,q,e
p q e 素数
 秘密鍵 K’ := (1/e mod Φ(pq))
(ユークリッド互除法)

暗号化 Encrypt(m,K)=me mod pq
 復号化 Decrypt(c,K’)=cK’mod pq
(冪乗法) 28を求めるのに乗算は
7回ではなく
log28=3回で済む(((22)2)2

2009/8/26
計算機数学A
11
公開鍵と秘密鍵は互いに“逆”機能
Decrypt(Encrypt(x,K),K
Decrypt(Encrypt(x
K) K‘))
≡ Encrypt (Decrypt(x, K’),K) ≡ X mod pq
(∵)
xe K‘ ≡ xtΦ(pq)+1 ≡ x mod pq を示す
Ф(pq)=Ф(p)Ф(q).
Ф( ) 1≡ (xФ(pq)
Ф( ))t x ≡ x
① pq と x が素 ⇒x tФ(pq)+1
②p|x&qとxが素⇒xtФ(pq)+1≡(xФ(q) )Φ(p)tx≡x
2009/8/26
計算機数学A
12
6
2009/8/26
RSA暗号における送信・受信
① Zへ送りたい分 “ITS
ITS GREEK TO ME”
ME
“A”=01,…,“S”=19,“T”=20,…“Z”=25, “”=00
②09201900..05
公開鍵KZ=(e,n)のn未満の数にわける.
③m1=0920,, m2=1900,m
, 3=……
暗号化 Encrypt( ,KZ) 復号化 Decrypt ( ,KZ')
④ Encrypt(m1 ,KZ), Encrypt( m2, KZ), Encrypt( m3, KZ),
2009/8/26
13
計算機数学A
盗聴者は秘密鍵の推測は難

素因数分解が容易
⇒解読容易.
逆は不明
(cf. Rabin 暗号)
公開鍵K=(e,n)
素因数分解
困難
素数 p、q
n=pq
ユークリット
の互除法
秘密鍵K’
eK’=1 mod(p-1)(q-1)
2009/8/26
計算機数学A
14
7
2009/8/26
RSA暗号の性能

解読に最適-最速な因数分解法
は汎用数体ふるい法(1999年,
512ビット=78ビット×78ビット)
2009/8/26
計算機数学A
15
暗号に役にたつ数学
American Mathematical Society
http://www.ams.org/featurecolumn/archive/internet.html
2009/8/26
計算機数学A
16
8
2009/8/26
平方剰余(a/p)


素数 p で割り切れない a に対して
(a/p)= 1, aは適当な整数の平方(mod p)
= -1, それ以外
オイラー基準
(a/p)≡ a(p-1)/2 (mod p)
( (p-1)/2 -1)(a
(a
)( (p-1)/2 +1)) = ap-1 – 1
≡0(∵Fermat)
2. (a/p) = 1 ⇒a ≡ b2 & b≡gr ⇒ a(p-1)/2 ≡1
⇒ a≡gs & a(p-1)s/2 ≡1
⇒(p-1) | (p-1)s/2 ⇒ 2|s ⇒ (a/p) = 1
1.
2009/8/26
計算機数学A
17
2次ふるい法
非常に大きな自然数 n の因数を見つける
 アイデア:
a2 = b2 (mod n)
⇒n | (a-b)(a+b)
⇒ (a±b) のどれかは n の因数を含むかも
⇒ GCD(n,
GCD(n a±b) が n の因数の可能性あり

2009/8/26
計算機数学A
18
9
2009/8/26
a2 = b2 (mod n)の探し方(1)
ー因子基底
1.
2.
3
3.
4.
素数 p1, p2,,…,p
,p1000 ただし ((n/pj)=1を求める(篩
pj) を求 る(篩
と冪乗法)
xi = [√n]+i (-108<i<108)かつ
xi2 – n = (-1)e0 p1e1 p2e2 … p1000e1000
となる xi に 1001次元ベクトル(指数ベクトル)
(e0, e1, …, e1000)
を対応させる。
指数ベクトルを1002個集めると一時従属
指数ベクトルを1002個集めると
時従属。
掃き出し法で、それらxiたちをうまく選ぶと
Π’ (xi2 –n) =: a2 ≡ b2 (mod n)
b := Π’ xi
2009/8/26
計算機数学A
19
指数ベクトルを持つ xiの探し方
ーふるい
1
1.
各 pj に対して
x2≡n (mod pj) となるxを求める(冪乗法で)
2. xi = [√n]+i ≡ x (mod pj) となる xi を求める.
(-108<i<108)
∴ xi 2 – n ≡ 0 (mod pj )
のような xi が pj 毎に存在
毎に存在.
このような
1.
2009/8/26
計算機数学A
20
10