SSL/TLS暗号設定ガイドライン(2018年3月時点) まとめ
概要だけ、実際の通信の流れや、ディジタル証明書等の話、使用すべき暗号や設定項目については次回。
SSL2.0(1994)
- 以下の致命的な脆弱性があり、基本的にSSL2.0は使用不可
- ダウングレード攻撃(最弱のアルゴリズムを強制的に使わせる事ができる)
- バージョンロールバック攻撃(SSL2.0を強制的に使わせる事ができる)
SSL3.0(1995)
- SSL2.0の脆弱性に対処したバージョン
- 2014年10月にPOODLE攻撃が発表され、CBCモードの利用は危険。SSL3.0のパディングチェックに起因した問題であり、この攻撃に対する回避策が見つかっていない。
- 基本的にSSL3.0は使用不可
TLS1.0(1999)
- 約12万サイトでTLS1.0を利用できるのは88%。つまりほとんど使える。
- BEAST攻撃が発見されるが、セキュリティパッチ提供済み。POODLE攻撃もプロトコル使用上無効
- 暗号スイートとしてより安全なブロック暗号であるAESとCamelliaが使えるようになる
- 公開鍵あんごう・署名に楕円曲線暗号が使えるようになる
- 秘密鍵生成などに擬似乱数関数を採用
- MACの計算方法をHMACに変更
TLS1.1(2006)
- TLS1.0の強化版。デフォルトでTLS1.0で発見されたBEAST攻撃を無効
- 後述するTLS1.2と同時に実装されている。
TLS1.2(2008)
- 暗号スイートとしてより安全なハッシュ関数SHA-256とSHA-384が使える
- CBCモードより安全な認証付き秘匿モードであるGCMとCCMが使えるようになる
- 必須の暗号スイートをTLS_RSA_WITH_AES_128_CBC_SHA
- IDEAとDESを使う暗号スイートを削除
- 擬似乱数関数の構成をMD5/SHA1ベースからSHA-256ベースに変更
- 約12万サイト中約91%使われている
TLS1.3(規格化中?)
- 共通鍵暗号は認証暗号のみ。AES-GCM必須
- 鍵交換はECDHE必須
- 署名はECDSA必須
- ハッシュ関数はSHA-256必須
- 楕円曲線はsecp256r1必須
- ハンドシェイク性能向上
- ハンドシェイクをServer HELOから暗号化
- まだまだこれから
- セッション層のセキュアプロトコル
- 実装目的
- HTTP、SMTP、POPなどに使われている。
暗号通信手順
- ハンドシェイク
- ブラウザ(クライアント)とサーバが暗号通信するために利用する暗号アルゴリズみとプロトコルバージョンを決定
- サーバ証明書によるサーバの認証
- そのセッションで利用するセッション鍵を共有する
暗号通信における安全性強度は、ハンドシェイクの処理で使われる暗号アルゴリズムとプロトコルバージョンに依存する
CRYPTREC暗号リスト
- 総務省と経産省が、暗号技術に関する有識者で構成されるCRYPTREC活動を通して、電子政府で利用される暗号技術の評価を行っている
- 2013年3月に「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」を策定した。以下3つのリストで構成される。政府機関の情報セキュリティ対策では「電子政府推奨暗号リスト」が使用される。
- 電子政府推奨暗号リスト
- 推奨候補暗号リスト
- 運用監視暗号リスト
異なる暗号アルゴリズムにおける安全性の見方
- 異なる技術分類の暗号アルゴリズムを組み合わせて利用する場合、安全性が低いものを使ったら低いレベルの暗号になるので気をつけてね
- 異なる技術分類の暗号アルゴリズムについて同じくらいの安全性を持つかどうかを判断する目安をビット安全性という。
- ビット安全性は、暗号アルゴリズムに対する効率的な攻撃で、解読に必要な計算量で表現される。
- “2x”は、xビット安全性と呼ばれる。
- 計算量が大きいほど安全性が高い。小さければ安全性が低い。
- AES-xxx : 鍵長がxxxビットのAESのこと
- Camellia-xxx : 鍵長がxxxビットのCamelliaのこと
- RSA-xxx : 鍵長がxxxビットのRSAのこと
- DH-xxx :
- ECDH-xxx :
- ECDSA-xxx :
- HMAC- SHA-xxx : メッセージ認証子を作るHMACにおてい利用するハッシュ関数SHA-xxxのこと。SSL/TLSでは、暗号スイートで決めるハッシュ関数はHMACとして利用される
- SHA-xxx :