文書番号: 309408 - 最終更新日: 2007年9月14日 - リビジョン: 4.5

DPAPI (データ保護 API) のトラブルシューティング

目次

すべて展開する | すべて折りたたむ

概要

DPAPI (データ保護 API) は、Windows 2000 以降のオペレーティング システムでデータを保護するのに役立ちます。DPAPI を使用して、秘密キー、格納された資格情報 (Windows XP 以降の場合)、およびオペレーティング システムやプログラムで機密性を保持する必要のある他の機密情報を保護するのに役立てます。

DPAPI は、DPAPI が保護する機密情報の格納を行いません。DPAPI は、Windows 資格情報マネージャ、秘密キーの記憶域のメカニズム、または Windows 2000 や Windows XP 以降で CryptProtectData() 関数と CryptUnprotectData() 関数を呼び出す任意のサードパーティ プログラムなど、DPAPI を呼び出すプログラムのデータの暗号化や暗号化の解除のみを実行します。

: この機能は、Windows NT 4.0 の P-store (Windows Protected Store) で提供される機能とは異なります。P-store は、機密情報の保護と格納を行います。DPAPI には、記憶域機能はありません。
この資料では、データを基本レベルで保護するのに DPAPI がどのように役立つかについて説明します。また、さまざまな事例で、DPAPI 保護データにアクセスできない場合のトラブルシューティングに関連する情報が記載されています。

DPAPI の動作の詳細については、次のマイクロソフト Web サイトにアクセスしてください。
http://msdn2.microsoft.com/en-us/library/ms995355.aspx (http://msdn2.microsoft.com/en-us/library/ms995355.aspx)
この資料には、以下のトピックが含まれています。

詳細

重要 : DPAPI データが消失した場合にトラブルシューティングを行うには、以下の情報を収集する必要があります。
  • ローカル ワークステーションのバージョンを含む特定のセキュリティ環境での DPAPI の動作方法
  • ワークステーションがドメインに参加しているかどうか
  • ユーザーがドメインのメンバであるかどうか
  • ドメインをホストしているオペレーティング システムのバージョン
Windows NT 4.0 ドメインで DPAPI を使用すると、DPAPI に関する問題が多数発生します。詳細については、この資料の後半の「既知の問題点」を参照してください。

DPAPI を使用するのは、主にオペレーティング システムのセキュリティ機能で、ユーザーのためにデータを保護するのに役立ちます。さらに、任意のサードパーティ プログラムでも DPAPI を使用でき、ユーザー データを安全に保護するのに役立ちます。

DPAPI が保護できる項目

DPAPI は、以下の項目を保護するのに役立ちます。
  • Web ページの資格情報 (たとえば、パスワード)
  • ファイル共有の資格情報
  • EFS (暗号化ファイル システム)、S/MIME、および他の証明書に関連付けられた秘密キー
  • CryptProtectData() 関数を使用して保護されているプログラム データ

例 : 証明書と秘密キー

ここでは、DPAPI によって保護される個人データと機密情報の相違点を説明します。次の一覧では、証明書のインポート操作中にデータが配置される場所、およびユーザーの個人ストアに格納される証明書に関連付けられた秘密キーについて説明します。
  • 証明書は、1 つの大きなバイナリ オブジェクトとしてエンコードされ、バイナリ値として次のファイルの場所に格納されます。
    %Userprofile%\Application Data\Microsoft\SystemCertificates\My\Certificates
  • レジストリ キーがローカル ユーザーのプロファイルに配置されることに注意してください。この場所に配置されていることにより、一般的な環境では、ログオン ユーザーだけが独自の証明書にアクセスできるようになります。
  • デフォルトの Windows メカニズムを使用しても、証明書は DPAPI によって保護されません。アクセス制御リスト (ACL) を使用して、ユーザーのハイブを読み込むことがあるユーザー、およびハイブに格納されている証明書を読み取ることがあるユーザーを定義します。
  • 証明書に関連付けられた秘密キーは、DPAPI によって暗号化され、以下のフォルダにあるユーザー プロファイルの個別のファイルとして (暗号化された形式で) キー コンテナに保存されます。
    • RSA キーの場合 :
      %Userprofile%\Application Data\Microsoft\Crypto\RSA\ユーザーの SID
    • DSA キーの場合 :
      %Userprofile%\Application Data\Microsoft\Crypto\DSA\ユーザーの SID

