3 Minutes NetWorking Supplement
No.06

3Minutes NetWorking Supplement

補講第6回Kerberos(3) チケット

■ KDC

おねーさん

おね〜さんと、

ほげたん

ほげたんのっ!!

おねーさん

3 Minutes Networking、

ほげたん

Supplement !!

おねーさん

まだまだKerberosが続くわけだけどね。

ほげたん

うん。共通鍵暗号化を使った認証システムだよね。

おねーさん

そう。で、Kerberosの基本として、「第三者」つまりKDCが重要な役を果しているのはわかったと思うけど。

ほげたん

KDC、キー配布センターだね。
セッション鍵を配って、認証とかにつかう。

おねーさん

うん、そのKDC。
で、このKDC。役割が2つあるのに気づいた?

ほげたん

2つ? 2つもあったっけ?

おねーさん

前回使った図を見てみましょ。

KDCへの認証

[FigureSP05-04:KDCへの認証]

おねーさん

ユーザを認証するKDCと。

サーバとのアクセス認証要求

[FigureSP05-05:サーバとのアクセス認証要求]

おねーさん

他サーバのための認証をするKDC。この2つよ。

ほげたん

ん〜、そう言われれば役割が違うかな。

おねーさん

でしょう? この2つ、それぞれ名前があるの。
まず、最初のクライアントを認証する方のKDCが、AS、「認証サーバ」ね。

ほげたん

クライアントを認証するから、認証サーバ、と。

おねーさん

もう一方、他サーバのための認証をするKDC、つまりクライアントに他のサーバへ「認証されたユーザですよ」と証明するための鍵を渡すKDCね、これはTGS、「チケット交付サーバ」と呼ばれるわ。

ほげたん

てぃーじーえす? チケット交付サーバ? チケットって何?

おねーさん

簡単に言えば、さっき言った「認証されたユーザですよ」という証明をするものね。これをチケットって呼ぶの。

ほげたん

ん〜っと、チケットはKDCがクライアントに渡すものだから、もしかして、セッション鍵と関係がある?

おねーさん

あるわね。というか、セッション鍵がチケット、といってもいいくらい。ま、チケットについては次で話すわ。
そして、KDCにはもう1つ、大事なものがあるのよ。

ほげたん

大事なもの?

おねーさん

そう、共通鍵データベース。コレ。

ほげたん

あぁ、そうか。KDCはユーザ、サーバの鍵を持つんだっけ。

おねーさん

そうそう。KDCはなんらかの手段で鍵を保持していなければならない。
これは使うKerberosアプリケーションによって違うわ。普通にファイルデータベースとして持っているものもあれば、LDAPとして持つものもある。

ほげたん

えるだっぷ……、Windows ActiveDirecotryのことだね、おね〜さん。

おねーさん

そう、Kerberos5を認証に使うWindowsドメインは、鍵をLDAP(ActiveDirectory)で保持してるわ。
ま、ともかく、この3つからKDCは成り立ってるってこと。

KDCの3つの役割

[FigureSP06-01:KDCの3つの役割]

おねーさん

この3つはそれぞれ独立しててもいいし、1つのアプリケーションとして運用されててもいいの。
実際は、KDCとして1つのアプリケーションで運用されていることが多いわね。

ほげたん

役割的には3つ、アプリケーションとしては1つが多い、ということだね。

■ チケット

おねーさん

さてさて、さっきでてきた新しい言葉、「チケット」。
kerberosではこのチケットをやりとりすることにより認証を行うの。

ほげたん

さっきの話だと、「認証されたユーザですよ」という証明をするもの」だっけ。

おねーさん

そう、Kerberosで身分を証明するものが、「チケット」ということね。
これをもらったり、サーバに渡したりして認証してもらう、ってこと。

ほげたん

それを渡すのが、TGS、「チケット交付サーバ」ってことだね。

おねーさん

