ケルベロス認証をネスペ午後問を解きながら9秒でパパっと理解!

ケルベロス認証 ネスペアイキャッチ
哲学者トニーくん
哲学者トニーくん

【9秒チャレンジ】
登場人物は3つ

  1. クライアント:サービスを使いたい人
  2. KDC(鍵配布センター):認証サーバー(AS) + TGS(チケット発行サーバー)
  3. サービスサーバー(SP):実際に使いたいサービスを提供するサーバー

流れ

  1. クライアントがSPにアクセスしようとすると、まず KDC に行く。
    (DNSの設定などで、KDCを経由するようにしている)
  2. ASがパスワードのハッシュ値を使って本人確認。OKなら TGT(チケット)セッション鍵を暗号化して返す
  3. クライアントはパスワードハッシュで復号し、TGT を取得。TGT を使って TGS にサービス用のチケットをリクエスト。
  4. TGSチケットを発行し、クライアントに返す。
  5. クライアントはSPにチケットを渡す。
  6. サービスサーバーがチケットを検証して OK なら、サービス利用開始!

すごいポイント

  • 一度認証すれば、いろんなサービスに再ログインなしでアクセス可能(シングルサインオン)。
  • パスワードはネットワーク上に流れない(流れるのは暗号化データだけ)。

更に詳しく知りたい場合↓

もし、この説明でモヤモヤしても、大丈夫!
以下の問題でアウトプットしていくことで無理なく理解に落とし込むことができます!

では、練習問題を通して実感していきましょう!

問題

企業A社では、社内システムのセキュリティ強化のため、ユーザ認証にKerberosを導入することにした。Kerberosはチケットベースの認証プロトコルであり、クライアントとサーバ間の通信を安全に行うことができる。以下の図は、A社のネットワーク構成の概要である。

HTTP
[クライアントPC] — [認証サーバ (KDC)] — [アプリケーションサーバ]

A社のネットワークでは、クライアントPCがアプリケーションサーバにアクセスする際、Kerberos認証によってセッション鍵を共有する仕組みを採用している。以下の説明を読み、設問に答えなさい。

認証フロー

  1. クライアントPCは、KDC の AS (Authentication Server) にユーザIDを送信し、チケット発行を要求する。
  2. KDC の AS はクライアントのパスワードから生成された鍵を使い、セッション鍵と TGT (Ticket Granting Ticket) を暗号化してクライアントに返す。
  3. クライアントは、AS から受け取った TGT を使い、TGS (Ticket Granting Service) にアクセスチケットを要求する。
  4. TGS は、クライアントの TGT を検証し、アクセスしたいサーバ用のサービスチケットを発行する。
  5. クライアントは、発行されたサービスチケットをアプリケーションサーバに送信し、認証を完了させる。

設問 1

次の文中の (a) ~ (c) に入る最も適切な語句を、解答群から選びなさい。

(1) クライアントPCは最初に、AS に対してユーザ名を送信し、(a) の発行を依頼する。
(2) AS は、ユーザのパスワードから生成された (b) を使って、セッション鍵と TGT を暗号化する。
(3) アプリケーションサーバは、受け取った (c) を検証し、クライアントとのセッションを確立する。

解答群

  1. サービスチケット
  2. チャレンジレスポンス
  3. TGT
  4. パスワードハッシュ
  5. クライアントID

設問 2

以下の選択肢の中から、Kerberosの設計上の特徴として 適切なもの を2つ選びなさい。

  • ア) パスワードはネットワーク上を平文で流れる。
  • イ) サーバごとに秘密鍵が必要である。
  • ウ) TGT の有効期限が切れると再認証が必要である。
  • エ) クライアントは最初に直接サービスサーバと鍵交換を行う。
  • オ) サービスチケットは KDC からアプリケーションサーバに直接送信される。

設問 3

Kerberosでは「リプレイ攻撃」を防ぐ仕組みが備わっている。どのような仕組みでリプレイ攻撃を防いでいるか、100文字以内で説明しなさい。

解答

設問 1 :次の文中の (a) ~ (c) に入る最も適切な語句を、解答群から選びなさい。

(1) クライアントPCは最初に、AS(認証サーバ) に対してユーザ名を送信し、(a) の発行を依頼する。
(2) AS は、ユーザのパスワードから生成された (b) を使って、セッション鍵と TGT を暗号化する。
(3) アプリケーションサーバは、受け取った (c) を検証し、クライアントとのセッションを確立する。

解答:
(a) 3. TGT
(b) 4. パスワードハッシュ
(c) 1. サービスチケット

解説:

