このエントリーをはてなブックマークに追加このエントリをつぶやく

暗号技術入門14 SSL/TLS

担当:大辻

目次

  • 歴史
  • 概要
  • プロトコル
  • 暗号スイートの構成要素

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(予定)

プロトコル概要

三つの脅威

  1. 盗聴
  2. 改ざん
  3. なりすまし

から守る

通信経路を暗号化するのでHTTP以外でも利用できる

二つのプロトコル

  • ハンドシェイクプロトコル
  • レコードプロトコル

五つの要素技術

  • 鍵交換
  • 公開鍵暗号
  • 共通鍵暗号
  • ブロック暗号モード
  • メッセージ認証コード

ハンドシェイクプロトコル

ClientHello →

対応しているアルゴリズムの一覧を送信する

← ServerHello

最も安全性の高いアルゴリズムを選択して応答する

← (Certificate)

サーバ証明書(ルート認証局含む)をクライアントに渡す
Note: 証明書の検証、相手にしか読めない暗号文の作成が可能に

← (ServerKeyExchange)

鍵生成に必要なパラメータを送る

← (CertificateRequest)

クライアント証明書もよこしなさい

← ServerHelloDone

サーバのターン終了

(Certificate) →

クライアント証明書をサーバに渡す

ClientKeyExchange →

鍵生成に必要なパラメータを送る

(CertificateVerify) →

私は間違いなく証明書の持ち主です

ChangeCipherSpec →

アルゴリズムの確定

Finished →

クライアントからは以上です
Note: このメッセージ自体は暗号化されている

← Finished

サーバからも以上です
Note: このメッセージ自体は暗号化されている

レコードプロトコル

HTTP等のデータを共通鍵で暗号化して送受信するだけ

だけじゃないよ!

Note: 単純な暗号化だけでは盗聴しか防げない

認証アルゴリズム

相手は本当に証明書の持ち主か?

  1. ランダムなデータを送信する
  2. 署名されて返ってくる
  3. サーバ証明書の公開鍵で検証する

そもそもサーバ証明書は本物か?

サーバ証明書自体は認証局によって署名されている

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)

カテゴリー: 勉強会   タグ: ,   この投稿のパーマリンク

コメントは受け付けていません。