1 / 33

前回の練習問題

前回の練習問題. F 29 = {1, 2,…, 28} において, g = 11 が生成元であることを確かめ, F 29 の元とその離散対数との関係を図示せよ. x = 1, ..., 28 に対し, g x mod 29 を計算すればよい. x. g x. x. g x. x. g x. log a. 1 2 3 4 5 6 7 8 9 10. 11 5 26 25 14 9 12 16 2 22. 11 12 13 14 15 16 17 18 19 20. 10 23 21 28

Download Presentation

前回の練習問題

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 前回の練習問題 F29 = {1, 2,…, 28}において,g = 11 が生成元であることを確かめ,F29の元とその離散対数との関係を図示せよ. x = 1, ..., 28 に対し,gx mod 29 を計算すればよい x gx x gx x gx log a 1 2 3 4 5 6 7 8 9 10 11 5 26 25 14 9 12 16 2 22 11 12 13 14 15 16 17 18 19 20 10 23 21 28 18 24 3 4 15 20 21 22 23 24 25 26 27 28 17 13 27 7 19 6 8 1 20 10 a 0 5 10 15 20 25

  2. 前回紹介したRSA暗号の実現例 • 暗号化操作: 平文を3乗して,493で割った余りを暗号文とする • 復号操作: 暗号文を299乗して,493で割った余りを復号結果とする 当然沸いてくる疑問: • 本当に,いつも正しく復号できるの? • 3や493と299との関係は? • 大きな数字の計算はどうするの?

  3. RSA暗号 • Rivest, Shamir, Adelmanにより1977年に提案 • 「世界初」の公開鍵暗号で,広く実用化 • 以下のスライドで概要を説明する • 鍵の(具体的な)構成法 • 暗号化・復号の(具体的な)手順 • 鍵構成,暗号化・復号操作の実現法について • 逆元計算,べき乗計算の方法 • 動作原理の数学的考察 • 安全性について

  4. a mod x: aを xで割った余り a ≡ b mod x: (aを xで割った余り) = (bを xで割った余り) RSA暗号の鍵構成 • RSA暗号の暗号化鍵,復号鍵をつくるには... • 大きな素数を2個選ぶ.仮にこれを p, qとする • 合成数 n = pqを計算する • (p – 1) (q – 1) と互いに素な正整数 eを選ぶ • ed ≡ 1 mod (p – 1)(q – 1)となる正整数 dを求める • 暗号化鍵として,eと nを公開する. • dは,復号鍵として厳重に保管する

  5. RSA暗号の暗号化と復号 • e, nは暗号化鍵として公開: • 暗号化操作は「平文を e乗して nで割った余りを求める」 • 平文 mの暗号文は,me mod n • dは復号鍵として秘密保存: • 復号操作は「暗号文を d乗して nで割った余りを求める」 • 暗号文 cに対応する平文は,cd mod n • 平文の集合は 1 以上 n – 1以下の正整数

  6. 前例の鍵生成について 前回の例の鍵:e = 3, n = 493, d = 299 はどのように求めたか • p = 29, q = 17 とする • n = pq = 29・17 = 493とする • e = 3とする.この値は (p – 1)(q – 1) = 28・16 = 448 とは 互いに素となっている • 計算により d = 299となる.ed = 3・299 = 897 = 2・448 + 1, したがって edを (p – 1)(q – 1) で割った余りは 1 になる • 暗号化鍵として e = 3 と n = 493 を公開 • d = 299 は復号鍵として保管

  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. a0 = A b0 = B ai bi ai+1 = bi bi+1 = ai mod bi aj bj = 0 ユークリッドの互除法と dの計算 ユークリッド互除法: 2つの整数の最大公約数を計算するアルゴリズム • 2整数をA, Bとする(A > B) • a0 = A, b0 = Bとする • ai+1 = bi, bi+1 = ai mod biとして再帰的計算を行う • bj = 0 となったときの ajが Aと Bの最大公約数

  9. 252 135 135 117 ← 252を135で割ると,余りは117 ← 135を117で割ると,余りは18 117 18 18 9 ← 117を18で割ると,余りは9 ← 18を9で割ると,余りは0 9 0 ユークリッド互除法の計算例(1) • 252 と 135 の最大公約数は... 252と135の最大公約数は9

  10. 130 59 ← 130を59で割ると,余りは12 59 12 ← 59を12で割ると,余りは11 12 11 11 1 ← 12を11で割ると,余りは1 1 0 ← 11を1で割ると,余りは0 ユークリッド互除法の計算例(2) • 2整数が互いに素ならば,どこかで bi = 1 となる • 130 と 59 の最大公約数は... 最大公約数は1...130と59 は互いに素

  11. ユークリッド互除法と逆元計算 • A, Bを互いに素な正整数とし,A > Bとする. • ユークリッド互除法を応用することで, CB ≡ 1 mod A となる Cを計算可能 (Cは Bの乗法逆元) 計算法: • 各 biを (Aの倍数) + (Bの倍数)として表現 • どこかで bi = 1 = xA + yBとなるはず • yB = – xA + 1 より,yBを Aで割ると 1 余る • yB ≡ 1 mod Aなので,C = yとしても良いが... • CB ≡ 1 mod Aとなる Cは無数に存在 • (後の計算のため)yと同値な最小正整数をCとする

  12. 逆元計算の例 • 130 と 59 は互いに素... 130 59 = 130– 2 x 59 59 12 = 59– 4 x 12 = – 4 x 130 + 9 x 59 12 11 11 1 = 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. 448 3 3 1 = 448 – 149・3 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 に対してユークリッド法を適用 3 の逆元は –149 ≡ – 149 + 448 = 299 mod 448 d = 299 これで鍵を作れるようになった

  14. 7488 5 5 3 = 7488 – 1497・5 3 2 = 5 – 3 = –7488 + 1498・5 2 1 = 3 – 2 = 2・7488 – 2995・5 RSA の鍵を作ってみる • p = 79, q = 97 とすると,n = pq = 7663 • (p – 1)(q – 1) = 7488 と互いに素な値 e = 5 を選択 • 7488 と 5 との間でユークリッド互除法を実行 • eの逆元は d = – 2995 ≡– 2995 + 7488 = 4493 mod 7488

  15. べき乗計算について • 前スライドのRSA暗号: • 暗号化は,平文を 5 乗して 7663 で割る • 復号は,暗号文を 4493 乗して 7663 で割る 安直に計算すると大変 • べき乗を効率的に計算するために,「計算の分割」を行う • x2 mod n: そのまま計算する • x4 mod n: (x2 mod n)2 mod nとして計算を行う • x8 mod n: (x4 mod n)2 mod nとして計算を行う • x10 mod n: (x8 mod n) (x2 mod n) mod nとして計算を行う • :

  16. べき乗計算の例 1219 mod 35 を計算する • 122 mod 35 = 144 mod 35 = 4 • 124mod 35 = 42 mod 35 = 16 • 128 mod 35 = 162 mod 35 = 256 mod 35 = 11 • 1216 mod 35 = 112 mod 35 = 121 mod 35 = 16 1219 mod 35 = 1216+2+1 mod 35 = 16・4・12 mod 35 = 768 mod 35 = 33 これで暗号化・復号が行えるようになった

  17. 40 3 3 1 = 40 – 13 x 3 dの計算は,(p– 1)(q– 1) の剰余系で行う. nの剰余系でないことに注意! 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 • 暗号化鍵として e = 3, n = 55 を公開 • 復号鍵として d = 27 を秘密保持

  18. 暗号化,復号はnの剰余系で行う. (p– 1)(q– 1) の剰余系でないことに注意! RSA暗号の簡単な使用例(2) • ユーザBがユーザAにm = 7 を暗号化して送る: • B は公開されている暗号化鍵 e = 3, n = 55 を取得 • 暗号文は 73 mod 55 = 343 mod 55 = 13 • ユーザAによる暗号文 13 の復号操作: • ユーザAは,秘密の復号鍵 d = 27 を知っている • 1327 mod 55 を計算する • 132≡4, 134≡16 , 138≡36 , 1316≡31 • 1327 ≡ 31 x 36 x 4 x 13 = 58032≡7 mod 55 • 復号結果は7

  19. Eular(オイラー)の定理(の特殊な場合): mが n = pqと互いに素ならば,m(p– 1)(q– 1) ≡ 1 mod n. なぜRSA暗号はうまく動くのか? • 「正しい鍵を使えば正しく復号できる」ことが必須 • RSA暗号の場合, (me mod n)d mod n =med mod n = m 任意の m に対し,この式が成立することを証明する必要がある

  20. Eular(オイラー)の定理(の特殊な場合): mが n = pqと互いに素ならば,m(p– 1)(q– 1) ≡ 1 mod n. Eularの定理の直感的意味付け • べき乗値は,[1, n – 1]に属する有限の値をとる • べき乗値の系列を考えると,どこかで無限ループに陥る • オイラーの定理の意味:mがnと互いに素であれば... • 無限ループの中に 1 が存在 • 少なくとも,(p – 1)(q – 1) 乗したときは 1 になる n = 2・7 = 14 の場合,(p– 1)(q– 1) = 1・6 = 6 56 55 5 54 52 53 1 2 3 4 5 6 7 8 9 10 11 12 13

  21. 数値例 • 1になった次の次数では,再び mが出現する • mとnが互いに素であれば,任意の整数kに対し, mk(p – 1)(q – 1)+1 = (m(p – 1)(q – 1))km ≡ m mod n • べき乗演算により,一時的にmの値が「隠蔽される」 • さらにべき乗することで,周期的にmが出現する n = 2・7 = 14 の場合,(p– 1)(q– 1) = 1・6 = 6 … … m m2 m3 m4 m5 m6 m7 m13 m19 … … … … … … … … … …

  22. RSAの正当性証明 定理: med mod n = m 証明:ed ≡ 1 mod (p – 1)(q – 1)より,整数 k が存在して ed = k(p – 1)(q – 1) + 1 • m が n と互いに素であるとき • 前ページの式より med ≡mk(p – 1)(q – 1)+1 ≡ m mod n. • m が n = pq とは互いに素でないとき • m は p または q の倍数.仮に m = apiとする (a < q) • a は n と互いに素 ... med ≡aedpied ≡a(ped)i mod n • ped ≡ p mod nを証明できれば良い • ped ≡ 0 mod p • ped ≡ p mod q (フェルマーの小定理)

  23. ped ≡p mod nの証明 • 中国人の剰余定理(Chinese Reminder Theorem): n = p1・p2 ・ ・ ・pj とする. 1以上n – 1以下の整数で,以下のj個の合同式 x≡a1 mod p1 x≡a2 mod p2 : x≡aj mod pj を同時に満足する整数 x は(nを法として)唯一に定まる. □ • ped ≡0 mod p, ped ≡p mod qを満足するのは, ped≡p mod nの場合のみ ⇒ 前ページの証明完了

  24. 公開鍵暗号の安全性について 暗号が安全:解読が困難であること • さらに強い意味での安全性が必要になる場合も... (本講義では扱わない) • 暗号の解読: 復号のための鍵を使わずに,暗号文に隠された 平文を特定,推測すること • RSAの場合:me mod nから mの値を推測すること

  25. RSA暗号の解読について RSA暗号の解読は困難か? • 結果から言うと「安全であると思われている」 • 安全でないことの証明は簡単 攻撃に成功する方法を一個だけ提示すれば良い • 安全であることの証明は困難 何をやっても成功しないことを示す必要がある • RSAには,計算理論的な意味で安全性の保証はない • 「RSAの解読はNP完全問題である」等の証明は これまで与えられていない

  26. RSAの解読法(1) 攻撃者の立場から,どのような解読法が考えられるか • 「c = me mod nから mの値を推測したい」ときにどうするか • 総当り攻撃 • 公開鍵暗号では,誰でも暗号化が可能 • 考えられる平文を一個ずつ暗号化する • 暗号文が c になる平文が mに相当する ⇒平文空間を大きく(nの値を大きく)すれば問題なし

  27. RSAの解読法(2) • 方程式攻撃 • c = me 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. 素因数分解とRSA暗号 n = pqから(p – 1)(q – 1)が計算できるか? • できるかもしれないし,できないかもしれない • もし nを素因数分解できれば... • p, qを特定可能 • (p – 1)(q – 1)を計算可能 • 素因数分解はできるのか? • 決定的な解法は知られていない • p, qを十分大きな素数にすれば, 実用上問題ないのではないかと考えられている

  29. RSAの解読 素因数分解 易 難 Rabin, 逆数暗号の解読 素因数分解と解読問題の難しさ • RSA暗号の場合, • 素因数分解ができれば,RSAは解読可能 • 逆は示されていない • 「RSAの解読は,素因数分解よりも難しくない」 • Rabin 暗号,逆数暗号等の公開鍵暗号方式 • 素因数分解ができれば,解読可能 • 暗号の解読ができれば,素因数分解もできる • 「これらの方式の解読は,素因数分解と等価な難しさ」

  30. RSA暗号のまとめ • RSA暗号の鍵構成法 • 暗号化,復号の方法 • 具体的な計算の実現方法 • 正当性の証明 • 安全性の議論 • 安全性は素因数分解の困難さに依拠する • 鍵のサイズをできるだけ大きく取ることが望ましい • 現在では,最低でも n を1024ビット程度にはすべき

  31. 暗号関連技術について • 本講義では,暗号方式の基礎の基礎だけを紹介 • 今回紹介した基礎の上に,さまざまな技術が展開 • さらに進んだ暗号方式 • 電子署名,PKI • 暗号を用いたプロトコル • ゼロ知識証明 etc.

  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.

More Related