2009-08-22 8 views
1

私はクライアントで使用されているWCFサービスを持っていますが、以下は現在のユーザー認証の実装です。RSACryptoServiceProviderクラスを使用して暗号化されたパスワードをDBに挿入しますか?

  • 私は、クライアントがすべての(ファイルに保存されている)は、公開鍵を使用して、ログインし、それを送ってパスワードを暗号化する必要があり、データベースに

  • を暗号化されたユーザーのパスワードを保存するためにRSACryptoServiceProvider クラス(RSAの実装)を使用しています秘密鍵を使用して、ユーザー名、サーバー側で

  • 指定されたユーザー名の暗号化されたパスワードを選択して、復号化されたパスワードを比較 ログインの方法は、(ユーザとDB 1により送信された)場合のロギング方法

    注:生成された同じ公開 キー新しい暗号化されたバイトでRSAを使用して 文字列を暗号化するたびに、 ので、私は暗号化された パスワードを比較することはできませんし、私は

を比較するためにそれらを復号化する必要があります

PS 答えは誰もがそうWH、彼は秘密鍵を持っている場合を除き、パスワードを解読することはできません場合、私が求めています

「認証目的のためにあなたは、可逆暗号化を使用してパスワードを保存しないようにすべきである」と言いますで、問題は、ハッシュは可逆ではないが、それは壊れている!

答えて

3

ハッシュの代わりに暗号化されたパスワードを保存するのは一般的ではありません。特別な理由がありますか?

もしそうでなければ、私は塩でハッシュされたパスワード(SHA-2など)を保存することをお勧めします。

+1

これは強く推奨できません。ユーザーのパスワードに戻ることのできるものは決して保管しないでください。常にハッシュを使用し、元のパスワードではなくハッシュされたパスワードを比較してください。 – Andrew

+0

データベースが盗まれてもパスワードクラッカーを防ぐことができると私は推測しました –

+0

攻撃者は、RSA暗号化パスワードを持つデータベースに対してハッシュされたパスワードを持つデータベースを好んでいます。パスワードが暗号化されても、攻撃者は辞書検索を実行できます。攻撃者は事前計算テーブルを使用できません。データベースがRSAで正しく暗号化されている場合、辞書攻撃は不可能です。 – Accipitridae

0

私は注意が必要な2つの問題があると思う:パスワードは安全に送信されている方法

  • は?
  • パスワードを安全に保存するにはどうすればよいですか?

既存password based key agreementsSRPなど)が両方の問題に対処しています。

RSAでパスワードを暗号化するソリューションは悪いことではありませんが、部分的な解決策にすぎません.RSAは暗号化をランダム化するため、オフライン辞書攻撃を防ぎます。説明から、あなたの提案がリプレイ攻撃を防ぐかどうかは不明です。攻撃者は、以前に傍受された暗号化されたパスワードを送信してログインすることはできますか、タイムスタンプなどの対策はありますか?

関連する問題