5.4. Specifications for the AS and TGS Exchanges (ASおよびTGS交換の仕様)
5.4. Specifications for the AS and TGS Exchanges (ASおよびTGS交換の仕様)
このセクションでは, 認証サービス (AS) 交換とチケット発行サービス (TGS) 交換で使用されるメッセージの詳細な仕様を定義します。
5.4.1. KRB_KDC_REQ Definition (KRB_KDC_REQ定義)
KRB_KDC_REQは, AS-REQとTGS-REQの両方の基本構造です。
メッセージ構造
KDCへの要求メッセージには以下が含まれます:
- pvno: プロトコルバージョン番号 (Kerberos V5では5)
- msg-type: メッセージタイプ (AS-REQは10, TGS-REQは12)
- padata: 事前認証データのシーケンス (オプション)
- req-body: 要求の本体
要求本体 (KDC-REQ-BODY)
要求本体には以下の情報が含まれます:
- kdc-options: KDCオプションフラグ
- cname: クライアントプリンシパル名 (AS-REQの場合, TGS-REQではオプション)
- realm: サービスのレルム
- sname: サービスプリンシパル名 (オプション)
- from: 要求された開始時刻 (オプション)
- till: 要求された有効期限
- rtime: 要求された更新期限 (オプション)
- nonce: リプレイ攻撃を防ぐためのランダム値
- etype: クライアントがサポートする暗号化タイプのリスト
- addresses: クライアントのアドレス (オプション)
- enc-authorization-data: 暗号化された認可データ (オプション)
- additional-tickets: 追加のチケット (オプション, TGS-REQで使用)
5.4.2. KRB_KDC_REP Definition (KRB_KDC_REP定義)
KRB_KDC_REPは, AS-REPとTGS-REPの両方の基本構造です。
メッセージ構造
KDCからの応答メッセージには以下が含まれます:
- pvno: プロトコルバージョン番号 (5)
- msg-type: メッセージタイプ (AS-REPは11, TGS-REPは13)
- padata: 事前認証データのシーケンス (オプション)
- crealm: クライアントのレルム
- cname: クライアントプリンシパル名
- ticket: 発行されたチケット
- enc-part: 暗号化された部分
暗号化部分 (EncKDCRepPart)
クライアントの鍵で暗号化された部分には以下が含まれます:
- key: セッション鍵
- last-req: 最後の要求の時刻情報 (AS-REPのみ)
- nonce: 要求からのnonce (リプレイ保護)
- key-expiration: 鍵の有効期限 (オプション)
- flags: チケットフラグ
- authtime: 初期認証の時刻
- starttime: チケットの有効開始時刻 (オプション)
- endtime: チケットの有効期限
- renew-till: 更新可能期限 (オプション)
- srealm: サービスのレルム
- sname: サービスプリンシパル名
- caddr: クライアントアドレス (オプション)
AS交換とTGS交換の違い
AS交換 (Authentication Service Exchange)
- クライアントの長期鍵を使用します
- 事前認証が必要な場合があります
- TGT (Ticket-Granting Ticket) を発行します
- last-reqフィールドを含みます
TGS交換 (Ticket-Granting Service Exchange)
- TGTを使用して認証します
- additional-ticketsフィールドを使用できます
- サービスチケットを発行します
- ユーザー間認証をサポートします (ENC-TKT-IN-SKEYオプション)
鍵使用値 (Key Usage)
AS交換とTGS交換では, 異なる鍵使用値が使用されます:
- AS-REQ事前認証: 鍵使用値に応じて異なる
- AS-REP暗号化部分: 鍵使用値 3
- TGS-REQ Authenticator: 鍵使用値 7
- TGS-REP暗号化部分: 鍵使用値 8
セキュリティ考慮事項
実装者は以下に注意すべきです:
- Nonce検証: 応答のnonceが要求と一致することを確認する必要があります (MUST)
- タイムスタンプ検証: タイムスタンプが現在時刻の許容範囲内にあることを確認すべきです (SHOULD)
- 暗号化タイプ: 強力な暗号化タイプを使用すべきです (SHOULD)
- 事前認証: AS交換では事前認証を使用すべきです (SHOULD)
完全な仕様とASN.1定義については, RFC 4120のセクション5.4を参照してください。