2

現在、.Net で Web アプリケーションを開発しています。これには、Android、iPhone、および Windows Mobile 8 アプリも含まれます。これらすべてのアプリケーションには、統一されたログイン システムが必要です。私たちのサイトと Web サービスは SSL を使用しますが、ユーザーのパスワードを安全に保つためにできる限りのことをしたいのは明らかです。そのため、上記のプラットフォーム全体で使用できる共通のパスワード ハッシュ関数を探しています。

現在、私たちが見つけた唯一の一般的なものはSAH256ですが、もう少し強力なものを使用したいと考えています. C# には、私が使用したい Rfc2898DeriveBytes クラスがあります (Web サイトと Win8 Mobile で使用できます) が、Android/Java および iOS/Objective C 用の実装はありますか? これを使用できない場合、次善の選択肢は何でしょうか?

4

3 に答える 3

4

ユーザーのパスワードを保存し、ログイン試行中に比較する場合は、バックエンドでパスワード ハッシュ関数を使用する必要があります。

ログインシーン:

ユーザーは、アプリのいずれかのバージョンを介して SSL 経由でパスワードを送信します。

バックエンド サーバーは、ユーザーから送信されたパスワードをハッシュし、格納されているハッシュをデータ ストアから取得し、送信されたパスワードのハッシュと格納されているハッシュを比較します。

ハッシュが一致すると、ユーザーはアクセスを許可されますが、それ以外の場合はアクセスが拒否されます。

SSL 暗号化は、クライアントからの送信中にパスワードが公開されるのを防ぎます。パスワードをハッシュとして保存することで、データベースが侵害された場合にユーザー パスワードが公開されるのを防ぎます。

このシナリオを使用すると、ハッシュはすべてバックエンド サーバーで行われるため、必要なハッシュ アルゴリズムの実装は 1 つだけです。

于 2012-12-17T15:50:22.917 に答える
2

PBKDF2 は、あなたの状況にうまく適合するものではありません。これは主に、攻撃者がすでにデータ (つまり、暗号化されたファイル) を持っている場合の攻撃を防ぐことを目的としています。これは、ブルート フォーシング中に CPU を消費して遅延を強制することによって行われます。サーバー側で認証を実行しているため、CPU を簡単に節約でき、クライアントがパスワードを間違えた場合にクライアントに応答を送信するまで 1 ~ 2 秒待つだけです。ソルトハッシュ (HMAC など) を使用するだけで問題ありません。

SSL を使用している場合、パスワードは安全です。これを改善できる唯一の方法は、MITM 攻撃を防ぐことができる完全な公開鍵暗号を実装することです。SSLにはこれが組み込まれています。

ネットワーク経由でパスワード ハッシュを送信することは、パスワードを送信することよりも実際には安全ではありません。はい、パスワード テキストは攻撃者から隠されていますが、攻撃者はまだハッシュを取得しており、それがあればパスワードは必要ありません。SSL の場合、プレーン テキストも保護されます。

于 2012-12-17T16:01:51.073 に答える
0

個人的に使用したことはありませんが、bcrypt には、探しているすべての実装が含まれているようです。

http://en.wikipedia.org/wiki/Bcrypt#See_also

それが役立つことを願っています。

于 2012-12-17T15:45:54.480 に答える