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
© Copyright 2024 Paperzz