4

さて、私はアプリケーションに取り組んでおり、ユーザーのSDカードにファイルを保存したいのですが、ファイルを暗号化したいと思っています。DES暗号化を使用してファイルとデータを暗号化するいくつかのサイトを調査しましたが、何かについて混乱しています。私が見たすべての例では、次のような行を使用しています。

SecretKey key = KeyGenerator.getInstance("DES").generateKey();

私が抱えている問題は、暗号化するために自分の鍵を取得し、明らかに復号化するために同じ鍵が必要なことです。しかし、キーをファイルまたはデータベースに保存すると、誰かがキーを取得してファイルを復号化できないため、逆説のように見えます。何かが足りないかもしれませんが、提供されたパスフレーズを使用してキーを生成する方法はありますか?また、生成されたキーを別の場所に保存する必要がある場合、なぜ誰かがパスキーを使用したくないのでしょうか。

4

3 に答える 3

1

まず、DESは使用しないでください。それは何年もの間壊れています。代わりにAESを使用してください。

私が抱えている問題は、暗号化するために自分の鍵を取得し、明らかに復号化するために同じ鍵が必要なことです。

対称暗号化技術を使用する場合、これがそれです。それ以外の場合は、非対称暗号化をご覧ください。

しかし、キーをファイルまたはデータベースに保存すると、誰かがキーを取得してファイルを復号化できないため、逆説のように見えます。

はい、誰かがそれを行うことができます。

Maybe I am missing something, but is there a way to generate a key using a supplied pass phrase?

パスフレーズを使用してキーを使用することはありません。通常、次のことを行います。

  1. キー生成
  2. パスフレーズから派生した対称鍵で生成された鍵を暗号化する

また、生成されたキーを別の場所に保存する必要がある場合、なぜ誰かがパスキーを使用したくないのでしょうか。

いくつかの理由が考えられます。たとえば、キーをリムーバブルデバイスに保存し、パスフレーズを入力せずに、キーをコンピューターに接続するだけでキーを取得できます。パスフレーズがあることには欠点もあります。パスフレーズは覚えておく必要があり、推測できます。長すぎる場合は、おそらく書き留めておきます(これは、ファイルに保存する場合とほとんど同じです)。

編集:

パスワードからキーを生成するには、PBKDF2関連記事)をご覧ください。

于 2011-05-15T02:03:47.433 に答える
1

私は2つのケースがあると思います:

  1. ユーザーを信頼します-キーを何らかの入力(パスワード/パスフレーズ)に依存させます。それを使ってデータを暗号化/復号化します。

  2. ユーザーを信頼していません。問題が発生した場合、暗号化/復号化アルゴリズムがわかりにくくなる可能性がありますが、メカニズム+キーがデバイスに保存されている限り、この問題が発生します。

これは、対称暗号化と非対称暗号化の両方に適用されます。

于 2011-05-15T02:05:51.317 に答える
0

ええ、暗号化にパスフレーズを使用することは可能です。

ただし、最初にDESをダンプします。AES-128を使用します。

ユーザーからのパスフレーズを受け入れ、SHA-256またはSHA-512を使用してハッシュを生成します。AES-128のハッシュを128ビットにトリミングします。この投稿を参照してください。

JavaAESと自分のキーの使用

できれば塩を使ってください。

パスワード部分の保管について。パスワードではなくハッシュを保存します。このようにして、攻撃者がキーを生成するのを防ぐことができます。ユーザーに強力なパスワードの入力を求めます。そして、あなたの塩も非常に強くなければならないことを忘れないでください。

したがって、最終的には、パスワードのハッシュのみを保存します。パスワードは保存されず、復号化するキーも保存されません(実行時に生成されます)

それが役に立てば幸い。

于 2011-07-15T06:48:45.010 に答える