いろいろなssl/tls設定ガイドライン (jnsa電子署名wg...
TRANSCRIPT
© 2015 Kenji Urushima All rights reserved.
いろんなSSL/TLS設定ガイド
JNSA臨時スキルアップTF 実世界の暗号・認証技術に関する勉強会 於:NTTソフトウェア(品川) 日時:2015年6月22日(月) 19:00-19:30
漆嶌賢二
JNSA 電子署名WG(ゾンビ?)メンバ
© 2015 Kenji Urushima All rights reserved. 1
・経歴
・富士ゼロックス(2010~)
・エントラストジャパン(2005~2010)
・セコム(1988~2005)
・興味:
PKI, TLS, 電子署名, SSO, 認証, 暗号,
CSIRT, 脆弱性検査, フォレンジック,
スマホ, プログラミング, ビットコイン
・別名
・証明書ハンター
・(TLS)暗号スイートウォッチャー
・委員、標準化、認定基準、実証実験、普及啓蒙
・JNSA, CRYPTREC, 日本データ通信協会
セキュキャン講師
・旧ECOM, PKI-J, 欧州ETSI
・PKI, TLS, 長期署名, タイムスタンプ
自己紹介: 漆嶌 賢二(うるしま), CISSP
jsrsasign –JavaScript 実装暗号ライブラリ
ブログ:自堕落な技術者の日記
@kjur
© 2015 Kenji Urushima All rights reserved. 2
CRYPTREC/IPAからSSL/TLS暗号設定ガイドが出ましたね
SSL暗号設定ガイドライン
平成27年5月
独立行政法人 情報処理推進機構国立研究開発法人 情報通信研究機構
IPA版 CRYPTREC版
表紙イメージ(理由は後述)
http://www.ipa.go.jp/security/vuln/ssl_crypt_config.html
http://www.cryptrec.go.jp/topics/cryptrec_20150522_oper_guideline_fy2014.html
© 2015 Kenji Urushima All rights reserved. 3
• 最近のBEASTやHeartBleed、CA不正証明書問題など重大なSSL/TLS脆弱性に対応するには、どのような設定をすればよいか?
• CRYPTREC暗号リストと整合取りながら、暗号の難しい説明なしに、サーバー管理者に使ってもらえる、設定例を豊富に用意した資料
• サーバーの設定はどのように決めるのか– サーバー管理有識者の知見– 暗号・プロトコルの研究者・有識者の知見– 証明書発行サービス有識者の知見– サーバー・クライアント製品の実装状況– 市場での暗号やプロトコルの利用状況– SSLサーバー証明書の選定
• 日々の脆弱性に対応する「意識高い系」サーバ管理者向け
CRYPTREC/IPA SSL/TLS暗号設定ガイドとはCRYPTRECシンポジウム2015の菊池先生の講演資料に「背景・目的・概要」全て書いてますhttp://www.cryptrec.go.jp/topics/cryptrec_20150424_symposium2015_presentation.html
© 2015 Kenji Urushima All rights reserved. 4
時期 問題・事件 対策
2005.11 OpenSSL SSLv2バージョンロールバック アップデート
2009.01 RapidSSL MD5衝突偽造中間CA アップデートやPinning
2009.07 NULL終端による証明書ホスト名一致不備 アップデートやPinning
2009.11 再ネゴシエーション脆弱性 アップデート
2011.03 Comodo不正証明書発行(RA攻撃) アップデートやPinning
2011.08 DigiNotar不正証明書発行(RA攻撃) アップデートやPinning
2011.09 BEAST攻撃 暗号スイート/プロトコル設定(非CBC)
2011.11 Digicert Sdn不正証明書発行(RSA512) アップデートやPinning
2012.05 FLAMEマルウェア用Windows Terminal ServerによるMD5衝突偽造中間CA, Windows Update攻撃
アップデートやPinning
2012.09 CRIME攻撃 圧縮解除設定(SSL)
2013.01 Lucky13攻撃 暗号スイート/プロトコル設定(GCM利用)
2013.01 TURKTRUST不正証明書発行(オペミス) アップデートやPinning
2013.03 SSLにおけるRC4暗号危殆化 暗号スイート(非RC4)
2013.03 TIME攻撃 圧縮解除設定(SSL)
2013.06 BREACH攻撃 圧縮解除設定(HTTP gzip)
2013.06 スノーデン氏暴露(NSAの全SSL通信保管) 暗号スイート/プロトコル設定(ECDHE,DHE使用)
2014.04 HeartBleed攻撃 アップデート
2014.06 CSSInjection攻撃 アップデート
2014.10 POODLE攻撃 暗号スイート/プロトコル設定(非SSLv3,CBC)
2015.03 FREAK攻撃 暗号スイート(非EXPORT)
2015.03 live.fi、CNNIC/MCS不正証明書発行(運用不備) アップデートやPinning(CABF BR要件に課題も)
2015.03 パスワード盗聴可能なRC4暗号スイート攻撃 暗号スイート設定(非RC4)
2015.05 Logjam脆弱性 暗号スイート設定, DH設定(DHE_EXPORT512bit無効化)
(参考) SSL/TLSの過去の問題と対応方法サーバー設定で回避し
続けならないものも多数
古い脆弱性であっても、
アップデートだけでは
解決しない問題が
多数残っている
© 2015 Kenji Urushima All rights reserved. 5
(参考)サーバー管理上のこれまでのSSL/TLSの問題と対策の整理
暗号危殆化の問題MD2, MD5, RC4, SHA1, RSA1024bit, DH1024bit
SSL/HTTP プロトコル設計の問題SSLv2, SSLv3, CBCモード,TLS圧縮, HTTP圧縮,再ネゴシエーション
個別の実装の問題OpenSSL(HeartBleed, CSSInjection等)MS (識別名NULL終端, ASN.1)
CAの運用の問題CA攻撃により不正証明書発行CAオペミスで不正証明書発行暗号危殆化で偽造証明書発行(MD5)
管理上
SSL/TLS
問題
対策
証明書ブラックリストの更新
Cert Pinning, CT, DNSSEC設定による検知
各種パッチ、アップデートの適用
暗号スイート、プロトコル、圧縮の設定
各種パッチ、アップデートの適用
アップデートの適用
暗号スイート、プロトコル、圧縮の設定
側設定
対策
古い脆弱性であっても、アップデートだけでは解決しない問題が多数残っているデフォルト設定でなく、きめ細かい設定で問題に対処する必要がある
© 2015 Kenji Urushima All rights reserved. 6
特に暗号スイート(Cipher Suites)の設定がわけわからん!!
何を入れればいいの?
何を入れちゃいけないの?
順序はどうすりゃいいの?
OpenSSL系の設定が
呪文みたい!
© 2015 Kenji Urushima All rights reserved. 7
(参考) CRYPTREC版とIPA版って違いはあるの?
表紙
IPA版 CRYPTREC版
表紙
本書配布URLの紹介
本文 (p2目次〜p91) 本文 (p2目次〜p91)
裏表紙:不許複製 禁無断転載発行者 IPA・CRYPTREC
裏表紙:作成者 CRYPTREC、発行者 IPA
別紙:設定チェックリスト(Excelフォーム)
© 2015 Kenji Urushima All rights reserved. 8
忙しいし、なかなか95ページも見てられないですよね
(非公式)設定ファイル自動生成ツールをご利用くださいhttps://kjur.github.io/jsrsasign/tool_httpscfg.html
• 基本、「お好みのガイド」と「サーバーの種類」を選ぶだけ。
• CRYPTREC/IPAガイドを含む、様々なガイドラインに準拠したHTTPS設定ファイルを自動生成します。
• 今は、Apache HTTP 2.2/2.4、nginx、lighttpdに対応しています。
• 証明書(PEM)を貼れば、Certificate Pinningの鍵ハッシュ計算も自動で行います。
• ガイドはCRYPTREC, NIST, Mozilla, Bulletproof他、OSデフォルトも
© 2015 Kenji Urushima All rights reserved. 9
他の主要なSSL/TLS設定ガイドとの比較
10 © 2015 Kenji Urushima All rights reserved.
© 2015 Kenji Urushima All rights reserved. 11
NIST SP800-52r1 (2014年4月改訂)
ダウンロードhttp://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-52r1.pdf
• NIST SP800-52r1Guidelines for the Selection, Configuration, and Use of TLS Implementation
• 最低限のSSLサーバとクライアントの設定を規定
• 証明書についての要件もあり
• レベルは1レベルのみで、最低限の要件だけを定めたもので、かなりカバー範囲が広い。
• 3DES, RC4など広めのサポート、AESCCM, DSA証明書が特徴的。
© 2015 Kenji Urushima All rights reserved. 12
Mozilla Server Side TLS
• MozillaのサーバーのSSL/TLS設定に関するガイド
• モダン(高)、普通(中)、互換性重視(低)の3レベル
• サーバー/クライアントのどのバージョンが使えるか明確になっている
• サーバー保護のための技術解説も多く、ためになる
• 設定ファイル自動生成ツールもある
出典:https://wiki.mozilla.org/Security/Server_Side_TLS
© 2015 Kenji Urushima All rights reserved. 13
Bulletproof SSL and TLS by Ivan Ristic of Qualys
出典:https://www.feistyduck.com/books/bulletproof-ssl-and-tls/
• Qualys社で、SSLサイト検査や評価のssllabs、SSLの利用調査のsslpulseなども開発担当している有名なSSL有識者のIvan Ristic氏のSSL設定解説本
• 主要なページがメアド登録で無料ダウンロードでき、これで十分
• ApacheやOpenSSLなどの設定、運用、セキュリティ対策についてどのような事に配慮すべきか詳しく解説した良著
• 暗号スイートは2レベル
• 特徴• 暗号スイートがかなり絞られている• 3DES, RC4がある
© 2015 Kenji Urushima All rights reserved. 14
ガイドの比較
NIST Mozilla Bulletproof CRYPTREC
特徴 最低線のみのガイド
対応ブラウザバージョンの明確化
技術解説詳細がよい
わりとバランスよくまとまっている
レベル 1レベル
(低)最低線
3レベル モダン(高) 普通(中) 互換性(低)
2レベル
普通(中) 互換性(低)
3レベル 高(高) 推奨(中) 例外(低)
技術解説 少なめ 普通 多い 普通
導入の容易さ やや難 易(ツール有) 易(例あり) 易(例あり)非公式tool有
脆弱性対応 若干薄い 対応 対応 対応
暗号スイートの特徴
わりと広め わりと広め かなり絞った 範囲は中程度
特徴的な暗号 DSA証明書AESCCMRC4
DSA証明書SRP鍵交換Camellia
RC4(低) CamelliaRC4(低)
対応サーバー 特になし Apache, Nginx, Haproxy, stud, AWS ELB, Zeus, Citrix Netscaler, Go, BIGIP
OpenSSL, Apache, Java, Tomcat, IIS, nginx
Apache, nginx, lighttpd, IIS
他の主要なSSL/TLS設定ガイドの暗号スイート選定の比較
15 © 2015 Kenji Urushima All rights reserved.
ガイドラインのサポートする暗号スイートの比較マップ(全部・わけがわからない→次ページ以降)
高い安全性
広く普及主要ブラウザで実装がない
弱い安全性
NIST 低
Bulletproof 中低
CRYPTREC/IPA高中低
Mozilla高中低
あまり普及せず
AESGCMECDSA証明書ECDHE鍵交換
CamelliaCBC
ECDH鍵交換
RSA鍵交換
3DES
RC4
SRP鍵交換 DSA証明書
AESCCM
DH鍵交換
AESCBCRSA証明書
DHE鍵交換
© 2015 Kenji Urushima All rights reserved. 16
暗号スイートのガイドライン比較マップ(NIST SP800-61)
高い安全性
広く普及あまり普及せず
弱い安全性
NIST 低
Bulletproof 中低
CRYPTREC/IPA高中低
Mozilla高中低
AESGCMECDSA証明書ECDHE鍵交換
CamelliaCBC
ECDH鍵交換
RSA鍵交換
3DES
RC4
SRP鍵交換 DSA証明書
AESCCM
DH鍵交換
AESCBCRSA証明書
DHE鍵交換
あまり普及せず
© 2015 Kenji Urushima All rights reserved. 17
暗号スイートのガイドライン比較マップ(Mozilla)
高い安全性
広く普及あまり普及せず
弱い安全性
NIST 低
Bulletproof 中低
CRYPTREC/IPA高中低
Mozilla高中低
高
中, 低
AESGCMECDSA証明書ECDHE鍵交換
CamelliaCBC
ECDH鍵交換
RSA鍵交換
3DES
RC4
SRP鍵交換 DSA証明書
AESCCM
DH鍵交換
AESCBCRSA証明書
DHE鍵交換
あまり普及せず
© 2015 Kenji Urushima All rights reserved. 18
暗号スイートのガイドライン比較マップ(Bulletproof SSL and TLS)
高い安全性
広く普及あまり普及せず
弱い安全性
NIST 低
Bulletproof 中低
CRYPTREC/IPA高中低
Mozilla高中低
中
低
AESGCMECDSA証明書ECDHE鍵交換
CamelliaCBC
ECDH鍵交換
RSA鍵交換
3DES
RC4
SRP鍵交換 DSA証明書
AESCCM
DH鍵交換
AESCBCRSA証明書
DHE鍵交換
あまり普及せず
© 2015 Kenji Urushima All rights reserved. 19
暗号スイートのガイドライン比較マップ(CRYPTREC/IPA)
高い安全性
広く普及あまり普及せず
弱い安全性
NIST 低
Bulletproof 中低
CRYPTREC/IPA高中低
Mozilla高中低
中
低
高
AESGCMECDSA証明書ECDHE鍵交換
CamelliaCBC
ECDH鍵交換
RSA鍵交換
3DES
RC4
SRP鍵交換 DSA証明書
AESCCM
DH鍵交換
AESCBCRSA証明書
DHE鍵交換
あまり普及せず
© 2015 Kenji Urushima All rights reserved. 20
CRYPTREC/IPAガイドラインの課題・今後の期待
21 © 2015 Kenji Urushima All rights reserved.
© 2015 Kenji Urushima All rights reserved. 22
• ページ数も多くサーバー管理者が見てすぐ使えるようになってないので、記載は見直せるといい
• 執筆後、新たなインシデントも起きており今後も頻繁に見直し/改定は必要– Logjam脆弱性、TLS 1.xではRC4使用不可(RFC7465)
• Certificate Pinningについては標準の誤解があり間違ったことを書いてしまい、訂正できるとよい。
• Session Resumptionについて、記載しそこねたので追記できるとよい。
• レベル分けはモダン(高)と互換性重視(低)の2つで十分
課題と今後の期待(1)
© 2015 Kenji Urushima All rights reserved. 23
• 暗号スイートの見直し– LogjamやDH(E)の実装状況、DH(E)のパフォーマンスの悪さ、設定の面倒さ、対応実装のバージョン要件などを考えれば、混乱するだけなのでDH(E)スイートは外してもいいか
– Camelliaはデフォルトで対応する最新ブラウザがなくなったので、外してもよいか
– AES256、AES128の順序は必ずしもAES128優先でなくてもよいのでは(皆が、高スループットを求めるわけではない。)
– ECC系の暗号スイート(ECDH(E), ECDSA)は「パテントリスクに気をつけろ」と書いても、対策のしようがなく、混乱するので一元化してはどうか
• チェックリストは、サンプルのサーバー設定を使えば2/3は記入不要で無駄が多いので、見直すとよい。
課題と今後の期待(2)
© 2015 Kenji Urushima All rights reserved. 24
(参考)チェックリストの冗長な所
レベルは合ってる?
プロトコル(サンプル使用→不要
証明書の選定要件(ここをチェックすれば十分)
暗号スイート
サンプル使えばチェック不要
© 2015 Kenji Urushima All rights reserved. 25
Logjam(弱いDH(E)鍵脆弱性)Matthew Green先生のブログでの解説
出典:http://blog.cryptographyengineering.com/2015/05/attack-of-week-logjam.html
• Logjam脆弱性は、鍵交換で輸出グレードのDH(E)鍵交換(DHE_EXPORT、DH 512bit)に中間者がダウングレードすることにより通信を盗聴する脆弱性
• 利用者に気づかれないように、タイムアウトしないよう工夫するとしても、数秒〜数分のうちに鍵を解読する必要あり
• DH鍵の解読は2ステップ。大量の計算パワーの必要とするDHパラメータ共通な事前計算と、鍵交換毎の計算
• 512bitなら、個人でもこの程度のクラスタで1、2分で解読可能
• 1024bitなら、NSAの予算規模を考えれば実現可能性が高い。実際、SSHのDH鍵の解読プロジェクトがスノーデンの文書で明らかになっているので応用は容易
• DHでたった2つの素数が92%のApache/mod_sslで使われていたり、組込み、ハードコード、OSのデフォルトで使っているケースも多く有名な鍵の事前計算の価値は十分ある
ブラウザ
中間者
サーバー
強制DH512
DH2048
© 2015 Kenji Urushima All rights reserved. 26
• ここ数年、SSL/TLSに関連したインシデントが多発しており、HTTPSサーバーの設定を定期的に見直すのは必須
• CRYPTREC/IPAのSSL/TLS暗号設定ガイドなど幾つかのガイドが出ており、日本語でてっとり早く対策するにはCRYPTREC/IPAのガイドはおすすめ
• ただ、課題は幾つかあって、継続して対応されるといいですね(遠い目・・・)
• ガイドが更新されない場合には、(仕方なく)自分のブログで情報提供を続けようと思っています。
まとめ
ご清聴ありがとうございました
© 2015 Kenji Urushima All rights reserved. 28
IPA SSL/TLS暗号設定ガイドライン
http://www.ipa.go.jp/security/vuln/ssl_crypt_config.html
CRYPTREC SSL/TLS暗号設定ガイドライン
http://www.cryptrec.go.jp/topics/
cryptrec_20150522_oper_guideline_fy2014.html
NIST SP800-52r1 Guidelines for the Selection,
Configuration,
an dUse of Transport Layer Security(TLS)
Implementation
http://nvlpubs.nist.gov/nistpubs/SpecialPublications/
NIST.SP.800-52r1.pdf
Mozilla Server Side TLS
https://wiki.mozilla.org/Security/Server_Side_TLS
Bulletproof SSL and TLS by Ivan Ristic of Qualys
https://www.feistyduck.com/books/bulletproof-ssl-and-
tls/
CRYPTRECシンポジウム2015
運用ガイドラインWG報告(主査:明治大 菊池先生)
http://www.cryptrec.go.jp/topics/
cryptrec_20150424_symposium2015_presentation.htm
l
第12回情報セキュリティEXPO[春] IPAブース資料
SSL/TLS暗号設定ガイドライン (IPA神田氏)
http://www.ipa.go.jp/security/announce/ist_expo2015.html
非公式SSL/TLSガイド準拠設定生成ツール(漆嶌)
https://kjur.github.io/jsrsasign/tool_httpscfg.html
InternetWeek2014 サーバーのSSL設定のツボ(漆嶌)
https://www.nic.ad.jp/ja/materials/iw/2014/proceedings/s14/s14-urushima.pdf
PKIDay2015 SSL生誕20年、脆弱性と対策を振返る(漆嶌)
http://www.jnsa.org/seminar/pki-day/2015/data/2-1_urushima.pdf
自堕落な技術者の日記
http://blog.livedoor.jp/k_urushima/
SNS等
https://twitter.com/kjur (@kjur)
https://www.facebook.com/kenji.urushima.biz
参考リンク