【書籍】プロフェッショナルSSL/TLS

   このエントリをはてなブックマークに登録    2017/3/15-1

一昨年、「インターネットのカタチ」や「マスタリングTCP/IP」を手がけた編集者の鹿野さんが、オーム社を退職して技術書を扱う、ラムダノート株式会社という出版社を起業しました。 鹿野さんの会社が発売する最初の書籍である「プロフェッショナルSSL/TLS」と「RubyでつくるRuby」(参考:書籍『Ruby でつくる Ruby』が発売されます)が今朝発売開始されています。

「プロフェッショナルSSL/TLS」は、TLS(Transport Layer Security)の背景となる理論やプロトコルだけではなく、過去に発生したプロトコル上の脆弱性、運用上の脆弱性、実装上の脆弱性なども解説してあります。Webブラウザの問題も紹介されています。後半は、Apache、Tomcat、IIS、Nginx、などの設定方法の紹介です。

編集者であり技術者な鹿野さん

「プロフェッショナルSSL/TLS」を出版したラムダノート株式会社を立ち上げた鹿野さんは、職業は編集者ですが、どちらかというとプログラマ的な人です。

鹿野さんとの最初の出会いは2002年でした。当時、鹿野さんは「マスタリングTCP/IP RTP編」の監訳をする人を探していました。当時、私はRTPでDV(Digital Video)を転送するシステムを実装したり、そのプロトコルのRFC化(RFC 3189RFC 3190)をしていたので、鹿野さんから監訳のオファーが来たのです。鹿野さん自身も既に忘れてしまったようですが、多分、ここら辺の記事などを見たのだろうと思います(参考1参考2参考3)。

2003年にRTP本は出版され、その後、鹿野さんとは特に連絡もしていなかったのですが、私が当時匿名でやっていたこのブログで退職報告および自己紹介をしたところ、「読んでました!」という連絡をもらって会いに行きました。その後、「インターネットのカタチ」と「マスタリングTCP/IP OpenFlow編」を鹿野さんと一緒に作りました。

鹿野さんが一般的な編集者と違うのは、鹿野さん自身が業務時間外に出版支援システムを自作してMITライセンスでフリーソフトとして公開し、それを使いつつ著者と一緒に書籍を作って来た点です。 鹿野さんとの書籍制作では、私がsvnでcommitするとPDFが自動生成されたので、最終的なアウトプットが常に意識しつつ執筆活動ができました。

一般的なIT書籍出版の流れと、鹿野さんと一緒にやったときの流れの違いは、2011年に書いた以下の記事をご覧ください。

書籍原稿のフォーマットも他社と全く違ってました。「インターネットのカタチ」の時はLaTeX、「マスタリングTCP/IP OpenFlow編」のときにはXMLでした。 編集者による赤入れまでLaTeXやXMLで行われるのも面白かったです。

鹿野さんによる赤入れも結構マニアックで、編集者とやりとりしているというよりは、どちらかというと共著者かレビューアとやりとりしているような気分にもなります。 そんな鹿野さんは、「いま必要だけど存在していない」という方向性の深いIT系の書籍に対する想いも強く、本当に作りたい書籍を作るために独立して新しい出版社を立ち上げてしまいました。

そして、鹿野さんが立ち上げた出版社が世に出した最初の書籍のひとつが「プロフェッショナルSSL/TLS」なのです。

電子書籍はTLS 1.3対応のバージョンアップ予定

鹿野さんは、発売した後もバージョンアップしたいという目標も持っています。

「プロフェッショナルSSL/TLS」も、そういった想いが反映されており、購入した読者がバージョンアップした電子版を入手できるようになっています。

「プロフェッショナルSSL/TLS」の書籍サイトには、以下のようにあります。

TLS 1.3対応について

TLSプロトコルの現行バージョンはTLS 1.2です。しかし、IETFではTLS 1.3の標準化が進行中であり、本年中にRFCの改訂が予定されています。
本書の内容は現行のTLS 1.2に対応した解説となっていますが、すでに原著者のIvan氏がTLS 1.3に向けた改稿を開始しており、原書の"Bulletproof SSL and TLS"もTLS 1.3対応版へのバージョンアップが予定されています。
翻訳版でも、原書に追随してTLS 1.3対応へのバージョンアップを今後予定しています。本書を購入いただき、ラムダノートのサイトでユーザ登録をしていただいた方には、TLS 1.3対応版の刊行時に電子版について無償アップグレードを予定しています(紙書籍のお取替えはできません)。

一般的な出版であれば、第2版としてTLS 1.3に対応した別の書籍として発売するのではなく、既に購入済みの読者に対して無償アップグレードを提供するということを最初から公言しているのが鹿野さんらしいです。

目次

「プロフェッショナルSSL/TLS」の目次は次のようになっています。

第1章 SSL/TLS と暗号技術
  1.1 Transport Layer Security
  1.2 ネットワークの階層
  1.3 プロトコルの歴史
  1.4 暗号技術

第2章 プロトコル
  2.1 Record プロトコル
  2.2 Handshake プロトコル
  2.3 鍵交換
  2.4 認証
  2.5 暗号化
  2.6 再ネゴシエーション
  2.7 Application Data プロトコル
  2.8 Alert プロトコル
  2.9 接続を閉じる
  2.10 暗号処理
  2.11 暗号スイート
  2.12 拡張
  2.13 プロトコルの限界
  2.14 プロトコルのバージョンによる相違

