Windowsデータ保護API(DPAPI)は、Windowsシステムにシークレット(ASP.Netアプリケーションで必要なデータベースパスワードなど)を保存するための推奨方法です。
DPAPick は、BlackHat DC 2010およびWOOT'10で過去のパスワードと暗号化されたファイルシステム証明書の復元に焦点を当てて発表されました。プレゼンテーションの要約では、暗号化されたすべてのDPAPIの復号これはオフライン攻撃であるため、Windowsレジストリのアクセス制御も効果がありません。
DPAPickの有効性にはどのような制限があり、そのブラインドスポットと弱点を利用して、アプリケーションのワークステーションに保存しているデータをより適切に保護できますか?
@nealmcbがこれについて質問しました(ありがとう!)これは確かに私たちの論文では取り上げられていない素晴らしい質問です。 DPAPIセキュリティの扱い方について十分なアドバイスを提供していないことに同意します。ブログ投稿を書くことでこれを修正しますが、当面はここにあなたができることの概要があります:
全体的なDPAPIは、Firefoxパスワードデータベースなどの秘密データをWindowsアカウントのパスワードに関連付けることができるブラックボックスAPIです。 DPAPIシークレットを復号化するには、ユーザーパスワードのハッシュが必要です(ただし、NTLMではなくSHA1(16_LE)の場合)。
したがって、オフライン攻撃の設定では、攻撃者は最初にこのハッシュを取得するためにユーザーパスワードをブルートフォース(または推測)する必要があるため、「強力な」パスワードは間違いなく最初の優れた防御策です。ただし、NTLM用のRainbowテーブルがあるため、DPAPIセキュリティもこれの影響を受けることに注意してください。
攻撃者は明らかにDPAPIデータの回復を試みる前にハードドライブの暗号化を解除する必要があるため、bitlockerやtruecryptなどのディスク暗号化は、これに対する防御の優れた第一線です。
ファイルの暗号化解除に必要な証明書は「DPAPI」のようなシステムで暗号化されているため、EFSが問題を解決するとは信じられません。したがって、ユーザーのパスワードがわかると、攻撃者は最初に証明書を回復してEFSファイルを解読し、次にDPAPIデータを解読するだけです。
これで状況が明らかになればいいのですが。 CREDHIST問題については、それをクリアするツール(少なくとも最初のN個の古いパスワード)を書くことを考えています。
他にご不明な点がありましたらお知らせください
これは主にアルゴリズムのリバースエンジニアリングです。APIは隠ぺいによるセキュリティを採用しており、プリミティブの完全なセットを提供していなかったためです。
したがって、これはまず第一に、辞書攻撃に強い、本当に良いログインパスワードを使用する必要性を増幅するようです。
また、他のパスワードを簡単に解読される可能性があるため、弱いパスワードを使用しないでください。
論文に記載されているように、バックドアの可能性に常に注意してください: Elie-DPAPIを元に戻し、Windowsシークレットをオフラインで盗みます 。
そしてマイクロソフトにロビー活動をして、この無料の分析を行ったより資格のある暗号関係者からの申し出を受け入れてください。つまり壊れたCREDHISTメカニズムを修正します。または、別のシークレットストレージスキームに切り替えます。
展示品A、WindowsオペレーティングシステムがインストールされたPC、ユーザーアカウントが構成されたユーザー、およびユーザーに代わってDPAPIで "保護"されたデータを提供します。
次に、ユーザーBを展示します。
2つのエンティティを1つの部屋に一緒に配置します。電力はありますが、外部ネットワークはありません。ユーザーBはマシンAの電源を入れ、パスワードを入力してログオンします。次に、ユーザーBが保護されたデータにアクセスします。
したがって、マシンの状態(つまりそのハードディスク)の統合された内容とユーザーのパスワードの知識は、データを回復するのに十分です。 当然の結果:攻撃者がマシンの状態を手に入れることができる場合(たとえば、ラップトップ全体を盗んだ場合)、 offline辞書攻撃 ユーザーのパスワードに対して、より多くのハードウェアを投入することで任意に高速化できます。
残りは、あいまいさ、リバースエンジニアリング、および真剣に見える頭字語の長い流れを発してEvil Hackers™の脅威を取り除くための通常のセキュリティサーカスです。オフライン辞書攻撃の状況は、通常のパスワードハッシングのベルとホイッスルによって軽減できます( bcrypt を参照)。より徹底的なアプローチでは、改ざん防止デバイスを使用します。外部スマートカード、または [〜#〜] tpm [〜#〜] 。これは概念的に、攻撃者にマシン状態の重要な部分を奪います。しかし、これはよりコストがかかり、ハードウェア障害の場合のデータ回復に影響を与えます。