質問

最初の質問は、文字列を2回ハッシュすることを聞いたということです(例:sha1(sha1(password)))。2番目のハッシュは固定長なので、本当ですか?

2番目の質問は、どちらが安全ですか? (var1とvar2は2つの文字列です):

  1. sha1(var1 + sha1(var2))
  2. sha1(var1 + var2)

1番目の場合、パフォーマンスコストの価値はありますか?

役に立ちましたか?

解決

文字列を2回ハッシュすることにより、衝突のリスクが高まりますが、これはセキュリティ面で好ましくありません。

2 128 の可能性のある出力につながる無限の入力の代わりに、2 128 出力。

少なくともハッシュする前に塩と胡pepperを使用すると、入力は無限の可能性を保ちます。 2回ハッシュすると、無限の入力のソースを維持しない限り、スクリプトの実行時間が長くなり、衝突のリスクが高くなります。

他のヒント

  • sha1(var1 + sha1(var2))
  • sha1(var1 + var2)

どちらも非常に安全ではありません。車輪を再発明しないでください。 HMAC はこのために設計されました。特に、上記の「単純な」実装とひどく相互作用する特定のハッシュアルゴリズムの特定の弱点に関する問題を回避するための手順(パディングなど)が必要です。

さらに、二重ハッシュはセキュリティを向上させるのに役立ちません。考えてみてください:せいぜい、1つのランダムな値から別のランダムな値にマッピングします。ただし、衝突が発生した場合、2番目のハッシュから得られる2つの値が等しい場合、衝突で終わることでセキュリティが失われます。 つまり、この方法では衝突をなくすことはできませんが、衝突を回避することはできます。

とはいえ、既存のプリイメージ攻撃はダブルハッシュに対しては機能しない可能性があります可能性があります ...しかし!それでも動作する可能性があります。私はどちらを言う資格がないので、ここでこれを尋ねているのなら、おそらくどちらでもないでしょう。確かに、今日のMD5で実用的である衝突攻撃は、ダブルハッシュによって妨げられません。

暗号化では、安全に見えても安全ではないものを作成するのは非常に簡単であるため、数十年の分析に耐えてきた実績のあるアルゴリズムに固執するのが最善です。

これによりセキュリティが追加されるとは思わない。スクリプトの実行時間は長くなりますが、ハッシュに多くのセキュリティは追加されません。誰かがあなたのハッシュを破ろうとするとき、var1とvar2の正確な値を見つける必要はなく、同じハッシュになる結果を見つけるだけでよいことに注意してください。

私は暗号の専門家ではありませんが、プロセスを遅くする以外に値を複数回ハッシュしてもセキュリティが得られないことを知っています。したがって、1000回ハッシュすると、攻撃(辞書攻撃など)が1000倍遅くなりますが、1回または2回ハッシュする場合はまったく関係ありません。

塩を1つだけ使用して塩を使用しないと、簡単に解決できます。

これらのハッシュが大量に含まれる大きなテーブルが多数あるため、ソルトのない単一のハッシュはほとんど解決できません。

2番目のハッシュを追加しても、これらのテーブルが既に存在し、値が保存されているため、あまり役に立ちません。

パスワードに追加される動的なソルトは、複数のハッシュよりもはるかに役立ちます。複数のハッシュは実際にはあまり追加しません。

これについての私の気持ちは、鋼鉄のドアでレンガの壁を構築しているが、他の壁は合板でできているということです。つまり、パスワードのハッシュに必要なだけのセキュリティを注入できますが、システムをクラックするためのはるかに簡単な方法がまだあります。このようなことを心配するよりも、セキュリティに対する幅広いアプローチを取る方がはるかに良いと思います。

var1 + var2は予想される状況で同じになりますか?つまり、ハッシュ衝突が回避されるため、その場合は最初の命題は問題ないはずです。コストに見合う価値があるということは、あなたが答えるべき質問です。コストに見合う衝突を回避しています。

shaアルゴリズムについては、実際に結果をスクランブルすることになっています。そのため、何度も適用しても、より良い結果を得たり、「よりランダム」に適用したりすることはありません。入力するとより良い結果が得られるはずです。

文字列を複数回ハッシュすると、辞書攻撃の場合に攻撃者のタスクが複雑になり、「ずっと長く」なります。力ずくで。最初の質問は明確ではありませんが、2番目のハッシュの長さが固定されているため、複数のハッシュの安全性は低下しません。

しかし、複数のハッシュよりも重要なのは、 salt を使用することですセキュリティの向上には不可欠です。

2番目の質問については、2つのうちどれが最も安全であるかを言うのはそれほど簡単ではないと思います。オプション2を使用するだけで十分だと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top