第3章 公開鍵基盤
  3.1 インターネットPKI
  3.2 証明書の標準
  3.3 証明書
  3.4 証明書チェーン
  3.5 証明書利用者
  3.6 CA
  3.7 証明書のライフサイクル
  3.8 失効
  3.9 弱点
  3.10 ルートCA証明書の鍵の危殆化
  3.11 エコシステムの観測
  3.12 改善

第4章 PKI に対する攻撃
  4.1 VeriSign 社のMicrosoft 社に対するコード署名証明書
  4.2 Thawte 社とlogin.live.com
  4.3 StartCom 社のセキュリティ侵害(2008年)
  4.4 CertStar(Comodo社)のMozilla 証明書
  4.5 偽造RapidSSL 証明書
  4.6 Comodo社のリセラーのセキュリティ侵害
  4.7 StartCom 社のセキュリティ侵害(2011年)
  4.8 DigiNotar 社
  4.9 DigiCert Sdn. Bhd
  4.10 Flame
  4.11 TURKTRUST社
  4.12 ANSSI
  4.13 インド情報工学センター
  4.14 広範囲に及ぶTLS の傍受
  4.15 CNNIC

第5章 HTTPおよびブラウザの問題
  5.1 サイドジャッキング
  5.2 クッキー窃取
  5.3 クッキー書き換え攻撃
  5.4 HTTPSストリッピング
  5.5 MITM証明書
  5.6 証明書の警告
  5.7 セキュリティインジケーター
  5.8 混在コンテンツ
  5.9 EV証明書
  5.10 証明書の失効

第6章 実装の問題
  6.1 証明書の検証における欠陥
  6.2 乱数生成における欠陥
  6.3 Heartbleed
  6.4 FREAK
  6.5 Logjam
  6.6 プロトコルダウングレード攻撃
  6.7 強制切断攻撃
  6.8 デプロイにおける弱点

第7章 プロトコルに対する攻撃
  7.1 安全でない再ネゴシエーション
  7.2 BEAST
  7.3 圧縮サイドチャネル攻撃
  7.4 Lucky 13
  7.5 RC4の弱点
  7.6 トリプルハンドシェイク攻撃
  7.7 POODLE
  7.8 Bullrun

第8章 デプロイ
  8.1 鍵
  8.2 証明書
  8.3 プロトコルの設定
  8.4 暗号スイートの設定
  8.5 サーバの設定とアーキテクチャ
  8.6 セキュリティ上の問題への緩和策
  8.7 ピンニング
  8.8 HTTP

第9章 パフォーマンス最適化
  9.1 遅延と接続の管理
  9.2 TLS プロトコルの最適化
  9.3 DoS攻撃

第10章 HSTS、CSP、ピンニング
  10.1 HSTS
  10.2 CSP
  10.3 ピンニング

第11章 OpenSSL
  11.1 ことはじめ
  11.2 鍵と証明書の管理
  11.3 設定
  11.4 プライベートCAを作る

第12章 OpenSSLによるテスト
  12.1 SSL/TLS のサービスに接続する
  12.2 SSL/TLS 利用へと昇格するプロトコルを試す
  12.3 異なる形式のハンドシェイクを使う
  12.4 リモートの証明書を取得する
  12.5 対応しているプロトコルを調べる
  12.6 対応している暗号スイートを調べる
  12.7 SNI を要求するサーバを調べる
  12.8 セッションの再利用を調べる
  12.9 OCSPによる失効を確認する
  12.10 OCSPステープリングを調べる
  12.11 CRLの失効を調べる
  12.12 再ネゴシエーションを調べる
  12.13 BEAST脆弱性を調べる
  12.14 Heartbleed を調べる
  12.15 DHパラメータの強度を見極める

第13章 Apacheの設定
  13.1 静的なOpenSSLを使ってApache をインストールする
  13.2 TLS を有効にする
  13.3 TLS プロトコルの設定
  13.4 鍵と証明書の設定
  13.5 複数の鍵を設定する
  13.6 ワイルドカード証明書とマルチサイト証明書
  13.7 仮想セキュアホスティング
  13.8 エラーメッセージ用にデフォルトサイトを予約する
  13.9 PFS
  13.10 OCSPステープリング
  13.11 DHE鍵交換の設定
  13.12 TLS セッションの管理
  13.13 クライアント認証
  13.14 プロトコルの問題を低減する
  13.15 HSTSの導入
  13.16 セッションキャッシュの状態をモニターする
  13.17 ネゴシエーションしたTLS パラメータをログに残す
  13.18 mod_sslhaf による高度なログ

第14章 Java およびTomcatの設定
  14.1 Java における暗号の構成要素
  14.2 Tomcat

第15章 Microsoft WindowsおよびIIS の設定
  15.1 Schannel
  15.2 Microsoft ルート証明書プログラム
  15.3 設定
  15.4 ASP.NET のWebアプリケーションを安全にする
  15.5 IIS

第16章 Nginxの設定
  16.1 OpenSSLソースコード利用のNginx のインストール
  16.2 TLS を有効にする
  16.3 TLS プロトコルの設定
  16.4 鍵と証明書の設定
  16.5 複数の鍵を設定する
  16.6 ワイルドカード証明書とマルチサイト証明書
  16.7 仮想セキュアホスティング
  16.8 エラーメッセージ用にデフォルトのサイトを使う
  16.9 PFS
  16.10 OCSPステープリング
  16.11 DHE鍵交換の設定
  16.12 ECDHE鍵交換の設定
  16.13 TLS セッションの管理
  16.14 クライアント認証
  16.15 プロトコルの問題への対策
  16.16 HSTSのデプロイ
  16.17 TLS バッファの調整
  16.18 ロギング

第17章 まとめ
   このエントリをはてなブックマークに登録