Windows 2000 キーワード

Kerberos

ケルベロス

電子認証局市民ネットワーク福岡(CACAnet Fukuoka)
山崎重一郎

 オープンな分散型ネットワーク環境において、セキュリティを確保するために開発された、安全性と高速性を兼ね備えたユーザー認証システム。歴史的には、X Window Systemの開発で有名なマサチューセッツ工科大学(MIT)のAthena(アテナ)プロジェクトの中で誕生したセキュリティシステムである。Kerberosという名は、Athenaと同様、ギリシャ神話を題材にして付けられたもので、冥界(めいど)の門を守護する、3つの頭部と蛇の尾を持つ犬である(「Athena」はギリシャ神話の女神の名)。セキュリティ システムとしては絶妙のネーミングだろう。Kerberosの仕様は、V4と呼ばれるバージョンの時代から一般に公開されており、最新のKerberos V5については、RFC1510として、現在標準化が進められている。Windows 2000では、インターネットへの接続を前提とした徹底したセキュリティ機能の向上が図られているが、その根幹となるユーザー認証プロトコルとしてKerberos V5が採用されている。

 周知のとおり、インターネットは、通信データの盗聴やなりすましなどが可能なネットワークあり、セキュリティに関する備えが必須である。中でも、ユーザー認証に対する安全性の確保は、セキュリティにとって最も重要なポイントになる。実際、MITのAthenaプロジェクトでも、多くの事故の経験から、必要に迫られてKerberosが開発されたという経緯がある。

 データの盗聴が容易なインターネットでは、通信路に暗号化されていないパスワードを流すような認証方式は非常に問題が多い。また、通信しようとしている相手が誰かの成りすましかもしれないというネットワークの特性を考えると、認証のために相手に渡す情報も慎重に選ばなければならない。こうした問題に対してKerberosでは、KDC(Key Distribution Center)と呼ばれる「信頼できるサイト」をネットワーク内に設置し、このKDCと巧みな暗号技術を駆使することで、安全で効率的なユーザー認証を可能にしている。

システム構成と原理

 ここではKerberos認証における基本的なメカニズムと、その特徴についてまとめておこう。ただし、Kerberosの原理や実装はかなり複雑だが、Windows 2000におけるKerberos認証処理は自動的に行われるので、これを利用するだけのユーザーなら、プロトコルの詳細を意識する必要はない。

 Kerberosによる認証は、「ネットワークへのログオン」と「リソースへのアクセス」の2つのフェーズで行われる。

ネットワークへのログオン

 Kerberosでは、ユーザーはまずネットワークに対してログオンする必要がある。ここでいう「ネットワークへのログオン」とは、具体的には、KDCにアクセスして認証を受ける(そのユーザーが、ネットワークの正当なメンバであることを承認してもらう)ことである。Windows 2000 ServerにはKDCの機能が用意されており、Windowsネットワークでは、ドメイン コントローラがKDCとして機能することになる。

 ユーザーがネットワークへのログオンに成功すると、ユーザーはそのネットワークの正規のユーザーであることが認められ、KDC(ドメイン コントローラ)の配下にあるネットワーク上のサーバや、ネットワーク プリンタなどのリソース群(Kerberosでは、これらを総称してレルム(realm:「国土」という意味)と呼ぶ)にアクセスするための「クレデンシャル(credential、信任状)」と呼ばれるデータが与えられる。クレデンシャルとは、KDCがユーザーに与える信任状であり、その中には「セッション鍵」と「TGT(Ticket-Granting Ticket:チケット保証チケット)」というものが含まれている。ただし、このネットワークへのログオン処理は、まだユーザーの認証が完了したというだけであり、これだけでネットワーク上の各種サービスを利用できる権限が得られたわけではない。

Kerberosにおけるネットワークへのログオン

Kerberosによる認証では、「ネットワークへのログオン」と「リソース アクセス」という2つのフェーズがある。このうち「ネットワークへのログオン」では、ユーザーが自身のユーザーIDとパスワードを入力してKDCにアクセスし、自分がネットワークの正規のユーザーであるという認証を受ける。認証に成功すると、続く「リソース アクセス」を行うために必要となるクレデンシャルがKDCから与えられる。

 Kerberos認証を受けるためのクライアントは、暗号化を含むKerberos認証プロトコルを使ってやり取りできなければならないので、ユーザーのワークステーションやパソコン側にKerberos対応のクライアントシステムが必要になる(このようにKerberos認証に対応したクライアントは「ネイティブ モード クライアント」と呼ばれる)。現時点でKerberos認証に対応しているのは、Windows 2000システムのログオン処理だけである。

Windows 2000のログオン プロンプト

