Windows NT のユーザー認証

文書翻訳 文書翻訳
文書番号: 102716 - 対象製品
この記事は、以前は次の ID で公開されていました: JP102716
すべて展開する | すべて折りたたむ

目次

概要

この資料では、ユーザー認証に関する次の項目について説明します。

  • SAM データベースへのパスワードの保存
  • MSV1_0 認証パッケージによるユーザー認証
  • パススルー認証

詳細

SAM データベースへのパスワードの保存

ユーザー レコードは、セキュリティ アカウント マネージャ (SAM) データベースに保存されます。各ユーザーには、LAN Manager 互換パスワードと Windows NT パスワードが関連付けられています。各パスワードは、二重に暗号化されて SAM データベースに保存されます。最初の暗号化は、単方向関数 (OWF) によるクリア テキストの暗号化で、通常は解読不可能です。2 番目の暗号化は、ユーザーの相対識別子 (RID) の暗号化です。2 番目の暗号化は、二重暗号化パスワード、ユーザーの RID、およびアルゴリズムがわかっていれば解読できます。この暗号は、混乱させるために使用されます。

LAN Manager 互換パスワードは、LAN Manager で使用されるパスワードと完全に互換性があります。OEM (相手先ブランド供給業者) の文字セットに基づいており、大文字と小文字を識別せず (暗号化の前に大文字に変換されるので)、最長 14 文字まで指定できます。OWF バージョン (LAN Manager OWF または ESTD バージョン) のパスワードは、DES を使って、クリア テキスト パスワードを含む定数を暗号化することによって生成されます。LAN Manager OWF パスワードは 16 バイト長です。クリア テキスト パスワードの最初の 7 バイトを使って、LAN Manager OWF パスワードの最初の 8 バイトを生成します。さらに、クリア テキスト パスワードの次の 7 バイトを使って、LAN Manager OWF パスワードの残り 8 バイトを生成します。

Windows NT パスワードは、Unicode 文字セットに基づいており、大文字と小文字を識別し、最長 128 文字まで指定できます。OWF バージョン (Windows NT OWF パスワード) は、RSA MD-4 暗号化アルゴリズムを使って生成されます。このアルゴリズムでは、クリア テキスト パスワードの可変長文字列を 16 バイトに "ダイジェスト" して生成します。

SAM データベースでは LAN Manager パスワードと Windows NT パスワードの両方を保持しようとしますが、一方のパスワードしかないユーザー アカウントもあります。たとえば、PortUas を使って LAN Manager UAS データベースから ユーザー アカウントを取得した場合、または LAN Manager や Windows for Workgroups クライアントからパスワードを変更した場合は、LAN Manager パスワードだけが存在します。また、Windows NT クライアントからパスワードを設定または変更し、LAN Manager パスワードの規則に適合しない場合 (14 文字より長い、OEM 文字セットにない文字が使用されているなど)、Windows NT パスワードだけが存在します。ユーザー インターフェイスの制限により、Windows NT パスワードは 14 文字を超えることはできません。これについては後ほど説明します。

: 手動またはプログラムによって SAM データベースを変更した場合、Microsoft のサポート対象外となりますのでご注意ください。

MSV1_0 認証パッケージによるユーザー認証

Windows NT のユーザー認証は、すべて LsaLogonUser API を使って処理されます。LsaLogonUser は、認証パッケージを呼び出すことによってユーザーを認証します。Windows NT に添付されているデフォルトの認証パッケージは、MSV1_0 認証パッケージです。MSV 認証パッケージでは、SAM データベースをユーザー データベースとして使用します。また、Netlogon サービスを使用することにより、ほかのドメインのユーザーのパススルー認証をサポートしています。

内部的には、MSV 認証パッケージは上層と下層の 2 つの部分に分かれています。上層は、ログオン (接続) されるマシン上で実行されます。下層は、ユーザー アカウントが存在するマシン上で実行されます。両方のマシンが同じである場合、MSV 認証パッケージの上層は、Netlogon サービスを起動せずに下層を呼び出します。MSV 認証パッケージの上層が、パススルー認証が必要であると判断した場合 (認証システムに異なるドメイン名が渡された場合)、MSV は Netlogon サービスに要求を送信し、Netlogon サービスが適切なマシン上の Netlogon サービスに要求を転送して、そのマシン上の MSV 認証パッケージの下層に要求を渡します。

LsaLogonUser は、対話型ログオン、サービス ログオン、およびネットワーク ログオンをサポートしています。MSV 認証パッケージのログオン形式ではすべて、ユーザー アカウントを含むドメインの名前、ユーザー アカウントの名前、およびユーザーのパスワードの関数を渡します。ログオンのタイプは、LsaLogonUser に渡すパスワードの形式によって異なります。

対話型ログオンとサービス ログオンでは、クライアントが物理的には MSV 認証パッケージの上層を実行しているマシンにログオンします。この場合、クリア テキスト パスワードは LsaLogonUser と MSV 認証パッケージの上層に渡されます。MSV 認証パッケージの上層は、そのクリア テキストを Netlogon サービスまたは下層に渡す前に、LAN Manager OWF パスワードと Windows NT OWF パスワードに変換します。MSV 認証パッケージの下層は、SAM でその OWF パスワードを照会し、OWF パスワードを比較して同一であることを確認します。

