Microsoft NTLM

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

Microsoft Kerberosセキュリティ パッケージ は、ネットワーク上のシステムに 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. ドメイン コントローラーは、ユーザー名を使用して、Security Account Manager データベースからユーザーのパスワードのハッシュを取得します。 このパスワード ハッシュを使用してチャレンジを暗号化します。

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

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