AUTHENTICATION / SINGLE SIGN-ON
Kerberos認証とは?KDC・TGT・サービスチケットの流れを図で理解する
会社のパソコンに一度ログインすると、毎回パスワードを入力しなくてもファイルサーバや社内サービスが利用できることがあります。この仕組みを支える代表的な認証プロトコルが Kerberos(ケルベロス) です。難しそうな用語を覚える前に「誰が、どのチケットを、誰に渡すか」を順番に見ていきましょう。
TGTは「サービスチケットを発行してもらうための引換券」。サービスチケットは「特定のサービスに本人を証明するためのチケット」です。TGTをそのままファイルサーバに出すわけではありません。
1. Kerberosが必要になる場面
営業担当者がPCにログインし、共有フォルダから見積書を開く場合を考えます。毎回ファイルサーバへパスワードを送る仕組みは管理が大変です。そこで信頼された第三者が身元を確認してチケットを発行し、サービス側はそのチケットを検証します。
2. 用語を整理:KDC・AS・TGS・TGT
| 用語 | 何をする? | たとえると |
|---|---|---|
| KDC | 鍵配布センター。ASとTGSを提供 | チケットセンター全体 |
| AS | 利用者を認証し、TGTを発行 | 最初の受付 |
| TGS | TGTなどを確認し、サービスチケットを発行 | 行き先別の窓口 |
| TGT | TGSにサービスチケットを求める資格情報 | 引換券 |
| サービスチケット | 特定サービスに提示する暗号化された資格情報 | 入館券 |
| 認証子(Authenticator) | セッション鍵を持つ本人であることを時刻情報等で示す | 券の持ち主である証明 |
| セッション鍵 | 利用者とTGS/サービスが共有する一時的な鍵 | 本人確認のための共通の秘密 |
WindowsのActive Directory環境では通常、ドメインコントローラーがKDCの役割を担います。ASとTGSは別々のサーバである必要はなく、KDCの機能上の役割です。
3. 3段階の通信を図で追う
Kerberos V5の代表的な処理は、AS交換、TGS交換、アプリケーションサーバとの交換に分けられます。矢印の向きと、渡すチケットに注目しましょう。
本人認証とTGTの取得
パスワードそのものはネットワークへ送らない。通常、事前認証などを使って秘密鍵を知ることを証明する。
サービス用チケットを取得
TGTを再利用し、ファイルサーバ向けのチケットを取得する。別のサービスには別のチケットを要求する。
サーバにログイン
サービスは自分の秘密鍵でチケットを復号し、セッション鍵で認証子を検査する。
上記は概念図です。実際の暗号化対象や鍵の受け渡し、事前認証、チケットの更新には詳細な仕様があります。
4. チケットには何が入る?なぜ盗まれると危険?
サービスチケットには利用者の識別情報、有効期間、セッション鍵などが含まれ、重要な部分はサービス側の秘密鍵で暗号化されています。サーバはそのチケットを復号し、別途渡された認証子をセッション鍵で検証します。
盗まれたチケットだけでは通常、正しい認証子を作れません。一方、チケットと対応するセッション鍵など利用可能な資格情報一式が漏れると、不正利用の危険が生じます。時刻やリプレイキャッシュによる対策もありますが、資格情報の窃取そのものを防ぐことが重要です。
5. なぜパスワードを毎回入力しなくてよいのか
最初のログインでTGTを取得した後は、有効期間中、別のサービスにアクセスするときもTGTを使ってTGSから新しいサービスチケットを受け取れます。これがKerberosによるシングルサインオン(SSO)の基本です。
ただし、チケットを持っていることはアクセス権が必ずあることを意味しません。認証(誰なのか)と認可(何をしてよいか)は別の判断です。
6. KerberosとNTLM、SAMLの違い
| 方式 | 主な仕組み | 利用場面 |
|---|---|---|
| Kerberos | KDCから取得したチケットと認証子 | Active Directory内のサービス認証 |
| NTLM | チャレンジレスポンス方式 | Windows環境の互換性用途など |
| SAML | IdPが発行するXMLベースのアサーション | Webサービス間のSSO |
「SSOができる」という点では共通する場面がありますが、交換する認証情報や使われるプロトコルは異なります。
7. Pass the TicketとPass the Hashの違い
Pass the Ticket(PtT)は、Kerberosのチケットや関連する認証情報を不正に再利用する攻撃を指します。Pass the Hash(PtH)は、主にNTLMの認証で利用可能なパスワードハッシュを悪用する攻撃です。どちらも、平文パスワードを解析せずに認証情報を悪用する点が重要です。
Pass the Ticket
Kerberosのチケット/対応する鍵などが漏えい → 権限の範囲で不正なアクセスにつながる
Pass the Hash
NTLMパスワードハッシュが漏えい → ハッシュから秘密情報を計算できる認証方式を悪用する
ほかに、チケットの不正な発行や偽造を伴うGolden Ticket・Silver Ticketなども知られています。これらは一般に高い権限や重要な鍵の侵害が関係するため、単純なチケット再利用と同一視しないことが大切です。
8. 安全に運用するための対策
- 特権アカウントの使用を必要最小限にし、管理端末を分離する
- OSやドメインコントローラーを更新し、サポートされた暗号方式を使う
- チケットやセッション鍵などの資格情報が端末から盗まれないよう保護する
- Kerberosの認証失敗、異常なチケット発行、特権操作を監視する
- KDC・サービス間で時刻を正しく同期し、チケットの有効期間を適切に設定する
- サービスアカウントの鍵やパスワードを適切に管理し、権限と委任設定を点検する
Kerberosは「暗号化されているから攻撃されない」わけではありません。特にクライアントの資格情報が漏れれば、正規のプロトコルを不正に使われる可能性があります。
9. 操作ラボ:認証の流れと失敗条件を体験
次のラボでは、AS → TGS → サービスという順序を1段階ずつ進められます。TGTの有無、期限切れ、サービスチケットの有無、認証子に必要な鍵の所持を切り替えて、なぜログインできたり拒否されたりするのかを確かめましょう。
チケット認証を段階的に追う
実際の資格情報は扱わない学習用シミュレーションです。
ログイン前
利用者のPCにはまだチケットがありません。
「次へ」を押してAS交換を始めましょう。
補足:実環境では鍵の種類、TGTの再取得、暗号アルゴリズム、委任、認可、リプレイキャッシュなどの検証が関係します。チェック項目を変更した簡略モデルです。
10. まとめ
Kerberosは「信頼できるKDCがチケットを発行し、各サービスがチケットと認証子を検証する」仕組みです。
ASはTGTを発行、TGSはサービスチケットを発行、ファイルサーバはサービスチケットと認証子を検証します。TGTを繰り返し使うことで、別サービスへアクセスするたびに平文パスワードを入力し直す必要がなくなります。
参考:IETF RFC 4120、Microsoft Learn「Windows Server での Kerberos 認証の概要」「Key Distribution Center」。図とラボはKerberos V5の標準的な動きを初学者向けに簡略化したものです。