Active Directoryを使用する企業環境で作業しているときに、Kerberosプロトコルを使用してWindowsサーバー間のネットワークトラフィックを暗号化できるとコメントした人がいるのを耳にしました。これはKerberosで可能ですか?
私の理解はKerberosでした。これは、サーバーが相互に認証できるようにする機能の1つであるネットワーク認証プロトコルです。トークンは暗号化されますが、サーバー間のネットワークトラフィックは、SSL接続などが実装されていない限り暗号化されません。
Kerberosは認証プロトコルとして使用されますが、基本的には鍵の合意/交換プロトコルです。
ユーザーがActive Directoryからアプリケーションサーバーのチケットを取得すると、セッションキーが生成され、リクエストに挿入されます。アプリケーションサーバーはチケットを復号化し、セッションキーを取得します。サーバーはそのキーを信頼しないと判断し、最終的にクライアントに新しい提供されたキーを使用するように指示します。
クライアントとサーバーが鍵について合意すると、それらは非公開で通信できます。
ただし、これには複数の問題があります。 Kerberosの仕様では、データのやり取りを規定していますが、ほとんどの場合、開発者が判断する必要があります。 Windowsには実装がありますが、TLSの場合のようにパラメーターを制御することはできません。これは、開発者がキーを取得し、それを別の何かに導き、別のプロトコルに押し込む傾向があることを意味します。
そうは言っても、おそらく安全な通信のためにKerberosを使用したくないでしょう。安全に機能させるには、コードに多くのボイレプラティングを組み込む必要がありますが、TLSはすでにこのほとんどを処理しています。