DPAPI の動作

: この資料では、このセクションで説明する用語と概念を理解しやすくするために簡略化しています。ある程度の詳細事項は省略しました。たとえば、この資料では、ユーザーのパスワードから派生する値については説明しますが、値を派生するために使用するアルゴリズムの詳細については説明しません。DPAPI の動作方法の詳細な説明については、Windows データ保護のホワイト ペーパーを参照してください。このホワイト ペーパーを参照するには、次のマイクロソフト Web サイトに移動してください。
http://msdn2.microsoft.com/en-us/library/ms995355.aspx (http://msdn2.microsoft.com/en-us/library/ms995355.aspx)
DPAPI は、プログラムとさまざまなオペレーティング システムのコンポーネントによって使用される機能で、ユーザーのデータを保護するのに役立ちます。DPAPI の動作は、ユーザーには見えません。DPAPI は、プログラムを実行するユーザーのセキュリティ コンテキストでデータを保護するのに役立ちます。

DPAPI は、マスタ キーという 512 ビットの擬似乱数から派生した値のデータを使用して、機密情報を保護します。Windows Server 2003 ドメイン コントローラでは、ドメインの機能レベル 2 または Windows Server 2003 モードで動作しているときに限り、2048 ビットの RSA キーが使用されます。各ユーザー アカウントには、ランダムに生成されたマスタ キーが 1 つ以上あります。マスタ キーの数は、ユーザー プロファイルの作成日時からの経過日数によって異なります。マスタ キーは、定期的に更新されます。デフォルトでは、この値は 90 日ごとです。

マスタ キーには、ユーザーのすべての機密情報を暗号化解除するのに必要なデータが含まれているので、マスタ キーを保護する必要があります。マスタ キーは、ユーザーのパスワードから派生する値を使用して保護されます。パスワードは、ユーザーだけが知っている一意の値です。マスタ キーは実際にはユーザーのパスワードから派生する値を使用して暗号化されるので、この資料で提供する説明では、この値をユーザーのパスワードと同じ意味で使用します。

DPAPI 環境の考慮事項

このセクションでは、DPAPI 保護の動作に影響を及ぼす環境構成について説明します。

DPAPI と固定プロファイル

固定プロファイルは、読み取り専用のプロファイルです。固定プロファイルのローカル コピーに対して行われる更新は保存されません。たとえば、キー生成は固定プロファイルでブロックされます。DPAPI は、プロファイルのローカル コピーにマスタ キーを格納して、新しいマスタ キーを定期的に作成し、新しいマスタ キーを使用して、保護された機密情報の暗号化を更新します。

これらの 2 つの状態には互換性がないため、機密情報の保護を支援する DPAPI に依存するプログラムは、固定プロファイルを使用すると正常に機能しません。固定プロファイルで正常に機能しない DPAPI を使用して機密情報の保護を支援するプログラムには、EFS (秘密キー)、秘密キーを含む証明書 (秘密キー)、および Windows XP 以降の格納された資格情報 (資格情報) が含まれます。これらのデータの種類やプログラムを使用する構成は、固定プロファイルではサポートされていません。

DPAPI と移動プロファイル

DPAPI は、Active Directory ディレクトリ サービス ドメインに参加しているユーザーとコンピュータの移動プロファイルを使用することにより期待どおりに機能します。プロファイルに格納されている DPAPI データは、移動プロファイルに格納されている他の設定やファイルと同様に機能します。DPAPI が保護を支援する機密情報は、ログオフ処理の際に中央プロファイルの場所にアップロードされ、ユーザーがログオンしたときに中央プロファイルの場所からダウンロードされます。

あるコンピュータの DPAPI を使用して、別のコンピュータのマスタ キー (およびデータ) の暗号化を解除できます。この機能は、ドメイン コントローラによって格納および確認されるユーザーの一貫したパスワードにより提供されます。通常の処理が予期せず中断された場合、DPAPI は、この資料の後半の「パスワードのリセット」で説明する処理を使用できます。

