590 likes | 760 Views
chapter 4: 暗号 に ついて. この講義の「守備範囲」について. 「暗号技術」は,様々な側面から議論される主題となりつつある 情報管理 政治・経済 歴史 哲学・思想 本講義では,暗号に関する技術的な基礎にのみ言及する. 用語について. 暗号化 ( encryption ). E. p. E ( p ). D. D ( c ). c. 復号 ( decryption ). 平文 ,ひら ぶん ( plaintexts ); 意味の明確な情報表現. 暗号 文 ( ciphertexts ); それ自体では意味をなさない 情報表現.
E N D
この講義の「守備範囲」について 「暗号技術」は,様々な側面から議論される主題となりつつある • 情報管理 • 政治・経済 • 歴史 • 哲学・思想 本講義では,暗号に関する技術的な基礎にのみ言及する
用語について 暗号化(encryption) E p E(p) D D(c) c 復号(decryption) 平文,ひらぶん(plaintexts); 意味の明確な情報表現 暗号文(ciphertexts); それ自体では意味をなさない 情報表現 • 暗号= D(E(p)) = pであるようなEとDの組 • (用語に関しては,ブレが多い) crypto cipher, text data, cryptography encryption
暗号の大分類 • 鍵無し暗号 • E, Dの値は,平文,暗号文だけにより決まる • 鍵が存在しない... アルゴリズムそのものを秘匿して使用 • “O, draconian devil” “Leonardo da Vinci” • 共通鍵暗号 • EとDが同一の鍵を使用する • 公開鍵暗号 • EとDが異なる鍵を使用する
共通鍵暗号 対称鍵暗号,古典的暗号,とも... • 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 k1k2
換字暗号 substitution cipher: • 暗号化: 平文の文字を他の文字に置き換える • 復号: 暗号化の逆の文字置き換え • 鍵: 文字の置換表 ... 平文 A B C Y Z 暗号文 ... E K A Z G • 鍵の種類 = 英文の場合 26! ... 現代のコンピュータにとっても,かなり大きい数字 • 平文の統計的性質が,そのまま暗号文にも出現する
頻度攻撃 単純な換字暗号では... • 同じ文字は,いつも同じ文字に置き換えられる • 多くの場合,文字の出現頻度には偏りがある 英文の場合... • E, T, A, S ,O, N などが頻繁に出現する • 暗号文で頻出する文字...上記のどれかである可能性が高い A.C. Doyle, 1903, The Adventure of the Dancing Men 「踊る人形」
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
換字暗号の改良法について 換字暗号の脆弱性は,昔から専門家には良く知られていた 多くの改良法... • 一対多の換字 • 複数文字単位での置き換え • 換字表を複数用意して切り替える • 換字表を動的に更新していく エニグマ暗号
エニグマ暗号 • 第二次大戦中.ドイツ軍が使用した暗号方式 • 機械的な「ローター」により,文字の置き換えルールを決定 • 一文字ごとにローターが回転し,ルールが更新される A B D マシンパワー >> 人力 C
DES (Data Encryption Standard) DES (Data Encryption Standard) • 1970年代に,アメリカにて開発 • 主目的は,比較的機密度の低い情報の保護 • 「リーズナブルなコストで,そこそこの安全性」 • 今日では安全とは言えないが,現代暗号に多大な影響 1973 NBS (米国標準化事務所)暗号アルゴリズムを公募 1974 IBM が同社のルシファー暗号を応募 1977 米国の連邦標準として採用 1997 NIST (NBSから改称) が,次世代のAES を公募
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段目
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
DESの復号操作 RK16 RK15 RK1 鍵 R1 R2 R15 R16 R0 暗号文 平文 f f f IP IP IP-1 L1 L2 L15 L16 L0 青枠内は,暗号化操作とまったく同一 一個の回路で,暗号化も復号も対応できる
DESの安全性 • 理論面からのアプローチ • 差分攻撃(Biham & Shamir, 1990) • DES の設計段階で想定・対策済み,らしい • 線形攻撃(Matsui, 1993) • 世界で初めてDESの解読に成功 • 計算面からのアプローチ • 10万台の計算機を用い,22時間で解読成功(1999) • FPGA で作った並列計算機で,9日間で解読成功(2006) DES は,もはや安全な選択肢ではない DES解読器 制作費 25万ドル
DESに対する都市伝説 DESには,設計者しか知らない弱点が仕込まれているのでは? なぜなら,そこにNSAが関与しているから... • NSA: 米国国家安全保障局 • CIA, FBI, 軍の情報機関を統括する組織 • 政府は,長らくその存在を認めなかった • 最近では,「エシュロン」への関与が噂に • 鍵の長さが,IBM提案の半分に短縮された • S-box置換の中身が,NSAの選定したものに入れ替えられた • NSAは,線形解読法が可能であることを知っていたらしい • ⇒噂の真相は明らかになっていない
AES,その他の共通鍵暗号 • DES は,もはや安全ではない • 都市伝説を否定しようがない 新しく,より強力な暗号が必要 1997 NISTがAdvanced Encryption Standard (AES)の公募開始 12か国から15件の応募 1999 一次審査で 5件に絞り込み 2000 ベルギーからの Rijndaelが選定される 2001 連邦標準への採用 他にも多数の暗号方式が存在:Blowfish, IDEA, Camellia...
鍵共有の問題 すべての共通鍵暗号が直面する問題: どうやって,鍵を安全に共有するか? • 情報の送受信者が,事前に同じ鍵を知っておく必要がある • 第三者には,その鍵を知られてはいけない 解決法 ... • 高価だが,安全な通信手段を用いて鍵を配送 • エージェント,書留,伝書鳩,etc. • 数学的なトリックを利用 鍵共有プロトコル
? 鍵共有プロトコル 二人のユーザ A と B の間の通信手順(プロトコル)を考える: • 通信路の安全性は保障されない • 攻撃者 C が,通信内容を盗聴する恐れがある • ただし,通信内容の改ざんは行えないと仮定 • プロトコル実行後には... • A と B は,何か共通の情報を保持する • C は,その共通情報を知りえない
Diffie-Hellman プロトコル Diffie-Hellman プロトコル; • Diffieと Hellman により,1976年に提案 • 離散対数問題を解くのが難しいことを利用 準備 • Fq = {0, ..., q – 1}, qは大きな素数 • g... Fqの生成元 (任意aFqa 0 は,a = gx mod q と表せる) • 離散対数問題,discrete logarithm problem (DLP): “与えられた q, g, aから,a= gx mod q となる xを求めよ”
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が十分大きければ(数千ビット程度),事実上「解けない」
プロトコル 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
計算例 どうやって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
安全性について 盗聴者 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 の値を知りえない
より強力な攻撃者 通信内容の改ざんができるくらい強力な攻撃者が居る場合... • C は,Bのフリをして Aと通信,鍵を共有 • C は,Aのフリをして Bと通信,鍵を共有 A, B は,「正しい相手と鍵共有した」と勘違いする man-in-the-middle attack(中間一致攻撃)
小休止 ここまでのお話し • 共通鍵暗号 • DESを中心に • 鍵共有プロトコル • 万能ではないが,多くの場面で役に立つ ここからのお話し • 公開鍵暗号
A B 共通鍵暗号の仕組み • 暗号化と復号とで,同じ鍵を使用する • 事前に鍵共有を完了しておく必要あり 送信者 受信者 鍵共有プロトコル 安全な通信路 暗号化 復号
A B 公開鍵暗号の仕組み public-key cryptography • 情報の受信者が,鍵の組を事前に生成 • 暗号化鍵と復号鍵 • 暗号化鍵は広く公開する • 復号鍵は,受信者だけの秘密情報とする 送信者 受信者 事前に送付 (保護の必要なし) 暗号化 復号
A A B B C D 両方式の比較 • 共通鍵暗号 = 金庫 鍵が必要 鍵が必要 • 公開鍵暗号 = 郵便受け 鍵は不要 鍵が必要 ユーザは,自分専用の郵便受けを持つ
公開鍵暗号 公開鍵暗号は,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
A D B C 鍵の取扱いについて 全てのユーザが,自分専用の鍵組 (ek, dk)を生成する • 復号鍵dkは秘密管理 ユーザ本人だけが,暗号文を復号できる • 暗号化鍵ekは公開 誰でも暗号文を作成することができる dkA dkB dkC ekA ekB ekC A...ekA B...ekB C...ekC
RSA 暗号 Rivest, Shamir, Adelman により 1977年に開発された方式 • 鍵,平文,暗号文は,すべて整数値 • 暗号化: • 鍵は2個の整数: eとn • c = me mod n • 復号: • 鍵は2個の整数: dとn • m = cd mod n • 整数 e, d, n の選び方に秘密がある • 鍵は十分長いこと... n1024bits A R S R S A
数値例 e = 3, d = 7, n = 33: m c = m3mod 33 c m = c7mod 33 暗号化 復号
計算を展開してみると... 暗号化して復号する: (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 という数値の組み合わせが絶妙の関係にある
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 ab mod c (a mod c) = (b mod c) e = 3 鍵 d = 7 n = 33
アルゴリズム詳細 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
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
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
暗号化と復号の計算 • 暗号化鍵: eとn • 復号鍵: d (と n) • 平文,暗号文... {0, ..., n – 1} に属する非負整数 • 暗号化: c = me mod n • 復号: m = cd mod n べき乗剰余の計算 ... 本スライド 23ページ参照
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
例: RSAの暗号化と復号 鍵: e = 5, d = 4493, n = 7663 • 暗号化: c = m5 mod 7663 • 復号: m = c4493 mod 7663 = c4096c256c128c8c4c mod 7663 計算はすべて mod n = pq
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
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
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?
RSAに対する攻撃:素因数分解 • 素因数分解攻撃 • n = pqとなる素数 p, qを求める • p, q, e がわかれば,dは簡単に割り出せる • dを使ってc を復号 nの素因数分解は可能か? • いくつかの素因数分解アルゴリズムが知られている • 総当たり法,二次ふるい法,楕円曲線法 etc... • 最速のアルゴリズムでも,1,024ビットもある大きな数字の 素因数分解は,事実上不可能 明日にも,良いアルゴリズムが見つかる可能性(リスク)も
素因数分解とRSA • 「nを素因数分解できれば,RSA を破ることができる」 「RSA を破ることは,素因数分解よりも難しくない」 RSAの解読問題 素因数分解 易しい 難しい Rabin暗号解読問題 理論的には,RSA よりも「安全そう」な暗号も存在する... • Rabin 暗号,逆数暗号 • 素因数分解ができれば,解読可能 • 暗号の解読ができれば,素因数分解もできる • 「これらの方式の解読は,素因数分解と等価な難しさ」 ... ただし,効率が良くないため,実用性に劣る
RSAの安全性について:まとめ RSA の安全性は,数学的に証明されたものではない... • 多くの人が,RSA を破ることは困難であると信じている • 誰かが既に暗号解読に成功し,ほくそ笑んでいる 可能性も否定できない • 計算量理論との関連性についても,明確でない • RSA解読問題がNP完全か否かは不明 • 量子コンピュータが実現されれば,RSAは解読されてしまう • Shorの量子アルゴリズム ⇒ 素因数分解が効率良く解ける
ElGamal暗号: 鍵生成 • 離散対数問題(DLP) に基づく公開鍵暗号 • 確率的な暗号方式:一個の平文が多数の暗号文を持つ • 鍵生成 • 素数 q, Fqの生成元 g を選択 • xを適当に選びy = gx mod qとする • 暗号化鍵はq, g, y • 復号鍵はx
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
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 が平文