セキュリティプロトコル(NTLM の基本)

よく聞かれるので、まとめておきます。

NTLM は、Windows ファミリーで使われている既存の認証プロトコルです。
Active Directory の登場以降、Kerberos に移行してきていますが、NTLM は重要なプロトコルであることには
変わりません。NLTM はチャレンジ/レスポンスという単純なシーケンスになっています。
NTLM の認証シーケンスは次のようになります。(図を書きました)

NTLMシーケンス

  1. クライアントは、アカウント名、ドメイン名を使い、サーバーに認証要求を行う。
  2. サーバーは、クライアントから受け取った情報をドメインコントローラーに転送する。
  3. ドメインコントローラーは、チャレンジを生成する。
    チャレンジはクライントのパスワードからランダムに生成される(クライアントとドメインコントローラーのみ解釈できる)。
  4. ドメインコントローラーは生成したチャレンジをサーバーに転送する。
  5. サーバーはチャレンジをクライアントに転送する。
  6. クライアントは、パスワードを使いチャレンジを解析して、アルゴリズムに応じてレスポンスを生成する。
  7. クライアントはサーバーにレスポンスを送信する。
  8. サーバーは、クライアントから受け取ったレスポンスをドメインコントローラーに転送する。
  9. ドメインコントローラーは、レスポンスを調べ、生成したチャレンジをベースに作成されたものであることを確認する。
    この段階でクライアントの認証は完了している。
  10. ドメインコントローラーは、クライアントが認証されたことをサーバーに通知する

この図は、クライアントとドメインコントローラーの間にサーバー(アプリケーションサーバーを想定)を入れていますが
クライアントとドメインコントローラーで直接認証を行う場合も、同じ考え方です。

NTLM は、何気にネットワークトラフィックが多いので、アプリケーションサーバーは、アプリケーション以外にも負荷が
かかるので、それなりのスペックにしてあげた方がよいです。

NTLM には、v1 と v2 がありますが、Vista 以降は NTLM v2 がメインになってきています。

参考情報

One Response to セキュリティプロトコル(NTLM の基本)

  1. ピンバック: Windowsログオン認証についてのメモ | 科学の箱

コメントを残す