書籍概要

WEB+DB PRESS plus

SSL/TLS実践入門
──Webの安全性を支える暗号化技術の設計思想

著者
発売日
更新日

概要

SSL/TLSは,通信の秘密を守るために利用されている通信プロトコルです。HTTPSやHTTP/3にも利用されており,今日のWebでは利用が一般的になっています。本書では,その最新バージョンであるTLS 1.3のしくみと,その使い方を解説します。SSL/TLSは公開されている実装例などを真似すれば基本的な動作はさせられますが,それを応用していくには技術に関する理論の理解が必須になります。しかしSSL/TLSに関連する技術は大変多く,かつそれらのドキュメントは不足している状態です。本書ではこの理論部分を丁寧に解説し,それを活かした形で実装例まで解説することで,Web開発者たちが望んでいる解説と実践を相互に接続します。

サンプル

samplesamplesamplesamplesample

目次

第1章 SSL/TLSの世界へようこそ

  • 暗号化の役割と重要性
    • インターネットに暗号化が必要な理由
    • 情報の秘匿
    • 認証
  • SSL/TLSの歴史
    • 暗号技術の成り立ち
    • SSLの誕生
    • [colomn]公開鍵暗号のたとえ
    • TLSへの進化
    • TLS 1.3の登場
  • SSL/TLSの定義
    • 主な役割
    • プロトコルスタック
    • 活用例
  • SSL/TLSの構成要素
    • 暗号アルゴリズム
    • プロトコル
    • PKI──公開鍵基盤
  • 終わりに

第2章 暗号アルゴリズムと鍵

  • 検証環境
    • 利用するソフトウェア
    • Dockerの導入
    • OpenSSLを含むDockerコンテナの導入
  • 共通鍵暗号
    • ビット演算による暗号化
    • 真正乱数と擬似乱数
  • ストリーム暗号
    • RC4──初期のストリーム暗号
    • ChaCha20──標準的ストリーム暗号
  • ブロック暗号
    • SPN型とFeistel型
    • DES──初期の共通鍵暗号
    • AES──標準的共通鍵暗号
    • 暗号利用モード
    • IV
    • パディング
  • ハッシュ関数
    • ハッシュ関数の性質
    • MD5──初期のハッシュ関数
    • SHA──標準的ハッシュ関数
    • CMAC とHMAC──暗号とハッシュによる認証コード
  • 認証付き暗号
    • 認証コードの必要性
    • AES-GCM──認証コード付きブロック暗号
    • AES-CCM
    • [colomn]有限体における演算
    • Poly1305──可変長メッセージの認証コード
  • 公開鍵暗号
    • 公開鍵暗号の誕生
    • [colomn]USSプエブロ号事件.
    • 鍵共有
    • P ≠ NP 予想
    • RSA暗号──素因数分解による公開鍵暗号
    • DH──鍵交換アルゴリズム
    • ECDH──楕円曲線による鍵交換
    • ECDHE──前方秘匿性を考慮した鍵交換
  • デジタル署名
    • 認証の機能を実現する方法
    • RSA署名──素因数分解による署名
    • ECDSA──楕円曲線による署名
    • EdDSA──エドワーズ曲線による署名
  • 暗号鍵
    • 共通鍵暗号の鍵
    • 公開鍵暗号の鍵
    • 暗号鍵の要件
  • 鍵生成
    • 従来の鍵導出手法
    • 拡張マスターシークレット
    • PRF──擬似乱数生成器
    • [colomn]HMACによる乱数生成
    • エントロピーソース──乱雑さの源泉
    • RSAと素数判定
    • 楕円曲線暗号の鍵
    • [colomn]エドワーズ曲線の採用の経緯
  • 鍵管理
    • TLSにおける鍵の管理
    • 鍵の使いまわしの危険性
    • 鍵の秘匿
    • SP800-130と鍵管理ガイドライン
  • 終わりに

第3章 SSL/TLSの各プロトコル詳細──Wiresharkによる解析

  • 検証環境
    • 利用するソフトウェア
    • Docker Composeの導入
    • サーバ,クライアント環境の構築と設定
    • Wiresharkの導入
  • 最も代表的なプロトコル──Handshakeプロトコル
    • ハンドシェイクとは
    • フルハンドシェイクとセッション再開
  • フルハンドシェイクの解析
    • TLS 1.2のフルハンドシェイク
    • TLS 1.3のフルハンドシェイク
  • セッション再開の解析
    • TLS 1.2のセッション再開
    • TLS 1.3のセッション再開
  • その他のプロトコル──Record,ChangeCipherSpec,Alert,Application Dataプロトコル
    • Recordプロトコルの役割
    • ChangeCipherSpecプロトコルの役割
    • Alertプロトコルの役割
    • Application Dataプロトコルの役割
    • TLS 1.2とTLS 1.3の違い
  • TLS 1.3特有の仕組み
    • HRR(Hello Retry Request)
    • Middlebox Compatibility Mode
    • 0-RTT(Early Data)
  • 終わりに

