Mais conteúdo relacionado
Semelhante a qpstudy 2015.11.14 一歩先を行くインフラエンジニアに知ってほしいSSL/TLS (20)
qpstudy 2015.11.14 一歩先を行くインフラエンジニアに知ってほしいSSL/TLS
- 1. © 2015 Kenji Urushima All rights reserved.
一歩先を行くインフラエンジニアに
知ってほしい SSL/TLS設定
qpstudy 2015.11:キューピー3分インフラクッキング勉強会
セキュリティに万全を求めるのは間違っているだろうか
於:東銀座 ドワンゴ株式会社
2015年11月14日(土) 14:00〜17:00
@kjur
(15:15-16:30 75分)
- 2. © 2015 Kenji Urushima All rights reserved.
・経歴
・富士ゼロックス(2010~)
・エントラストジャパン(2005~2010)
・セコム(1988~2005)
・興味:
PKI, TLS, 電子署名, SSO, 認証, 暗号,
CSIRT, 脆弱性検査, フォレンジック,
スマホ, プログラミング, ビットコイン
・別名
・証明書ハンター
・(TLS)暗号スイートウォッチャー
・委員、標準化、認定基準、実証実験、普及啓蒙
・JNSA, CRYPTREC, 日本データ通信協会
IPAセキュキャン講師
・旧ECOM, PKI-J, 欧州ETSI
・PKI, TLS, 長期署名, タイムスタンプ
自己紹介: 漆嶌 賢二(うるしま), CISSP
jsrsasign –
JavaScript 実装暗号ライブラリ
ブログ:自堕落な技術者の日記
@kjur
- 4. © 2015 Kenji Urushima All rights reserved.
• 今日は、インフラエンジニアとしてSSL/TLS、
HTTPS、特にサーバー設定について抑えておくとい
いかなっていうポイントをお話します。
• SSL/TLSとは何か
• 今サーバー証明書をゲットする際の注意点
• 最近のSSL/TLS関連の脆弱性と設定の重要性
• 暗号スイートの設定
• 他に必要な設定
• ポカ〜〜〜ン とする暗号の話のおまけ
今日のアジェンダ
- 6. アマゾンの購入確認画面
© 2015 Kenji Urushima All rights reserved.
出典:アマゾン(www.amazon.co.jp)
暗号化されているか
氏名、住所、電話番号
何を買ったか?
カード番号
購入個数
- 7. HTTPS暗号通信ってなんでいるの?
© 2015 Kenji Urushima All rights reserved.
例えばアマゾンでお買いもの
クレジットカード番号
住所・氏名
秘密にしたい買い物
「カード番号、住所、
氏名、買い物の内
容」を途中で見られ
たくない
ニセのアマゾンサイ
トに「カード番号、住
所」なんかを送りた
くない。
途中で「届け先住
所」を書き換えて商
品を騙し取られた
くない。
SSL/TLSが守る 今のネットに必須の機能
- 8. SSL/TLSの3つの機能
© 2015 Kenji Urushima All rights reserved.
「カード番号、住所、氏
名、買い物の内容」を途
中で見られたくない
ニセのアマゾンサイトに
「カード番号、住所」な
んかを送りたくない。
途中で「届け先住所」を
書き換えて商品を騙しと
られたくない。
機密性 相手認証 完全性
暗号通信により通信
相手以外に通信内容
を盗み見(盗聴)され
ないようにする
証明書(PKI)などを使
い通信相手が正しい
相手であるか認証す
る
通信の途中でデータ
が書き換え(改ざん)
されないよう、改ざ
ん検知できる
共通鍵暗号を使う
PKI(公開鍵暗号)、
パスワード、
Kerberos認証を使う
MAC(メッセージ
認証コード)を使う
覗き見(盗聴)防止 なりすまし防止 改ざん防止
- 9. SSL/TLSの特徴(HTTPでも何でも乗る)
© 2015 Kenji Urushima All rights reserved.
物理層
データリンク層
ネットワーク層
トランスポート層
セッション層
プレゼンテーション層
アプリケーション層
OSI参照モデル 従来通信の例
10baseT,RS232,DSL
Ethernet
IP
TCP
Socket
HTTP
UDP
POP3
IMAP
SMTP
‥
10baseT,RS232,DSL
Ethernet
IP
TCP
HTTPS
UDP
POP3S
IMAPS
SMTPS
‥
Socket
SSL/TLS
SSL化(※1)
従来のアプ
リケーショ
ンプロトコ
ルを全て安
全な通信に
(SSL化)で
きてしまう。
※1: 他にLDAPS, FTPS, TELNETSとか
追加
HTTPS=HTTP over SSL
- 11. © 2015 Kenji Urushima All rights reserved.
✔︎簡単
✔︎安全
✔︎早い
✔︎無料
✔オープン
- 12. © 2015 Kenji Urushima All rights reserved.
DV(ドメイン認証)証明書であることの注意点 / OV,EVとの違い
DV(ドメイン認証) OV(組織認証) EV(拡張認証)
値段 無料、1千〜1.5万円/年 9千〜11万円/年 2万〜11万円/年
用途 個人, API利用, 開発用 企業/一般利用, 問合せ カード番号, 個人情報
ア
ド
レ
ス
バ
ー
OVと同じ DVと同じ 緑アドレスバーに
組織名が表示される
ペ
ー
ジ
情
報
組織名は表示されない 組織名は表示されない 組織名が表示される
証
明
書
ビ
ー
ア
組織名は表示されない 組織名が表示される 組織名が表示される
企業のホームページでDV証明書を使うと、会社組織名が表示されないために、
本当にその会社が運営しているサーバーか?フィッシングサイトでないか? 利
用者を不安にさせてしまう。
- 13. © 2015 Kenji Urushima All rights reserved.
1) 必ず証明書発行の都度、鍵ペアを再生成する
2) RSA 2048bit以上の鍵を使う
3) SHA256への移行をなるべく早く(Chromeでは警告表示される)
4) EV証明書を利用する場合、Certificate Transparency(CT)に対応した証
明書を購入する(CT非対応の場合Chromeだと緑バー表示されない)
5) OCSPに対応している所がよい
6) フィーチャーフォン、ゲーム機、VoIPの対応が必要ならベンダーによく確
認を(鍵長, SHA2, パス長, 搭載ルート認証局で問題になることも)
7) ワイルドカード証明書、マルチドメイン証明書は鍵の運用も考えて導入
イマドキのSSLサーバー証明書に関するポイント
- 14. © 2015 Kenji Urushima All rights reserved.
• Windowsルート証明書プログラムのルートCA配下は2016年1月1日以降、
SHA1証明書を発行できない。
• Windows製品では有効期限が2017年1月1日以降の証明書を受理しないた
めエラーとなる。
• Google ChromeはSHA1証明書の有効期限により、2015年1月以降のリ
リース版より下表の警告表示を開始し、2017年1月以降は受理しない。
• MSはWindows製品のSHA1停止を2016年6月に早めると発表
Microsoft製品、Google ChromeのSHA1証明書からの移行
Google Chrome SHA1証明書の有効期限
Chrome
バージョン
安定版
リリース日
2015.12.31
まで
2016.05.31
まで
2016.12.31
まで
2017.01
以降
38 2014.10.08
39 2014.11.18
40 2015.01.21
42 2015.04中旬
2017.01直後 2017.01中旬
記号:☆:Googleのポリシにより、★:証明書期限切れにより
☆
☆ ☆ ☆
☆
☆
★★★
- 18. © 2015 Kenji Urushima All rights reserved.
時期 問題・事件 対策
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無効化)
2015.07 RC4NOMORE攻撃 暗号スイート設定(非RC4)
2015.07 Alt証明書チェーン検証不備 アップデート
2015.10 Free-Start SHA1 Collision攻撃 現時点では早急な対策は不要(SHA2証明書移行
SSL/TLSの過去の問題と対応方法 サーバー設定で回避し
続けならないものも多数
古い脆弱性であっても、
アップデートだけでは
解決しない問題が
多数残っている
- 19. © 2015 Kenji Urushima All rights reserved.
サーバー管理上のこれまでのSSL/TLSの問題と対策の整理
暗号危殆化の問題
MD2, MD5, RC4, SHA1,
RSA1024bit, DH1024bit
SSL/HTTP プロトコル設計の問題
SSLv2, SSLv3, CBCモード,
TLS圧縮, HTTP圧縮,
再ネゴシエーション
個別の実装の問題
OpenSSL(HeartBleed,
CCSInjection等)
MS (識別名NULL終端, ASN.1)
CAの運用の問題
CA攻撃により不正証明書発行
CAオペミスで不正証明書発行
暗号危殆化で偽造証明書発行(MD5)
管
理
上
S
S
L
/
T
L
S
問
題
対
策 証明書ブラックリストの更新
Cert Pinning, CT, DNSSEC設定による検知
各種パッチ、アップデートの適用
暗号スイート、プロトコル、圧縮の設定
各種パッチ、アップデートの適用
アップデートの適用
暗号スイート、プロトコル、圧縮の設定
側
設
定
対
策
古い脆弱性であっても、アップデートだけでは解決しない問題が多数残っている
デフォルト設定でなく、きめ細かい設定で問題に対処する必要がある
- 22. © 2015 Kenji Urushima All rights reserved.
鍵交換 認証 暗号化 MAC
使
て
よ
い
ECDHE
ECDH
RSA
DHE
DH
RSA
ECDSA
AES_128_GCM
AES_256_GCM
AES_128_CBC
AES_256_CBC
3DES_EDE_CBC
SHA384
SHA256
SHA
使
ち
ダ
メ
RSA_EXPORT
DSS_EXPORT
RC4_128
DES_CBC
MD5
現在使われている主要な暗号、ダメな暗号
強
い
弱
い
- 24. © 2015 Kenji Urushima All rights reserved.
① POODLE対策として使用プロトコルバージョン
v SSLProtocol all –SSLv2 –SSLv3
v POODLE対策としてSSLv3を無効化できるか?
v レガシーな環境ではSSLv3を残す必要があるかも
② CRIME対策としての圧縮設定の解除
v SSLCompression Off
v CRIME攻撃、TIME攻撃対策としてSSL圧縮を無効化する
残りの大切な設定1、2
- 25. © 2015 Kenji Urushima All rights reserved.
大切な設定3:SSLHonorCipherOrder On
暗号スイートのサーバー側優先
デフォルト設定の
クライアント側
暗号スイートを
優先するサイト
クライアントから送る暗号スイート一覧の順序を優先
して接続すると弱い暗号が使われることがある
Android や JRE 1.4-1.6 の Java
API (URLConnection, Apache
HTTP Components/HTTPClient)を
使用した場合、RC4-MD5が最優先さ
れてしまう。(WebViewは問題無し)
Windows XP上のIE7では
RC4-MD5のような弱い暗
号が優先されてしまってい
た。
SSLHonorCipherOrder On等設定してサーバー側を優先する設定を
RC4-MD5
RC4-SHA
AES128-SHA
AES256-SHA
以下略
ClientHello
RC4-MD5
ServerHello
参考 PKIDay 2011 NTT武藤氏:SSLにおける暗号危殆化サンプル調査の報告 http://www.jnsa.org/seminar/pki-day/2011/data/03_mutoh.pdf
自堕落な技術者の日記 JRE 1.4-1.6やAndroidのAPIを使ったHTTPS接続のCipherSuitesのRC4-MD5優先 http://blog.livedoor.jp/k_urushima/archives/1727793.html
- 27. © 2015 Kenji Urushima All rights reserved.
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年5月に公開
IPA SSL ガイド 検索
- 29. © 2015 Kenji Urushima All rights reserved.
Microsoft IISの暗号スイート/プロトコル設定
オススメIISの暗号スイート/プロトコルの設定ツール(参考)
NARTAC IIS Crypto
https://www.nartac.com/Products/IISCrypto/
グループポリシーエディタでも設定可能だが、
簡単に暗号スイート/プロトコルを設定できるフリーウェア
- 30. © 2015 Kenji Urushima All rights reserved.
Apache Tomcatの暗号スイート設定 (参考)
Tomcatで使用するJavaがどのバージョンかで、設定できる暗号スイートやその
名称が決まるため、サポートする暗号スイート一覧が簡単に得られると有り難い。
このような時、SSLInfoというツールを使用している。
https://gist.github.com/MikeN123/8810553
コンパイルしてTomcatで使うJavaで実行すれば暗号スイート一覧が得られる。
※ J2SE 1.6.0_65のサポートするCipherSuites一覧
Default Cipher
* SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
* SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
* SSL_DHE_DSS_WITH_DES_CBC_SHA
* SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
* SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
* SSL_DHE_RSA_WITH_DES_CBC_SHA
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
SSL_DH_anon_WITH_DES_CBC_SHA
SSL_DH_anon_WITH_RC4_128_MD5
* SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
* SSL_RSA_EXPORT_WITH_RC4_40_MD5
* SSL_RSA_WITH_3DES_EDE_CBC_SHA
* SSL_RSA_WITH_DES_CBC_SHA
SSL_RSA_WITH_NULL_MD5
SSL_RSA_WITH_NULL_SHA
* SSL_RSA_WITH_RC4_128_MD5
* SSL_RSA_WITH_RC4_128_SHA
* TLS_DHE_DSS_WITH_AES_128_CBC_SHA
* TLS_DHE_DSS_WITH_AES_256_CBC_SHA
* TLS_DHE_RSA_WITH_AES_128_CBC_SHA
* TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DH_anon_WITH_AES_128_CBC_SHA
TLS_DH_anon_WITH_AES_256_CBC_SHA
* TLS_EMPTY_RENEGOTIATION_INFO_SCSV
TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5
TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA
TLS_KRB5_EXPORT_WITH_RC4_40_MD5
TLS_KRB5_EXPORT_WITH_RC4_40_SHA
TLS_KRB5_WITH_3DES_EDE_CBC_MD5
TLS_KRB5_WITH_3DES_EDE_CBC_SHA
TLS_KRB5_WITH_DES_CBC_MD5
TLS_KRB5_WITH_DES_CBC_SHA
TLS_KRB5_WITH_RC4_128_MD5
TLS_KRB5_WITH_RC4_128_SHA
* TLS_RSA_WITH_AES_128_CBC_SHA
* TLS_RSA_WITH_AES_256_CBC_SHA
※ ‘*’印はデフォルトで提供されるCipherSuites
- 31. © 2015 Kenji Urushima All rights reserved.
最後にQualys SSLLabsで設定を確認しましょう
https://www.ssllabs.com/ssltest/ を開きあなたのサイトのドメインを入力し
「Do not show the results on the boards」をチェックしボタンを押します。
• あなたのサイトのSSL設定を様々な観点から
チェックしてくれます。
• 対応している暗号スイート、プロトコルの確認
• 主要クライアントで選択される暗号スイート
• 証明書チェーン、OCSP、HSTS、Stapling
• 最近の脆弱性や設定項目の対応状況
• POODLE
• BEAST
• ダウングレード攻撃
• TLS圧縮の設定
• RC4
• CSSInjection
• Forward Secrecy
• HeartBleed
• LogJam
• セキュアな再ネゴシエーション
• Public Key Pinning
• ブラウザのどのバージョンからアクセス可能か
- 33. © 2015 Kenji Urushima All rights reserved.
• 暗号スイート(CipherSuite)の所で出てくる
公開鍵暗号の一つ
• EC (Elliptic Curve)
• ECDH(E)鍵交換、ECDSA署名/証明書
• コンパクト
• 鍵のデータサイズはRSAの10分の1以下
• 処理に必要なメモリが小さく組込みやICカードに適
今日のSSL/TLSの話で出てくる楕円曲線暗号
- 34. © 2015 Kenji Urushima All rights reserved.
• ある計算は簡単だけど、逆演算は難しいという性質
• 大きな2つの数の掛け算は簡単だけど
その結果を2つの因数に分解するのは難しい
→ RSA暗号
• じゃぁ、楕円曲線暗号(ECC)は?
公開鍵暗号はどんな性質を使うか
- 35. © 2015 Kenji Urushima All rights reserved.
楕円曲線公開鍵暗号(1)
楕円曲線は楕円ではない
y2 = x3 + ax + b
を満たす曲線を
「楕円曲線」という
注:楕円じゃない
(性質)
直線を引くと多くの場合
3つの点A, B, Cで交わる
X軸で線対称
A
B
C
D
- 36. © 2015 Kenji Urushima All rights reserved.
楕円曲線公開鍵暗号(2)
点の足し算=2つの点から3つ目を見つけること
2つの点A,Bから3つめの
交点Cを見つけ
そのX軸対称の点をDとする
これを
と足し算で表す
A
B
C
D
A=B
C
D
接点A=Bの場合
A+B=D
A+A=D
すると
A+A+…=nA
整数と点の掛け算
を定義できる
- 37. © 2015 Kenji Urushima All rights reserved.
楕円曲線公開鍵暗号(3)
実数ではなく整数Iを素数pで割った余りでやる
曲線上の点のx、y座標が
「整数Iを素数pで割った余り」
で行う
G
2G
3G
4G
素数p
p
p
G
nG
n
ある点nGが与えられ
た時、nが大きければ
nGからnを求めるの
は非常に難しい
素数p
基準点
- 38. © 2015 Kenji Urushima All rights reserved.
(参考) 例えば素数p=263の場合
点をプロットするとこんな感じ
出典: http://www.johannes-bauer.com/compsci/ecc/
y=p/2で点が線対称になるとい
う特徴がある
n=1, 2, 3 … と軌跡を追うと
もうぐちゃぐちゃ
これをp=256bitの巨大な整数で
やるから、もっとスゴイ事に!
- 39. © 2015 Kenji Urushima All rights reserved.
楕円曲線公開鍵暗号(4)
楕円曲線を使った公開鍵暗号
n nG
G(x,y)
p
基準点
剰余の素数
曲線定数 a
曲線定数 b
秘密鍵 公開鍵
曲線パラメータ
公開鍵nGとパラメータG, p, a, bから秘密鍵nを見つけるのは困難
→ 公開鍵暗号として使える!!
(特徴)データが小さい(256bなら公開65, 秘密32, パラ数byte以下
- 40. © 2015 Kenji Urushima All rights reserved.
• 曲線パラメータの値によって
• 暗号強度や計算の効率性が違う
• 標準化団体、業界団体が良いパラメータを選んだ
→ 名前つき曲線 (Named Curve)
• 以下が代表的
• NIST P-256、P-384、P-521
• secp256r1、secp256k1、secp384r1、
secp521r1
曲線パラメータは何でもよくない→Named Curve