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