Kerberos認証とは、ネットワーク越しでアクセスするユーザーを認証するプロトコルである。仕様は、RFC4120やRFC4121で規定される。マイクロソフトのActive Directoryなどが対応している。

 Kerberos認証では、「チケット」と呼ぶデータを認証に使う。ユーザーがサーバーにアクセスしようとすると、サーバーはアクセス権を持っているユーザーかどうかを判断する。このとき、ID/パスワードといったテキストのアカウント情報で認証を行うと、暗号化しない限り、ネットワーク上にアカウント情報が平文のまま流れてしまう。そこでKerberos認証では、クライアントのIDやタイムスタンプ、有効期限が含まれるチケットと呼ぶデータを使って認証する。こうすることで、アカウント情報を漏洩しにくくする。

 Kerberos認証の仕組みを、Active Directory環境を例にして説明する()。特徴的なのは、2種類のチケットを使う点だ。

図●Active DirectoryでのKerberos認証の例
図●Active DirectoryでのKerberos認証の例
[画像のクリックで拡大表示]

 ユーザーは、アカウント情報やアクセス権を管理するドメインコントローラーで認証を受けると、最初のチケットを受け取る。この後ユーザーがサーバーAにアクセスするときは、ドメインコントローラーに最初のチケットを送信して、サーバーAにアクセスするための第2のチケットを要求する。ドメインコントローラーは、最初のチケットのタイムスタンプや有効期限などを確認し、サーバーへのアクセス権を持ったユーザーなら、サーバーAにアクセスするための第2のチケット(図のチケットA)をユーザーに送信する。ユーザーは受け取ったチケットAをサーバーAに送ることで、アクセス可能になる。

 Kerberos認証では、チケットが盗聴されるとなりすましの被害を受ける可能性がある。これを抑えるために、「時刻同期」という仕組みが用意されている。

 チケットの中には、送信時刻(タイムスタンプ)が記録されていて、チケットを受け取ったサーバーが、チケットのタイムスタンプとそのサーバーの設定時刻とのズレが大きいと認証に失敗するようになっている。例えば、Active Directory環境では、初期設定で5分ずれると認証時にエラーが表示される。