web-dev-qa-db-ja.com

データ保護APIを使用してweb.configファイルを暗号化する

Data Protection APIを使用してweb.configファイルの一部を暗号化しました。

さて、私の質問は、ハッカーがweb.configファイルを復号化するために何を必要とするのですか?

復号化するために、マシンに物理的にアクセスする必要がありますか?または、彼はそれを遠隔地から復号化できますか?

3
Matthew

状況によります。

  • 攻撃者がweb.configに単独でアクセスできる場合、キーなしでは暗号化を解除できません。これは、彼が所有していないと想定しています。

  • useMachineProtection 構成でDpapiProtectedConfigurationProvidertrueに設定し、攻撃者がマシンにアクセスする場合(リモートかどうか)任意のアカウントを使用して、マシンでプロセスを実行すると、web.configファイルを復号化できます。攻撃者が実行できるすべてのものを含みます。

  • useMachineProtection設定でDpapiProtectedConfigurationProviderfalseに設定した場合、攻撃者はプロセスに使用されたユーザーアカウント(リモートか否か)。

DPAPIはパスワードベースの保護を提供します であることを知っておく必要があります。したがって、オプション#3を使用していると仮定すると、攻撃者がマシンに物理的にアクセスできたとしても、データを復号化する暗号化キーを復号化するにはアカウントのパスワードが必要です。もちろん、攻撃者は簡単にパスワードをリセットできますが、暗号化されたキーが役に立たなくなり、データにアクセスできなくなります。

.Net 3.5 SP1までは、useMachineProtectionはデフォルトでtrue(bad)に設定されていることに注意してください。それ以降のバージョンに関する情報はありません。

更新:.Net 4.0は、useMachineProtectionにもデフォルト値trueを使用します。

7
Adi

私はあなたが.NetまたはおそらくC++のようなより低いレベルで働いていると仮定しています。これらのAPIを最近使用したことから、ここがお勧めです。

利用可能な2つの保護された構成プロバイダーがあります。DPAPI(クライアント側のデスクトップアプリケーションにより適しています)と RSAプロバイダー です。後者は、web.configsの暗号化に適しています。これは、ASP.NETサービスのみがデータを復号化するための秘密キーを持つ公開キー構成であり、これはDPAPIと同様に、ユーザーとマシンの両方でスコープできます。

ここ は、ASP.Netでの古くて健全なウォークスルーです。 .Netを使用していない場合の謝罪は、不明確でした。それでも、RSAプロバイダーはここに行く正しい方法だと思います。

DPAPI暗号化の解除に関しては、ほとんどの攻撃はターゲットマシンで調整する必要があります。通常、システム管理者を対象としたパスワードSAMファイルまたはパスワードリセットスクリプトでの試行が含まれます。関連する会議資料- DPAPIをオフラインにする:BlackHat 201

3
JoeKir