データ保護API

データ保護アプリケーションプログラミングインターフェースDPAPI)は、Windows 2000以降のバージョンのMicrosoft Windowsオペレーティングシステムに組み込みコンポーネントとして利用可能な、シンプルな暗号化アプリケーションプログラミングインターフェースです。理論上、データ保護APIはあらゆる種類のデータの対称暗号化を可能にします。実際には、Windowsオペレーティングシステムにおける主な用途は、ユーザーまたはシステムの秘密鍵をエントロピーの重要な寄与として用いて、非対称秘密鍵の対称暗号化を実行することです。DPAPIの内部動作の詳細な分析は、2011年にBurszteinらによって発表されました。[ 1 ]

ほぼすべての暗号システムにとって、最も困難な課題の一つは「鍵管理」、つまり復号鍵をいかに安全に保管するかという点です。鍵がプレーンテキストで保管されている場合、鍵にアクセスできるユーザーは誰でも暗号化されたデータにアクセスできてしまいます。鍵を暗号化する場合は、別の鍵が必要になるなど、様々な問題が存在します。DPAPIを使用すると、開発者はユーザーのログオンシークレットから派生した対称鍵、またはシステム暗号化の場合はシステムのドメイン認証シークレットを使用して鍵を暗号化できます。

ユーザーのRSA%APPDATA%\Microsoft\Protect\{SID}鍵の暗号化に使用されるDPAPI鍵は、ディレクトリに保存されます。ここで、{SID}はユーザーのセキュリティ識別子です。DPAPI鍵は、ユーザーの秘密鍵を保護するマスター鍵と同じファイルに保存されます。通常、64バイトのランダムデータです。

セキュリティプロパティ

DPAPI はそれ自体に永続的なデータを保存しません。代わりに、プレーンテキストを受信して​​暗号文を返します(またはその逆)。

DPAPIのセキュリティは、マスターキーとRSA秘密キーを侵害から保護するWindowsオペレーティングシステムの機能に依存しており、ほとんどの攻撃シナリオにおいて、エンドユーザーの資格情報のセキュリティに最も大きく依存しています。メインの暗号化/復号化キーは、PBKDF2関数によってユーザーのパスワードから生成されます。[ 2 ]特定のデータバイナリラージオブジェクトは、ソルトを追加したり、外部のユーザーが入力するパスワード(いわゆる「強力なキー保護」)を要求したりすることで暗号化できます。ソルトの使用は実装ごとのオプション(つまりアプリケーション開発者の管理下)であり、エンドユーザーやシステム管理者が制御することはできません。

COM+オブジェクトを使用することで、キーへの委任アクセスが可能になります。これにより、IIS WebサーバーはDPAPIを使用できるようになります。

Active Directory バックアップ キー

コンピュータがドメインのメンバーである場合、DPAPIには、ユーザーのパスワードが失われた場合にデータの保護を解除するためのバックアップメカニズム「資格情報ローミング」が備えられています。ドメインコントローラーに新しいドメインをインストールすると、DPAPIに関連付けられた公開キーと秘密キーのペアが生成されます。クライアントワークステーションでマスターキーが生成されると、クライアントは認証されたRPC呼び出しを介してドメインコントローラーと通信し、ドメインの公開キーのコピーを取得します。クライアントは、このマスターキーをドメインコントローラーの公開キーで暗号化します。そして、この新しいバックアップマスターキーを、従来のマスターキーストレージと同様に、AppDataディレクトリに保存します。

Microsoft ソフトウェアによる DPAPI の使用

DPAPIはすべてのMicrosoft製品に普遍的に実装されているわけではありませんが、Windowsのバージョンが上がるにつれて、Microsoft製品によるDPAPIの利用は増加しています。しかしながら、Microsoftやサードパーティ開発者の多くのアプリケーションは、依然として独自の保護アプローチを採用しているか、ごく最近になってDPAPIの使用に切り替えたばかりです。例えば、Internet Explorerバージョン4.0~6.0、Outlook ExpressMSN Explorerは、パスワードなどの保存済み認証情報の保存に、古いProtected Storage (PStore) APIを使用していました。Internet Explorer 7では、保存済みユーザー認証情報がDPAPIを使用して保護されるようになりました。[ 3 ]

参考文献

  1. ^ Bursztein, Elie; Picod, Jean Michel (2010). 「WindowsシークレットとEFS証明書のオフラインでの回復」 . WoOT 2010. Usenix.
  2. ^ 「Windows パスワード回復 – DPAPI マスターキー分析」 . Passcape.com . 2013年5月6日閲覧。
  3. ^ Mikhael Felker (2006年12月8日). 「IEとFirefoxのパスワード管理に関する懸念、パート1」 . SecurityFocus.com , Symantec.com . 2010年3月28日閲覧。
  4. ^ 「暗号化階層」 Msdn.microsoft.com 2012年4月。 2017年10月14日閲覧
  5. ^ 「Windows XP Professional および Windows XP Home Edition のセキュリティの新機能」 Technet.microsoft.com 2009年9月11日2017年10月14日閲覧
  6. ^ "ProtectedData クラス (System.Security.Cryptography)" . Msdn2.microsoft.com . 2017年10月14日閲覧
  7. ^ 「CookieAuthenticationOptions.TicketDataFormat プロパティ (Microsoft.Owin.Security.Cookies)」 。 2015年1月15日閲覧
  8. ^ "OAuthAuthorizationServerOptions.AccessTokenFormat プロパティ (Microsoft.Owin.Security.OAuth)" . 2015年10月27日. 2018年11月26日閲覧