現在、Windows XP ベースのコンピュータと Windows 2000 ベースのコンピュータ間、または Windows Server 2003 ベースのコンピュータと Windows 2000 ベースのコンピュータ間で、移動プロファイルに関する制限があります。Windows XP ベースのコンピュータまたは Windows Server 2003 ベースのコンピュータでキーの生成やインポートを行い、キーが移動プロファイルに格納された場合に、ユーザーが移動ユーザー プロファイルを使用してログオンしている場合は、DPAPI は Windows 2000 ベースのコンピュータで、これらのキーの暗号化を解除できません。ただし、Windows XP ベースのコンピュータまたは Windows Server 2003 ベースのコンピュータは、Windows 2000 ベースのコンピュータで生成されるキーの暗号化を解除できます。

DPAPI とパスワード変更

セキュリティが強化されている環境内のユーザーは、定期的にパスワードを変更する必要があります。その結果、DPAPI は、パスワードの変更後に、ユーザーの保護されたデータに対して同レベルのアクセスを維持できる必要があります。Windows 環境でユーザー パスワードを変更するには、以下の方法を使用します。

パスワード変更


この方法では、パスワード変更中に、ユーザーのマスタ キーへのアクセスが継続されます。Active Directory ドメインでのパスワード変更の操作時に、以下のように DPAPI が Winlogon コンポーネントによって呼び出されます。
  • パスワード変更の操作時に、Winlogon から通知を受け取ります。
  • ユーザーの古いパスワードで暗号化されたすべてのマスタ キーの暗号化を解除します。
  • ユーザーの新しいパスワードを使用してすべてのマスタ キーを再び暗号化します。
パスワードのリセット (設定)


この方法では、管理者が強制的にユーザー パスワードをリセットします。パスワードのリセットは、パスワードを変更するよりも複雑です。管理者はユーザーとしてログオンしていないので、ユーザーの古いパスワードにアクセスできません。そのため、古いパスワードを使用して古いマスタ キーの暗号化を解除し、新しいパスワードを使用して古いマスタ キーを再び暗号化することはできません。

パスワードをリセットする場合、ユーザーのパスワードをリセットする前に最後に使用したパスワードに戻すと、常にマスタ キーへのアクセスが復元されます。結果として、保護を行うために必要なすべての機密情報へのアクセスが復元されます。この動作は、マスタ キーの暗号化を解除できないときでも、マスタ キーは削除されないことが原因で発生します。ただし、この解決方法は信頼性に欠けます。ユーザーが常に古いパスワードを覚えているとは限りません。たとえば、ユーザーが古いパスワードを忘れたために、ユーザーのパスワードをリセットする場合があります。

DPAPI によってパスワードのリセット問題が解決される方法は、ユーザーを認証しているセキュリティ環境によって異なります。

パスワードのリセット : Windows 2000 以降のドメインのドメイン ユーザーの場合

Active Directory ドメイン環境で DPAPI を使用する場合、マスタ キーで操作を実行するたびに、マスタ キーのコピーが 2 つ作成されて更新されます。この資料の前半で説明したように、最初のコピーは、ユーザーのパスワードによって保護されます。2 つ目のコピーは、ドメイン内のドメイン コントローラに関連付けられている公開キーで暗号化されます。この公開キーに関連付けられている秘密キーは、Windows 2000 以降のすべてのドメイン コントローラに認識されています。Windows 2000 ドメイン コントローラは対称キーを使用して、マスタ キーの 2 つ目のコピーの暗号化と暗号化解除を行います。

ユーザー パスワードをリセットし、元のマスタ キーがユーザーにアクセスできなくなった場合、次の処理で、バックアップ マスタ キーを使用してユーザーによるマスタ キーへのアクセスが自動的に復元されます。
  • ワークステーションによって、保護された RPC 経由で Windows 2000 以降のドメイン コントローラに暗号化されたバックアップ マスタ キーが送信されます。
  • ドメイン コントローラによって、秘密キーが使用され、ユーザーのマスタ キーの暗号化が解除されます。
  • ドメイン コントローラによって、暗号化されていないマスタ キーがワークステーションに返されます。
  • ワークステーションによって、ユーザーの新しいパスワードが使用され、マスタ キーが再び暗号化されます。
パスワードのリセット : Windows NT 4.0 ドメインの場合

