Kerberosの機能

 Kerberosで使用される用語について少し説明したので、以下ではKerberos認証システムの機能を簡単に説明します。

 パスワードを使用してユーザーを認証するような「通常」のネットワーク上では、認証を要するネットワークサービスをユーザーが要求すると、ユーザーはパスワードを入力するように指示されます。 ユーザーのパスワードは平文としてネットワーク経由で送信され、ネットワークサービスに対するアクセスが許可されます。

 前述のように、Kerberosで解決する問題の核心は、ネットワーク経由でパスワードを送信することなく、いかにして認証用パスワードを使用するか、ということです。 kerberos化されたネットワークの場合、Kerberosデータベースにはプリンシパルとその鍵が含まれています(ユーザーの場合、鍵はユーザーのパスワードから導き出されます)。 Kerberosデータベースには、すべてのネットワークサービス用の鍵も含まれています。

 kerberos化されたネットワーク上で、ユーザーが自分のワークステーションにログインすると、ユーザーのプリンシパルがKDC(Key Distribution Center)に送信され、TGT(Ticket Granting Ticket)を要求します。 この要求は、ログインプログラムによって送信したり(この場合ユーザーには透過的です)、ログインした後でユーザーが kinit プログラムを使って送信したりすることができます。

 KDCは、データベース内にプリンシパルが存在するかどうかをチェックします。 プリンシパルが見つかった場合、KDCはTGTを作成し、ユーザーの鍵を使用してそのTGTを暗号化してからユーザーへと返信します。

 ログインプログラムか kinit のどちらかが、ユーザーの鍵(ユーザーのパスワードから計算されます)を使用してTGTを復号化します。 TGT(一定の時間が経過すると有効期限が切れるように設定されています)は、証明書キャッシュの中に保存されます。 有効期間が設定されているため、TGTが盗まれたとしても、使用できるのは一定の時間内(通常は8時間)に限られます。TGTではなくパスワードが盗まれた場合は、そのパスワードを変更するまで自由に使われることと比べてみてください。 TGTの有効期限が切れるか、ログアウトして再度ログインする場合を除くと、ユーザーがパスワードを再入力する必要は生じません。

 ユーザーが認証を必要とするネットワークサービスにアクセスする必要が生じた場合、クライアントがTGTを使って、KDC上で動作するTGS(Ticket Granting Service)に対してそのサービス用のチケットを要求します。 TGSは目的のサービス用のチケットを発行し、そのチケットがユーザーを認証するために使用されます。

 ご承知のように、上記のKerberos認証イベントに関する説明は、簡略化された内容になっています。 Kerberosの機能に関する、より詳しい説明が必要な場合には、the section called 参考情報を参照してください。

Note注意
 

Kerberosは、正しく動作するために特定のネットワークサービスに依存しています。 まず、Kerberosはネットワーク上のマシン群の間で、(厳密ではありませんが、ほぼ正確に)時計の同期が取られていることを必要とします。 ネットワークに対し、時計の同期化プログラムをセットアップする必要があります。 また、Kerberosのある種の側面がDNS(Domain Name Service)に依存しているので、ネットワーク上のDNSエントリとホストが、すべて正しく設定されていることを確認してください。 これらの問題の詳細情報については、PostScript形式とHTML形式で提供されている『Kerberos V5 System Administrator's Guide』( /usr/share/doc/krb5-server-<version-number> にあります)を参照してください。