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と呼ばれる 16バイトの乱数を生成し、クライアントに送信します。

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

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

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

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

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