C/C++セキュアプログラミングクックブック VOLUME 2

―対称鍵暗号の実装

[cover photo]
TOPICS
クックブック , Programming , Security , C/C++
発行年月日
PRINT LENGTH
320
ISBN
4-87311-213-3
原書
Secure Programming Cookbook for C and C++
FORMAT
Print
3,300円
この商品は品切れ再入荷未定です

ネットワークにおけるセキュリティ問題の大半はソフトウェアに原因があります。堅牢なソフトウェアを開発するには専門的な知識が必要であり、その習得はプログラマにとって急務の課題であるといえます。 本書はWindowsならびにLinuxを含むUnixプラットフォームで、セキュアなプログラムをC/C++で記述するためのテクニックを一問一答形式でわかりやすく解説します(全3巻)。プログラミングの際に遭遇する問題を網羅し、そのまま使えるサンプルコードを豊富に収録した本書は、すべてのプログラマにとって必携の書となることでしょう。 このVOLUME2では「対称暗号」「ハッシュ」「メッセージ認証」「乱数」など、対称暗号の基礎とそのセキュアな応用方法を扱います。「VOLUME1〜基本的な実装テクニック」、「VOLUME3〜公開鍵暗号の実装とネットワークセキュリティ」とあわせて読めば、広範で高度なセキュリティの知識をマスターすることができます。

目次

監訳者まえがき
まえがき
はじめに

1章 対称暗号の基礎
	レシピⅡ-1.1 暗号アルゴリズムで使用される鍵を表現する
	レシピⅡ-1.2 ランダムな対称鍵を生成する
	レシピⅡ-1.3 バイナリ鍵(およびその他の生データ)を16進数で表す
	レシピⅡ-1.4 16進形式の鍵(または他の16進数データ)をバイナリ形式に変換する
	レシピⅡ-1.5 Base64エンコーディングを行う
	レシピⅡ-1.6 Base64デコードを行う
	レシピⅡ-1.7 鍵(または他のバイナリデータ)を英語テキストとして表す
	レシピⅡ-1.8 テキストの鍵をバイナリの鍵に変換する
	レシピⅡ-1.9 ソルト、ナンス、初期化ベクトルを使用する
	レシピⅡ-1.10 パスワードから対称鍵を導出する
	レシピⅡ-1.11 基になる1つの秘密からアルゴリズムによって対称鍵を生成する
	レシピⅡ-1.12 1つの縮小文字セットで暗号化する
	レシピⅡ-1.13 鍵素材を安全に管理する
	レシピⅡ-1.14 暗号プリミティブの処理速度を測る

2章 対称暗号
	レシピⅡ-2.1 複数の暗号化アルゴリズムを使用すべきか
	レシピⅡ-2.2 暗号化アルゴリズムの中から最適なものを選択する
	レシピⅡ-2.3 適切な鍵長を選択する
	レシピⅡ-2.4 暗号モードを選択する
	レシピⅡ-2.5 生のブロック暗号を利用する
	レシピⅡ-2.6 CBCモードの汎用的な実装を利用する
	レシピⅡ-2.7 CFBモードの汎用的な実装を使用する
	レシピⅡ-2.8 OFBモードの汎用の実装を使用する
	レシピⅡ-2.9 CTRモードの汎用の実装を使用する
	レシピⅡ-2.10 CWCモードを使用する
	レシピⅡ-2.11 暗号パディングを手作業で追加および検査する
	レシピⅡ-2.12 OFB、CTR、CCM、CWCモード(またはストリーム暗号)の鍵ストリームを事前計算する
	レシピⅡ-2.13 互換性を保ちながら並列処理の可能なモードで暗号化あるいは復号化を並列処理する
	レシピⅡ-2.14 互換性を保たずに、任意のモードの暗号化および復号化を並列処理する
	レシピⅡ-2.15 ファイルやディスクの暗号化を行う
	レシピⅡ-2.16 エラー耐性のある高水準の暗号化APIおよび復号化APIの使用
	レシピⅡ-2.17 OpenSSLで(CBC、CFB、OFB、ECBモード用に)ブロック暗号のセットアップを行う
	レシピⅡ-2.18 OpenSSLで鍵長が可変の暗号を使用する
	レシピⅡ-2.19 CBCモードのOpenSSLで暗号パディングを使用不可にする
	レシピⅡ-2.20 OpenSSLで暗号の追加セットアップを行う
	レシピⅡ-2.21 OpenSSLの暗号コンフィギュレーション特性を問い合わせる
	レシピⅡ-2.22 OpenSSLで低水準の暗号化または復号化を行う
	レシピⅡ-2.23 RC4をセットアップして使用する
	レシピⅡ-2.24 ワンタイム(使い捨て)パッドを使用する
	レシピⅡ-2.25 MicrosoftのCryptoAPIによる対称暗号を利用する
	レシピⅡ-2.26 生の鍵データからCryptoAPIの鍵オブジェクトを生成する
	レシピⅡ-2.27 CryptoAPI鍵オブジェクトから生の鍵データを取り出す