Kerberos認証を受けるためには、クライアント側にもKerberosに対応したソフトウェアが必要になる。Windows 2000のログオン機能はKerberosに対応しており、Kerberos認証を受けることができるようになっている。これに対し従来のWindows 9x/NTクライアントはKerberos対応ではない。これらのクライアントについては、従来どおりの方法(NT 4.0ドメインによる認証)で認証を受けることになる。

 しかし既存のLANを徐々にWindows 2000環境に移行する場合、ネットワーク環境には、ネイティブ モード クライアントではない従来のWindows 9x/NTクライアントが併存することになるだろう。これらのクライアントではKerberosによる認証を受けることはできず、従来のWindows NTドメインネットワークの認証機能(NTLM認証)を利用してネットワーク アクセスを行うことになる。つまり内部的には、2つの認証方式が併存する形式になるが、これらの処理はすべてシステム内部で自動的に行われるので、一般ユーザーがそれを意識することはない。

 一方、Kerberos認証が一般化すれば、Windowsログオンばかりでなく、アプリケーションの中にもKerberosにネイティブに対応するものが登場してくるだろう。たとえば、これまではセキュリティ上の問題から、ファイアウォールの中だけに閉じて運用されていた帳票システムや在庫管理システム、スケジュール管理システムなどのアプリケーション システムは、Kerberosに対応することにより、インターネットを安全に活用できるようになる。今後は、インターネットなどのオープン ネットワークを利用しながら、一定のセキュリティ機能を確保するパッケージソフトウェアも普及するものと考えられる。

 ネットワークログオンが成功してから、認証されている状態が持続する期間(認証が無効になるまでの期間)を「ログオンセッション」という。Kerberosシステムでは、ユーザーのログオンセッションは、KDCがオンラインで管理しているわけではない。代わりに、セッションの有効期間やそのユーザーの正当性の保証情報などはTGTによって管理されている。ログオンセッションの状態管理をKDCで行おうとすると、KDCは常にクライアントとの接続を維持しなければならなくなり、性能上のボトルネックになってしまう可能性があるからだ。これに対してKerberosでは、状態管理を行うための情報をTGTとしてクライアント側に送り、一定条件の元で、クライアントが独自にログオンセッションを維持できるようにしている。この場合でも、TGTはKDCの暗号鍵で暗号化され、クライアント側に送られるため、それを取得したユーザー本人であっても改変することはできない。

リソースへのアクセス

 ネットワークへのログオンに成功したユーザーは、次にサーバーやネットワーク プリンタなど、ネットワーク上に存在する各種のリソースの利用をKDCに対して要求する。このとき、ネットワーク ログオンで入手したクレデンシャルの中のTGTとセッション鍵を使用する。ユーザーがアクセスしたいリソースの名前を指定してKDCにTGTを提示すると、KDCはこのTGTに記載されている有効期限などをチェックしたうえで、そのリソースにアクセスするための「アクセス チケット」と呼ばれるデータを返す。このやり取りは、セッション鍵によって暗号化されているので、安全性が保証されている。

Kerberos認証システムにおけるリソースへのアクセス

ネットワーク上の各種の資源(リソース)にアクセスするには、「ネットワークへのログオン」によって入手したクレデンシャル中のTGTとセッション鍵を使う。利用したいリソース名とこのクレデンシャルをKDCに提示すると、KDCはTGTの有効期限などをチェックしたうえ、そのリソースにアクセスするための「アクセス チケット」と呼ばれるデータを返す。そしてこのアクセス チケットを使用して、リソースへのアクセスを行う。KDCとのやり取りはセッション鍵によってすべて暗号化されているので、安全性が保証されている。

 Kerberosクライアントは、こうして取得したアクセス チケットを使って、目的のリソースにアクセスし、接続を確立する。以上のやりとりによってリソースとユーザーとの間の相互認証が完了する。Windows2000では、このTGTにおけるログオンセッションの有効期間などのポリシーは、[管理ツール]の[ドメイン セキュリティ ポリシー]によって設定できるようになっている。

Windows 2000 Serverの[ドメイン セキュリティ ポリシー]

Windows 2000では、TGTにおけるログオン セッションの有効期限など、Kerberos認証における各種ポリシーの設定を[ドメイン セキュリティ ポリシー]ツール中の「Kerberosポリシー」で設定できるようになっている。チケットの有効期限などを決めることができる。Kerberosでは、時間の同期を暗号化プロトコルの中で利用しているため、2台のシステムの時間のずれが大きすぎると正しく機能しなくなる。ここでは許容される時間のずれの最大値なども設定できる。
  Kerberosに関するセキュリティ設定を確認・変更するにはツリーからここをクリックする。
  左のツリーから[Kerberosポリシー]を選択すると、このようにチケットの有効期限など、Kerberos認証に関する各種設定内容が一覧表示される。

Windows2000 アクティブディレクトリのドメイン管理とKerberos認証

 Kerberos V5は、管理領域間の「信頼関係の推移」プロトコルを備えることによって、ユーザー管理のスケーラビリティを与えている。「推移」とは、たとえばドメインAがドメインBを信頼していて、さらにドメインBがドメインCを信頼していれば、ドメインAは自動的にドメインCを信頼している、という状態を指す。Windows2000では、ActiveDirectoryによって新たに導入された「階層化ドメイン」の構造に沿ったドメイン間の相互認証に、このKerberos V5の相互認証プロトコルが利用されている。これによってWindows 2000では、1回のログオンだけですべてのネットワークリソースにアクセスできる「シングルログオン」が、複数のドメインにまたがって行えるようになる。これによりたとえば、ある社員が別のドメインに属する事業所へ出張したときにも、その場でネットワークに「シングル ログイン」して、いつもどおりに各種のネットワーク資源を利用できるようになる。

Active DirectoryとKerberos認証

Windows 2000では、Active Directoryによって新たに導入された「階層化ドメイン」の構造に沿ったドメイン間の相互認証に、KerberosV5の相互認証プロトコルを利用している。これにより、Active Directoryで管理されたネットワーク環境では、1回のログオンだけで複数のドメインにまたがるすべてのネットワーク リソースにアクセスできる「シングル ログオン」が実現される。Windows 2000のActive Directoryは、Kerberos認証システムを採用することにより、小規模なイントラネットから、エンタープライズ レベルの大規模なものまで、スケーラブルに対応できるようにしている。


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間