タイトルおよびコピーライト情報 |
まえがき |
本書の対象読者 |
本書の構成 |
参考資料 |
表記法 |
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 エントリの外部表現 |
索引 |