3DESの件 〜俺、112bitになります〜
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

3DESの件 〜俺、112bitになります〜

  • 182 views
Uploaded on

2014/11 ssmjpにて発表

2014/11 ssmjpにて発表

More in: Engineering
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
182
On Slideshare
181
From Embeds
1
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 1

https://twitter.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 3DESの件 ~俺、112bit になります。~ 2014/11 ssmjp(ささみの会)
  • 2. その前に陳謝 • ssmjpでは3DESを「スリーディーイーエス」と うっかり連呼してしまいましたが、正しい呼び方は 「トリプルデス」です。すみませんでした。 3DESの呼び方:    ◎ トリプルデス        ☓ スリーディーイーエス    ☓ スリーディーエス    ☓ サンデス
  • 3. 自己紹介 • 名 前:えにぐま @enigma63 • 生 態:天然ドジ、甘党 • お仕事:脆弱性診断 • 主にサーバに対する診断をしてます。 (ポートスキャンやミドルウェア・SSLの設定確認etc) • Webアプリケーション診断、始めました。   
  • 4. 今日言いたいこと 3DES=168bit → 112bit ??? 3DES=168bit C=Ek3(Dk2(Ek1(P))) Dk3C=Dk3(Ek3(Dk2(Ek1(P)))) Dk3C=Dk2(Ek1(P)) 3DES=112bit m9(^Д^)プギャー 引用:http://stephanemoore.com/pdf/meetinthemiddle.pdf
  • 5. おわり      *      *  *     +  うそです      n ∧_∧ n  + (ヨ(* ́∀`)E)   Y     Y    *
  • 6. はじまり      *      *  *     +  本当です      n ∧_∧ n  + (ヨ(* ́∀`)E)   Y     Y    *
  • 7. 3DESという暗号アルゴリズムがあります
  • 8. SSL通信の共通鍵暗号で 使用されているアルゴリズムの1つです
  • 9. 3DESは最大168bitの鍵長で 暗号化できます
  • 10. 168bitの鍵長の暗号強度(解かれにくさ)は 168bitとされています 168bit = 168bit
  • 11. でも、3DESの場合は 168bitの鍵を使っているのに 実際は112bitの強度しか無いと言われてます 168bit ≠ 112bit
  • 12. どうしてこうなった  どうしてこうなった `___ ♪ ∧∧ /∥‾∥ r(^ω^)ノ L∥_∥ └┐  レ―、 |‾\三/‾/ _ノ⌒ |  |/ /(_(  ♪
  • 13. しかも・・・? 最近のSSLスキャンツール(SSL Labs)で サーバで有効になっているSSLの暗号化方式を調査すると、 3DES系の暗号化方式が112bitと表示されるようになりました
  • 14. 個人的に愛用しているSSLスキャンツール(sslscan)でも 最新のopensslリポジトリを使用した場合3DESが112bitと表示されます ※赤線の暗号化方式(ECDHE-RSA-DES-CBC3-SHAなど)はOpenSSL名であり、規定名に直すと TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHAと3DESが使われていることがわかります。
  • 15. Tell me why ?
  • 16. そもそも3DESって何だろう? • トリプルデス        (Triple Data Encryption Algorithm) • DESから派生した暗号アルゴリズム   • DES(56bit)を3回かけることで168bitの強度を実現する 参考: http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%AA%E3%83%97%E3%83%ABDES http://www.weblio.jp/content/3DES
  • 17. SSL通信における3DESの暗号化方式 以下は3DESのアルゴリズムを使った暗号化方式の一部になります 規定名のWITHの後に「3DES」がついてるやつです。TLS1.0~1.2にもいます 規定名OpenSSL名 SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA DH-DSS-DES-CBC3-SHA SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA DH-RSA-DES-CBC3-SHA TLS_RSA_WITH_3DES_EDE_CBC_SHA DES-CBC3-SHA TLS_DH_anon_WITH_3DES_EDE_CBC_SHA ADH-DES-CBC3-SHA TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA ECDH-RSA-DES-CBC3-SHA TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA ECDHE-RSA-DES-CBC3-SHA ※暗号化方式がOpenSSL名の場合は、以下のOpenSSLのページで規定名を確認できます  https://www.openssl.org/docs/apps/ciphers.html
  • 18. 3DESの暗号化方法 1. 平文(Plain)を①赤鍵で暗号化します 2. ①で暗号化した文を②黄鍵で復号します 3. ②で復号した文を③青鍵で暗号化します 4. 最終的な暗号文(Cipher text)が上手にできましたー♪ このように3回DESを施すため、鍵長は168bitになります = DES DES DES 56bit 56bit 56bit Ctipexhter Plain 168bit 168bit
  • 19. 3DESの復号方法 共通鍵暗号なので暗号化の際に使用した鍵で復号できます = DES DES DES 56bit 56bit 56bit Plain Ctipexhter 168bit 168bit
  • 20. じゃあなんでこうなる?↓ 168bitの鍵で暗号化したのに 実際は112bitの強度・・・? 168bit ≠ 112bit
  • 21. 原因はとある攻撃でした
  • 22. Meet in the Middle Attack
  • 23. Not! Man in the Middle Attack
  • 24. 中間一致攻撃(Meet in the Middle Attack) • 攻撃者が平文と暗号文を持っている場合、 • 任意の暗号鍵×平文の暗号化結果(中間値)と • 任意の暗号鍵×暗号文の復号結果(中間値)を突 き合わせることで使用している鍵を特定する • という考え方だと思ってください。 参考: http://ja.wikipedia.org/wiki/%E4%B8%AD%E9%96%93%E4%B8%80%E8%87%B4%E6%94%BB%E6%92%83
  • 25. ダブルデス 2DESの場合: 2DESを用いて中間一致攻撃を説明します まず、2DESの暗号化処理は以下のようになります 1. 平文(Plain)を①赤鍵で暗号化します 2. ①で暗号化した「暗号文1」を②青鍵で暗号化します 3. 最終的な暗号文(Cipher text)ができます これから中間一致攻撃を行います。 Ctipexhter = DES 暗号文1 DES Plain
  • 26. 1.平文(Plain)×全ての鍵から生成される 全パターンの暗号文1をメモリに保存 暗号文1 = 暗号文1a 暗号文1b 暗号文1c × Plain
  • 27. 2.暗号文(Cipher text)×全ての鍵から 全パターンの復号文(暗号文1)を生成 暗号文1 = 暗号文1a 暗号文1b 暗号文1c × PCtilpeaxhitenr 1x 1y 1z
  • 28. 3.1と2の結果の中間値(暗号文1) を突き合わせて比較する = 暗号文1 暗号文1a 暗号文1b 暗号文1c × Plain 暗号文1 暗号文1x 暗号文1y 暗号文1z Ctipexhter × =
  • 29. 4.暗号化1の結果が一致した場合、 使用された鍵が分かる = 暗号文1 暗号文1a 暗号文1b 暗号文1c × Plain 暗号文1 暗号文1x 暗号文1y 暗号文1z Ctipexhter × = =
  • 30. 3DESの場合: トリプルデス 3DESの場合はどうなるか? まず、3DESの暗号化処理を以下のように表します。 1. 平文「P」を鍵1で暗号化します 2. 鍵1で暗号化した「暗号文1」を鍵2で復号します 3. 鍵2で復号した「暗号文2」を鍵3で暗号化します 4. 最終的な暗号文「C」ができます = 鍵1 C 鍵3 暗号文2 鍵2 暗号文1 P 168bit
  • 31. 1.最終的な暗号文「C」×鍵3で  復号文(暗号文2)を生成 暗号文2 = 鍵3 × C
  • 32. 2.平文×鍵1・2で暗号文2を生成 暗号文2 = 鍵2 暗号文1 鍵1 P
  • 33. 3.1と2の結果の中間値(暗号文2) を突き合わせ比較する C =暗号文2 暗号文2 =鍵2 暗号文1 鍵1 P 鍵3
  • 34. で、一致していた場合
  • 35. 鍵3×暗号文=鍵2×鍵1×平文と考えられる C =暗号文2 暗号文2 =鍵2 暗号文1 鍵1 P =鍵2 暗号文1 鍵1 P 鍵3 C 鍵3
  • 36. で、この赤線の強度はどうなるか? C =鍵2 暗号文1 鍵1 P 鍵3
  • 37. DES(56bit)を2回かけるのでこうなる C =鍵2 暗号文1 鍵1 P 鍵3 112bit
  • 38. = 鍵1 C 鍵3 暗号文2 鍵2 暗号文1 P = 鍵2 暗号文1 鍵1 P 112bit C 鍵3 168bit
  • 39. 168bit → 112bit
  • 40. 今日言いたいことに戻ります 3DES=168bit → 112bit ??? 3DES=168bit C=Ek3(Dk2(Ek1(P))) Dk3C=Dk3(Ek3(Dk2(Ek1(P)))) Dk3C=Dk2(Ek1(P)) 3DES=112bit m9(^Д^)プギャー 引用:http://stephanemoore.com/pdf/meetinthemiddle.pdf
  • 41. 詳しくはwikiで!検索検索っ! →トリプルDES →中間一致攻撃
  • 42. (それを受けたのか?) OpenSSLが最近仕様変更をしたようです 2014年6月のコミットで 168bit→112bitに置き換えられてる↓ 引用:http://git.openssl.org/gitweb/? p=openssl.git;a=commitdiff;h=1bea384fd542977ae945a5dbeac55b0389d9432b
  • 43. 大元のOpenSSLが変わったせいで OpenSSLのライブラリを使用する SSLスキャンツールの表示も変わったようです
  • 44. 112bitじゃダメなんですか? • 強度的にはそうでもない。 • 128bit並に強い。 • 一応3DES自体も電子政府推奨暗号のリストに も載ってる。
  • 45. 112bitの解読時間を計算してみた • 1秒間に1T(10^12)鍵のチェックをできるマシンの場合 鍵長式解読時間 56bit (2^55=10^17) × 10^-12 =10^5/3600秒(1時間) 22時間 112bit (2^111=10^33) ×10^-12 =10^21/31556926秒(1年) 31兆年 128bit (2^127=10^38) × 10^-12 =10^26/31556926秒(1年) 300京年 ※計算方法参考 http://www.ntt.co.jp/journal/0512/files/jn200512008.pdf
  • 46. 電子政府推奨暗号リストにある3DES (総務省・経済産業省)
  • 47. でも、注意 • 当面の利用を認められているが、可能であれば128bitの暗号が望ましい。 ※引用: http://www.cryptrec.go.jp/images/cryptrec_ciphers_list_2013.pdf
  • 48. まぁ別にいいじゃん? 影響ないじゃん?
  • 49. 細かいところでは そうでもなかったり?
  • 50. 例えば TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHAが 有効なサーバのサイトで・・・ ×◎ 当サイトは 128bit以上のみの暗号化方式を使用しています 当サイトは 128bit以上の暗号化方式を採用しています
  • 51. m9(^Д^)プギャー
  • 52. 日本語って大事ですね (´・ω・`)
  • 53. おまけ1
  • 54. ささみでは 「112bit やめたほうがいいじゃん?」 っという声が多かったので
  • 55. オワスプデイで 某先生に聞いてみた
  • 56. 先生! 3DESはやめたほうがいいですか? • 3DESはFIPSでも外されたので使わない方がいい • できるなら対策した方がいい
  • 57. FIPSって何だ?
  • 58. FIPS 米国国立標準技術研究所(NIST)の情報セキュリティ 関連の文書(FIPS)。3DES(3TDEA)は2030年まで http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf
  • 59. 対策について 現状では3DESを対策できる製品と対策できない製 品がある ◎ 対策できる製品例 Apache HTTP Server SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!eNULL:!aNULL:!ADH:!3DES ↑3DESを無効にする設定を追加 ☓ 対策できない製品例 Juniper Networks 意訳「3DESの攻撃の成功には膨大な時間とコストかかるよ!    将来的にカスタマイズできるようにする予定だからカミングスーン☆」 h ttp://kb.juniper.net/InfoCenter/index?page=content&id=KB29623
  • 60. 対策が可能であれば 対策しよう
  • 61. おまけ2
  • 62. ブラウザで利用可能なSSL暗号化方式を スキャンしてみよう SSL LABS https://www.ssllabs.com/ssltest/viewMyClient.html
  • 63. サーバで有効なSSL暗号化方式をスキャ… (※注意:自分が管理している      サーバに対してのみお願いします) https://www.ssllabs.com/ssltest/index.html
  • 64. こんな風に有効な暗号化方式を確認できます
  • 65. rbsec-sslscan https://github.com/rbsec/sslscan • CUIで使えるSSLスキャンツール • 大元のsslscanからフォークしたプロジェクト。 sslscanプロジェクトの中では更新が頻繁なためオ ススメ • make staticでインストールするとopensslの最新リ ポジトリのライブラリを利用してスキャンできる。
  • 66. 以上
  • 67. スライド素材 • 今回使用したイカすピクトグラムはこちら • http://pictogram2.com/