2

私が取り組んでいる学校のプロジェクトについてアドバイスが必要です。一部のファイルのデータを暗号化するためのAESアプリを作成しています。現在、これらのファイルには多くの人がアクセスできます。

AESキーについてはRFC2898DeriveBytes、パスフレーズから暗号化キーを取得するために使用することを考えていました。MSDNには、その使用方法に関する優れたチュートリアルがいくつかあります。さて、私の問題は、そのキーをどこにどのように保存するかです。

キーをフラッシュドライブのファイルに保存したかったのですが、ユーザーが多い場合、同時に多くのフラッシュドライブにキーを書き込むにはどうすればよいですか?(コンピューターは限られた数のポートしか持つことができません)。また、あるファイルへのアクセス権を持つ必要がある新しいユーザーがいるとしましょう。彼のフラッシュドライブにキーを書き込むにはどうすればよいですか?

4

3 に答える 3

3

アプリケーションの目的によって異なります。

  1. アプリケーションのすべてのユーザーがアクセスできるようにデータを暗号化することが意図されている場合は、アプリケーション自体にキー (または、より安全に、キーの派生元となるデータ) を埋め込む方が適切です。

  2. ユーザーごとにアクセスを制限する場合は、キー (またはキーの派生元となるデータ) をユーザーごとに保存する必要があります (許可されたユーザーのみが利用できるようにするため)。

埋め込まれたセキュリティ データの使用に関するいくつかのヒント:

  • アプリケーション内のさまざまな場所から取得できるように、データを断片に分割します。カスタム アルゴリズムを使用してデータを組み立てます。

  • キー自体を埋め込むよりも、キーの派生元となるデータを埋め込む方がはるかに安全です。ハッカーがバイナリ エディターを使用し、アプリケーション内でキーが無傷であることがわかった場合、ファイルの復号化ははるかに簡単になります。同じハッカーがキーを導出するデータを見つけた場合でも、データを使用できるようにする前に、そのデータからキーを導出するために使用したアルゴリズムを特定する必要があります。

于 2012-12-17T15:21:15.807 に答える
2

キーを保管することはできません。キーが何であるかをユーザーに伝える必要があります。RFC2898DeriveBytes単に出力を保存するだけでは役に立ちません。ランダムなキーが必要な場合は、代わりに十分にシードされた乱数ジェネレーターを使用してください。

通常は、ユーザーのパスワードから生成されたキーでランダム データ キーを暗号化します。次に、データ キーを使用してデータを暗号化します。このようにして、複数のユーザーのためにファイルを暗号化できます。現在行っているように、ユーザーのキー ( の PBKDF2 関数で生成されたもの) で同じキーを暗号化するだけRFC2898DeriveBytesです。

ユーザーがパスワードを入力するたびに、必ず異なるソルトを使用してください。また、ランダムな IV をデータ ファイルの先頭に追加し、認証モード暗号化または (H)MAC を使用することを強くお勧めします。

于 2012-12-17T23:39:49.727 に答える
0

個人的には、キーをどこにも保存しません。パスワードを入力してオンデマンドでキーを生成するように要求するだけです。

于 2012-12-17T14:29:28.520 に答える