2009-06-19 6 views
2

私は使用するいくつかのAPIがプレーンテキストのパスワードを必要とするため、ハッシュできないパスワードを格納する.NETサーバーアプリケーションがあります。サーバーアプリケーションでハッシュできないパスワードを保存する

これらのパスワードは、システム構成の一部として、アプリケーションの別のサーバーインスタンスにエクスポートまたはインポートすることも、バックアップ目的でインポートすることもできます。

暗号化されたデータは、エクスポートされたもの以外の他のサーバー上のアプリケーションインスタンスによって確実に読み取られる必要があります。

暗号鍵を紛失した/利用できないために、ユーザに過度の手間とデータ損失のリスクを最小限にして、これを達成する最も安全な方法は何ですか?


EDIT

私のような詳細については、もっと探しています:

  • どこ保存する方法/キー
  • 生成するごとに固有のキーがインストール と それを保存しますアプリケーションと比較して 共通鍵

...使用する暗号化アルゴリズムはありません。


EDIT II

私は、このアプリケーションは、独自のサーバー上で実行するために、顧客に配布されることを追加する必要があります。これはクライアント/サーバーアプリケーションです。格納されたパスワードは、外部APIメソッドに渡すためにアプリケーションでのみ使用されます。私たちは他に何も使っていません。

システム構成をバックアップ用のXMLとしてエクスポートしたり、別のマシンに移動したりする場合が最も重要です。これを保護したい場所ですが、できるだけユーザーにとってそれを簡単かつ柔軟にします。

答えて

1

あなたが探しているものを説明している編集した後、次のようにいくつかのより多くの提案です -

キーまたはシードとしてユーザーのパスワードを使用して続行する場合は、キーがデータベースに格納することができますかCSVファイルであってもユーザーと関連性があります。 これが達成されたら、次にインストールするときに一意のキーを生成するか、汎用のアプリケーションキーを持つことで次の問題が改善されます。 実際には、普遍的なアプリケーションキーを持つことはいくつかの理由で悪い考えです。 1.クラックが1回発生すると、以前のすべての交換もクラックする可能性があります。 2.暗号化されたパスワードを再生することができる場合、その攻撃を繰り返しやすくなります。 3.このキーは意識的に変更する必要があります。

したがって、任意の日に、一意のキーを生成する方がずっと良い考えです。私はDiffie-Hellman Key Exchangeを調べるべきだと思います。私はそれがあなたの問題のほとんどを解決すると思います。 D-H鍵交換の概念は、独自のユーザ提供鍵を使用して、通信のための一意の(すべてのトランザクション)鍵を確立することです。この方法の最も重要な点は、実際のキーは公開されず、同じ古いシード/キーに基づいて毎回新しいパスワードを生成できることです。

見てみましょう。

2

あなたが強力なアルゴリズムを探しているのであれば、TripleDESを使用するよりもはるかに悪いことがあります。それは32歳かもしれないが、それはまだ非常に強いです。

少し新しくしたければ、AES(もともとはRijndael)も問題ありません。

それぞれのパフォーマンスを比較して、最適なものを確認したい場合があります。

+1

私見:私たちは、パスワードのようなものの暗号化の話をしているときに、あなたのenryptを実行している場合を除き、私も286 上でコードを復号化/性能比較を行うことを検討しません大量のデータを暗号化していますか?確かに。短い文字列ですか?バア – Yoopergeek

2

暗号化に関しては、キーはハードウェアドングルのようなものです。あなたの人生でそれを守りなさい。

どのサーバーを使用していますか?ほとんどの現代のRDMBSには、安心してデータを暗号化するための暗号化機能があり、外部キーは必要ありません。これは、少なくともサーバー内でデータを保護するでしょう...

+0

アプリケーションは現在、内部のVisaDBデータベースを使用していますが、今後はより多くの外部データベースをサポートします。この設定はエクスポート時にXMLファイルに保存されます。この場合、パスワードが最も心配です。 –

0

あなたのプログラムpgpは、あなたの顧客のpgpキーがそれらを暗号化して解読できるように暗号化することができます。プログラミングではパスワードがプレーンテキストでのみ使用されます。

2

実際には、オンザフライで強力なパスワードを生成するためのシード/キーとしてユーザー入力パスワードを使用することをお勧めします。多くのサーバーが常にそうしています。それはあなたにいくつかの利点を与えます。 1.ユーザーにとって面倒なことはありません。 2.ユーザーパスワードをテキストファイルとして保存できます。 3.マシンで生成されたパスワードは、人間が提供するパスワードよりも強くあります。 4.同じシードで新しいパスワードを生成することができます。これにより、再生攻撃のためにプロトコルが強化されます。

試してみてください。

0

私たちは、非対称公開鍵暗号化を使用してクレジットカード情報を保存します。多くのサーバーには、途中でクレジットカードを暗号化するために使用される公開鍵があります。私たちのccゲートウェイアプリケーションだけが、支払いの解読と処理のための秘密鍵を持っています。秘密鍵は、実動サーバー上の証明書としてインストールされます。

パスワードを保存しているので、高速ユーザー認証のためにハッシュが残っているはずです。

http://en.wikipedia.org/wiki/Public-key_cryptography

関連する問題