メインコンテンツまでスキップ

5.8. KRB_CRED Message Specification (KRB_CRED メッセージ仕様)

5.8. KRB_CRED Message Specification (KRB_CRED メッセージ仕様)

本節では, あるプリンシパルから別のプリンシパルへ Kerberos クレデンシャルを送るために用いるメッセージの形式を規定する。チケットの転送や下位サーバーへのプロキシ提供時にアプリケーションが共通の機構を用いることを促すためにここに示す。セッション鍵がすでに交換されていることを前提とする。KRB_AP_REQ / KRB_AP_REP メッセージによる場合もある。

5.8.1. KRB_CRED の定義

KRB_CRED メッセージは, 送付するチケットの列と, 各チケットを使用するために必要な情報 (それぞれのセッション鍵を含む) を含む。チケット使用に必要な情報は, あらかじめ交換された暗号化鍵, または KRB_CRED メッセージとともに転送された鍵の下で暗号化される。メッセージのフィールドは次のとおり。

   KRB-CRED        ::= [APPLICATION 22] SEQUENCE {
pvno [0] INTEGER (5),
msg-type [1] INTEGER (22),
tickets [2] SEQUENCE OF Ticket,
enc-part [3] EncryptedData -- EncKrbCredPart
}
   EncKrbCredPart  ::= [APPLICATION 29] SEQUENCE {
ticket-info [0] SEQUENCE OF KrbCredInfo,
nonce [1] UInt32 OPTIONAL,
timestamp [2] KerberosTime OPTIONAL,
usec [3] Microseconds OPTIONAL,
s-address [4] HostAddress OPTIONAL,
r-address [5] HostAddress OPTIONAL
}
   KrbCredInfo     ::= SEQUENCE {
key [0] EncryptionKey,
prealm [1] Realm OPTIONAL,
pname [2] PrincipalName OPTIONAL,
flags [3] TicketFlags OPTIONAL,
authtime [4] KerberosTime OPTIONAL,
starttime [5] KerberosTime OPTIONAL,
endtime [6] KerberosTime OPTIONAL,
renew-till [7] KerberosTime OPTIONAL,
srealm [8] Realm OPTIONAL,
sname [9] PrincipalName OPTIONAL,
caddr [10] HostAddresses OPTIONAL
}

pvno および msg-type

これらのフィールドは上記セクション 5.4.1 で説明する。msg-type は KRB_CRED である。

tickets

これらは意図された受信者が使用するために KDC から取得したチケットである。連続するチケットは, KRB-CRED メッセージの enc-part にある対応する KrbCredInfo シーケンスと対になる。

enc-part

このフィールドは EncKrbCredPart シーケンスのエンコーディングを保持する。送信者と意図された受信者が共有するセッション鍵の下で暗号化し, 鍵使用値は 14 である。この暗号化されたエンコーディングが KRB-CRED メッセージの enc-part フィールドに用いられる。

実装ノート: 特定のアプリケーションの実装, 特に Kerberos GSS-API メカニズムの一部の実装では, 送信中に KRB-CRED メッセージの EncKrbCredPart の内容を別途暗号化しない。これらの GSS-API メカニズムでは, 全体の KRB-CRED メッセージ自体が暗号化メッセージに埋め込まれるため, セキュリティ上の脆弱性にはならない。

nonce

実用的であれば, アプリケーションはメッセージの受信者が生成した nonce の含有を要求してもよい (MAY)。同じ値がメッセージ内の nonce として含まれていれば, メッセージが新規であり攻撃者によるリプレイでないことの証拠となる。nonce は決して再利用してはならない (MUST NEVER)。

timestamp および usec

これらのフィールドは KRB-CRED メッセージが生成された時刻を指定する。時刻はメッセージが新規であることの保証に用いられる。

s-address および r-address

これらのフィールドは上記セクション 5.6.1 で説明する。KRB-CRED メッセージの完全性に対する追加の保証を任意に提供するために用いられる。

key

このフィールドは KRB-CRED メッセージで渡される対応するチケットに存在し, 送信者から意図された受信者へセッション鍵を渡すために用いられる。フィールドのエンコーディングはセクション 5.2.9 で説明する。

以下のフィールドはオプションである。存在する場合, リモートのチケットファイル内のクレデンシャルに関連付けられる。省略された場合, クレデンシャルの受信者はすでにそれらの値を知っているとみなす。

prealm および pname

委任されたプリンシパル識別のレルムおよび名前。

flags, authtime, starttime, endtime, renew-till, srealm, sname, caddr

これらのフィールドは ticket フィールドにあるチケットの対応するフィールドの値を含む。フィールドの説明は KDC-REP メッセージの説明と同一である。