Successfully reported this slideshow.

#mailerstudy 02 暗号入門 (2012-02-22更新)

5.713 visualizações

Publicada em

#mailerstudy 02 暗号入門
2012-02-22更新しました。

Publicada em: Tecnologia
  • Seja o primeiro a comentar

#mailerstudy 02 暗号入門 (2012-02-22更新)

  1. 1. メールサーバ勉強会 #mailerstudy 02暗号入門- アリスとボブの恋の行方 -株式会社ハートビーツ 滝澤 隆史
  2. 2. 私は誰• 氏名: 滝澤 隆史 @ttkzw• 所属: 株式会社ハートビーツ• 何やっている人 ▫ メーラMuttの国際化や日本語対応パッチ作者 ▫ SpamAssassinの日本語対応パッチ作者• メールシステムとの関わり ▫ システム管理者として1997年から2006年までメールサー バの管理 ▫ 昔、qmail関連で色々やっていた。2006年にqmail捨て捨 て。Postfix/Dovecot遣いにクラスチェンジ ▫ 現在は個人サーバでメールサーバを運用  Postfix + Dovecot + Sieve(dovecot-pigeonhole) + ClamAV + SpamAssassin + spamass-milter + Roundcube
  3. 3. アジェンダ• メールを利用する上での脅威• 盗聴を防ぐ暗号技術• 完全性、メッセージ認証、否認防止を行う暗号 技術• 公開鍵が本物であることを証明する暗号技術
  4. 4. 参考図書• 『新版 暗号技術入門 秘密の国のア リス』 ▫ 著者: 結城 浩 ▫ 出版社:ソフトバンククリエイティブ• 『暗号技術大全』 ▫ 著者: ブルース シュナイアー ▫ 出版社:ソフトバンククリエイティブ ▫ もしかしたら絶版かも• 各種RFC• WikiPedia
  5. 5. 暗号を利用することで解決できる脅威について学ぼう
  6. 6. メールを利用する上での脅威• メールを利用する上で様々な脅威がある• どのような脅威があるかを確認しよう
  7. 7. 登場人物名前 役割アリス メッセージの差出人ボブ メッセージの受取人イブ メッセージを盗聴する人マロリー メッセージを改ざんする人
  8. 8. 盗聴• データを盗み見ること• 盗聴により情報が漏洩する恐れがある イブ 盗聴 好きです 好きです 好きですアリス ボブ
  9. 9. 否認• データを送っているにもかかわらず、送ってい ないと否認される• 受け取った内容を信じて行動すると馬鹿をみる 好きです 好きです 否認 ボブアリス そんなメール ありがとう。 送ってないわ 僕も好きです
  10. 10. 改ざん• 受け取ったデータやファイルが改ざんされる マロリー 改ざん 好きです 嫌いです 嫌いですアリス ボブ
  11. 11. 詐称• 送信者が詐称される 嫌いですアリス ボブ 嫌いです偽物アリス 詐称
  12. 12. 脅威に対する対策技術脅威 求めるもの 対策技術盗聴 機密性 暗号化。 受信者のみあるいは当事者間のみが復号できるように メッセージを暗号化すること。否認 否認防止 送信者のみが持っている鍵で暗号化すること。 (受信者が同じ鍵を持っていると否認防止はできない)改ざん 完全性 完全性の検証。 送信者および受信者が同じアルゴリズム(一方向ハッ シュ関数やメッセージ認証コード)で計算した結果がお なじであることを検証すること。詐称 認証 メッセージ認証。 送信者のみあるいは当事者間のみが持っている鍵で暗号 化し、受信者により復号できること。
  13. 13. 脅威のまとめ• 脅威のまとめ ▫ 盗聴 ▫ 否認 ▫ 改ざん ▫ 詐称• 脅威への対策 ▫ 暗号技術の利用
  14. 14. 平文 (plaintext)• 平文(暗号化されていない文章)は盗聴された ら内容がわかる。 イブ アリス ボブ 平文であるため、 内容がわかる。 盗聴好きです 好きです 好きです(平文) (平文) (平文)
  15. 15. 暗号文 (ciphertext)• 暗号文(暗号化された文章)は意味のない文字 列であるため、盗聴されても内容がわからない。 イブ アリス ボブ 暗号文であるため、 内容がわからない。 盗聴好きです MIIB2DCCAU 好きです 暗号化 復号(平文) (暗号文) (平文) 鍵 鍵
  16. 16. 暗号の要素• アルゴリズム ▫ 暗号化および復号を行う仕組み•鍵 ▫ 暗号化および復号に使用する情報• 例)シーザー暗号 ▫ アルゴリズム:アルファベット順に文字をシフト する ▫ 鍵:3文字
  17. 17. 現代の暗号のアルゴリズムと鍵• 求められていること▫ 広く公開されていること  アルゴリズムを秘匿にすることは意味がない。 たいてい、解読されたり、漏洩されたりする。▫ 数学的に強度があること  解読に時間がかかる。▫ ……
  18. 18. 暗号の方法• 共通鍵暗号• 公開鍵暗号
  19. 19. 共通鍵暗号• 暗号化と復号に同じ鍵を使う方法• この鍵を共通鍵あるいは秘密鍵と呼ぶ• 主なアルゴリズム▫ RC4、3DES、AES
  20. 20. 共通鍵暗号アリス イブ ボブ 共通鍵を持ってい ないので、復号で きないため、内容 がわからない。 盗聴好きです MIIB2DCCAU 好きです 暗号化 復号(平文) (暗号文) (平文) 共通鍵 共通鍵 鍵の盗聴を防ぐために、信頼 問題点 できる方法で同じ鍵を予め渡 す必要がある。
  21. 21. 共通鍵暗号の問題点• 共通鍵暗号の問題点 ▫ 鍵配送問題  鍵の配送中に鍵そのものが盗聴される恐れがある ▫ 鍵管理問題  人数が増えたら、そのペア分の鍵を管理することになり、非常 に煩雑になる。• 解決策 ▫ ボブが作った共通鍵をアリスに対面で直接渡すなどの信頼 できる方法を使う  しかし、人数が増えると破綻する  鍵管理問題は無くならない• 根本的な解決策 ▫ 公開鍵暗号を使う。 ▫ 共通鍵をさらに公開鍵暗号で暗号化する。
  22. 22. 公開鍵暗号• 一組の公開鍵とプライベート鍵を用いて、暗号 化と復号を互いに異なる鍵で行う方法• 公開鍵は公開してもよく、プライベート鍵は本 人のみが持って秘密にしておく。• 公開鍵は見られても問題ないため、鍵の配送中 の盗聴の問題は解決する• 主なアルゴリズム▫ RSA
  23. 23. 公開鍵暗号 アリス イブ ボブ ボブのプライベート 鍵を持っていないた め復号できない。 盗聴好きです MIIB2DCCAU 好きです 暗号化 復号(平文) (暗号文) (平文) プライベート鍵 鍵ペア問題点 ボブの公開鍵 公開鍵ボブの公開鍵が本物であることを確認する必 要がある。
  24. 24. 公開鍵暗号の問題点• 公開鍵暗号の問題点 ▫ 公開鍵の証明問題  アリスが受け取ったボブの公開鍵が本物であるかわ からない• 対策 ▫ ボブがアリスに信頼できる方法で公開鍵を渡す。 ▫ アリスが入手した公開鍵が本物であるかを検証す る。  フィンガープリントの確認 ▫ 信頼できる第三者にデジタル署名してもらう  公開鍵証明書
  25. 25. 公開鍵暗号の問題点• 公開鍵暗号の問題点 ▫ 共通鍵暗号より計算コストが高い。• 対策 ▫ 共通鍵暗号と併用し、鍵の配送や(後述する)デ ジタル署名などの一部の重要なときのみ公開鍵暗 号を用いる。
  26. 26. セッション鍵• 通信のセッション中に一定時間だけ用いる使い 捨ての共通鍵• 疑似乱数生成器により生成する• 公開鍵暗号を使ってセッション鍵を暗号化して 配送することにより、共通鍵暗号の鍵配送問題 は解決できる
  27. 27. 疑似乱数• 乱数 ▫ 予測できない数• 疑似乱数 ▫ コンピュータでは真の乱数を生成できない ▫ コンピュータで生成できるのは乱数に近い性質を 持つ疑似乱数 ▫ エントロピー(乱雑さ)を収集して用いることに より真の乱数に近づけることが行われている。  環境ノイズ(ディスクI/O、キーボード、マウスな ど)の利用
  28. 28. 疑似乱数生成器• 疑似乱数生成器 ▫ 疑似乱数を生成する機能  Linuxの場合  /dev/random ▫ エントロピーを収集するまでロックする  /dev/urandom ▫ エントロピープールを再利用しロックしない  他のOSでも同様な機能がある• 主な用途 ▫ セッション鍵の生成 ▫ 公開鍵暗号の鍵の生成
  29. 29. 暗号のまとめ• 暗号を使うことにより、盗聴による情報の漏洩 を防ぐことができる• 暗号の要素 ▫ アルゴリズムと鍵• 暗号の方式 ▫ 共通鍵暗号 ▫ 公開鍵暗号• 鍵配送問題• セッション鍵• 疑似乱数生成器
  30. 30. 一方向ハッシュ関数• 任意の長さのメッセージを固定の長さのハッ シュ値に変換する関数• 暗号学的ハッシュ関数やメッセージ ダイジェス トとも呼ばれる• メッセージが少しでも異なればハッシュ値も変 わるため、改ざんされたことが検出できる ▫ メッセージの完全性の検証• アルゴリズム ▫ MD5、SHA-1、SHA-256、SHA-512
  31. 31. 一方向ハッシュ関数の性質• ハッシュ値から元のメッセージを求めることが 困難• あるハッシュ値になる異なるメッセージを見つ けることが困難(弱衝突耐性)• 同じハッシュ値になる異なるメッセージを見つ けることが困難(強衝突耐性)
  32. 32. 一方向ハッシュ関数の用途• 改ざんの検出• チェックサム• 例)ファイルの完全性の確認 ▫ 配布ソフトウェア(ISOイメージなど)と共に ハッシュ値を計算したファイルも用意する。  ダウンロードの失敗および改ざんの検知$ cat SHA1SUM0d64f0532316a0a212c5916d997581e72c52ff02 *ubuntu-11.10-desktop-amd64.iso8492d3daf0c89907c4301cb2c72094fe59037c76 *ubuntu-11.10-desktop-i386.iso$ sha1sum -c SHA1SUMubuntu-11.10-desktop-amd64.iso: OKubuntu-11.10-desktop-i386.iso: OK
  33. 33. 一方向ハッシュ関数の用途• フィンガープリント ▫ メッセージの完全性を確認するために、ユーザーがハッ シュ値を確認しやすいように16進数などで表現したもの  CA証明書 Country = US Organization = VeriSign, Inc. Organizational Unit = Class 1 Public Primary Certification Authority Serial Number: 00 cd ba 7f 56 f0 df e4 bc 54 fe 22 ac b3 72 aa 55 Operational Period: Mon Jan 29, 1996 to Tue Aug 01, 2028 Certificate SHA1 Fingerprint: 90ae a269 85ff 1480 4c43 4952 ece9 6084 77af 556f  $ gpg --fingerprint foo@example.jp pub 1024D/22B8A63A 2010-08-15 [満了: 2020-08-12] 指紋 = C72A 0457 2FA4 0973 21A0 2750 6C19 647E 22B8 A63A uid Foo Bar sub 2048g/D22D0E33 2010-08-15 [満了: 2020-08-12]
  34. 34. 一方向ハッシュ関数アリス ボブ メッセージ メッセージ 一方向 一方向 ハッシュ関数 ハッシュ関数 ハッシュ値 比 改竄 較 検出 ハッシュ値 ハッシュ値 アリスがボブに信頼で 問題点 きる方法でハッシュ値 を伝える必要がある。
  35. 35. 一方向ハッシュ関数の問題点• 一方向ハッシュ関数の問題点 ▫ ハッシュ値そのものが改ざんされる可能性がある• 対策 ▫ メッセージを送るたびにアリスがボブに信頼でき る方法でハッシュ値を伝える ▫ 公開鍵暗号と組み合わせて利用する  →デジタル署名• 注意 ▫ 「改ざんを検出する」技術であって「改ざんを防 ぐ」技術ではない。
  36. 36. メッセージ認証コード• 共通鍵とメッセージを使ってメッセージの認証 のための値(MAC値)を算出する方法• MAC(Message Authentication Code)と略す• できること ▫ 完全性の検証(改ざんの検出) ▫ メッセージの送信者の認証
  37. 37. メッセージ認証コード• 送信側で計算したMAC値と受信側で計算した MAC値が同じであれば、同じ共通鍵と同じメッ セージであることが確認できる• 一方向ハッシュ関数の技術を用いたHMACがよ く使われている。• 主なアルゴリズム▫ HMAC-MD5, HMAC-SHA-1, HMAC-SHA256
  38. 38. メッセージ認証コード通信を行う2者間 問題点 で事前に鍵を共有アリス ボブ する必要がある メッセージ メッセージ 共通鍵 共通鍵 MAC MAC アルゴリズム アルゴリズム MAC値 改竄 比 検出 較 と MAC値 MAC値 認証
  39. 39. メッセージ認証コード• メッセージ認証コードの問題点 ▫ 共通鍵を使うため、共通鍵暗号と同じ問題を抱え ている。• 対策 ▫ ボブがアリスに信頼できる方法で公開鍵を渡す。 ▫ 公開鍵暗号と組み合わせて利用する
  40. 40. デジタル署名• 一方向ハッシュ関数と公開鍵暗号を利用した技 術で、メッセージのハッシュ値をプライベート 鍵で暗号化したもの• できること▫ 改ざんの検出▫ 送信者の認証▫ 否認の防止• 主なアルゴリズム▫ RSA, DSA
  41. 41. デジタル署名アリス メッセージ メッセージ ボブ 一方向 一方向 ハッシュ関数 ハッシュ関数 ハッシュ値 ハッシュ値 改竄検出 比 認証 較鍵ペア ハッシュ値 否認防止 アリスの 公開鍵 アリスの 公開鍵 アリスの 暗号化 復号プライベート鍵 デジタル デジタル 署名 署名
  42. 42. デジタル署名の問題点• デジタル署名の問題点 ▫ 公開鍵を使うため、公開鍵暗号と同じ問題を抱え ている。• 対策 ▫ 公開鍵証明書  公開鍵基盤(PKI) ▫ 信頼の輪(web of trust)  PGP, OpenPGP
  43. 43. まとめ 完全性 認証 否認防止一方向ハッシュ関数 ○メッセージ認証コード ○ ○デジタル署名 ○ ○ ○
  44. 44. 公開鍵暗号の問題点• 問題点 ▫ 公開鍵暗号やデジタル署名では通信相手の公開鍵 を入手する必要がある。 ▫ 入手した公開鍵が本物であるかどうかがわからな い。• 解決策 ▫ 公開鍵証明書
  45. 45. 公開鍵証明書• 公開鍵証明書は、公開鍵にユーザーやサーバな どの識別情報を付加した上で信用できる第三者 (認証局や知人)がデジタル署名を行ったもの。• 運転免許書に例えると▫ 公開鍵証明書:運転免許証▫ 認証局:運転免許証を発行する公安委員会• 公開鍵証明書は単に証明書と呼ばれることが多 い
  46. 46. 公開鍵証明書 トレント(認証局) トレントの トレントの 公開鍵 プライベート鍵 ボブのアリスはトレントの証明 署名 CSR書を適切な方法で事前に 入手する必要がある。 トレントの ボブの 証明書 証明書 CSR: 証明書署名要求アリス ボブ トレントの トレントの ボブの 公開鍵 証明書 CSRボブの 署名の CSRの サブジェクト公開鍵 検証 生成 デジタル ボブの ボブの ボブの ボブの 署名 証明書 証明書 公開鍵 プライベート鍵
  47. 47. 公開鍵証明書と公開鍵基盤• 疑問 ▫ ボブの証明書を発行したトレント(認証局)自身 の証明書は誰が発行するのか?• 解決策 ▫ 公開鍵基盤(PKI, Public Key Infrastructure)
  48. 48. 公開鍵基盤(PKI) 自己署名 ルート認証局ルート証明書 署名 CSR プライ 中間証明書 署名 ベート鍵 公開鍵 中間認証局中間証明書 CSR プライ ボブの証明書 署名 ベート鍵 公開鍵 ボブボブの証明書 CSR プライ ベート鍵 公開鍵
  49. 49. 公開鍵基盤(PKI) ルート認証局 OSやソフトウェアに バンドルして配布 ルート証明書アリス ルート証明書 公開鍵 中間認証局 署名の 検証 中間証明書 署名証明書パス 中間証明書 の検証 公開鍵 ボブ 署名の 中間証明書 検証 署名 ボブの ボブの証明書 公開鍵 ボブの証明書 公開鍵 一緒に配布 ボブが配布
  50. 50. まとめ• 公開鍵証明書により公開鍵の認証を行うことが できる。• 公開鍵基盤(PKI)により、利用者の公開鍵を 認証することができる。

×