【NTLM認証について】

     このHPは、NTLM認証についてまとめたものです。




1-1 NTLM認証とは

NTLM認証とは、WindowsNT4.0で使われていた認証方法。
NTLM認証には、NTLMバージョン1認証と、NTLMバージョン2認証の2種類がある。

NTLMバージョン1は、NTLMの初期バージョンで、認証方法に「チャレンジレスポンス認証」を採用している。サーバーから取得したチャレンジコードを取得し、クライアントはハッシュ化されたパスワードを使用してレスポンスを生成してサーバーに返す。

NTLMバージョン2は、NTLMバージョン1に様々なセキュリティ上の問題があったため、その問題を解決すべくリリースされた。
このバージョンでは、サーバーとクライアントがそれぞれチャレンジコードを作成し、それらを使用してレスポンス計算を行う方法を採用している。   






1-2 NTLM認証の特徴

NTLM認証では、「チャレンジ&レスポンス方式」を使用してセキュリティ強度を上げている。サーバーがクライアントに対して、あらかじめランダムな数値である「チャレンジ」を送り、クライアントはそのチャレンジを利用して、自分の秘密情報と組み合わせて計算した値をサーバーに返送する。
サーバーはこの値を検証し、正しいクライアントかどうか判断する。

この仕組みを使用し、相互関係を確認し、確認した情報に妥当性がある場合は、「認可」する。






1-3 NTLM認証の流れ

NTLM認証のフローは下記の通り。







@クライアントはリソースサーバーにNTLM認証の要求を送信する。

ANTLM認証では、クライアントからリソースサーバーに認証要求を行うと、リソースサーバー上にはアカウン情報(SAM)が無いために、ドメインコントローラーに問い合わせる。

Bドメインコントローラーは、クライアントのパスワードから「チャレンジ」を生成する。

Cドメインコントローラーは、生成したチャレンジのデータをサーバーに転送する。

Dリソースサーバーは、チャレンジをクライアントに転送する。

Eクライアントは、パスワードを使用しチャレンジを解析し、サーバーから送信されてきたチャレンジを暗号化する。この暗号化したデータを「レスポンス」と呼ぶ。

Fクライアントは、認証情報としてリソースサーバーにレスポンスを送信する。

Gリソースサーバーは、レスポンスをドメインコントローラーに転送する。

Hドメインコントローラーはチャレンジを暗号化し、暗号化したチャレンジを、リソースサーバーから転送されてきたレスポンスと比較して、値が一致しているか確認する。
値が一致していればクライアントが認証された事をリソースサーバーに通知する。値が一致しなければ、不正なユーザーとして、認証に失敗し、その結果をリソースサーバーに通知する。