| タイトルおよびコピーライト情報 |
| まえがき |
| 本書の対象読者 |
| 本書の構成 |
| 参考資料 |
| 表記法 |
| 1 | プログラマ向けセキュリティ機能の概要 |
| 1.1 | セキュリティ・プログラミングの概要 |
| 1.1.1 | TCB ファイルの保護 |
| 1.1.2 | セキュア・アプリケーション |
| 1.2 | ライブラリとヘッダ・ファイル |
| 1.3 | 標準のトラステッド・システム・ディレクトリ |
| 1.4 | セキュリティに関連するシステム・コールとライブラリ・ルーチン |
| 1.4.1 | システム・コール |
| 1.4.2 | ライブラリ・ルーチン |
| 2 | トラステッド・プログラミング技法 |
| 2.1 | SUID プログラムと SGID プログラムの書き方 |
| 2.2 | エラー処理 |
| 2.3 | ファイルの保護 |
| 2.4 | 安全な探索パスの指定 |
| 2.5 | シグナルへの応答 |
| 2.6 | 子プロセスでのオープン・ファイル記述子の使用 |
| 2.7 | X 環境でのセキュリティ上の考慮事項 |
| 2.7.1 | キーボード入力の保護 |
| 2.7.2 | キーボードおよびマウスのイベントのブロック |
| 2.7.3 | デバイス関連イベントの保護 |
| 2.8 | シェル・スクリプトの保護 |
| 3 | 認証データベース |
| 3.1 | 認証データベースの概要 |
| 3.1.1 | デバイス割り当てデータベース (devassign) |
| 3.1.2 | ファイル制御データベース |
| 3.1.3 | システム省略時設定データベース (default) |
| 3.1.4 | エンハンスト (保護) パスワード・データベース |
| 3.1.5 | 端末制御データベース |
| 3.2 | 認証データベースの構成要素 |
| 3.2.1 | データベースの形式 |
| 3.2.2 | データベースの読み取りと書き込み |
| 3.2.2.1 | バッファ管理 |
| 3.2.2.2 | 名前または ID でのエントリの読み取り |
| 3.2.2.3 | エントリの順次読み取り |
| 3.2.2.4 | システム省略時設定の使用 |
| 3.2.2.5 | エントリの書き込み |
| 3.3 | 認証データベースのアクセス |
| 4 | 識別と認証 |
| 4.1 | 監査 ID |
| 4.2 | 識別サポート・ライブラリ |
| 4.3 | デーモンの使用 |
| 4.4 | エンハンスト (保護) パスワード・データベースの使用 |
| 4.4.1 | 例:パスワードの有効期限出力プログラム |
| 5 | 監査レコードの生成 |
| 5.1 | 監査レコードの概要 |
| 5.2 | 監査イベント |
| 5.3 | 監査レコードとトークン |
| 5.3.1 | パブリック・トークン |
| 5.3.2 | プライベート・トークン |
| 5.4 | 監査フラグとマスク |
| 5.5 | 現プロセスのシステム・コール監査の無効化 |
| 5.6 | 現プロセスのシステム・コールの監査の変更 |
| 5.7 | アプリケーション固有の監査レコード |
| 5.8 | サイト定義イベント |
| 5.8.1 | サンプルの site_events ファイル |
| 5.8.2 | 例: サイト定義監査イベントの監査レコードの生成 |
| 5.9 | 独自の監査ログの作成 |
| 5.10 | 監査ログの解析 |
| 5.10.1 | 監査ログのフォーマットの概要と共通タプルのリスト |
| 5.10.2 | トークンおよびタプルのバイト記述 |
| 5.10.3 | タプルの解析 |
| 6 | SIA インタフェースの使用 |
| 6.1 | SIA の概要 |
| 6.2 | SIA のアーキテクチャ |
| 6.2.1 | ライブラリ |
| 6.2.2 | ヘッダ・ファイル |
| 6.3 | SIA システムの初期設定 |
| 6.4 | SIAENTITY 構造体 |
| 6.5 | SIA パラメータの収集 |
| 6.6 | 状態の保守 |
| 6.7 | SIA のリターン値 |
| 6.8 | SIA のデバッグとログ |
| 6.9 | SIA のセキュリティ・メカニズムの統合 |
| 6.10 | SIA セッション処理 |
| 6.10.1 | セッションの初期化 |
| 6.10.2 | セッションの認証 |
| 6.10.3 | セッションの確立 |
| 6.10.4 | セッションの起動 |
| 6.10.5 | セッションの解放 |
| 6.10.6 | 特定のセッション処理 |
| 6.10.6.1 | login プロセス |
| 6.10.6.2 | rshd プロセス |
| 6.10.6.3 | rlogind プロセス |
| 6.11 | セキュア情報の変更 |
| 6.11.1 | ユーザのパスワードの変更 |
| 6.11.2 | ユーザの finger 情報の変更 |
| 6.11.3 | ユーザのシェルの変更 |
| 6.12 | セキュリティ情報へのアクセス |
| 6.12.1 | /etc/passwd 情報へのアクセス |
| 6.12.2 | /etc/group 情報へのアクセス |
| 6.13 | セッション・パラメータの収集 |
| 6.14 | SIA 製品のパッケージ |
| 6.15 | セキュリティ・メカニズムに依存するインタフェース |
| 6.16 | シングルユーザ・モード |
| 6.17 | SIA ルーチンのシンボル優先使用 |
| 6.17.1 | シンボル優先使用の問題の概要 |
| 6.17.2 | Tru64 UNIX での解決方法 |
| 6.17.3 | シングルユーザ環境の置き換え |
| 7 | ACL のプログラミング |
| 7.1 | ACL の概要 |
| 7.2 | ACL のデータ表現 |
| 7.2.1 | 内部データ表現 |
| 7.2.1.1 | typedef struct acl *acl_t; |
| 7.2.1.2 | typedef struct acl_entry *acl_entry_t; |
| 7.2.1.3 | typedef uint_t acl_type_t; |
| 7.2.1.4 | typedef uint acl_tag_t; |
| 7.2.1.5 | typedef uint_t acl_perm_t; |
| 7.2.1.6 | typedef acl_perm_t *acl_permset_t; |
| 7.2.1.7 | 連続内部表現 ACL |
| 7.2.2 | 外部表現 |
| 7.3 | ACL ライブラリ・ルーチン |
| 7.4 | ACL の規則 |
| 7.4.1 | オブジェクトの作成 |
| 7.4.2 | ACL の複製 |
| 7.4.3 | ACL の有効性 |
| 7.5 | ACL の作成例 |
| 7.6 | ACL の継承例 |
| 8 | GSS-API |
| 8.1 | GSS-API の概要 |
| 8.1.1 | GSS-API の前提条件 |
| 8.1.2 | 詳細情報 |
| 8.2 | Application Security SDK |
| 8.3 | Application Security SDK 関数 |
| 8.3.1 | 名前管理関数 |
| 8.3.1.1 | 省略時の名前と構文 |
| 8.3.2 | 信任状管理関数 |
| 8.3.2.1 | 初回信任状の取得 |
| 8.3.2.1.1 | 開始側のアプリケーション |
| 8.3.2.1.2 | 受け入れ側のアプリケーション |
| 8.3.2.1.3 | DES3 |
| 8.3.2.2 | 信任状の属性 |
| 8.3.2.3 | 信任状の格納場所 |
| 8.3.2.4 | 信任状関連リソースの管理 |
| 8.3.3 | セキュリティ・コンテキスト管理関数 |
| 8.3.3.1 | メカニズムの識別 |
| 8.3.3.2 | トークンの交換 |
| 8.3.3.3 | オプションのセキュリティ手段 |
| 8.3.3.3.1 | チャネル・バインディング |
| 8.3.3.3.2 | 機密性と完全性 |
| 8.3.3.3.3 | リプレイ検出 |
| 8.3.3.3.4 | 順序外メッセージ検出 |
| 8.3.3.3.5 | 相互認証 |
| 8.3.3.3.6 | 暗号化タイプ: DES と DES3 |
| 8.3.3.3.7 | 信任状の委任 |
| 8.3.3.4 | 対象とするセキュリティ手段の指定 |
| 8.3.4 | メッセージ関数 |
| 8.3.4.1 | Quality of Protection |
| 8.3.5 | その他のサポート関数 |
| 8.3.5.1 | OID と OID セット |
| 8.3.5.1.1 | OSI |
| 8.3.5.1.2 | ASN.1 |
| 8.3.5.1.3 | オブジェクト識別子 |
| 8.3.5.1.4 | OID セット |
| 8.3.6 | V1 準拠関数 |
| 8.4 | ベスト・プラクティス |
| 8.4.1 | マルチ・スレッディング |
| 8.4.2 | キャッシュ管理 |
| 8.4.3 | 暗号化タイプ |
| 8.4.4 | セキュリティ・コンテキストのエクスポート |
| 8.4.5 | GSS と Kerberos 5 による鍵管理 |
| 8.4.6 | マルチ・スレッド関数 |
| 8.4.7 | 相互認証 |
| 8.4.8 | パスワードの保護 |
| 8.4.9 | リプレイの防止 |
| 8.4.10 | 信任状のリフレッシュ |
| 8.4.11 | リソース管理 |
| 8.4.12 | サービス鍵テーブル・ファイル |
| 8.4.13 | チケット属性 |
| 8.4.13.1 | 転送可能チケット |
| 8.4.13.2 | 事前認証 |
| 8.4.13.3 | チケットの存続期間 |
| 8.4.13.4 | チケットの延長期限 |
| 8.4.13.4.1 | 存続期間と延長の設定に関する一般的な規則 |
| 8.5 | 移植性のあるアプリケーションの構築 |
| 8.5.1 | 表示可能な名前の使用と名前の比較 |
| 8.5.2 | メカニズムの指定 |
| 8.5.3 | Quality of Protection (QOP) の指定 |
| 8.5.4 | 省略時の名前 |
| 8.6 | クリック・リファレンス |
| 8.6.1 | リファレンス・ページの表記規則 |
| 8.7 | 定数 |
| 8.8 | データ構造体 |
| 8.8.1 | gss_channel_bindings_t |
| 8.8.2 | gss_buffer_t |
| 8.8.3 | csf_gss_opts_t |
| 8.9 | リターン値 |
| 8.9.1 | 定義されているステータス・コード |
| 8.9.2 | エラー処理マクロ |
| 8.9.2.1 | GSS_ERROR( ) |
| 8.9.2.2 | GSS_CALLING_ERROR( ) |
| 8.9.2.3 | GSS_ROUTINE_ERROR( ) |
| 8.9.2.4 | GSS_SUPPLEMENTARY_INFO( ) |
| 8.9.3 | メジャー・ステータス |
| 8.9.4 | マイナー・ステータス |
| 8.9.5 | Kerberos 固有のコード |
| A | コーディング例 |
| A.1 | 再認証プログラムのソース・コード (sia-reauth.c) |
| A.2 | スーパユーザ認証プログラムのソース・コード (sia-suauth.c) |
| B | 監査可能イベントとエイリアス |
| B.1 | 省略時の監査可能イベント・ファイル |
| B.2 | イベント・エイリアス・ファイルのサンプル |
| C | GSS-API チュートリアル |
| C.1 | セキュリティの基礎 |
| C.1.1 | 基本概念 |
| C.1.2 | Kerberos セキュリティ・モデル |
| C.1.2.1 | 定義 |
| C.1.2.2 | 概念と処理手順 |
| C.1.2.2.1 | 共有秘密 |
| C.1.2.2.2 | 信用できる第三者による調停 |
| C.1.2.2.3 | Kerberos ネットワーク |
| C.1.2.2.4 | 認証までの 3 つの段階 |
| C.1.2.2.5 | 認証サービス・メッセージの交換 |
| C.1.2.2.6 | チケット・グランティング・サービス・メッセージの交換 |
| C.1.2.2.7 | アプリケーション間のメッセージの交換 |
| C.1.2.3 | 信任状の属性 |
| C.2 | はじめに |
| C.3 | 基本的な GSS-API 関数の使用 |
| C.4 | 手順 1: 名前の取得 |
| C.5 | 手順 2: 信任状の取得 |
| C.6 | 手順 3: セキュリティ・コンテキストの確立 |
| C.7 | 手順 4: メッセージの交換 |
| C.7.1 | gss_get_mic( ) と gss_verify_mic( ) の使用 |
| C.7.2 | gss_wrap( ) と gss_unwrap( ) の使用 |
| C.8 | 手順 5: セキュリティ・コンテキストの終了 |
| C.9 | 高度な概念 |
| C.9.1 | 初回信任状の取得 |
| C.9.2 | 必要な時刻同期 |
| C.9.3 | DES3 暗号化の使用 |
| C.10 | GSS-API 関数のステータス・コード |
| C.10.1 | マイナー・ステータス・コード |
| C.11 | サンプル・プログラム |
| C.11.1 | サンプル・プログラムのビルド |
| C.11.2 | サンプル・プログラムの実行 |
| C.11.2.1 | 前提条件 |
| C.11.2.2 | サンプル・プログラムの設定 |
| C.11.2.3 | サーバのコマンド行スイッチ (省略可能) |
| C.11.2.4 | クライアントのコマンド行スイッチ (省略可能) |
| C.11.3 | サンプル・プログラムの出力 |
| C.11.4 | トラブルシューティングのガイドライン |
| 例 |
| 4-1 | パスワードの有効期限出力プログラム |
| 6-1 | SIAENTITY 構造体 |
| 6-2 | sia.h でのパラメータ収集インタフェースの定義 |
| 6-3 | 一般的な /var/adm/sialog ファイル |
| 6-4 | login コマンドのセッション処理 |
| 6-5 | シングルユーザ環境のシンボル優先使用 |
| 8-1 | 文字列の入った構造体を指す定数 |
| 8-2 | 文字列を指す定数 |
| A-1 | 再認証プログラム |
| A-2 | スーパユーザ認証プログラム |
| 図 |
| 6-1 | SIA の階層構造 |
| 6-2 | SIA セッション処理 |
| 表 |
| 1-1 | 標準のトラステッド・システム・ディレクトリ |
| 1-2 | セキュリティに関連するシステム・コール |
| 1-3 | セキュリティに関連するライブラリ・ルーチン |
| 5-1 | 大半の監査レコードに共通する省略時のタプル |
| 5-2 | トークンおよびタプルのバイト記述 |
| 6-1 | セキュリティを扱うオペレーティング・システム・コマンド |
| 6-2 | SIA のメカニズム非依存ルーチン |
| 6-3 | SIA のメカニズム依存ルーチン |
| 7-1 | ACL エントリの外部表現 |
| 索引 |