Kerberosは、サードパーティによる信頼された認証サービスに呼び出されます。クライアントはすべて、Kerberosによる他のクライアントが正当かどうかの判断を信頼します。Kerberosは、ユーザとその秘密鍵をすべてデータベースに保管しています。
すべての信用情報を安全に管理するために、認証サーバとチケット保証サーバは、専用のコンピュータ上で稼働させます。また、このコンピュータには、管理者だけが物理的、またはネットワーク経由でアクセスできるようにします。危険性を減らすためにも、このコンピュータ上では必要最低限のネットワークサービスだけが実行するようにしてください。sshdも稼動させてはいけません。
Kerberosを初めて利用する場合の操作は、通常のネットワークシステムへのログイン手順とほとんど変わりありません。ユーザ名を入力します。この情報と、チケット保証サービス(TGS)名が、認証サーバ(Kerberos)に送られます。認証サーバがユーザの存在を確認したら、ランダムなセッションキーが生成されます。このキーを使って、クライアントとチケット保証サーバ間の通信が行われます。次に、認証サーバがチケット保証サーバ用のチケットを用意します。チケットには以下の情報が含まれています。これらの情報はすべて、認証サーバとチケット保証サーバしか知らないセッションキーで暗号化されます。
クライアントとチケット保証サーバの両方の名前
現在の時刻
このチケットの有効期限
クライアントのIPアドレス
新しく生成されたセッションキー
このチケットはセッションキーと一緒に、暗号化されてクライアントに送られます。ただし、今回は暗号化に、クライアントの秘密鍵が用いられます。秘密鍵は、ユーザパスワードから取得されるため、Kerberosとクライアントしか知りません。クライアントがチケットを受け取ると、パスワードの入力を要求するプロンプトが表示されます。このパスワードが、認証サーバから送られてきたパッケージを復号化する鍵に変換されます。パッケージの暗号化が「解除」され、ワークステーションのメモリからはパスワードと鍵が消去されます。チケットの有効期限が切れるまでの間、ワークステーションは自己のIDを証明することができます。
ネットワーク上の任意のサーバにサービスを要求する場合、クライアントアプリケーションは自己のIDをサーバに証明する必要があります。そのため、アプリケーションはオーセンティケータを生成します。オーセンティケータは以下のコンポーネントから成り立っています。
クライアントのプリンシパル
クライアントのIPアドレス
現在の時刻
チェックサム(クライアントが選択)
これらの情報はすべて、クライアントがサーバから受け取ったセッションキーを使って暗号化されます。オーセンティケータとチケットがサーバに送信されます。サーバはセッションキーのコピーを使って、オーセンティケータを復号化します。オーセンティケータには、サービスを要求したクライアントを、チケット内の情報と比較するための情報が含まれています。サーバは、オーセンティケータとチケットが、同じクライアントから送られてきたかどうかを確認します。
サーバ側にセキュリティ手段が実装されていない場合、この段階は再生攻撃の絶好の目標となります。攻撃者は、ネットから傍受した要求メッセージを再送信しようとします。この問題を防止するために、サーバが以前に受け取ったタイムスタンプを持つ要求やチケットは、受け付けられません。また、要求を受け取った時刻と、要求自体のタイムスタンプが大幅に違う要求は無視されます。
Kerberos認証は、双方向に利用することができます。クライアントだけが認証を受ける訳ではありません。サーバ自身も、サービスを要求するクライアントに対して、認証を受けるようにすることができます。この場合、サーバに関する一種のオーセンティケータが送信されます。サーバは、受け取ったクライアントのオーセンティケータ中のチェックサムに情報を追加し、それをクライアントと共有しているセッションキーで暗号化します。クライアントは、受け取ったデータからサーバの認証情報を確認し、その後データのやり取りを行います。
チケットは、1回に1つのサーバと通信することを前提に設計されています。つまり、他のサービスを要求する場合、そのたびに新しいチケットを入手する必要があります。Kerberosでは、個別のサーバのチケットを取得する仕組みが実装されています。このサービスは、「ticket-granting (チケット保証)サービス」と呼ばれています。ticket-grantingサービスは、前述のサービスと同様のサービスで、チケットの入手手順も同じように行われます。チケットを必要とするアプリケーションは、ticket-grantingサーバに問い合わせます。このチケット要求は、以下のコンポーネントから成り立っています。
要求したプリンシパル
ticket-grantingチケット
オーセンティケータ
他のサーバと同様に、ticket-grantingサーバはticket-grantingチケットとオーセンティケータを確認します。これらが有効な場合、ticket-grantingサーバは新しいセッションキーを作成します。このセッションキーは、元のクライアントと新しいサーバ間で利用されます。次に、新規サーバ用のチケットが作成されます。このチケットには、次の情報が含まれています。
クライアントのプリンシパル
サーバのプリンシパル
現在の時刻
クライアントのIPアドレス
新しく生成されたセッションキー
新しいチケットにはライフタイムが割り当てられます。この時間は、ticket-grantingチケットの残りのライフタイムやサービスのデフォルト値よりも短くなります。クライアントは、ticket-grantingサービスから送られてきたチケットとセッションキーを受け取ります。ただし、これらのデータは、元のticket-grantingチケットと一緒に送られたセッションキーで暗号化されています。新サービスへの接続時に、これを使ってサービスからの応答を復号化できるため、ユーザがパスワードを入力する必要はありません。Kerberosは、このような方法でチケットを入手するため、ユーザが毎回ログイン情報を入力する必要はありません。
Windows 2000には、Microsoft版のKerberos 5が含まれています。SUSE Linux EnterpriseŽはMIT版のKerberos 5を利用しているため、詳細情報などはMITのドキュメントを参照してください。詳細については、45.4項 「詳細情報」を参照してください。