Download presentation
Presentation is loading. Please wait.
Published byきみつぐ ひらみね Modified 約 8 年前
1
1 前回の練習問題 F 29 = {1, 2,…, 28} において, g = 11 が生成元であることを確 かめ, F 29 の元とその離散対数との関係を図示せよ. x = 1,..., 28 に対し, g x mod 29 を計算すればよい 1 2 3 4 5 6 7 8 9 10 11 5 26 25 14 9 12 16 2 22 gxgx x 11 12 13 14 15 16 17 18 19 20 10 23 21 28 18 24 3 4 15 20 gxgx x 21 22 23 24 25 26 27 28 17 13 27 7 19 6 8 1 gxgx x 10 5 152025 20 log a a 0
2
2 前回紹介した RSA 暗号の実現例 暗号化操作: 平文を 3 乗して, 493 で割った余りを暗号文とする 復号操作: 暗号文を 299 乗して, 493 で割った余りを復号結果とする 当然沸いてくる疑問: 本当に,いつも正しく復号できるの? 3 や 493 と 299 との関係は? 大きな数字の計算はどうするの?
3
3 RSA 暗号 Rivest, Shamir, Adelman により 1977 年に提案 「世界初」の公開鍵暗号で,広く実用化 以下のスライドで概要を説明する 鍵の(具体的な)構成法 暗号化・復号の(具体的な)手順 鍵構成,暗号化・復号操作の実現法について 逆元計算,べき乗計算の方法 動作原理の数学的考察 安全性について
4
4 RSA 暗号の鍵構成 RSA 暗号の暗号化鍵,復号鍵をつくるには... 1. 大きな素数を2個選ぶ.仮にこれを p, q とする 2. 合成数 n = pq を計算する 3. (p – 1) (q – 1) と互いに素な正整数 e を選ぶ 4. ed ≡ 1 mod (p – 1)(q – 1) となる正整数 d を求める 5. 暗号化鍵として, e と n を公開する. 6. d は,復号鍵として厳重に保管する a ≡ b mod x: (a を x で割った余り ) = (b を x で割った余り ) a mod x: a を x で割った余り
5
5 RSA 暗号の暗号化と復号 e, n は暗号化鍵として公開: 暗号化操作は「平文を e 乗して n で割った余りを求め る」 平文 m の暗号文は, m e mod n d は復号鍵として秘密保存: 復号操作は「暗号文を d 乗して n で割った余りを求め る」 暗号文 c に対応する平文は, c d mod n 平文の集合は 1 以上 n – 1 以下の正整数
6
6 前例の鍵生成について 前回の例の鍵: e = 3, n = 493, d = 299 はどのように求めたか 1. p = 29, q = 17 とする 2. n = pq = 29 ・ 17 = 493 とする 3. e = 3 とする.この値は (p – 1)(q – 1) = 28 ・ 16 = 448 とは 互いに素となっている 4. 計算により d = 299 となる. ed = 3 ・ 299 = 897 = 2 ・ 448 + 1 , したがって ed を (p – 1)(q – 1) で割った余りは 1 になる 5. 暗号化鍵として e = 3 と n = 493 を公開 6. d = 299 は復号鍵として保管
7
7 復号鍵の計算について RSA 暗号では, ed ≡ 1 mod (p – 1)(q – 1) となる正整数 d を求める必要がある e と (p – 1)(q – 1) が互いに素ならば ed ≡ 1 mod (p – 1)(q – 1) となる d は必ず存在する d はユークリッド互除法を応用して計算可能
8
8 ユークリッドの互除法と d の計算 ユークリッド互除法: 2つの整数の最大公約数を計算するアルゴリズム a 0 = Ab 0 = B aiai bibi a i+1 = b i b i+1 = a i mod b i ajaj b j = 0 2 整数を A, B とする (A > B) a 0 = A, b 0 = B とする a i+1 = b i, b i+1 = a i mod b i として再帰的計算を行 う b j = 0 となったときの a j が A と B の最大公約数
9
9 ユークリッド互除法の計算例(1) 252 と 135 の最大公約数は... 252135 117 18 9 ← 252 を 135 で割ると,余りは 117 ← 135 を 117 で割ると,余りは 18 ← 117 を 18 で割ると,余りは 9 90 ← 18 を 9 で割ると,余りは 0 252 と 135 の最大公約数は 9
10
10 ユークリッド互除法の計算例(2) 2 整数が互いに素ならば,どこかで b i = 1 となる 130 と 59 の最大公約数は... 13059 12 ← 130 を 59 で割ると,余りは 12 1211 ← 59 を 12 で割ると,余りは 11 111 10 ← 12 を 11 で割ると,余りは 1 ← 11 を 1 で割ると,余りは 0 最大公約数は 1 ... 130 と 59 は互いに素
11
11 ユークリッド互除法と逆元計算 A, B を互いに素な正整数とし, A > B とする. ユークリッド互除法を応用することで, CB ≡ 1 mod A となる C を計算可能 ( C は B の乗法逆元) 計算法: 各 b i を (A の倍数 ) + (B の倍数 ) として表現 どこかで b i = 1 = xA + yB となるはず yB = – xA + 1 より, yB を A で割ると 1 余る yB ≡ 1 mod A なので, C = y としても良いが... CB ≡ 1 mod A となる C は無数に存在 (後の計算のため) y と同値な最小正整数を C とす る
12
12 逆元計算の例 130 と 59 は互いに素... 13059 12 = 130 – 2 x 59 1211 1 = 59 – 4 x 12 = – 4 x 130 + 9 x 59 = 12 – 11 = 5 x 130 – 11 x 59 1 = 5 ・ 130 – 11 ・ 59 となる.これより... – 11 ・ 59 = – 5 ・ 130 + 1 – 11 ・ 59 ≡ 1 mod 130 – 11 と等価な整数は,すべて 59 の逆元となる – 11 と等価な – 11 + 130 = 119 を逆元の代表値とする
13
13 d の計算 ed ≡ 1 mod (p – 1)(q – 1) となる正整数 d を求める ⇒ (p – 1)(q – 1) と e に対してユークリッド互除法を利用 p = 29, q = 17, n = pq = 493, e = 3 に対応する d を求める: (p – 1)(q – 1) = 448 と e = 3 に対してユークリッド法を適用 4483 3 1 = 448 – 149 ・ 3 3 の逆元は – 149 ≡ – 149 + 448 = 299 mod 448 d = 299 これで鍵を作れるようになった
14
14 RSA の鍵を作ってみる p = 79, q = 97 とすると, n = pq = 7663 (p – 1)(q – 1) = 7488 と互いに素な値 e = 5 を選択 7488 と 5 との間でユークリッド互除法を実行 74885 5 3 = 7488 – 1497 ・ 5 3 2 = 5 – 3 = – 7488 + 1498 ・ 5 2 1 = 3 – 2 = 2 ・ 7488 – 2995 ・ 5 e の逆元は d = – 2995 ≡– 2995 + 7488 = 4493 mod 7488
15
15 べき乗計算について 前スライドの RSA 暗号: 暗号化は,平文を 5 乗して 7663 で割る 復号は,暗号文を 4493 乗して 7663 で割る 安直に計算すると大変 べき乗を効率的に計算するために,「計算の分割」を行う x 2 mod n: そのまま計算する x 4 mod n: (x 2 mod n) 2 mod n として計算を行う x 8 mod n: (x 4 mod n) 2 mod n として計算を行う x 10 mod n: (x 8 mod n) (x 2 mod n) mod n として計算を行う :
16
16 べき乗計算の例 12 19 mod 35 を計算する 12 2 mod 35 = 144 mod 35 = 4 12 4 mod 35 = 4 2 mod 35 = 16 12 8 mod 35 = 16 2 mod 35 = 256 mod 35 = 11 12 16 mod 35 = 11 2 mod 35 = 121 mod 35 = 16 12 19 mod 35 = 12 16+2+1 mod 35 = 16 ・ 4 ・ 12 mod 35 = 768 mod 35 = 33 これで暗号化・復号が行えるようになった
17
17 RSA 暗号の簡単な使用例(1) ユーザAの鍵生成: p = 5, q = 11 とする. n = 55 となる e = 3 とする. (p – 1)(q – 1) = 40 なので, e と互いに素 ユークリッド互除法で d を求める d = – 13 ≡40 – 13 = 27 mod 40 403 31 = 40 – 13 x 3 暗号化鍵として e = 3, n = 55 を公開 復号鍵として d = 27 を秘密保持 d の計算は, (p – 1)(q – 1) の剰余系で行う. n の剰余系でないことに注意!
18
18 RSA 暗号の簡単な使用例(2) ユーザ B がユーザAに m = 7 を暗号化して送る: B は公開されている暗号化鍵 e = 3, n = 55 を取得 暗号文は 7 3 mod 55 = 343 mod 55 = 13 ユーザ A による暗号文 13 の復号操作: ユーザ A は,秘密の復号鍵 d = 27 を知っている 13 27 mod 55 を計算する 13 2 ≡4, 13 4 ≡16, 13 8 ≡36, 13 16 ≡31 13 27 ≡ 31 x 36 x 4 x 13 = 58032≡7 mod 55 復号結果は 7 暗号化,復号は n の剰余系で行う. (p – 1)(q – 1) の剰余系でないことに注意!
19
19 なぜ RSA 暗号はうまく動くのか? 「正しい鍵を使えば正しく復号できる」ことが必須 RSA 暗号の場合, (m e mod n) d mod n = m ed mod n = m 任意の m に対し,この式が成立することを証明する必要がある Eular (オイラー)の定理(の特殊な場合): m が n = pq と互いに素ならば, m (p – 1)(q – 1) ≡ 1 mod n.
20
20 Eular の定理の直感的意味付け べき乗値は, [1, n – 1] に属する有限の値をとる べき乗値の系列を考えると,どこかで無限ループに陥 る オイラーの定理の意味: m が n と互いに素であれば... 無限ループの中に 1 が存在 少なくとも, (p – 1)(q – 1) 乗したときは 1 になる Eular (オイラー)の定理(の特殊な場合): m が n = pq と互いに素ならば, m (p – 1)(q – 1) ≡ 1 mod n. 12345678910111213 n = 2 ・ 7 = 14 の場合, (p – 1)(q – 1) = 1 ・ 6 = 6 55252 5353 54545 5656
21
21 数値例 1 になった次の次数では,再び m が出現する m と n が互いに素であれば,任意の整数 k に対し, m k(p – 1)(q – 1)+1 = (m (p – 1)(q – 1) ) k m ≡ m mod n べき乗演算により,一時的に m の値が「隠蔽される」 さらにべき乗することで,周期的に m が出現する mm2m2 m3m3 m4m4 m5m5 m6m6 m7m7 n = 2 ・ 7 = 14 の場合, (p – 1)(q – 1) = 1 ・ 6 = 6 39131151333 5 13931555 91119 1999 91 91 131 1 1 m 13 m 19 …… …… …… …… …… ……
22
22 RSA の正当性証明 定理: m ed mod n = m 証明: ed ≡ 1 mod (p – 1)(q – 1) より,整数 k が存在して ed = k(p – 1)(q – 1) + 1 m が n と互いに素であるとき 前ページの式より m ed ≡m k(p – 1)(q – 1)+1 ≡ m mod n. m が n = pq とは互いに素でないとき m は p または q の倍数.仮に m = ap i とする (a < q) a は n と互いに素... m ed ≡a ed p ied ≡a(p ed ) i mod n p ed ≡ p mod n を証明できれば良い p ed ≡ 0 mod p p ed ≡ p mod q ( フェルマーの小定理 )
23
23 p ed ≡p mod n の証明 中国人の剰余定理 (Chinese Reminder Theorem): n = p 1 ・ p 2 ・ ・ ・ p j とする. 1 以上 n – 1 以下の整数で,以下の j 個の合同式 x≡a 1 mod p 1 x≡a 2 mod p 2 : x≡a j mod p j を同時に満足する整数 x は( n を法として)唯一に定ま る. □ p ed ≡0 mod p, p ed ≡p mod q を満足するのは, p ed ≡p mod n の場合のみ ⇒ 前ページの証明完了
24
24 公開鍵暗号の安全性について 暗号が安全:解読が困難であること さらに強い意味での安全性が必要になる場合も... (本講義では扱わない) 暗号の解読: 復号のための鍵を使わずに,暗号文に隠された 平文を特定,推測すること RSA の場合: m e mod n から m の値を推測すること
25
25 RSA 暗号の解読について RSA 暗号の解読は困難か? 結果から言うと「安全であると思われている」 安全でないことの証明は簡単 攻撃に成功する方法を一個だけ提示すれば良い 安全であることの証明は困難 何をやっても成功しないことを示す必要がある RSA には,計算理論的な意味で安全性の保証はない 「 RSA の解読は NP 完全問題である」等の証明は これまで与えられていない
26
26 RSA の解読法(1) 攻撃者の立場から,どのような解読法が考えられるか 「 c = m e mod n から m の値を推測したい」ときにどうする か 総当り攻撃 公開鍵暗号では,誰でも暗号化が可能 考えられる平文を一個ずつ暗号化する 暗号文が c になる平文が m に相当する ⇒平文空間を大きく (n の値を大きく)すれば問題なし
27
27 RSA の解読法(2) 方程式攻撃 c = m e mod n から方程式を立てて m を計算 n の剰余系でなければ,単なる数値計算問題 ⇒ n の剰余系では,有効な解法が知られていない 復号鍵の推測攻撃 d は, (p – 1)(q – 1) の剰余系での e の乗法逆元 暗号化鍵 e と n = pq から,復号鍵 d を推定したい もし (p – 1)(q – 1) がわかれば, d の計算は容易 n = pq から (p – 1)(q – 1) が計算できるか?
28
28 素因数分解と RSA 暗号 n = pq から (p – 1)(q – 1) が計算できるか? できるかもしれないし,できないかもしれない もし n を素因数分解できれば... p, q を特定可能 (p – 1)(q – 1) を計算可能 素因数分解はできるのか? 決定的な解法は知られていない p, q を十分大きな素数にすれば, 実用上問題ないのではないかと考えられている
29
29 素因数分解と解読問題の難しさ RSA 暗号の場合, 素因数分解ができれば, RSA は解読可能 逆は示されていない 「 RSA の解読は,素因数分解よりも難しくない」 Rabin 暗号,逆数暗号等の公開鍵暗号方式 素因数分解ができれば,解読可能 暗号の解読ができれば,素因数分解もできる 「これらの方式の解読は,素因数分解と等価な難し さ」 易難 素因数分解 RSA の解読 Rabin, 逆数暗号の解読
30
30 RSA 暗号のまとめ RSA 暗号の鍵構成法 暗号化,復号の方法 具体的な計算の実現方法 正当性の証明 安全性の議論 安全性は素因数分解の困難さに依拠する 鍵のサイズをできるだけ大きく取ることが望ましい 現在では,最低でも n を 1024 ビット程度にはすべき
31
31 暗号関連技術について 本講義では,暗号方式の基礎の基礎だけを紹介 今回紹介した基礎の上に,さまざまな技術が展開 さらに進んだ暗号方式 電子署名, PKI 暗号を用いたプロトコル ゼロ知識証明 etc.
32
32 講義全体のまとめ 情報の記録や伝達を,効率よく,確実に行うための技術 第一部:情報の量を計る 第二部:情報をコンパクトに表現する 第三部:情報を正確に伝える 第四部:情報を不正者から隠す あくまでも情報を扱うための「道具」 情報を取り扱う際に,これら道具を最大限活用してほし い
33
試験について 6/3 (木)1限 試験( L1 講義室) 本,資料,パソコン等の持ち込み OK (通信機能の使用は不 可) 電卓はあったほうが良いかも... test day: June 3 (Thu.), L1 (this room) You can bring any books, documents and your PC (no WiFi) An calculator may help you, maybe.... English translation of test questions will be provided. 33
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.