Kerberosで保護されたネットワーク上のプリントサーバーにコマンドを送信するとします。そのために、私はKDCに対して自分自身を認証し、TGTを取得してから、プリントサーバー用のTGSから別のチケットを取得します。次に、プリントサーバーに対して自分自身を認証し、セッションキーで署名された印刷コマンドを送信します。しかし、誰かがネットワークでリッスンしていて、私が送信したコマンドを盗聴した場合、何が原因でプリントサーバーに再生され、同じセッションで印刷した同じファイル(同じセッションキー)を印刷できないのでしょうか。解決策は、プリントサーバーに送信するすべてのコマンドに対してTGSから新しいチケット(つまり、新しいセッションキー)を取得することですが、これはKerberosプロトコルでは必要ないと思いますか?
これはオーセンティケーターによって停止されます。 Kerberosチケットを提示するときは常に、セッションキーを使用して暗号化され、(他の情報とともに)タイムスタンプを含む認証子が必要です。サーバーは、タイムスタンプが最新であること(Kerberos 4では「5分以内」を意味します。5では設定可能ですが、5分がデフォルトです)、および以前にその認証システムを見たことがないことを確認します。オーセンティケーターはセッションキーに依存するだけなので、クライアントが生成できます。チケットを送信するたびに新しい認証システムが作成されます。
「同じセッションを使用している場合」に答えるために、基本的なKerberosプロトコルしないで処理します。 Kerberosは、その中心で、接続を開くユーザーを認証します。これ以上何もする必要はありません。アプリケーションプロトコルは、それが重要である場合、それ以上のメッセージの保護を処理する責任があります。 Kerberosはこれを行う2つの方法を提供します。または、アプリケーションプロトコルが使用するすべてのシステムに認証からデータを提供できますが、アプリケーションプロトコルは、初期認証以外にKerberosを使用する必要はありません。その後のすべては、アプリケーションプロトコルに依存します。
Kerberosには、最初のメッセージ以外に、Kerberosで保護された通信のための2つのオプションがあります(1つは認証、もう1つは暗号化と認証)。アプリケーションプロトコルmay後の通信を保護するためにそれらを使用しますが、必須ではありません。これらは両方とも、タイムスタンプまたはシーケンス番号、あるいはその両方を使用して、リプレイを防止します。シーケンス番号は、ドロップされたメッセージとメッセージの並べ替えから保護しますが、タイムスタンプはそれが問題にならない場合でも許容されます(ただし、遅延メッセージは拒否されるため、攻撃者がメッセージを遅延させることはできません)が、どちらも再生を防止します。
悪意のあるユーザーがプリントサーバーへのデータストリームを改ざんすることが懸念される場合は、プリントサーバープロトコルを定義してKRB_SAFE
またはKRB_PRIV
(それぞれ「認証のみ」または「暗号化および認証」を使用するように定義できます。 ");どちらもリプレイから保護します。または、オーセンティケータからサブセッションキーを事前共有キーとして受け取り、リプレイ保護を備えた他のシステムを使用することもできます。 PSKが機能すると思われるサブセッションキーを使用したTLS-PSKプロトコル(TLSはリプレイアタックから保護します)。重要なのは、Kerberosは本質的にそのような再生から保護しないということです。なぜなら、Kerberosは残りの通信を行う方法について何も述べていないからです。認証後の通信への攻撃から保護するには、KerberosのKRB_SAFE
またはKRB_PRIV
を使用するか、その通信を保護する別の方法を使用する必要があります。