- 結論ファースト:TGSとTGTの決定的な違い
- Kerberos認証の全体像と「登場人物」
- TGT (Ticket Granting Ticket) とは?
- TGS (Ticket Granting Service) とは?
- Kerberos認証の3ステップ
- なぜTGTとTGSという2段階の仕組みが必要なのか?
- まとめ
Windows Active Directory環境をはじめ、多くのエンタープライズシステムで認証の根幹をなす「Kerberos認証」。セキュリティを学ぶ上で避けては通れない重要なプロトコルですが、その仕組みは非常に複雑です。
特に、「TGS(Ticket Granting Service)」と「TGT(Ticket Granting Ticket)」という似た用語が出てきた瞬間に、混乱してしまう方も多いのではないでしょうか。
- TGTって、TGSに渡すもの?
- どっちがチケットで、どっちがサービス?
- なぜこんな面倒な仕組みが必要なの?
私は現役でセキュリティ担当として、日々こうした認証基盤に触れていますが、この仕組みは「いかにパスワードそのものをネットワークに流さず、安全に認証を行うか」を突き詰めた結果、生まれたものです。
今回は、Kerberos認証の核心であるTGSとTGTの違い、そして全体の流れについて、セキュリティ専門家の視点から分かりやすく解説します。
結論ファースト:TGSとTGTの決定的な違い
時間が無い方のために、まず結論からお伝えします。
TGSとTGTの違いは、「サービス(窓口)」と「モノ(許可証)」の違いです。
| 項目 | TGT (Ticket Granting Ticket) | TGS (Ticket Granting Service) |
|---|---|---|
| 分類 | モノ(チケット) | サービス(機能) |
| 役割 | 「サービスチケット」を発行してもらうための許可証 | TGTを検証し、「サービスチケット」を発行する発行所 |
| 誰が発行? | AS (Authentication Service) | - (TGS自身は発行せず、サービスチケットを発行する) |
| 目的 | ユーザーが「本人である」ことをKDCに証明する | ユーザーが「特定のサービス」を使う許可を与える |
| 例えるなら | 遊園地の「入場パス(フリーパス)」 | 各アトラクションの「乗り場係(整理券発行所)」 |
この記事を読み終える頃には、この表の意味が明確に理解できるよう、順を追って解説します。
Kerberos認証の全体像と「登場人物」
TGSとTGTを理解するには、まずKerberos認証に関わる「登場人物」を知る必要があります。
- 1. クライアント (Client)
- 認証を受けたいユーザー(が使っているPCなど)です。
- 2. サービスサーバー (Service Server)
- ユーザーが利用したいサービス(例:ファイルサーバー、Webアプリサーバー)です。
- 3. KDC (Key Distribution Center) - 鍵配布センター
- Kerberos認証の「心臓部」です。信頼できる第三者機関として機能します。
- KDCは、以下の2つのサービスを内包しています。
- 3-1. AS (Authentication Service) - 認証サービス
- KDCの一部。ユーザーが「本当に本人か?」を最初に認証します。
- 認証に成功すると、TGT を発行します。
- 3-2. TGS (Ticket Granting Service) - チケット発行サービス
- KDCの一部。ASが発行した TGT を検証します。
- 検証に成功すると、特定のサービスサーバーで使える「サービスチケット (ST)」を発行します。
TGT (Ticket Granting Ticket) とは?
TGTは「チケットを発行するためのチケット」と訳されます。
例えるなら、遊園地の「入場パス(フリーパス)」です。
遊園地に入るとき、まず入場ゲート(= AS)で身分証(= パスワード)を提示します。本人確認ができると、ゲートの係員(AS)は「この人は本日入場OKです」という証として、リストバンド型のフリーパス(= TGT)をあなたに渡します。
重要なのは、このTGTには有効期限があることです。
一度TGTを受け取れば、その有効期間中(例:8時間)、あなたは何度も入場ゲートで身分証(パスワード)を提示する必要はありません。このTGTが、あなたが認証済みであることを証明してくれます。
これがKerberosにおけるシングルサインオン(SSO)の基本的な仕組みです。
TGS (Ticket Granting Service) とは?
TGSは「チケット発行サービス」という名前の通り、サービス(機能)です。
例えるなら、遊園地の各アトラクションの「乗り場係(整理券発行所)」です。
あなたがフリーパス(= TGT)を持っていても、いきなりジェットコースター(= サービスサーバー)に乗ることはできません。
まず、ジェットコースターの乗り場係(= TGS)のところへ行き、「フリーパス(TGT)を持ってるので、ジェットコースターに乗りたいです」と要求します。
乗り場係(TGS)は、あなたのフリーパス(TGT)が本物か、有効期限内かを確認します。問題がなければ、「OK、この人はジェットコースターに乗る許可を与えます」という証として、ジェットコースター専用の「アトラクション券(= サービスチケット, ST)」を発行します。
TGSはKDC内に存在する「サービスチケットの発行窓口」そのものなのです。
Kerberos認証の3ステップ
では、TGTとTGSが実際の認証フローでどのように使われるのか、3つのステップで見ていきましょう。
ステップ1:AS認証(TGTの取得)
「遊園地の入場ゲートでフリーパス(TGT)をもらう」
- クライアント → AS: ユーザーがPCにログインします。この時、クライアントはユーザーのパスワードから暗号鍵を生成し、「私(ユーザーA)のTGTをください」というリクエストをASに送信します。
- AS → クライアント: ASはユーザーDBで本人確認を行い、OKなら「TGT」を発行します。このTGTは、AS自身の秘密鍵と、ユーザーのパスワードから生成した鍵で二重に暗号化されています。
【セキュリティ専門家の視点】 ここでのポイントは、ユーザーのパスワードそのもの(平文)はネットワークに流れないことです。ASは「パスワードから生成されたハッシュ(暗号鍵)」を受け取るだけです。これにより、盗聴によるパスワード漏洩リスクを劇的に下げています。
ステップ2:TGS認証(サービスチケットの取得)
「乗り場係(TGS)にフリーパス(TGT)を見せて、アトラクション券(ST)をもらう」
- クライアント → TGS: ユーザーがファイルサーバー(サービス)にアクセスしようとします。クライアントは、ステップ1で取得した「TGT」をTGS(発行窓口)に提示し、「ファイルサーバー用のサービスチケット (ST) をください」と要求します。
- TGS → クライアント: TGS はTGTを検証し、正当なものであれば「サービスチケット (ST)」を発行してクライアントに返します。
ステップ3:サービスアクセス(サービスチケットの提示)
「アトラクション券(ST)を係員に見せて、乗り物に乗る」
- クライアント → サービスサーバー: クライアントは、TGSから受け取った「サービスチケット (ST)」を、目的のファイルサーバーに提示します。
- サービスサーバー → クライアント: ファイルサーバーはSTを検証し、問題がなければ認証を許可。ユーザーはファイルサーバーにアクセスできるようになります。
一度STを取得すれば、そのSTの有効期間内は、TGSに再度要求することなく、そのサービスサーバーを継続して利用できます。
なぜTGTとTGSという2段階の仕組みが必要なのか?
「最初からASが全部のサービスチケットを発行すれば早いのでは?」と思うかもしれません。しかし、この2段階の仕組み(TGTとTGS)こそが、Kerberos認証のセキュリティと効率性を高める鍵となっています。
1. シングルサインオン(SSO)の実現
もしTGSがなく、ASがすべてのサービスチケットを発行する場合、ユーザーは「ファイルサーバーを使いたい時」「Webアプリを使いたい時」の都度、ASに対してパスワード(あるいはそれに準ずる情報)を使った認証を行う必要があります。
TGTという「汎用的な許可証」を最初に一度だけ発行する仕組みにすることで、ユーザーは最初のログイン時以外、パスワードを意識する必要がなくなります。これがSSO(シングルサインオン)です。
2. 認証負荷の分散と責務の分離
AS(認証サービス)の役割は「本人の認証に集中」することです。TGS(チケット発行サービス)の役割は「サービスへのアクセス許可に集中」することです。
もしASが全サービスのチケット発行まで担うと、AS(KDC)に負荷が集中し、また管理も複雑になります。役割を分離することで、スケーラブルで堅牢な認証システムを実現しています。
3. パスワード漏洩リスクの最小化
最も重要な点です。ユーザーのパスワード(から生成した鍵)を使うのは、最初のTGT発行時(ステップ1)だけです。
TGSとの通信(ステップ2)や、サービスサーバーとの通信(ステップ3)では、パスワード情報は一切使用されません。TGTやSTといった「チケット」を使って認証を行います。
万が一、ステップ2や3の通信が盗聴されても、漏れるのは(有効期限付きの)チケット情報だけであり、ユーザーの大本のパスワードは安全に保たれます。
まとめ
今回は、Kerberos認証のTGSとTGTの違いについて解説しました。
- TGT (Ticket Granting Ticket):
- モノ(許可証)
- AS(認証サービス)が発行する「フリーパス」
- これがあると、パスワードを再入力せずに他のサービスチケットを要求できる (SSO)
- TGS (Ticket Granting Service):
- サービス(発行所)
- TGTを検証し、特定のサービス専用の「アトラクション券(サービスチケット)」を発行する窓口
このTGT(許可証)とTGS(発行所)という2段階の仕組みこそが、Windows Active Directoryなどの大規模環境で、安全かつ効率的なシングルサインオンを実現している技術的な核心です。
この違いを理解することは、認証基盤のトラブルシューティングや、より安全なシステム設計を行う上で、非常に重要となります。