4. Encryption and Checksum Specifications (暗号化とチェックサムの仕様)
4. Encryption and Checksum Specifications (暗号化とチェックサムの仕様)
このドキュメントで説明されているKerberosプロトコルは, ストリームまたはブロック暗号を使用して, 任意のサイズのメッセージを暗号化するように設計されています。暗号化は, メッセージ交換に参加するネットワークエンティティのアイデンティティを証明するために使用されます。各レルムのKey Distribution Center (KDC, 鍵配布センター) は, そのレルムに登録されているすべてのプリンシパルによって, 秘密鍵を信頼して保存すると信頼されています。この秘密鍵の知識の証明は, プリンシパルの真正性を検証するために使用されます。
KDCは, プリンシパルの秘密鍵 (AS交換の場合) または共有セッション鍵 (TGS交換の場合) を使用してチケット要求への応答を暗号化します。秘密鍵またはセッション鍵を取得する能力は, 適切な鍵の知識とKDCのアイデンティティを暗示します。プリンシパルがKDC応答を復号化し, チケットと適切に形成されたAuthenticator (KDC応答からのセッション鍵で生成された) をサービスに提示する能力は, プリンシパルのアイデンティティを検証します。同様に, サービスがチケットからセッション鍵を抽出し, 応答でその知識を証明する能力は, サービスのアイデンティティを検証します。
RFC 3961は, Kerberosで使用する暗号化およびチェックサムメカニズムを定義するためのフレームワークを定義しています。また, いくつかのそのようなメカニズムも定義しており, そのドキュメントの将来の更新でさらに追加される可能性があります。
RFC 3961によって提供される文字列から鍵への (string-to-key) 操作は, プリンシパル (通常はユーザー) の長期鍵を生成するために使用されます。事前認証データを介して提供されない場合, デフォルトのソルト文字列は, プリンシパルのレルムと名前コンポーネントを順番に連結したもので, セパレーターはありません。特に指定されない限り, RFC 3961で定義されているデフォルトの文字列から鍵への不透明パラメーターセットが使用されます。
暗号化されたデータ, 鍵, およびチェックサムは, セクション5.2.9で定義されたEncryptedData, EncryptionKey, およびChecksumデータオブジェクトを使用して送信されます。このドキュメントで説明されている暗号化, 復号化, およびチェックサム操作は, RFC 3961で説明されている対応する暗号化, 復号化, およびget_mic操作を使用し, 各EncryptedDataまたはChecksumオブジェクトの説明で指定された "key usage" 値を使用した暗黙的な "specific key" 生成により, 各操作の鍵を変化させます。場合によっては, 使用される値は鍵の選択方法またはメッセージのコンテキストに依存することに注意してください。
鍵使用値 (Key usage) は符号なし32ビット整数です。ゼロは許可されません。Kerberosメッセージを暗号化またはチェックサムするための鍵使用値は, セクション5でメッセージ定義とともに示されています。鍵使用値512-1023は, Kerberos実装内部での使用のために予約されています (例えば, セッション鍵と他の目的で使用されない鍵使用値で何かを暗号化して生成された値で疑似乱数生成器をシードする場合)。鍵使用値1024から2047 (両端を含む) は, アプリケーション使用のために予約されています。アプリケーションは, この範囲内で暗号化に偶数値を, チェックサムに奇数値を使用すべきです (SHOULD)。鍵使用値は, セクション7.5.1の表にも要約されています。
RFC 1510暗号化タイプまたはチェックサムタイプの観点からプロトコルを定義する他のドキュメントが存在する可能性があります。これらのドキュメントは鍵使用値について知りません。これらの仕様が更新されるまで意味を持ち続けるために, 鍵使用値が指定されていない場合, 鍵使用値1024と1025をそれぞれ暗号化とチェックサムの鍵を導出するために使用しなければなりません (MUST) (これは, Kerberos認証交換から得られた鍵を直接使用して, このフレームワークとは独立に独自の暗号化を行うプロトコルには適用されません)。Kerberos暗号化およびチェックサムタイプの観点から定義された新しいプロトコルは, 独自の鍵使用値を使用すべきです (SHOULD)。
特に指定されない限り, ある暗号化操作から別の暗号化操作への暗号状態チェーンは行われません。
実装上の注意: 推奨されませんが, 一部のアプリケーションプロトコルは, 既存のプロトコル仕様でのみであっても, 鍵データを直接使用し続けます。一般的なKerberosアプリケーションをサポートすることを目的とした実装は, したがって, RFC 3961で説明されている属性と操作だけでなく, 鍵データを利用可能にする必要がある場合があります。直接暗号化を実行する最も一般的な理由の1つは, (特定のアプリケーションのコンテキストで) "十分に強力な" 暗号化アルゴリズムの交渉と選択を直接制御することです。Kerberosは認証交換に参加するエンティティ間で暗号化タイプを交渉するための機能を直接提供しませんが, RFC 4537はこの目的のための拡張を定義しています。