DPAPI

DPAPI (、データ保護API) はシンプルな暗号化APIで、Windows 2000およびそれ以降のWindowsオペレーティングシステムに組み込みコンポーネントとして搭載されている。データ保護APIは様々な種類のデータについて対称暗号化（共通鍵暗号）を可能にする。Windowsオペレーティングシステムでの実際の主な用途は、非対称秘密鍵の対称暗号化を実施することで、ユーザーまたはシステムの機密情報をエントロピーの重要な寄与として扱うことである。
ほぼ全ての暗号システムにとって最も困難な試みは「鍵（キー）の管理」、特にどうやって復号鍵を安全に格納するかということである。もし鍵が平文で格納されているなら、他のユーザーは暗号化データのアクセスに使う鍵へ容易にアクセスできてしまう。もし鍵を暗号化するなら、他の鍵が必要になる、といったことなど。DPAPIはユーザーのログオン機密、あるいはシステム暗号化に関してシステムのドメイン認証機密から対称鍵を生成し、ソフトウェア開発者に暗号化手順を提供する。
DPAPI鍵は codice_1 に記憶されているユーザーのRSA鍵を暗号化するのに使われる。SIDはそのユーザーのセキュリティ識別子である。DPAPI鍵はユーザーの秘密鍵を保護するマスター鍵として同じファイルに格納される。それは通常64バイトのランダムなデータである。
2010年にエリー・バーステイン () とジーン・マイケル・ピコッド () はBlack Hat DC 2010において というタイトルでその仕組みの分析についてプレゼンテーションを行った。その発表によると、バーステインとピコッドがリリースした"DPAPlck"はDPAPIで暗号化されたデータのオフライン復号を可能にする。2012年にはブログでDPAPIの内部ロジックについてより詳細な記事を掲載し、完全なDPAPIオフライン復号・解析ツールを公表した。これは先に挙げたものと異なり、いくつかの古いWindowsのバグ（例えば、Windows 2000 DPAPIの鍵を所有者のログオンパスワードを知ること無く復号できる）を利用していて、Windows 8 DPAPIデータ構造と完全に互換性がある。Windows 8ではマイクロソフトはDPAPIの処理ロジックを変更した。現在、使用されているユーザーのマスター鍵を復号するために複数のユーザー鍵が暗号鍵の生成に使われ、単一のDPAPIバッファを復号する。
セキュリティ特性.
DPAPIはそれ自身ではデータを格納せず、単純に平文を受け取って暗号文を返す（またはその逆を行う）役割のみを持つ。
DPAPIのセキュリティはWindowsオペレーティングシステムのマスター鍵やRSA秘密鍵を解読から守る能力に依る。多くの攻撃シナリオでは、エンドユーザーの資格情報のセキュリティ度合いに依る。メインの暗号化・復号キーはユーザーパスワードからPBKDF2ファンクションによって作られる。特に大規模なオブジェクトのバイナリデータはソルト（ハッシュ化に用いる追加のデータ）やユーザー入力による外部のパスワードを必要とする方法によって暗号化されることがある。
デリゲートアクセスはCOM+オブジェクトの使用を通してのみキーが与えられる。これはIISウェブサーバーでDPAPIを使用することを可能にする。
マイクロソフト製ソフトウェアでのDPAPI使用例.
全てのマイクロソフト製品に共通して実装されているわけではないものの、マイクロソフト製品でのDPAPIの利用はWindowsのバージョンを経る毎に増えている。しかし、旧来のマイクロソフトやサードパーティー製メーカーの多くのアプリケーションは独自の保護機構を使うものが多かった。例えば、Internet Explorer 4.0-6.0、Outlook Express、MSN Explorerは旧来の保護ストレージ（）APIでパスワードなどの認証情報を格納している。Internet Explorer 7になってDPAPIを使ってユーザー認証情報を格納するようになった。