1 / 54

chapter 4: 暗号 に ついて

chapter 4: 暗号 に ついて. この講義の「守備範囲」について. 「暗号技術」は,様々な側面から議論される主題となりつつある 情報管理 政治・経済 歴史 哲学・思想 本講義では,暗号に関する技術的な基礎にのみ言及する. 用語について. 暗号化 ( encryption ). E. p. E ( p ). D. D ( c ). c. 復号 ( decryption ). 平文 ,ひら ぶん ( plaintexts ); 意味の明確な情報表現. 暗号 文 ( ciphertexts ); それ自体では意味をなさない 情報表現.

dean-jordan
Download Presentation

chapter 4: 暗号 に ついて

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. chapter 4:暗号について

  2. この講義の「守備範囲」について 「暗号技術」は,様々な側面から議論される主題となりつつある • 情報管理 • 政治・経済 • 歴史 • 哲学・思想 本講義では,暗号に関する技術的な基礎にのみ言及する

  3. 用語について 暗号化(encryption) E p E(p) D D(c) c 復号(decryption) 平文,ひらぶん(plaintexts); 意味の明確な情報表現 暗号文(ciphertexts); それ自体では意味をなさない 情報表現 • 暗号= D(E(p)) = pであるようなEとDの組 • (用語に関しては,ブレが多い) crypto  cipher, text  data, cryptography  encryption

  4. 暗号の大分類 • 鍵無し暗号 • E, Dの値は,平文,暗号文だけにより決まる • 鍵が存在しない... アルゴリズムそのものを秘匿して使用 • “O, draconian devil”  “Leonardo da Vinci” • 共通鍵暗号 • EとDが同一の鍵を使用する • 公開鍵暗号 • EとDが異なる鍵を使用する

  5. 共通鍵暗号 対称鍵暗号,古典的暗号,とも... • E (D) は,二つの入力,「鍵」と「平文(暗号文)」を取る • E(k, p): 鍵 kを用い,平文 p を暗号化して得られる暗号文 • D(k, c):鍵 kを用い,暗号文 c を暗号化して得られる平文 • D(k, E(k, p)) = p.さらに,k’kならば D(k’, E(k, p)) p k1 k2 p, if k1 = k2 p E c D ?, if k1k2

  6. 換字暗号 substitution cipher: • 暗号化: 平文の文字を他の文字に置き換える • 復号: 暗号化の逆の文字置き換え • 鍵: 文字の置換表 ... 平文 A B C Y Z      暗号文 ... E K A Z G • 鍵の種類 = 英文の場合 26! ... 現代のコンピュータにとっても,かなり大きい数字 • 平文の統計的性質が,そのまま暗号文にも出現する

  7. 頻度攻撃 単純な換字暗号では... • 同じ文字は,いつも同じ文字に置き換えられる • 多くの場合,文字の出現頻度には偏りがある 英文の場合... • E, T, A, S ,O, N などが頻繁に出現する • 暗号文で頻出する文字...上記のどれかである可能性が高い A.C. Doyle, 1903, The Adventure of the Dancing Men 「踊る人形」

  8. h x a c a b c d 8.4% 1.5% 2.7% 3.8% 8.6% 1.4% 2.8% 3.8% 推測された 平文 theory in modern english is a concept which originally derives from classical greek 頻度攻撃のイメージ 典型的な英文 information as a concept has many meanings the concept of information is 未知文書の 暗号文 zpunim gt oncuit utqvgwp gw h antaubz spgap nigqgthvvm cuigluw eino → a → b → c → d

  9. 換字暗号の改良法について 換字暗号の脆弱性は,昔から専門家には良く知られていた 多くの改良法... • 一対多の換字 • 複数文字単位での置き換え • 換字表を複数用意して切り替える • 換字表を動的に更新していく  エニグマ暗号

  10. エニグマ暗号 • 第二次大戦中.ドイツ軍が使用した暗号方式 • 機械的な「ローター」により,文字の置き換えルールを決定 • 一文字ごとにローターが回転し,ルールが更新される A B D マシンパワー >> 人力 C

  11. DES (Data Encryption Standard) DES (Data Encryption Standard) • 1970年代に,アメリカにて開発 • 主目的は,比較的機密度の低い情報の保護 • 「リーズナブルなコストで,そこそこの安全性」 • 今日では安全とは言えないが,現代暗号に多大な影響 1973 NBS (米国標準化事務所)暗号アルゴリズムを公募 1974 IBM が同社のルシファー暗号を応募 1977 米国の連邦標準として採用 1997 NIST (NBSから改称) が,次世代のAES を公募

  12. DESの基本構造 青字:ビット数 56 56 RK1 RK2 RK16 鍵 48 48 48 32 R1 R2 R15 R16 R0 平文 f f f IP IP IP-1 暗号文 64 64 L1 L2 L15 L16 L0 32 1段目 2段目 16段目

  13. Feistel構造 • DES の各ラウンドは,Fesitel構造を有する • RKi+1無しでは,ラウンド操作の 逆計算は非常に困難 • RKi+1があれば,ラウンド操作の 逆計算は容易に行える Li Ri RKi+1 f Li+1 Ri+1 Ri+1 Li+1 • RKi+1を用いた逆計算は, 同じFeistel構造で実現可能 (レジスタ内容の左右を交換 するだけで良い) RKi+1 f Ri Li

  14. DESの復号操作 RK16 RK15 RK1 鍵 R1 R2 R15 R16 R0 暗号文 平文 f f f IP IP IP-1 L1 L2 L15 L16 L0 青枠内は,暗号化操作とまったく同一  一個の回路で,暗号化も復号も対応できる

  15. DESの安全性 • 理論面からのアプローチ • 差分攻撃(Biham & Shamir, 1990) • DES の設計段階で想定・対策済み,らしい • 線形攻撃(Matsui, 1993) • 世界で初めてDESの解読に成功 • 計算面からのアプローチ • 10万台の計算機を用い,22時間で解読成功(1999) • FPGA で作った並列計算機で,9日間で解読成功(2006) DES は,もはや安全な選択肢ではない DES解読器 制作費 25万ドル

  16. DESに対する都市伝説 DESには,設計者しか知らない弱点が仕込まれているのでは? なぜなら,そこにNSAが関与しているから... • NSA: 米国国家安全保障局 • CIA, FBI, 軍の情報機関を統括する組織 • 政府は,長らくその存在を認めなかった • 最近では,「エシュロン」への関与が噂に • 鍵の長さが,IBM提案の半分に短縮された • S-box置換の中身が,NSAの選定したものに入れ替えられた • NSAは,線形解読法が可能であることを知っていたらしい • ⇒噂の真相は明らかになっていない

  17. AES,その他の共通鍵暗号 • DES は,もはや安全ではない • 都市伝説を否定しようがない  新しく,より強力な暗号が必要 1997 NISTがAdvanced Encryption Standard (AES)の公募開始 12か国から15件の応募 1999 一次審査で 5件に絞り込み 2000 ベルギーからの Rijndaelが選定される 2001 連邦標準への採用 他にも多数の暗号方式が存在:Blowfish, IDEA, Camellia...

  18. 鍵共有の問題 すべての共通鍵暗号が直面する問題: どうやって,鍵を安全に共有するか? • 情報の送受信者が,事前に同じ鍵を知っておく必要がある • 第三者には,その鍵を知られてはいけない 解決法 ... • 高価だが,安全な通信手段を用いて鍵を配送 • エージェント,書留,伝書鳩,etc. • 数学的なトリックを利用  鍵共有プロトコル

  19. ? 鍵共有プロトコル 二人のユーザ A と B の間の通信手順(プロトコル)を考える: • 通信路の安全性は保障されない • 攻撃者 C が,通信内容を盗聴する恐れがある • ただし,通信内容の改ざんは行えないと仮定 • プロトコル実行後には... • A と B は,何か共通の情報を保持する • C は,その共通情報を知りえない

  20. Diffie-Hellman プロトコル Diffie-Hellman プロトコル; • Diffieと Hellman により,1976年に提案 • 離散対数問題を解くのが難しいことを利用 準備 • Fq = {0, ..., q – 1}, qは大きな素数 • g... Fqの生成元 (任意aFqa 0 は,a = gx mod q と表せる) • 離散対数問題,discrete logarithm problem (DLP): “与えられた q, g, aから,a= gx mod q となる xを求めよ”

  21. 6 5 4 3 2 1 0 1 2 3 4 5 6 数値例 • F7 = {0, 1, 2, ..., 6} • g = 3 はF7の生成元 離散対数問題の「答え」 x 1 = 36 mod 7 2 = 32 mod 7 3 = 31 mod 7 4 = 34 mod 7 5 = 35 mod 7 6 = 33 mod 7 log3 1 = 6 log3 2 = 2 log3 3 = 1 log3 4 = 4 log3 5 = 5 log3 6 = 3 a 今日でも,「効率的な解き方」が知られていない ... 総当たり方式で解を探すしかない ... qが十分大きければ(数千ビット程度),事実上「解けない」

  22. プロトコル step 1: A とB が,使用する素数qと生成元 gを決定 (公開可) step 2a: A はランダムにxを選択, mA= gx mod qを求めB に送付 step 2b: B はランダムにyを選択, mB= gymod qを求めAに送付 step 3a: A は (mB)xmod q =gxymod q を計算 step 3b: B は (mA)y mod q = gxymod q を計算 q, gを決定 mA = gx mod q x mB = gy mod q y gxy mod q gxy mod q

  23. 計算例 どうやって3851 mod 197 を計算する? • 3851 mod 197 = (3832 mod 197) (3816mod 197) (382mod 197) (381mod 197) mod 197 • 382nmod 197 = (38nmod 197)2mod 197 q = 197, g = 3 71 = 351mod 197 51 38 = 355mod 197 55 122 = 3851 mod 197 122 = 7155mod 197 381 382 384 388 3816 3832 mod 197

  24. 安全性について 盗聴者 C が,秘密情報を知ることはないか? q, gを決定 mA = gx mod q x mB = gy mod q y gxy mod q gxy mod q • C は,盗聴により q, g, mA, mBを知り得る • C は,DLPを解かない限り,x, yの値を知りえない • C はgxy mod q の値を知りえない

  25. より強力な攻撃者 通信内容の改ざんができるくらい強力な攻撃者が居る場合... • C は,Bのフリをして Aと通信,鍵を共有 • C は,Aのフリをして Bと通信,鍵を共有 A, B は,「正しい相手と鍵共有した」と勘違いする  man-in-the-middle attack(中間一致攻撃)

  26. 小休止 ここまでのお話し • 共通鍵暗号 • DESを中心に • 鍵共有プロトコル • 万能ではないが,多くの場面で役に立つ ここからのお話し • 公開鍵暗号

  27. A B 共通鍵暗号の仕組み • 暗号化と復号とで,同じ鍵を使用する • 事前に鍵共有を完了しておく必要あり 送信者 受信者 鍵共有プロトコル 安全な通信路 暗号化 復号

  28. A B 公開鍵暗号の仕組み public-key cryptography • 情報の受信者が,鍵の組を事前に生成 • 暗号化鍵と復号鍵 • 暗号化鍵は広く公開する • 復号鍵は,受信者だけの秘密情報とする 送信者 受信者 事前に送付 (保護の必要なし) 暗号化 復号

  29. A A B B C D 両方式の比較 • 共通鍵暗号 = 金庫 鍵が必要 鍵が必要 • 公開鍵暗号 = 郵便受け 鍵は不要 鍵が必要 ユーザは,自分専用の郵便受けを持つ

  30. 公開鍵暗号 公開鍵暗号は,3つのアルゴリズム(G, E, D) で定義される • G(seed); 鍵の組 ekとdk を生成する • E(ek, m); ekを暗号化鍵にしてmを暗号化する • D(dk, c); dkを復号鍵にして cを復号する • (ek, dk)  Gの場合 D(dk, E(ek, m)) = m. • (ek, dk)  Gでない場合D(dk, E(ek, m))  m. G seed ek dk E D m c m

  31. A D B C 鍵の取扱いについて 全てのユーザが,自分専用の鍵組 (ek, dk)を生成する • 復号鍵dkは秘密管理  ユーザ本人だけが,暗号文を復号できる • 暗号化鍵ekは公開  誰でも暗号文を作成することができる dkA dkB dkC ekA ekB ekC A...ekA B...ekB C...ekC

  32. RSA 暗号 Rivest, Shamir, Adelman により 1977年に開発された方式 • 鍵,平文,暗号文は,すべて整数値 • 暗号化: • 鍵は2個の整数: eとn • c = me mod n • 復号: • 鍵は2個の整数: dとn • m = cd mod n • 整数 e, d, n の選び方に秘密がある • 鍵は十分長いこと... n1024bits A R S R S A

  33. 数値例 e = 3, d = 7, n = 33: m c = m3mod 33 c m = c7mod 33 暗号化 復号

  34. 計算を展開してみると... 暗号化して復号する: (m3 mod 33)7 mod 33 m21 mod 33 m m3 m21 m2 m4 m5 m6 m16 m17 m18 m19 m20 m3 m3 m3 m3 (m3)7 3, 7, 33 という数値の組み合わせが絶妙の関係にある

  35. RSAの鍵生成 RSA におけるe, d, nの選び方: step 1: 二個の素数 p, qを選び,n = pq とする step 2: (p – 1)(q – 1) と互いに素となるよう,eを選ぶ step 3: ed 1 mod (p – 1)(q – 1) となる dを求める • e, n... 公開する • d (, p, q)... 秘密に保持 p = 3 q = 11 (p – 1)(q – 1) = 20 aと bが互いに素 ... gcd(a, b) = 1 ab mod c  (a mod c) = (b mod c) e = 3 鍵 d = 7 n = 33

  36. アルゴリズム詳細 Q1: どうやって素数を作り出すか? A1: 整数をランダムに作り,素数判定テストにかければ良い Q2: ed 1 mod (p – 1)(q – 1)? となる d の求め方は? A2: 最大公約数計算のためのユークリッド互除法を流用する a0 b0 ai bi ai+1 = bi bi+1 = ai mod bi aj bj = 0 a0とb0のgcd

  37. dの計算法  = (p – 1)(q – 1) とeに対してユークリッド互除法を適用 a0 =  b0 = e a1 = e b1 = a0mod b0 = a0 – k1b0 = – k1e a2 = b1 b2 = a1 mod b1 = a1 – k2b1 =– k2+(k1+1)e bi= xi+ yie bj–1= 1 aj=1 bj= 0 1 = x+ ye ye= –x+ 1 とeは互いに素 d = y mod  として dを選ぶ ye 1 mod 

  38. dの計算例 •  = 130, e = 59 の場合 130 59 = 130 – 2×59 59 12 = 59 – 4×12 = – 4×130+ 9×59 12 11 11 1 = 12 – 11 = 5×130– 11×59 1 = x+ ye 1 = 5+ (–11)e ed = 59×119=7021 = 54×130 +1 ye= –x+ 1 (–11)e= –5+ 1 ed 1 mod ye 1 mod  (–11)e  1 mod  d = –11 mod 130 = 119

  39. 暗号化と復号の計算 • 暗号化鍵: eとn • 復号鍵: d (と n) • 平文,暗号文... {0, ..., n – 1} に属する非負整数 • 暗号化: c = me mod n • 復号: m = cd mod n べき乗剰余の計算 ... 本スライド 23ページ参照

  40. 7488 5 5 3 = 7488 – 1497×5 3 2 = 5 – 3 = –7488 + 1498×5 2 1 = 3 – 2 = 2×7488 – 2995×5 例: RSA の鍵計算 step 1: p= 79, q = 97とし,n= pq = 7663 を求める step 2: e = 5とする.これは (p– 1)(q – 1) = 7488 と互いに素 step 3: 5d 1 mod 7488 となる dを求める: 計算はすべて mod (p – 1)(q – 1) d =–2995 mod 7488 = 4493

  41. 例: RSAの暗号化と復号 鍵: e = 5, d = 4493, n = 7663 • 暗号化: c = m5 mod 7663 • 復号: m = c4493 mod 7663 = c4096c256c128c8c4c mod 7663 計算はすべて mod n = pq

  42. RSAは,いつも正しく動作するのか? (me mod n)d mod n = med mod n = m を証明する必要あり 補題を二つ利用... フェルマーの小定理: 素数p, gcd(x, p) = 1 であるxに対し,xp–1 1 mod p 中国人の剰余定理(の特別な場合): 異なる二素数 p, qに対し,x a mod pかつx a mod qならば x  a mod pq

  43. RSA の正しさの証明 定理: med mod n = m. 証明: • ed 1 mod (p – 1)(q – 1) より,ed= k(p – 1)(q – 1) + 1 • 任意のmに対しmed m mod pである.なぜなら... • gcd(m, p) = 1 のとき,フェルマーの小定理より mp–1 1 mod p,ここからmed= (mp–1)k(q–1)m  m mod p. • gcd(m, p)≠ 1のとき,mはpの倍数で med m  0 mod p • 同様に,med m mod q である • 中国人の剰余定理よりmedmod n = m

  44. RSAに対する攻撃 公開されている暗号化鍵e, n, 盗聴で得られる 暗号文cから, c = me mod nである xがわかるか? • 総当たり法 • 攻撃者も「暗号化」操作を実行可能 • x{0, ..., n – 1} に対し,c= xe mod nかを検査 • nを大きくすれば,実用上は問題ない • 法 nのもとでcの e乗根を求める • 実数体上では,e乗根の計算は容易 • 実数体上でのアルゴリズムは,有限体上では動かない n e c m?

  45. RSAに対する攻撃:素因数分解 • 素因数分解攻撃 • n = pqとなる素数 p, qを求める • p, q, e がわかれば,dは簡単に割り出せる • dを使ってc を復号 nの素因数分解は可能か? • いくつかの素因数分解アルゴリズムが知られている • 総当たり法,二次ふるい法,楕円曲線法 etc... • 最速のアルゴリズムでも,1,024ビットもある大きな数字の 素因数分解は,事実上不可能 明日にも,良いアルゴリズムが見つかる可能性(リスク)も

  46. 素因数分解とRSA • 「nを素因数分解できれば,RSA を破ることができる」  「RSA を破ることは,素因数分解よりも難しくない」 RSAの解読問題 素因数分解 易しい 難しい Rabin暗号解読問題 理論的には,RSA よりも「安全そう」な暗号も存在する... • Rabin 暗号,逆数暗号 • 素因数分解ができれば,解読可能 • 暗号の解読ができれば,素因数分解もできる • 「これらの方式の解読は,素因数分解と等価な難しさ」 ... ただし,効率が良くないため,実用性に劣る

  47. RSAの安全性について:まとめ RSA の安全性は,数学的に証明されたものではない... • 多くの人が,RSA を破ることは困難であると信じている • 誰かが既に暗号解読に成功し,ほくそ笑んでいる 可能性も否定できない • 計算量理論との関連性についても,明確でない • RSA解読問題がNP完全か否かは不明 • 量子コンピュータが実現されれば,RSAは解読されてしまう • Shorの量子アルゴリズム ⇒ 素因数分解が効率良く解ける

  48. ElGamal暗号: 鍵生成 • 離散対数問題(DLP) に基づく公開鍵暗号 • 確率的な暗号方式:一個の平文が多数の暗号文を持つ • 鍵生成 • 素数 q, Fqの生成元 g を選択 • xを適当に選びy = gx mod qとする • 暗号化鍵はq, g, y • 復号鍵はx

  49. g x y ElGamal暗号: 暗号化と復号 平文mの暗号化: • 乱数r を選び,以下を計算 • c1 = gr mod q • c2 = m + yr mod q • 暗号文は (c1, c2) 暗号文 (c1, c2) の復号: • u = c1x mod q • v = c2 – u mod q • v が復号結果の平文 c1x c1 r (gx)r (gr)x m c2 m + - mod q mod q

  50. ElGamal: 計算例 • q = 13,g = 7とする • 1  712 mod 13, 2  711mod 13, ..., 12  76mod 13 • x = 5とし,y= 75 =16807  11mod 13 を計算する • 暗号化: m = 6, r = 3 • c1 = 73 = 343  5 mod 13, c2 = 6 + 113 =1337  11 mod 13 • c = (5, 11) が暗号文 • 復号: c = (5, 11) • u = 55 =3125  5 mod 13, v = 11 – 5  6 mod 13 • v = 6 が平文

More Related