オープンネットワークでは、従来から使われているパスワードメカニズムを利用する以外、ワークステーションのユーザを正しく認識、識別する手段はありませんでした。通常のインストールでは、ネットワーク内のサービスにアクセスする場合、ユーザは毎回パスワードを入力する必要があります。Kerberosを利用すれば、ユーザは1回登録するだけで、以降のセッションでネットワーク全体へのアクセスに認証情報を入力する必要がなくなります。ネットワークを安全な状態に保つためには、次の要件を満たしていなければなりません。
すべてのユーザに、各自が利用するサービスに対するIDを証明させ、他のユーザのIDを利用できないようにすること。
それぞれのネットワークサーバも、各自のIDを証明すること。これがない場合、攻撃者がサーバになりすまし、そのサーバに送信される重要な情報が盗まれる危険性があります。この方法は、クライアントがサーバを、サーバがクライアントを相互に認証するため、相互認証と呼ばれます。
これらの要件を満たすには、Kerberosの強力な暗号認証機能を利用します。ここでは、この目的を達成するための、Kerberosの使用方法について説明します。ただし、ここではKerberosの基本的な機能についてのみ取り上げます。技術的な詳細については、Kerberosのマニュアルを参照してください。
ここでは、Kerberosで使われる用語の定義を説明します。
ユーザやクライアントは、サービスを要求する資格があることを証明する、一種の資格情報を提示する必要があります。Kerberosは、チケットとオーセンティケータの2種類の資格情報を知っています。
チケットは、サービスを要求するサーバに対して、クライアントが認証に使用するサーバ単位の資格情報です。チケットには、サーバ名、クライアント名、クライアントのインターネットアドレス、タイムスタンプ、利用期間、およびランダムなセッションキー情報が保管されています。このデータはすべて、サーバのキーを使って暗号化されます。
オーセンティケータはチケットとともに、クライアントが提示したチケットが正しいかどうかを証明するために使われます。オーセンティケータは、クライアント名、ワークステーションのIPアドレス、および現在のワークステーションの時刻などの情報を、サービスを要求するクライアントとサーバだけが知っているセッションキーで暗号化したデータから作成されます。オーセンティケータは、チケットと違い、1回しか使用できません。クライアントは、オーセンティケータ自身を作成することができます。
Kerberosのプリンシパルは、チケットを割り当てることができる一意のエンティティ(ユーザやサービス)です。プリンシパルは次のコンポーネントで構成されます。
プライマリ—プリンシパルの最初の部分で、ユーザの場合はユーザ名になります。
インスタンス—プライマリの特徴を説明するオプション情報。プライマリとこの文字列は、/で区切られます。
レルム—Kerberosのレルムを指定します。通常、レルムはドメイン名を大文字で表したものになります。
Kerberosでは、クライアントとサーバの両方が、互いのIDを確認することができます。クライアントとサーバはセッションキーを共有し、それを使って安全に通信することができます。
セッションキーは、Kerberosが生成する一時的な秘密鍵です。クライアントはセッションキーを使って、チケットを要求したり受け取る場合の、クライアント-サーバ間の通信を暗号化します。
ネットワークに送信されるメッセージは、盗聴、傍受、または改ざんされる危険性があります。Kerberosの場合、攻撃者によりユーザのチケットやオーセンティケータを含むサービス要求が傍受された場合、重大な危険性があります。攻撃者は入手したサービス要求を再送信(再生)して、そのユーザになりすますことができます。ただし、Kerberosにはこのような問題に対処するための、さまざまな機能が実装されています。
サービスは、実行する特定のアクションを表す場合に用いられます。このアクションの背後にあるプロセスのことを、サーバと呼んでいます。