そういうこと。
さて、このチケットだけど、以下のデータから成り立ってるの。

  • ユーザプリンシパル名
  • サービスプリンシパル名
  • チケットの有効期限
  • チケット使用者のIPアドレスリスト
  • セッション鍵
おねーさん

これをサービスの共通鍵で暗号化したものがチケット

ほげたん

うぅぅ? サービスの共通鍵で暗号化する?

おねーさん

そう、前回の図を思い出して〜。

サーバへのアクセス要求

[FigureSP05-06:サーバへのアクセス要求]

おねーさん

セッション鍵はサービス(サーバ)の鍵で暗号化されていたわよね。
サービスの鍵を持つのはKDCだけ。つまり、サービスの鍵で暗号化されていることは…どういうこと、ほげたん?

ほげたん

KDCが発行したことを示す。
チケット=セッション鍵と考えていいの?

おねーさん

そうね、基本的にはそれでOK。
後のデータは悪用されないように付加されているものだからね。

ほげたん

悪用?

おねーさん

チケットを盗聴して使う、とかね。
ともかく、チケットは、KDCから発行されたものである=正しいセッション鍵であるという証明になるものよ。

ほげたん

で、その正しいセッション鍵で暗号化されたデータを送ってきたユーザ=正しいセッション鍵を持つユーザ=認証されたユーザ、って形になるわけだね。

■ 認証サービス交換

おねーさん

さて、だいたい重要キーワードの説明が終わったから、Kerberosの実際の動作を説明しましょ。
まず、ユーザは何するんだっけ、ほげたん?

ほげたん

KDC、この場合ASだね、ASに認証してもらうことからスタートでしょ?

おねーさん

そうね。まずこれから説明しましょう。

[FigureSP06-02:認証サービス交換]

ほげたん

TGT? チケット交付チケット?

おねーさん

うん。ユーザが最初に手に入れるチケットね。イニシャルチケットとも言われるわ。
または、「認証信任状」とも呼ぶわね。

ほげたん

これ、何に使うの?

おねーさん

TGTを持つユーザはASに認証されたユーザであることを示すのよ。
以後、ユーザはTGTを送ることで認証するってわけ。

ほげたん

ん〜? なんで?

おねーさん

TGTがあると認証されるってことは次の説明でわかるわ。

■ チケット交付サービス交換

おねーさん

じゃ、このTGTを利用してサーバに対しての認証を要求する手順をいきましょ。

[FigureSP06-03:チケット交付サービス交換]

ほげたん

認証子? サービスチケット?

おねーさん

まず、第一のポイントは認証子ね。
これはASとの認証サービス交換で入手したセッション鍵で暗号化されたデータよ。

ほげたん

TGSはTGTから入手したセッション鍵で認証子を復号化する…。

おねーさん

そう、これで「確実に相手が認証されていることを保証」するわけね。
だって、そのセッション鍵を持つのはASとの認証サービス交換を行ったクライアントだけなんだから。

ほげたん

さらに考えると、もともとそのセッション鍵はクライアントの鍵で暗号化されていたものだから、ますます「正しいクライアントである」保証になるんだね。

おねーさん

そうそう。「TGTと認証子を送ってきたクライアント」=「正しいクライアント」になるってこと。
これがさっきの「TGTを持つユーザはASに認証されたユーザであることを示す」ことになるのよ。

ほげたん

う〜ん。確かにTGTと、それで復号化できる認証子を送ってきたら、正しいよね。

おねーさん

そゆこと。
で、サービスチケット。これはサーバ/サービスに渡すものよ。

ほげたん

TGTみたいなもの?

おねーさん

そうねぇ、TGTはTGSにデータを送信してきたユーザが認証されていることを示すものよね。
サービスチケットはサーバ/サービスにユーザが認証されていることを示すから、同じね。

ほげたん

ふ〜ん。じゃ、今度はサービスチケットを使った認証を教えてよ。

■ サーバ/クライアント認証交換

おねーさん

うん、それだけどね、ほげたん。
これはKerberosでは正式にこれって決まってないの。

ほげたん

