Microsoft NTLM

Windowsチャレンジ/応答 (NTLM) は、Windows オペレーティング システムを実行するシステムやスタンドアロン システム上のシステムを含むネットワークで使用される認証プロトコルです。

Microsoft Kerberossecurityパッケージは、ネットワーク上のシステムに NTLM よりも大きなセキュリティを追加します。 Microsoft Kerberos は選択したプロトコルですが、NTLM は引き続きサポートされています。 スタンドアロン システムのログオン認証にも NTLM が必要です。 Kerberos の詳細については、「 Microsoft Kerberos」を参照してください。

NTLM 資格情報は、対話型ログオン プロセス中に取得されたデータに基づいており、ドメイン名、ユーザー名、ユーザーのパスワードの一方向 ハッシュ で構成されます。 NTLM では、暗号化されたチャレンジ/応答プロトコルを使用して、ユーザーのパスワードをネットワークに送信することなくユーザーを認証します。 代わりに、認証を要求するシステムは、セキュリティで保護された NTLM 資格情報へのアクセス権を持っていることを証明する計算を実行する必要があります。

通常、ネットワーク経由の対話型 NTLM 認証には、ユーザーが認証を要求しているクライアント システムと、ユーザーのパスワードに関連する情報が保持されるドメイン コントローラーの 2 つのシステムが含まれます。 非対話型認証。既にログオンしているユーザーがサーバー アプリケーションなどのリソースにアクセスできるようにするために必要な場合があります。通常、3 つのシステム (クライアント、サーバー、サーバーに代わって認証計算を行うドメイン コントローラー) が含まれます。

次の手順では、NTLM 非対話型認証の概要を示します。 最初の手順では、ユーザーの NTLM 資格情報が提供され、対話型認証 (ログオン) プロセスの一部としてのみ実行されます。

  1. (対話型認証のみ)ユーザーはクライアント コンピューターにアクセスし、ドメイン名、ユーザー名、パスワードを指定します。 クライアントはパスワードの暗号化 ハッシュ を計算し、実際のパスワードを破棄します。

  2. クライアントは、( プレーンテキストで) サーバーにユーザー名を送信します。

  3. サーバーは、 チャレンジ または nonce と呼ばれる 8 バイトの乱数を生成し、クライアントに送信します。

  4. クライアントは、ユーザーのパスワードのハッシュを使用してこのチャレンジを暗号化し、結果をサーバーに返します。 これは 応答と呼ばれます。

  5. サーバーは、次の 3 つの項目をドメイン コントローラーに送信します。

    • ユーザー名
    • クライアントに送信されたチャレンジ
    • クライアントから受信した応答
  6. ドメイン コントローラーは、ユーザー名を使用して、セキュリティ アカウント マネージャー データベースからユーザーのパスワードのハッシュを取得します。 このパスワード ハッシュを使用してチャレンジを暗号化します。

  7. ドメイン コントローラーは、(手順 6 で) 計算した暗号化されたチャレンジと、クライアントによって計算された応答 (手順 4) を比較します。 同一の場合、認証は成功します。

アプリケーションは NTLM セキュリティ パッケージ に直接アクセスしないでください。代わりに、 ネゴシエート セキュリティ パッケージを使用する必要があります。 ネゴシエートを使用すると、アプリケーションが認証に関連するシステムでサポートされている場合に、より高度な セキュリティ プロトコル を利用できます。 現在、ネゴシエート セキュリティ パッケージでは 、Kerberos と NTLM の間で選択されます。 ネゴシエートでは、認証に関連するいずれかのシステムで Kerberos を使用できない場合を除き、Kerberos が選択されます。