ケルベロス認証は、ネットワーク
認証プロトコルの一つであり、特にシングルサインオン(SSO)システムを提供する上で重要な役割を果たします。
1989年から利用されており、
マサチューセッツ工科大学(MIT)のAthenaプロジェクトによって開発されました。現在もMITで保守されており、その仕様はRFC 4120で標準化されています。
Microsoftの
Active Directoryにおける推奨
認証機構であり、macOSではHeimdalによって実装されています。名称はギリシャ神話の番犬
ケルベロスに由来しますが、発音は英語では「カーバラス」に近いものとなります。
プロトコル概要
構造
ケルベロス認証を運用する組織は、独自の「レルム」を構築します。レルムに属するマシンやサービスは「プリンシパル」と呼ばれます。レルムには、KDC(Key Distribution Center、鍵配送センター)という権限者が存在し、KDCはAS(Authentication Server、
認証サーバ)とTGS(Ticket Granting Server、チケット発行許諾サーバ)という二つのサーバで構成されています。
手順
1.
初期認証: ユーザーがレルムにログインする際、クライアント端末からIDとパスワードで
認証を受けます。
認証に成功すると、クライアント端末はパスワードから秘密鍵Kを生成します。クライアントはユーザーIDを平文でASに送信し、ASは自身のデータベースでユーザーの秘密鍵Kを取得します。
2.
TGTの発行: ASは、TGT(Ticket Granting Ticket、チケット発行許諾チケット)とクライアント/TGSセッション鍵を、秘密鍵Kで
暗号化してクライアント端末とTGSに送信します。TGTは、TGSからチケットを受け取るための大元となるチケットであり、クライアント/TGSセッション鍵は、チケットを受け取る際に使用するセッション鍵です。バージョン4では、共通鍵
暗号として56bit DES
暗号が用いられます。
3.
サービスチケットの取得: ユーザーがプリンシパルAのサービスを利用したい場合、クライアント端末はTGTをAのサービス利用希望とともにTGSに送信します。この通信は、クライアント/TGSセッション鍵で
暗号化されます。TGSはTGTの正当性を検証し、Aのサービス利用許可証である「チケット」と、Aとの通信で使用するセッション鍵をクライアント端末に送信します。
4.
サービス利用: クライアント端末は、チケットを(セッション鍵で
暗号化して)プリンシパルAに送信することで、Aのサービスを利用できるようになります。
特徴
ケルベロス認証では、ユーザーがIDとパスワードを使用するのは、最初にASから
認証を受ける時のみです。その後の
認証には、TGTが使用され、パスワードの漏洩リスクを低減します。また、TGTを直接プリンシパルに送信するのではなく、TGSを通じてサービス利用のためのチケットを発行することで、
なりすましによる不正利用を防いでいます。
歴史
ケルベロス認証は、
1980年代にMITのAthenaプロジェクトの研究プロジェクトとして始まりました。クライアントサーバモデルを想定して設計され、ネットワーク
認証のために開発されました。初期のバージョンでは、
認証サーバと他の
コンピュータ間の
認証情報のやり取りを
暗号化することで、経路上での
盗聴を防ぎました。
バージョン3まではMIT内部でのテストに使用され、
1989年1月24日にバージョン4が初めて外部に公開されました。バージョン4は、DESを使用していたため、アメリカの
暗号化ソフトウェア輸出規制に抵触しました。そのため、MITの開発チームは、
暗号化コードを取り除いた「Bones」を作成しました。その後、
オーストラリアのエリック・ヤングがDES実装を追加した「eBones」を開発し、アメリカ国外でもバージョン4が合法的に使用できるようになりました。
その後、セキュリティ強化と機能追加を行ったバージョン5が開発され、RFC 1510で文書化され、後にRFC 4120に置き換えられました。
関連項目
アイデンティティ管理
脚注
出典
外部リンク
MITのページ
RFC 1510: Kerberos ネットワーク認証サービス v5
Kerberos FAQ v2.0