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

5.6. KRB_SAFE Message Specification (KRB_SAFE メッセージ仕様)

5.6. KRB_SAFE Message Specification (KRB_SAFE メッセージ仕様)

本節では, アプリケーションのいずれかの側 (クライアントまたはサーバー) が, ピアに改ざん耐性のあるメッセージを送るために用いるメッセージの形式を規定する。セッション鍵があらかじめ交換されていることを前提とする (例: KRB_AP_REQ / KRB_AP_REP メッセージの使用)。

5.6.1. KRB_SAFE の定義

KRB_SAFE メッセージは, ユーザデータと, サブ鍵の交渉により最後に合意された暗号化鍵で鍵付けされた衝突耐性チェックサム, または交渉が行われていない場合はセッション鍵で鍵付けされたチェックサムを含む。メッセージのフィールドは次のとおり。

   KRB-SAFE        ::= [APPLICATION 20] SEQUENCE {
pvno [0] INTEGER (5),
msg-type [1] INTEGER (20),
safe-body [2] KRB-SAFE-BODY,
cksum [3] Checksum
}
   KRB-SAFE-BODY   ::= SEQUENCE {
user-data [0] OCTET STRING,
timestamp [1] KerberosTime OPTIONAL,
usec [2] Microseconds OPTIONAL,
seq-number [3] UInt32 OPTIONAL,
s-address [4] HostAddress,
r-address [5] HostAddress OPTIONAL
}

pvno および msg-type

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

safe-body

このフィールドは KRB-SAFE メッセージ本体のプレースホルダである。

cksum

このフィールドにはアプリケーションデータのチェックサムが含まれる。鍵使用値 15 で計算する。

チェックサムは KRB-SAFE シーケンスのエンコーディング上で計算する。まず cksum を型ゼロ, 長さゼロの値に設定し, KRB-SAFE シーケンスのエンコーディング上でチェックサムを計算する。次にチェックサムをその計算結果に設定する。最後に KRB-SAFE シーケンスを再度エンコードする。この方法は RFC 1510 で規定されたものとは異なるが, 既存の実装慣行に一致する。

user-data

このフィールドは KRB_SAFE および KRB_PRIV メッセージの一部であり, 送信者から受信者へ渡されるアプリケーション固有のデータを含む。

timestamp

このフィールドは KRB_SAFE および KRB_PRIV メッセージの一部である。内容はメッセージ送信者が知る現在時刻である。タイムスタンプを検査することで, 受信者はメッセージが最近生成されたものでありリプレイではないことを確認できる。

usec

このフィールドは KRB_SAFE および KRB_PRIV ヘッダの一部である。タイムスタンプのマイクロ秒部分を含む。

seq-number

このフィールドは上記セクション 5.3.2 で説明する。

s-address

送信者のアドレス。

このフィールドはメッセージ送信者が使用しているアドレスを指定する。

r-address

このフィールドはメッセージ受信者が使用しているアドレスを指定する。一部の用途 (ブロードキャストプロトコルなど) では省略してもよい (MAY) が, 受信者はそのようなメッセージを任意に拒否してもよい (MAY)。このフィールドと s-address は, 誤配信または悪意による誤った受信者への配送を検出するのに役立てることができる。