2009-08-25 24 views
16

私はWindows DPAPIを使用して、機密データを暗号化しています。暗号はレジストリに格納されます。これはうまくいきますが、.NETのProtectedData.Protect()に(オプションで)提供されている「エントロピー」バイトの理解を誰かが明確にできるかどうかは疑問でした。Windows DPAPI - エントロピーとは何ですか?

'エントロピー'バイト配列は、他の暗号化方式で使用される初期化ベクトルまたはソルトに似ているようですが、MSDNのエントロピーバイトについてはよくわかりません。コードサンプル私はエントロピーバイトでハードコードを見たことがあります!

ProtectedData.Protect()に供給されるエントロピーバイトは&ですか?ProtectedData.NnprotectはIVまたはsaltに類似していますか?したがって、エントロピーバイトは暗号と一緒に安全に保存できますか、それともセキュリティを脅かすでしょうか?

答えて

13

エントロピーは、データを保護するアプリケーションに固有の2次キーです。私が正しく覚えていれば、一般的な考え方は、複数のアプリケーションが単一のユーザーアカウントでデータを暗号化できるようにすることでしたが、お互いにセキュリティを維持していました。たとえば、アプリケーションがUserAの下でデータを暗号化することがあります。私のアプリケーションがUserAのもとでそのデータを解読することを望むなら、DPAPIがusers鍵を使用するので、私がそれをやめるのを止める何も本当にありません。しかし、アプリケーション固有の「エントロピー」を考慮すると、UserAを保護するためにデータを復号化するためにエントロピーを知る必要があります。

エントロピーは、暗号化されたコンテンツをさらに抽象化するために使用される追加の鍵または秘密であるという点で、塩に類似していると考えることができます。 saltとは異なり、アプリケーションのエントロピーは、特定の資格情報でのすべての暗号化操作で同じままにする必要があります。塩では、できるだけ頻繁にそれを変更するのが一般的です。

エントロピーは本質的に追加の鍵であり、他の暗号鍵と同様に扱う必要があります。それをプライベートで安全に保つ。

ところで、私は「エントロピー」がこの目的のために使用する凶悪な言葉だと思います。 '差別化'のようなもの、あるいは 'distinctifier'のような単語をコイニングすることさえあれば、より良いものになりました。 :P非常に混乱する用語の使用。

+0

ありがとう、素晴らしい答え。だから、エントロピーをアプリにハードコーディングするのは完全な災害ではないが、キーのように扱うほうが良いと思う。とにかくキーを暗号化しているので、キーを保護するための別の "キー"を持っていると少し狂っています。 – saille

+0

ああ、ちょっと複雑なコンセプトです。しかし、「エントロピー」が差し込むことを目指すセキュリティホールは非常にリアルです。 Windowsでのクレデンシャル固有の暗号化はユーザにとって非常に便利ですが、悪意のあるプログラムがそれらのデータを復号化する新たな機会をもたらします。また、「他の」プログラムが無害であると想定しないでください...ユーザーが知らないマルウェアもシステムに存在し、エントロピーではない暗号化されたデータを調べる可能性があります。 – jrista

1

アプリケーション自体をパスワードで保護したい場合に便利です。パスワード(または、パスワードが変更されたときにアプリケーションデータを再取得する必要がないようにパスワードで生成および暗号化された別のキー)は、アプリケーションデータを格納する際にエントロピーとして使用できます。

関連する問題