そうなの?

おねーさん

ん〜、一応ベースとなるものは決まってるんだけど。
ベースとなるのは、さっきのTGSがTGTを受け取って認証子を使って認証するのと同じなんだけどね。

[FigureSP06-04:サーバ/クライアント認証交換]

ほげたん

うん。さっきのTGSがTGTと認証子を使って認証するのと同じだね。
で、認証した後は?

おねーさん

さぁ?

ほげたん

うわ。いい加減だ。
さすが、おね〜さんだよ

おねーさん

ほ〜げ〜た〜ん?(ニッコリ)

ほげたん

すいませんでしたぁぁぁぁ!!
その笑みはやめてください。なまじっか整ってる顔なだけ迫力満点です。ほんとごめんなさい。

おねーさん

ちっ。まぁいいでしょ。
ま、認証した後はサーバ/サービスまかせだからどうなるかはKerberosが関与する話じゃないし。

ほげたん

言われてみればそうかも。

おねーさん

用語とか、やりとりの内容がちょっといろいろ増えてるけど、基本は前回やったコレね。

[FigureSP05-03:Kerberosによる認証]

ほげたん

やりとりするセッション鍵=チケットって考えると、確かにこれだね。

おねーさん

でしょう? ここでもう一度、やりとりする内容を見てみると。

KRB_AS_REQ/REP

[FigureSP06-05:KRB_AS_REQ/REP]

おねーさん

まず、TGTを入手するためのやりとり。

ほげたん

ユーザの共通鍵で暗号化されているから、ユーザしかTGTとセッション鍵を入手できないわけだね。

おねーさん

うん、そう。これは一番最初に行われる動作になるわけね。
例えば、クライアントに対するログオン動作がこれになったりするわけ。

ほげたん

ログオンするために、TGTを入手する?

おねーさん

そう。Windowsドメインなんかがそうね。TGTを入手して、それにより「認証されたユーザ」であることを確認して、ログオンできるようになる、とかね。

ほげたん

なるほど。

おねーさん

そして、このTGTとセッション鍵を使って、使用するサービスに対する認証するためのチケットを入手するわけでしょ。

KRB_TGS_REQ/REP

[FigureSP06-06:KRB_TGS_REQ/REP]

ほげたん

TGTと認証子を使って認証して、サービスチケットと新しいセッション鍵を渡す。

おねーさん

そういうこと。
そして、サービスに対してサービスチケットと認証子を渡して認証してもらう。これね。

ほげたん

なるほどだよ、おね〜さん。
なんかすごいね、Kerberos。

おねーさん

さてさて。今回はこれにて終了〜っと。
次回も、まだまだKerberosよ。

ほげたん

次回はな〜に?

おねーさん

Kerberosがどうやって身を攻撃から守るかのお話。
じゃ、また次回。おね〜さんと、

ほげたん

ほげたんのっ!!

おねーさん

3分間ネットワーク、

ほげたん

サプリメントでした〜〜〜っ!!
まった次回〜〜〜〜!!

AS
[Authenticaion Server]
TGS
[Ticket Granting Server]
[Grant]は「与える」「授ける」の意味。
LDAP
[Lightweight Directory Access Protocol]
ITU-T規格のX.500ディレクトリサービスを軽量化・簡易化したディレクトリサービス。
WindowsドメインのActiveDirectoryの中核。
読みは「エルダップ」。
イニシャルチケット
[Initial Ticket]
ほげたんほげたんの今日のポイント
  • KDCは3つの役割を持つ。
    • ユーザを認証するAS
    • ユーザに対しチケットを発行するTGS
    • ユーザやサービスの鍵を保持する鍵データベース
  • ユーザはASに対して認証要求しTGTをもらう。
  • ユーザはTGSに対し、TGTを使ってサービスチケットをもらう
  • ユーザはサーバに対し、サービスチケットを使って認証してもらう

3 Minutes NetWorking Supplement No.06

管理人:aji-ssz(at)selene.is.dream.jp