第4章 SSL/TLSの標準規格とPKI

  • 検証環境
    • 利用するソフトウェア
    • OpenSSLを使った実践
  • 符号化とフォーマット
    • ASN.1──通信向けデータ構造記法
    • DER──バイナリ符号化ルール
    • PEM──Base64変換したバイナリデータ
  • PKCS──公開鍵暗号標準
    • PKCS #1──RSA鍵,パディング
    • PKCS #3──DH鍵共有
    • PKCS #5──パスワード暗号化(PBKDF2),ブロック暗号パディング
    • PKCS #7──暗号メッセージフォーマット,パディング
    • PKCS #8──秘密鍵暗号化
    • PKCS #10──証明書署名要求
    • PKCS #11──暗号トークン/HSM
    • PKCS #12──鍵ペアのエクスポート
  • PKI──公開鍵基盤
    • PKIの構成要素
    • 証明書
    • 認証局(CA)
    • 登録局(RA)
    • X.509──PKIの国際標準
    • サーバ証明書とクライアント証明書
    • 証明書チェーン
    • 中間CAとルートCA
  • PKIの利用──証明書のライフサイクル
    • 登録・発行──証明書署名要求(CSR)と単純証明書登録プロトコル(SCEP)
    • 利用・検証──公開鍵と署名検証
    • 失効──証明書失効リスト(CRL)と失効状態の取得プロトコル(OCSP)
    • [colomn]証明書の有効期間について
  • 終わりに

第5章 OpenSSLによるSSL/TLSプログラミング入門

  • 開発環境の構築
    • これから作成するプログラムの概要
    • ビルド環境の構築
    • OpenSSLライブラリの概要
  • フルハンドシェイクの実装
    • クライアント側
    • サーバ側
  • セッション再開の実装
    • クライアント側
    • サーバ側
  • HRRの実装
    • クライアント側
    • サーバ側
  • 0-RTT(Early Data)の実装
    • クライアント側
    • サーバ側
  • 終わりに

第6章 脅威・脆弱性

  • 中間者攻撃──MITM(Man-In-The-Middleattack)
    • 攻撃者の攻撃手法
    • 有効な対策──安全な再ネゴシエーションとクライアント証明書
  • BEAST攻撃──ブロック暗号のIVを狙った攻撃
    • 攻撃者の攻撃手法
    • 有効な対策──ストリーム暗号やTLS 1.1以降の採用
  • パディングオラクル攻撃──ブロック暗号のパディングを狙った攻撃
    • 攻撃者の攻撃手法
    • 有効な対策──メッセージ認証コード(MAC)の付与,Lucky 13攻撃への対策,POODLE攻撃への対策と続く歴史
  • Lucky 13攻撃──タイミング攻撃,暗号アルゴリズムの実行時間に対する攻撃
    • 攻撃者の攻撃手法
    • 有効な対策──認証付き暗号の利用
  • POODLE攻撃──SSL 3.0のパディングチェック方式を狙った攻撃
    • 攻撃者の攻撃手法
    • 有効な対策──SSL 3.0の無効化
  • CRIME攻撃──サイドチャネル攻撃,その他の物理的特性に対する攻撃
    • 攻撃者の攻撃手法
    • 有効な対策──圧縮機能の無効化
  • 危殆化
    • 危殆化の歴史
    • 危殆化対策への考え方──積極的移行と消極的移行
  • 量子コンピュータによる暗号解読の可能性
    • 期待される対策
    • [colomn]脆弱性の管理
  • 終わりに

第7章 性能の測定

  • 性能測定の目的──時代に合わせた選択をするため
    • 性能と安全性の関係
    • 性能と安全性に影響する要素
  • 測定環境の構築
    • Dockerによる構築
    • 測定環境用のスクリプト
  • プロトコルの性能
    • フルハンドシェイクの測定
    • セッション再開の測定
  • 暗号アルゴリズムの性能──AES-GCMとChaCha20-Poly1305の測定
    • ハードウェアサポートの解説──AES-NI,SIMD
    • 測定手順
    • 測定結果の比較と考察
  • 署名,鍵交換の性能
    • 楕円曲線暗号の種類
    • その他の楕円曲線
  • 終わりに

第8章 SSL/TLSが抱える課題と展望

  • 仕様変更と普及の問題
    • 鍵フォーマット
    • FIPS 186-2とFIPS 186-4,そしてFIPS 186-5へ
    • 中国剰余定理──RSAの高速化
    • 楕円曲線暗号にまつわる問題
    • PKCS #8の秘密鍵
    • プロトコルの普及
    • 仕様差が生む問題
    • SSL Pulse──SSL/TLS調査サイトから見える現状
    • 日本におけるWeb通信の暗号化状況
  • PKIにおける課題
    • 証明書運用の問題
    • ワイルドカード証明書──任意ドメインに対する証明
    • SAN──Subject Alternative Name(複数ドメインの証明)
    • クロスルート証明書──中間証明書による別ルート証明書への接続
    • [colomn]Mixed-Content──HTTPSとHTTPの混合コンテンツ
  • 証明書の信頼性
    • EV,OV,DV論争──ドメイン認証,組織認証,拡張認証
    • Let's Encrypt──フリーのSSL/TLS証明書
    • [colomn]Let's Encryptの証明書大量失効
    • CTの現状
    • ルート証明書の信頼性
  • SSL/TLSの展望
    • トラフィックとリソースの爆発的増加
    • 暗号活用の多様化とクリプトアジリティ
    • 耐量子計算機暗号
    • セキュリティとトラストの自動化
    • [colomn]ブロックチェーン
  • 暗号化は必要か
    • 常時暗号化
    • 暗号化への規制
    • 監視社会と暗号
  • 終わりに

サポート

補足情報

(2024年6月6日更新)

本書で利用しているサンプルコードなどは,本書用のGitHubリポジトリからダウンロードできます。

商品一覧