kerberosは、ネットワークへのユーザー認証をする為、対称鍵暗号法を用いた、MITで開発されたネットワーク認証プロトコルです。 —ネットワーク上でパスワードを送る必要がなくなります。Kerberosを使用してネットワークサービスにユーザーを認証すると、 認証のないユーザーが、ネットワークのトラフィックを監視してパスワードを取り込もうとしても適切に阻止されます。
従来のネットワークシステムのほとんどはパスワードベースの認証体系を使用しています。この様な認証体系は、特定の ネットワークサーバにユーザーがユーザー名とパスワードを供給して認証を得る手続きを要求します。残念ながら多くの サービス内で認証情報の送信は暗号化されていません。この様な認証体系を安全にする為には、ネットワークが外部から アクセス不可能にし、そのネットワーク上の全てのコンピュータとユーザーは信頼できて、信頼する価値を持つ必要が あります。
この様にしたケースでさえも、インターネットに接続されてしまうと、そのネットワークはもう安全でない 可能性があります。アクセスを取得するアタッカーは、簡単なパケット解析(パケットスニッファとも呼ぶ)を使用し、 上述の方法で転送されたユーザー名とパスワードを盗み取り、ユーザーアカウントと全体のセキュリティ基盤が 被害を受けます。
Kerberosのおもな設計目標は、ネットワーク経由で送信されるプレーンテキストのパスワードを無くすと言う事です。 Kerberosを適切に使用することで、パケットスニッファが与えるネットワーク上の脅威を効率的に抹消します。
Kerberosにより、一般的で、極度のセキュリティ脅威は除去できますが、 さまざまな理由により、Kerberosを実装することは難しいことがあります:
/etc/passwdや/etc/shadowといった、 標準的なUNIXパスワードデータベースからKerberosパスワードデータベースへとユーザーの パスワードを移行するのは、単調な作業となる可能性があります。というのは、この移行を 自動的に実行するメカニズムが存在しません。これに関する詳細は、以下のURLでオンライン 「Kerberos FAQ」の中の質問番号 2.23を参照して下さい:
Kerberosは、Red Hat Linuxを実行するほとんどのサーバーで使用されているPAM(Pluggable Authentication Modules) システムとの互換性を部分的にしか持っていません。この問題の詳細については、項17.4を 参照してください。
アプリケーションにおいてKerberosを使用するためには、Kerberosのライブラリを 正しくコールするために、アプリケーションのソースを修正しなければいけません。 アプリケーションによっては、アプリケーションサイズ、又はその設計の為に深刻な 問題になることがあります。その他の互換性のないアプリケーションには、サーバと クライアント側が通信出来るように変更する必要があります。ここでも又、広範囲に 及ぶプログラミングが必要になります。デフォルトではkerberosをサポートしていない クローズドソースアプリケーションと併用することもしばしば問題となります。
Kerberosでは、信用できるユーザーが信用できないネットワーク上で信用できないホストを 使用していることを想定します。Kerberosの第一目標は、プレーンテキストのパスワードがその ネットワーク経由で送信されないようにすることです。ただし、不正なユーザーがいずれかのホスト、 — 特にkey distribution center(KDC)— と呼ばれる認証のためのチケットを発行するホストにアクセスしていると、Kerberosの認証システム全体が 被害を受ける危険性があります。
Kerberosは「ALL or Nothing」のソリューションです。ネットワークでKerberosを使用することに 決めた場合には、Kerberosによる認証を使用しないサービスにパスワードを送付すると、パケットスニッファーに 奪われる危険を犯す事を忘れないで下さい。そうなると、ネットワークでKerberosを使用するメリットはまったくありません。 Kerberosによってネットワークを保護するためには、プレーンテキストのパスワードを送信するクライアント/サーバ アプリケーションをすべてkerberos化するか、ネットワークにおいて このように不安定なアプリケーションの使用をやめるか、どちらかを行わなければいけません。