担当:大辻
目次
- 歴史
- 概要
- プロトコル
- 暗号スイートの構成要素
SSL/TLSの歴史
SSL 1.0
1994年 Netscape Communications社が開発
設計レビューの段階で脆弱性が発見される
SSL 2.0
1995年 Netscape Communications社が発表
2011年 いくつかの脆弱性が発見され、使用禁止に
SSLには後方互換性があり、SSL 3.0発表後も2.0を利用することはできた
SSL 3.0
1996年 Netscape Communications社が発表
2014年10月 仕様上の脆弱性が見つかる
2015年6月 使用禁止に
TLS 1.0
1999年 RFC 2246としてインターネット標準化された
SSL 3.0をベースに細かい仕様が変更されている
ネゴシエーション時のバージョン番号は3.1
TLS 1.1
2006年 RFC 4346として制定
AES対応や新しい攻撃手法に対する強化
ネゴシエーション時のバージョン番号は3.2
TLS 1.2
2008年 RFC 5246として制定
いくつかのアルゴリズム追加
ネゴシエーション時のバージョン番号は3.3
TLS 1.3
2017年2月 そろそろドラフト最終段階
ネゴシエーション時のバージョン番号は3.4(予定)
プロトコル概要
三つの脅威
- 盗聴
- 改ざん
- なりすまし
から守る
通信経路を暗号化するのでHTTP以外でも利用できる
二つのプロトコル
- ハンドシェイクプロトコル
- レコードプロトコル
五つの要素技術
- 鍵交換
- 公開鍵暗号
- 共通鍵暗号
- ブロック暗号モード
- メッセージ認証コード
ハンドシェイクプロトコル
ClientHello →
対応しているアルゴリズムの一覧を送信する
← ServerHello
最も安全性の高いアルゴリズムを選択して応答する
← (Certificate)
サーバ証明書(ルート認証局含む)をクライアントに渡す
Note: 証明書の検証、相手にしか読めない暗号文の作成が可能に
← (ServerKeyExchange)
鍵生成に必要なパラメータを送る
← (CertificateRequest)
クライアント証明書もよこしなさい
← ServerHelloDone
サーバのターン終了
(Certificate) →
クライアント証明書をサーバに渡す
ClientKeyExchange →
鍵生成に必要なパラメータを送る
(CertificateVerify) →
私は間違いなく証明書の持ち主です
ChangeCipherSpec →
アルゴリズムの確定
Finished →
クライアントからは以上です
Note: このメッセージ自体は暗号化されている
← Finished
サーバからも以上です
Note: このメッセージ自体は暗号化されている
レコードプロトコル
HTTP等のデータを共通鍵で暗号化して送受信するだけ
だけじゃないよ!
Note: 単純な暗号化だけでは盗聴しか防げない
認証アルゴリズム
相手は本当に証明書の持ち主か?
- ランダムなデータを送信する
- 署名されて返ってくる
- サーバ証明書の公開鍵で検証する
そもそもサーバ証明書は本物か?
サーバ証明書自体は認証局によって署名されている
OSやブラウザにインストールされている認証局の証明書で検証可能
鍵交換アルゴリズム
プレマスターシークレットを受け渡す
- 鍵配送型
送信者がランダムに鍵を生成し、相手の公開鍵で暗号化して送信する - DH型(Diffie-Hellman key exchange)
お互いに自分の秘密鍵と相手の公開鍵を利用して共通の鍵を生成する
マスターシークレットを作る
プレマスターシークレット + ソルト
→
一方向ハッシュ関数
→
マスターシークレット(ClientHello/ServerHello時に生成されたランダム値をソルトとして使う)
マスターシークレットで鍵などを作る
- 対称暗号の共通鍵
- メッセージ認証コードの鍵
- CBCモードの初期化ベクトル
共通鍵暗号
レコードプロトコルで使う暗号
- ブロック暗号
AES、 DES、3DESなど - ストリーム暗号
RC4
ブロック暗号モード
ブロック暗号にひと手間加える
同じ平文からは同じ暗号文が出力されるため、そのままだと鍵や平文の一部が予測されやすい
直前のブロックをXORするなどして安全性を高めるCBC、GCM、CCMなどがある
メッセージ認証コード
ハッシュ値による改ざん検出
- シーケンス番号
- 鍵
- 元データ
暗号スイート
五つのアルゴリズムの組み合わせ
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
まとめ
SSLの良いところ
- 色んなプロトコルへの水平展開
- 色んな環境での相互運用性
- 色んな暗号技術に対応
参考書籍
結城浩(2015)『暗号技術入門 第3版 秘密の国のアリス』SB Creative 446pp.
ISBN978-4-7973-8222-8
第14章 SSL/TLS(p364-p388)