Kerberos(ケルベロス、発音:/ˈkɜrbərəs// "kur-ber-uhs")は、コンピュータネットワークの認証プロトコルであり、ネットワーク上で安全にユーザーやサービスの身元を検証するために設計された仕組みです。たとえば、Gmail のユーザであるモハメドハサン(例示)とサービス側(サーバーの)がお互いのアイデンティティを確認できるように、安全な通信を実現します。Kerberos は、当初マサチューセッツ工科大学(MIT)で開発され、同大学から提供されているフリーソフトウェアのスイートとしても広く利用されています。
基本概念
Kerberos は、安全でないネットワーク上を移動するパケットが読み取られ、変更され、挿入されることを前提に、暗号や共有秘密を用いて、信頼された第三者による認証を提供します。主に対称鍵を用いる設計で、中央に配置された鍵配布センター(KDC: Key Distribution Center)を必要とします。必要に応じて、Kerberos の拡張で公開鍵暗号の技術を一部の段階で用いることも可能です。
主要コンポーネント
- クライアント:認証を受けるユーザーまたはアプリケーション(例: モハメドハサン)。
- サーバ(サービス):利用したいリソースやサービスを提供する側。
- KDC(鍵配布センター):認証を行う中心的なサーバで、通常は Authentication Server (AS) と Ticket Granting Server (TGS) の役割を持ちます。
- チケット(Ticket):クライアントがサービスに対して提示する認証情報。暗号化され、有効期限やセッション鍵を含みます。
- セッション鍵:クライアントとサービス間での通信を保護するために一時的に生成される鍵。
認証の基本的な流れ(簡略)
- クライアントは AS に対して認証要求を送る(通常はユーザー名など)。
- AS はクライアントを検証し、クライアントに Ticket Granting Ticket(TGT) とセッション鍵を返す。TGT は TGS にのみ復号可能な形式で暗号化されている。
- クライアントは TGT を用いて TGS に対してサービスチケットの発行を要求する。
- TGS はサービス用のチケット(およびサービスとのセッション鍵)を発行する。
- クライアントはサービスにチケットを提示し、サービスはチケットを検証してクライアントを認可する。
セキュリティ上の特徴
- 相互認証:クライアントとサービスの両方が互いに正当であることを確認できます(中間者攻撃の抑止)。
- リプレイ防止:タイムスタンプやノンス(nonce)を用いて、過去のメッセージの再利用(リプレイ攻撃)を防ぎます。
- 一時鍵(セッション鍵):長期鍵をそのまま使わず、短命のセッション鍵を用いることで露見時のリスクを限定します。
実装・応用
代表的な実装には MIT Kerberos や Heimdal、商用では Microsoft の Active Directory(Kerberos を採用)があり、クライアント-サーバー型の認証基盤として広く使われています。ファイル共有(NFSv4)、ディレクトリサービス(LDAP)、SSH の GSSAPI 経由認証、シングルサインオン(SSO)など、多くのサービスと統合可能です。
制約と運用上の注意点
- 時刻同期:Kerberos はタイムスタンプを用するため、クライアント・サーバ間の時刻同期が必須(通常は数分以内のズレ許容)です。
- KDC の単一障害点:KDC が利用不可になると認証ができなくなるため冗長化や保護が必要です。
- 長期鍵の保護:ユーザーのパスワードやサービスの長期鍵が破られると、チケット発行の偽造やパスワード推測攻撃につながります。
- 暗号方式の選択:古いバージョンや設定では時代遅れの暗号が使われている場合があり、適切な暗号スイートへの更新が必要です。
拡張と歴史
Kerberos はバージョン4からバージョン5へと改良され(現在の標準は RFC 4120 に基づく Kerberos v5)、認証の特定の段階で公開鍵暗号の使用を可能にする PKINIT のような拡張もあります。また、クロスレルム認証(異なる Kerberos レルム間での認証)や委任(delegation)など、企業環境で必要な機能も備えています。
まとめると、Kerberos は中央の KDC とチケットベースの仕組みによって、安全な相互認証とシングルサインオンを実現する広く普及した認証プロトコルです。運用には時刻同期や鍵の保護といった注意点が伴いますが、適切に構成された環境では高い利便性とセキュリティを提供します。