この特集のトップページへ

Directory first step 4... ディレクトリサービスを支えるテクノロジ群
sankaku.gif Kerberos

 Kerberosは,MIT(マサチューセッツ工科大学)を中心とする「Athenaプロジェクト」の一環として研究および開発された,ネットワーク認証システムである。1978年にR. Needham氏とM. Schroeder氏によって提唱された「信頼された第三者機関による認証方式」に基づくシステムであり,通信の秘匿やユーザー認証などをすべてDES(対称鍵暗号化方式)のみで実現する。Active Directoryは,Kerberosプロトコルのversion 5.0(RFC1510)に基づくユーザー認証を標準でサポートしている。

 Kerberosでは,ネットワークに参加するコンピュータ(クライアントおよびサーバー)の鍵データを,あらかじめKDC(Key Distribution Center)と呼ばれるサーバーに登録するようになっている。KDCが管理する主体(principal)の集合,すなわちネットワークに参加しているすべてのコンピュータの集合を,Realmと呼ぶ。KDCは,自分の管理しているRealmに所属する主体とその鍵データを管理している。

 Kerberosのユーザー認証は,次のような工程で実現される。たとえば,クライアントがアプリケーションサーバーAにアクセスする場合を考えてみよう。

Fig.9 Kerberosの動作概念
fig09.gif
  1. クライアントはまず,アプリケーションサーバーAに対する「アクセスチケット」を要求するメッセージをKDCに送信する。
  2. アクセスチケットの要求メッセージを受信したKDCは,アクセスチケットとセッション鍵を含む「証明書(クレデンシャルまたは信任状)」をクライアントの公開鍵で暗号化し,これをクライアントに返す。
  3. 証明書を受信したクライアントは,自分の秘密鍵で証明書を復号化し,アクセスチケットとセッション鍵を抽出する。このアクセスチケットは,クライアントがアクセスしようとしているアプリケーションサーバーAの公開鍵で暗号化されている。
  4. クライアントは,抽出したチケット(アプリケーションサーバーAの公開鍵で暗号化されたチケット)をアプリケーションサーバーAに送信する。 チケットを受信したアプリケーションサーバーAは,自分の秘密鍵でチケットを復号化し,クライアントの身元とセッション鍵を抽出したあと,アクセスを許可するメッセージをクライアントに返す。
  5. 認証が完了すると,クライアントとアプリケーションサーバーAは,セッション鍵またはクライアントとアプリケーションサーバーが独自に生成した鍵を使用し,通信メッセージを暗号化して送受信する。

 同じアプリケーションサーバーAにのみアクセスするのであれば,上記の手順を最初に1度だけ実行して認証をすませればよい。しかし,別のサーバーBにアクセスしようとすると,その時点で上記に示した手順を再実行し,今度はサーバーBに対するアクセスチケットを入手することになる。当然ながら,秘密鍵などの入力も必要となり,面倒になる。

 これを解決するために考案されたのが,TGT(Tiket Granting Tiket)とTGS(Tiket Granting Server)を利用する方法である。この方法を利用する場合は,次のような手順でユーザー認証が行われる。

  1. クライアントは起動時にKDCにチケット(TGT)を要求する。
  2. KDCから返されたTGTをメモリ上などにキャッシュしておく。
  3. 実際にアプリケーションサーバーAにアクセスする必要が生じた段階で,TGTを示してKDCからアプリケーションサーバーにアクセスするためのアクセスチケットを取得する。
  4. アクセスチケットを提示して,アプリケーションサーバーAにアクセスする。
Fig.10 Kerberosの動作概念(TGTとTGSを利用する場合)
fig10.gif
prevpg.gif Directory first step(前編) 17/21 nextpg.gif