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