3章 ハッシュとメッセージ認証
	レシピⅡ-3.1 ハッシュおよびMACの基礎を理解する
	レシピⅡ-3.2 メッセージダイジェストまたはMACを複数サポートをするかどうかを決定する
	レシピⅡ-3.3 暗号ハッシュのアルゴリズムを選択する
	レシピⅡ-3.4 メッセージ認証コードを選ぶ
	レシピⅡ-3.5 データをインクリメンタルにハッシュする
	レシピⅡ-3.6 1つの文字列をハッシュする
	レシピⅡ-3.7 暗号ハッシュを使用する
	レシピⅡ-3.8 ナンスを使って誕生日攻撃を防ぐ
	レシピⅡ-3.9 メッセージの完全性検査
	レシピⅡ-3.10 HMACを使用する
	レシピⅡ-3.11 OMAC(ブロック暗号ベースのシンプルなMAC)を使用する
	レシピⅡ-3.12 HMACまたはOMACに対してナンスを使用する
	レシピⅡ-3.13 ソフトウェアおよびハードウェアで適度に高速なMACを使用する
	レシピⅡ-3.14 ソフトウェア速度を最適化したMACを使用する
	レシピⅡ-3.15 ブロック暗号からハッシュ関数を作成する
	レシピⅡ-3.16 ブロック暗号を使って最大強度のハッシュ関数を作成する
	レシピⅡ-3.17 小さいMACタグを使用する
	レシピⅡ-3.18 暗号化とメッセージ完全性を同時に実現する
	レシピⅡ-3.19 独自のMACを作成する
	レシピⅡ-3.20 ハッシュ関数で暗号化する
	レシピⅡ-3.21 MACを安全に認証する(取り込みリプレイ攻撃を防ぐ)
	レシピⅡ-3.22 MACを並列処理する

4章 乱数
	レシピⅡ-4.1 使用する乱数の種類を決定する
	レシピⅡ-4.2 汎用APIによる乱数性とエントロピーの実現方法
	レシピⅡ-4.3 Unix標準の乱数インフラストラクチャを使用する
	レシピⅡ-4.4 Windows標準の乱数インフラストラクチャを使用する
	レシピⅡ-4.5 アプリケーションレベルのジェネレータを使用する
	レシピⅡ-4.6 擬似乱数ジェネレータを再シードする
	レシピⅡ-4.7 エントロピー収集デーモンを使用する――互換性のある解決法
	レシピⅡ-4.8 EGADSを使ってエントロピーまたは擬似乱数を取得する
	レシピⅡ-4.9 OpenSSLの乱数APIを使用する
	レシピⅡ-4.10 ランダムな整数を取得する
	レシピⅡ-4.11 特定の範囲のランダムな整数を取得する
	レシピⅡ-4.12 一様分布の浮動小数点値を取得する
	レシピⅡ-4.13 非一様分布の浮動小数点値を取得する
	レシピⅡ-4.14 印字可能なランダムなASCII文字列を取得する
	レシピⅡ-4.15 公平にシャッフルする
	レシピⅡ-4.16 エントロピーを含むデータを固定サイズのシードに圧縮する
	レシピⅡ-4.17 起動時にエントロピーを取得する
	レシピⅡ-4.18 乱数の統計的テスト
	レシピⅡ-4.19 エントロピーの評価と管理を行う
	レシピⅡ-4.20 キーボードからエントロピーを収集する
	レシピⅡ-4.21 マウスイベントからエントロピーを収集する(Windows)
	レシピⅡ-4.22 スレッドのタイミングからエントロピーを収集する
	レシピⅡ-4.23 システム状態からエントロピーを収集する

索引