Windows NT 4.0 ドメインのユーザーに対して、DPAPI が有効な機能 (たとえば、EFS や秘密キーの記憶域) を使用することはお勧めしません。詳細については、この資料の「既知の問題点」を参照してください。

パスワードをリセットした後、Windows 2000 ベースのクライアント コンピュータは、ユーザーがワークグループに存在する場合と同じ方法でバックアップ マスタ キーを使用して、DPAPI で保護されている機密情報へのユーザーのアクセスを自動的に復元します。この手順の詳細、およびセキュリティ上の危険に関する情報については、この資料の「パスワードのリセット : ワークグループの Windows 2000 ワークステーションの場合」を参照してください。

Windows NT 4.0 ドメイン内の Windows XP は、マスタ キーのバックアップ コピーを保持しません。詳細については、この資料の「既知の問題点」を参照してください。

パスワードのリセット : ワークグループの Windows 2000 ワークステーションの場合

スタンドアロン コンピュータで DPAPI を使用している場合、マスタ キーで操作を実行するたびに、マスタ キーのコピーが 2 つ作成されて更新されます。この資料の前半で説明したように、最初のコピーは、ユーザーのパスワードによって保護されます。2 つ目のコピーは、ローカル コンピュータ アカウントだけに認識されている機密値を使用して暗号化されます。

ユーザーのパスワードを強制的にリセットし、ユーザーが新しいパスワードを使用してログオンした後、Windows 2000 は、コンピュータが暗号化したマスタ キーのコピーの暗号化を自動的に解除し、そのコピーを新しいユーザー パスワードから派生した値で再び暗号化します。ユーザーの観点からいうと、DPAPI によって保護されている機密情報へのユーザーのアクセスは、まったく中断されません。