ネットワーク ログオンでは、マシンに接続しているクライアントに、あらかじめ 16 バイトのチャレンジ (または "nonce") が与えられています。LAN Manager クライアントの場合、16 バイトの LAN Manager OWF パスワードを持つ 16 バイトのチャレンジを暗号化することによって、24 バイトのチャレンジ レスポンスを生成します。これは、LAN Manager で使用されるアルゴリズムです。LAN Manager クライアントは、この "LAN Manager チャレンジ レスポンス" を Windows NT サーバーに渡します。Windows NT クライアントの場合、LAN Manager のチャレンジ レスポンスを上記の方法で生成します。さらに、同じアルゴリズムで、LAN Manager OWF パスワードの代わりに Windows NT OWF パスワードを使って、"Windows NT チャレンジ レスポンス" を生成します。次に Windows NT クライアントは、LAN Manager チャレンジ レスポンスと Windows NT チャレンジ レスポンスの両方を Windows NT サーバーに渡します。いずれの場合も、Windows NT サーバーは、ドメイン名、ユーザー名、オリジナルのチャレンジ、LAN Manager チャレンジ レスポンス、およびオプションの Windows NT チャレンジ レスポンスをすべて LsaLogonUser に渡すことによってユーザーを認証します。MSV 認証パッケージの上層は、これらの情報を変更せずに下層に渡します。下層は SAM で OWF パスワードを照会し、SAM から取得された OWF パスワードとチャレンジに渡されたパスワードを使って適切なチャレンジ レスポンスを生成して、生成されたチャレンジ レスポンスと渡されたチャレンジ レスポンスを比較します。

前述したように、Windows NT パスワード (あるいはその関数) または LAN Manager パスワードのいずれかを SAM データベースから取得できない場合があります。また、LsaLogonUser の呼び出しからそれらのいずれかを取得できない場合もあります。以下、どのような場合にどのパスワードを比較するかについて説明します。SAM から取得された Windows NT パスワードと LsaLogonUser から取得された LAN Manager パスワードの両方が使用できる場合、両方を使用します。そうでない場合は、LAN Manager パスワードを使って比較を行います。これにより、Windows NT から Windows NT にパスワードを渡す際に大文字と小文字を識別でき、下位互換も可能になります。

パススルー認証

NetLogon サービスではパススルー認証を使用できます。その役割は、認証要求を渡すドメインを選択する、ドメイン内でサーバーを選択する、選択したサーバーを通して認証要求を渡す、の 3 つです。

ドメインの選択は簡単です。ドメイン名を LsaLogonUser に渡します。ドメイン名は次のように処理されます。

  • ドメイン名が SAM データベースの名前と一致した場合、そのマシン上で認証が処理されます。ドメインのメンバである Windows NT ワークステーション上の SAM データベースの名前が、Windows NT マシンの名前と考えられます。Windows NT Advanced Server 上の SAM データベースの名前が、そのドメインの名前になります。ドメインのメンバではない Windows NT マシンにログオンする場合、要求はローカルで処理されます。
  • 指定されたドメインがこのドメインによって信頼される場合、認証要求がその信頼されるドメインに渡されます。Windows NT Advanced Server に信頼できるドメインの一覧があるので、この比較は容易に実行できます。Windows NT ワークステーションでは、常にワークステーションのプライマリ ドメインに要求が渡されるので、指定されたドメインが信頼できるかどうかをプライマリ ドメインで確認することができます。
  • 指定されたドメイン名がこのドメインによって信頼されない場合、指定されたドメイン名が接続されたマシンのドメイン名であるかのように、接続されたマシン上で認証要求が処理されます。NetLogon では、ドメインが存在しない場合、ドメインが信頼されない場合、およびドメイン名が正しく入力されなかった場合を識別しません。
ドメイン名を指定しないネットワーク クライアントもあります。このようなクライアントとしては、Windows for Workgroups 3.1 や LAN Manager OS/2 Version 2.2 があります。LAN Manager OS/2 Version 2.2 では、パッチを使用してドメイン名を渡すことができます。Windows NT ワークステーションは、アカウントがローカルで存在するかどうかをチェックすることによってこの NULL ドメインを処理します。ローカルの場合は要求をローカルで処理し、ローカルでない場合は要求をプライマリ ドメインに渡します。Windows NT Advanced Server でも、アカウントがローカルで存在するかどうかをチェックします。ローカルの場合は要求をローカルで処理し、ローカルでない場合は、そのアカウントが信頼されるドメインにあるかどうかを Advanced Server が確認します。この確認は、信頼される各ドメインに二次クラスのメールスロット メッセージを送信することによって行います。信頼される各ドメインは、指定されたアカウントが定義されているかどうかを返します。最初に肯定の応答を返したドメインに要求が渡されます。肯定の応答を返すドメインがない場合、この NULL ドメインは信頼されないドメイン (上記参照) として扱われます。複数のドメインが肯定の応答を返した場合、最初のドメインだけを使用します (このため、NULL ドメイン名を渡すクライアントをアップグレードし、企業内の各ユーザーが単一のアカウントを持つようにしなければなりません)。



NetLogon は、"発見" と呼ばれる処理によってドメイン内のサーバーを選択します。Windows NT ワークステーションが、プライマリ ドメインで Windows NT Advanced Server のいずれかの名前を "発見" します。Windows NT Advanced Server は、信頼されるドメインで、Windows NT Advanced Server の名前を "発見" します。

パススルー認証では、セキュアチャネルに対して I_NetLogonSamLogon API を呼び出します。ログオン呼び出しが対話型ログオンの場合、Netlogon は、OWF パスワードを NetLogon サービスに渡す前に、セキュアチャネルのセッション キーによって暗号化します。セッション キーで暗号化された OWF パスワードは、MSV 認証パッケージの下層に渡される前に復号化されます。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 102716 (最終更新日 2000-10-05) をもとに作成したものです。

プロパティ

文書番号: 102716 - 最終更新日: 2004年9月30日 - リビジョン: 1.2
この資料は以下の製品について記述したものです。
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows NT Workstation 3.1
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
キーワード:?
kbhowto kbother KB102716
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com