Microsoft NTLM
Windows チャレンジ/レスポンス (NTLM) は、Windows オペレーティング システムを実行するシステムを含むネットワーク、およびスタンドアロン システムで使用される認証プロトコルです。
Microsoft Kerberos セキュリティ パッケージを使用すると、NTLM と比較してネットワーク上のシステムのセキュリティを大幅に強化できます。 Microsoft Kerberos は最適なプロトコルですが、NTLM は引き続きサポートされています。 NTLM は、スタンドアロン システムでのログオン認証でも使用する必要があります。 Kerberos に関する詳細については、「Microsoft Kerberos」を参照してください。
NTLM の資格情報は、対話型ログオン プロセス中に取得されたデータに基づいており、ドメイン名、ユーザー名、およびユーザーのパスワードの一方向ハッシュで構成されています。 NTLM では、暗号化されたチャレンジ/応答プロトコルを使用して、ユーザーのパスワードをネットワークに送信することなくユーザーを認証します。 代わりに、認証を要求するシステムは、セキュリティで保護された NTLM 資格情報へのアクセス権を持っていることを証明する計算を実行する必要があります。
通常、ネットワーク経由の対話型 NTLM 認証には、ユーザーが認証を要求しているクライアント システムと、ユーザーのパスワードに関連する情報が保持されるドメイン コントローラーの 2 つのシステムが含まれます。 サーバー アプリケーションなどのリソースへのアクセスを既にログオンしているユーザーに許可するために必要な非対話型認証には、通常、クライアント、サーバー、およびサーバーの代わりに認証計算を行うドメイン コントローラーの 3 つのシステムが含まれます。
次の手順では、NTLM 非対話型認証の概要を示します。 最初の手順では、ユーザーの NTLM 資格情報が提供され、対話型認証 (ログオン) プロセスの一部としてのみ行われます。
(対話型認証のみ) ユーザーはクライアント コンピューターにアクセスし、ドメイン名、ユーザー名、パスワードを指定します。 クライアントは、パスワードの暗号化ハッシュを計算し、実際のパスワードを破棄します。
クライアントは、ユーザー名をサーバーに送信します (プレーンテキスト)。
サーバーは、8 バイトの乱数 (チャレンジまたは nonce と呼ばれる) を生成し、クライアントに送信します。
クライアントは、ユーザーのパスワードのハッシュを使用してこのチャレンジを暗号化し、結果をサーバーに返します。 これは、応答と呼ばれます。
サーバーは、次の 3 つの項目をドメイン コントローラーに送信します。
- ユーザー名
- クライアントに送信されたチャレンジ
- クライアントから受信した応答
ドメイン コントローラーは、ユーザー名を使用して、セキュリティ アカウント マネージャー データベースからユーザーのパスワードのハッシュを取得します。 このパスワード ハッシュを使用してチャレンジを暗号化します。
ドメイン コントローラーは、(手順 6 で) 計算した暗号化されたチャレンジと、クライアントによって計算された応答 (手順 4) を比較します。 同一の場合、認証は成功します。
アプリケーションは NTLM セキュリティ パッケージに直接アクセスしないでください。代わりに、ネゴシエート セキュリティ パッケージを使用する必要があります。 ネゴシエートを使用すると、アプリケーションは、認証に関係するシステムでサポートされている場合、より高度なセキュリティ プロトコルを利用することができます。 現在、ネゴシエート セキュリティ パッケージでは、Kerberos と NTLM のどちらかが選択されます。 ネゴシエートは、認証に関係するシステムのいずれかで使用できない場合を除き、Kerberos を選択します。