重要 : この現象は、セキュリティに影響を及ぼすことがあります。このようなデフォルトの構成で DPAPI を使用することはお勧めしません。物理的に危害を受ける可能性がある重要な情報が含まれている Windows 2000 スタンドアロン コンピュータには、以下のいずれかの方法を使用することをお勧めします。
  • Windows XP へのアップグレード
  • Windows 2000 ベースのラップトップでの SYSKEY モード 2 または 3 の使用

  • SYSKEY の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    143475? (http://support.microsoft.com/kb/143475/EN-US/ ) Windows NT System Key Permits Strong Encryption of the SAM
    143475 ? (http://support.microsoft.com/kb/143475/JA/ ) Windows NT システム キーによって提供される、SAM の強力な暗号化機能
パスワードのリセット : ワークグループの Windows XP ワークステーションの場合

デフォルトでは、Window XP は、マスタ キーのバックアップ コピーを作成しません。これは、マスタ キー キャッシュのオフライン攻撃を防止するためです。Windows XP では、ユーザーがパスワードを忘れた場合にパスワードを回復できるように、パスワード リセット ディスクを作成できます。Windows XP Service Pack 1 (SP1) 以降を使用している場合、Windows によってマスタ キーのバックアップ コピーが保持されるように、レジストリを構成できます。
強制的なパスワード変更の影響および実行可能なパスワード回復方法についての関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
290260? (http://support.microsoft.com/kb/290260/EN-US/ ) EFS, Credentials, and Private Keys from Certificates Are Unavailable After a Password Is Reset
パスワード リセット ディスク

パスワード リセット ディスクは、ワークグループに参加している Windows XP 以降をベースにしたコンピュータでのみ使用できます。パスワード リセット ディスクを使用すると、ユーザーのアカウント、およびプロファイルで DPAPI により保護されているすべての機密情報へのアクセスをユーザーが再び取得できます。

パスワード リセット ディスクの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
321305? (http://support.microsoft.com/kb/321305/EN-US/ ) How to Log On to Windows XP If You Forget Your Password or Your Password Expires

既知の問題点

Windows NT 4.0 ドメインで移動プロファイルを使用して DPAPI 機密情報にアクセスできない

重要 : Windows NT 4.0 ドメイン環境で DPAPI を使用することはお勧めしません。

Windows NT 4.0 ドメインでは、Windows XP によってユーザーのマスタ キーのバックアップ コピーが作成されません。これは、デフォルトの動作です。パスワードを変更またはリセットした場合、ユーザーは、プロファイルに含まれている機密情報へのアクセスを拒否されることがあります。ユーザーが最後に使用した既知の適切なパスワードにパスワードを戻したときだけ、アクセスが復元されます。

Windows NT 4.0 ドメインでの DPAPI に関する問題の最も一般的な原因は、パスワードのリセットや移動プロファイルに関連しています。移動プロファイルに関する問題は、ユーザーがパスワードを変更して間もない場合に発生します。移動ユーザー プロファイルの一般的な操作を中断することがあるさまざまな要因によって、ユーザーのログオン先プロファイルが、新しいパスワード (マスタ キーの暗号化) を使用して更新されていないことがあります。

この問題を解決するには、ユーザーが属しているドメインに Windows 2000 または Windows Server 2003 のドメイン コントローラをインストールします。DPAPI によって自動的にこのドメイン コントローラが検出され、ドメイン コントローラの DPAPI 公開キーと秘密キーのペアを使用して、バックアップと復元の操作が実行されます。

Windows SP1 以降を使用している場合、Windows NT 4.0 ドメインに参加している間は、DPAPI を使用してマスタ キーのローカル バックアップを強制的に作成することができます。ただし、この手順は、変更が適用されるコンピュータのセキュリティに影響を及ぼすのでお勧めしません。

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
331333 ? (http://support.microsoft.com/kb/331333/EN-US/ ) User Cannot Gain Access to EFS Encrypted Files After Password Change or When Using a Roaming Profile

スタンドアロン コンピュータに Windows を再インストールした後、DPAPI 機密情報にアクセスできない

仕様により、スタンドアロン コンピュータに Windows をインストールした後、DPAPI 機密情報にアクセスすることはできません。オペレーティング システムをアップグレードせずに再インストールした後、Windows の元のコピーに存在していたユーザーのインスタンスが破損します。新しいユーザーを同じ名前で作成しても、異なるセキュリティ データベースに異なるセキュリティ プリンシパルを保持します。新しいユーザーには、元のユーザーの DPAPI 機密情報の暗号化を解除するためのアクセス許可がありません。新しいユーザーは、ユーザー マスタ キーを使用して、ユーザーの機密情報にアクセスできません。

Windows の元のコピーを保存しておくことにより、そのコピーのみに認識されている機密データを含むマスタ キーのコピーを保護するのに役立ちます。オペレーティング システムを置き換えた場合、この機密データにアクセスできません。ユーザーは、バックアップ マスタ キーを使用して、ユーザーの機密情報にアクセスできません。

固定プロファイルを使用して、DPAPI 機密情報を追加したりその機密情報にアクセスできない

仕様により、Windows 2000 と Windows XP では、固定プロファイルのローカル コピーに書き込むことができません。これは、最初のセッションの後にデータが保存されるためです。その結果、DPAPI を使用して、新しいマスタ キーの格納、パスワード変更でのマスタ キーの更新、または固定プロファイルへの保護されたデータの追加を行うことはできません。

ドメインへの参加または参加解除後、DPAPI 機密情報にアクセスできない

スタンドアロン コンピュータをドメインに参加させ、DPAPI データにアクセスできなくなった場合、ローカル ユーザーとしてログオンすることで、アクセスを復元できます。ドメインに参加しているコンピュータでローカル ユーザーとしてログオンするには、[Windows へログオン] ダイアログ ボックスのドロップダウン ボックスでローカル コンピュータの名前をクリックし、ローカル ユーザー名とパスワードを入力します。

コンピュータをドメインから参加解除した場合、ドメインに再参加して、同じドメイン ユーザーとしてログオンし、ファイルへのアクセスを再取得します。

ガイドラインと推奨事例

  • 強力なパスワードを使用することをお勧めします。確実に覚えておくことができる最も難解で複雑なパスワードを使用してください。 : 現在、パスワード フィルタは、DPAPI によってサポートされていません。
  • 重要な証明書と秘密キーを、安全でセキュリティで保護されている場所にエクスポートしてバックアップします。 証明書および秘密キーのバックアップ方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    320878? (http://support.microsoft.com/kb/320878/EN-US/ ) HOW TO: Manage Certificates in Windows 2000

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 309408? (http://support.microsoft.com/kb/309408/EN-US/ ) (最終更新日 2003-06-04) を基に作成したものです。

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

サポート技術情報の翻訳