3

ユーザーが暗号化されたZIPファイルのライブラリを持っているデスクトップアプリケーションがあります。構成ファイルには、これらのZIPを復号化するためのマスターパスワードが保持されています。ユーザーがアプリケーションをインストールしてプログラムを開くときに選択したプログラムパスワードを入力し、そのパスワードを使用して構成ファイルに保存されているマスターパスワードを復号化するという考え方です。

このセキュリティのすべての要点は、誰かがハードディスクとユーザーのWindowsアカウントにアクセスできたとしても、理想的には、パスワードなしではZIPファイルにアクセスできないということです。

ユーザーが入力したプログラムパスワードを検証するために、ここ(ページの下部)からC#ハッシュコード(VBに変換)を使用しています:

http://crackstation.net/hashing-security.htm

ここまでは順調ですね。プログラムパスワードのハッシュのみを保存しているため、ハッカーは設定ファイルを見てそれを読み取ることができませんでした。

今、私はここにあるように暗号化を実装しようとしています:

http://msdn.microsoft.com/en-us/library/yx129kfs.aspx

実際の質問:

では、ユーザーが入力したプログラムパスワードを使用して実行時にZIPマスターパスワードを復号化するために使用される構成ファイルにプレーンテキストとして保存されるのは、次のうちどれですか?

  • 暗号化キーの生成に使用されるソルト(これは、上記のパスワードのハッシュに使用されるソルトと同じでしょうか?)

  • 初期化ベクトル(IV)?

  • 暗号化キー?(おそらくそうではありません...)(MSの例ではk1)

  • 復号化キー?(MSの例ではk2)

MSの例では、暗号化と復号化がすべて混ざり合っています...たくさんのピースがありますが、それらを組み合わせる方法がわかりません...

Update

I've read that AES encryption is more secure than the Triple DES encryption MS is using in their example above. Seeing that we're using AES on the zip files, it would be nice to use AES for the ZIP file password too.

So, how can I combine this AES example:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.aescryptoserviceprovider.aspx#Y2300

With PBKDF2 to generate the encryption key?

4

1 に答える 1

1

You need to store the salt and iteration count for the PBKDF function (which must not be the same salt used to hash the password).

The key would be the result of PBKDF, which, for a given salt and iteration count, is fixed.

You also need to store the IV.
If you want to, you can use a (PBKDF) hash of the password using a third (stored) salt as the IV.

于 2012-06-29T21:33:56.743 に答える