1. (a) TGT (Ticket Granting Ticket)
クライアントPCは最初に、AS (Authentication Server:認証サーバ) に対してユーザ名を送り、TGT の発行を依頼します。TGTはクライアントが後続の認証で繰り返し使う一種のパスで、これがあると何度もパスワードを入力する必要がなくなります。

哲学者トニーくん
哲学者トニーくん

認証サーバはサービスを提供する側のネットワークに配置されています。

2. (b) パスワードハッシュ
ASは、ユーザのパスワードからハッシュ化した秘密鍵を作り、その鍵でセッション鍵と TGT を暗号化してクライアントに渡します。これにより、パスワード自体をネットワーク上に送らずに安全に鍵交換が行えます。

哲学者トニーくん
哲学者トニーくん

ハッシュ化とはある値を関数に入れることによって、別の新たな値を生成することです。

3. (c) サービスチケット
クライアントがTGS (Ticket Granting Service) から取得したサービスチケットをアプリケーションサーバに提示すると、サーバはそのチケットを検証して、セッションを確立します。サービスチケットには、利用するサービス用のセッション鍵などが含まれています。

哲学者トニーくん
哲学者トニーくん

TGSは認証ステップを通過できたデバイスに対して、サービスの許可証を渡す役割です。配置場所はASと同じ物理サーバ内KDC)に配置されることが多いです。


設問 2 :以下の選択肢の中から、Kerberosの設計上の特徴として 適切なもの を2つ選びなさい。

  • ア) パスワードはネットワーク上を平文で流れる。
  • イ) サーバごとに秘密鍵が必要である。
  • ウ) TGT の有効期限が切れると再認証が必要である。
  • エ) クライアントは最初に直接サービスサーバと鍵交換を行う。
  • オ) サービスチケットは KDC からアプリケーションサーバに直接送信される。

解答:
イ, ウ

解説:

  • イ) サーバごとに秘密鍵が必要である → 正しい
    Kerberosでは、各サーバには固有の秘密鍵があります。これにより、KDCが発行するチケットを復号してセッション鍵を取得できます。秘密鍵がなければチケットの中身を読み解くことができません。
  • ウ) TGT の有効期限が切れると再認証が必要である → 正しい
    TGTには有効期限があります。有効期限が切れた後は再認証が必要になるので、古いチケットを使った攻撃を防げます。
  • ア) パスワードはネットワーク上を平文で流れる → 誤り
    Kerberosでは、パスワードそのものはネットワーク上に流れません。パスワードから生成された鍵でデータを暗号化してやりとりします。
哲学者トニーくん
哲学者トニーくん

パスワードをハッシュ化した値が流れるだけなので、生のパスワードデータはネットワーク上には流れません。

  • エ) クライアントは最初に直接サービスサーバと鍵交換を行う → 誤り
    最初の鍵交換は KDC を介して行われます。クライアントは KDC (AS → TGS) を経由して、サービスサーバに接続するためのチケットを取得します。
  • オ) サービスチケットは KDC からアプリケーションサーバに直接送信される → 誤り
    サービスチケットは、KDC からクライアントに渡されます。そして、クライアントがそのチケットをサービスサーバに提示します。

設問 3 :Kerberosでは「リプレイ攻撃」を防ぐ仕組みが備わっている。どのような仕組みでリプレイ攻撃を防いでいるか、100文字以内で説明しなさい。

解答:
タイムスタンプを含めた認証データを暗号化し、一定時間内のリプレイを検出して無効化する。

解説:
リプレイ攻撃とは、攻撃者が過去の通信データを盗み取り、それを再送信して不正アクセスを試みる攻撃です。Kerberosでは、暗号化したタイムスタンプを認証データに含め、サーバはそのタイムスタンプが現在時刻と大きくずれている場合にリクエストを拒否します。これにより、過去のデータを再送信しても認証に失敗します。

まとめ

ケルベロス認証は「チケット制の認証システム」で、暗号化とタイムスタンプを活用して、ネットワーク上で安全にログインできる仕組みです!

🚀 Kerberos の流れ(ざっくり)
  1. ログインリクエスト
    → クライアントがKDC(認証サーバ)にログインを要求。
  2. TGT(Ticket Granting Ticket)発行
    → 認証サーバは、パスワードから生成した鍵で暗号化された「TGT」をクライアントに渡します。これは「サービスチケット発行のための許可証」です。
  3. サービスチケット取得
    → クライアントは、TGT を使って「KDC(TGS:チケット発行サーバ)」からサービス用のチケットを取得します。
  4. サービスへのアクセス
    → クライアントはサービスサーバにチケットを提出し、正しければアクセスが許可されます。

これなら、ネットワーク上にパスワードが流れず、安全にサービスを利用できます!

tuki.『晩餐歌』
欠伸日和 – 最終列車
タイトルとURLをコピーしました