2009-05-18 16 views
0

新しいアプリケーションのパスワードを暗号化/復号化する必要があります。この仕様では、AESを使用する必要があります。誰もが良い理由がパスワード暗号化/データベース層AESまたはアプリケーション層AES

  1. CLR機能を使用して、データベース層にすべての私の暗号化を行いますか
  2. は、.NETアプリケーション層でそれをやってするか提案することができますか?
デシベルとサーバーの混合物は、検証のパスワードもつもりです。アプリはTelerik ORMを使用してn階層になっています。実際の機能は、パスワードの作成/更新と入力された値の確認だけです。私の腸で

iは

  1. データベースは、ユーザーが既存のレコードに対してパスワードを入力し検証するための優れていると思います。そして
  2. パスワードを作成/更新するためのフロントエンドは、私が代わりをするかもしれない理由として、他の考えや提案に興味を持っています

(そうプレーンテキストのパスワードが送信されることはありません)。フロントエンドで暗号化キーに関するあなたの考えは何ですか? 1つのユーザーにつき1つのXMLまたは1つのアプリケーションごとに1つの設定ファイル?任意の提案のための

感謝:)

答えて

4

は、すべてのパスワードを保存しないでください - それらのちょうど塩漬けハッシュを。

パスワードを暗号化するだけで問題になるのはかなり不快です。鍵をどこかに保存する必要があります。クライアント側の暗号化を実行する場合、Reflectorを使用してコード内のキーを見つけたり、デバッガを接続して、クライアントがサーバーからキーを取得するまで待機します。

サーバーで暗号化を実行すると、鍵を取得するのが難しくなりますが、サーバにアクセスするすべての人は、鍵をどこかに保存する必要があるため、これまでと同じ手法を使用する可能性があります。もちろん、クライアントとサーバー間の接続を暗号化する必要があります。そうしないと、攻撃は簡単になります。

暗号化をデータベースサーバーに移動することはあまり変わらず、クライアントとサーバーの間、およびサーバーとデータベースサーバーの間の両方の接続を暗号化する必要があります。

他にクライアントを信頼する必要があるため、サーバーで暗号化を実行することをお勧めします。これにはもちろん、クライアントとサーバー間の安全な接続が必要です。サーバーとデータベースサーバー間の接続が暗号化されていない可能性があります。

+0

私は通常「しないでください」という回答を避けていますが、この場合は2回upvoteできます。 –

+0

ありがとうございます。私のパスワードを塩漬けすることについていくつかの読書をします。 – u07ch

2

私はあなただけ多分一方向の暗号化を使用する方が良いだろうパスワードを検証する必要があります。

ここトピックに関するいくつかの議論があります: Encrypting/Hashing plain text passwords in database