4

クライアント側の JS でハッシュ化されたユーザー名とパスワード (http POST 経由で送信) を高次の時間値 (1 分未満の解像度) でソルトして、ユーザー名とパスワードのハッシュを定数値として送信することを回避します。許可されていないユーザー (つまりスニファー) による POST 偽造によるログイン試行に使用されます。

これにより、渡されたハッシュの有効期限が短くなります。

彼らが JS を調べて、今回のソルトが使用されていることを確認した場合、ソルトが何であるかを知っていれば、MD5 を破る作業はどれほど簡単になるでしょうか?

スティーブン

4

4 に答える 4

3

塩は秘密にする必要はありません。その意味で、あなたの解決策は大丈夫です。

MD5 は一部のアプリケーションで壊れています。これは問題ないかもしれませんが、SHA-2 ファミリーのハッシュを使用しないのはなぜですか? さらに言えば、SSL を使用して機密チャネルを提供し、セキュリティを強化してみませんか?

于 2008-12-08T06:29:41.743 に答える
2

時間ベースのソルトは、MD5 を壊れやすくしません。あなたはまだ、1)ブルートフォース計算を打ち負かすための適切なパスワードを持っているユーザーと、2)MD5が適切なハッシュであることに依存しています。それがあなたの質問に対する基本的な答えです。ただし、とにかくこれは良い考えではないかもしれません。いくつかのコメント--

クライアントまたはサーバーの時刻が同期されていることを確認できない限り (または Javascript を使用して同期を偽造しない限り)、クライアントは使用した時刻をソルトとして送信する必要があります。サーバーは、使用された時間がサーバーの時間に十分近いかどうかを判断する必要があります。

たとえ同期されていたとしても、インターネット上の遅延のために、おそらくプラスマイナス 1 分程度のハッシュを受け入れる必要があります。もう 1 つの問題は、スニッフィングしている場合、この時間枠内にいる限り、このハッシュをすぐに再利用できることです。

上記の問題のため、より良いアイデアは、SSL を使用したくないように思われるため、サーバーが割り当てた 1 回限りのソルトをハッシュと共に使用することです。つまり、ログインフォームがクライアントに送信されるたびに、サーバーはランダムで一意のソルト文字列を生成してクライアントに送信し、これが許容可能なソルトであることを追跡します。次に、クライアントはそれをパスワードと一緒にソルトとして使用します。これが一度送信されると、サーバーはこれを受け入れ可能なソルト文字列として破棄します。2 つのハッシュが同じであってはなりません。これの欠点は、これらの許容可能なソルト文字列を追跡する必要があることです。

于 2008-12-08T15:03:51.003 に答える
1

ハッシュが正しくソルト化されている場合、レインボー テーブルをまったく使用できず、MD5 を 1 分以内に破ることができないため、彼らの仕事は実行不可能になります。

于 2008-12-08T05:27:26.267 に答える
-2

コードの難読化を使用して、ソルトを見つけにくくすることができます

于 2012-03-03T02:19:35.757 に答える