2

大手テクノロジー企業での最近のすべてのハッキングについて聞いたとき、私は彼らがパスワードストレージを使用しているのではないかと思いました。

ソルト+ハッシュは一般的に安全であると認められていますが、ソルトの例では、通常同じサーバーに保存されているパスワードスクリプトにソルトキーがハードコードされています。

では、最初にユーザーのパスワードをハッシュし、そのハッシュを「ソルティングサーバー」またはオフサイトに保存されている関数に渡してから、ソルトされたハッシュを返すのは論理的な解決策ですか?

私の見方では、侵入者が保存されたパスワードを含むサーバーまたはデータベースにアクセスした場合、侵入者はすぐにソルトキーにアクセスできません。

4

5 に答える 5

4

いいえ-攻撃者に知られていても、ソルトは有効なままです。

ソルトの考え方は、多数のユーザーに対する辞書攻撃をより困難にするというものです。ソルトがないと、攻撃者は辞書内のすべての単語をハッシュし、ユーザーのハッシュされたパスワードと一致する単語を確認します。ソルトを使用すると、各ユーザーに適した単語を確実に取得するために、辞書内の各単語を何度も(可能なハッシュ値ごとに1回)ハッシュする必要があります。

この数千(または使用するソルトの大きさによっては数百万)の乗算により、すべての値をハッシュする時間が長くなり、ストレージは結果を格納する必要があります。これは(期待する)実用的ではない点です。

ただし、多くの場合(ほとんどの場合)、非常に大きなソルトは実際には多くのセキュリティを追加しません。問題は、たとえば24ビットのソルト(最大1600万の可能な値)を使用しているが、たとえば数百のユーザーしかない場合、攻撃者は実際に使用しているソルト値を事前に収集して、彼の辞書攻撃は、潜在的な値の1600万個ではなく、それらの値のみを対象としています。要するに、24ビットのソルトは、8ビットのソルトが提供するよりもほんの少しの難しさを追加します。

OTOH、大規模なサーバー(Google、Facebookなど)の場合、話はまったく異なります。大規模なソルトは非常に有益になります。

于 2013-02-20T04:40:06.027 に答える
3

侵入者が塩を知っている場合でも、塩漬けは便利です。

パスワードがソルトされていない場合は、広く利用可能な事前計算されたレインボーテーブルを使用して、パスワードをすばやく攻撃することができます。

パスワードテーブルがソルトされている場合、レインボーテーブルを事前に計算することは非常に困難です。すべての可能なソルトに対してレインボーテーブルを作成することは実用的ではありません。

パスワードエントリごとに異なるランダムソルトを使用し、そのすぐ隣にプレーンテキストで配置すると、ブルートフォース攻撃を除いて、侵入者がパスワードを攻撃するのが非常に困難になります。

于 2013-02-20T04:41:10.453 に答える
1

パスワードのソルティングは、攻撃者がハッシュ化されたパスワードのリストを持っている攻撃からパスワードを保護します。ハッカーがハッシュを検索してパスワードを取得できるようにするためのテーブルを持っている一般的なハッシュアルゴリズムがいくつかあります。これが機能するには、ハッカーがパスワード ストレージに侵入してハッシュを盗む必要があります。

パスワードがソルト化されている場合、攻撃者はハッシュ アルゴリズムとソルトを使用してハッシュ テーブルを再生成する必要があります。ハッシュ アルゴリズムによっては、これに時間がかかる場合があります。物事をスピードアップするために、ハッカーは最も一般的なパスワードと辞書の単語のリストも使用します. 塩のアイデアは、攻撃者を遅くすることです。

パスワードごとに異なるソルトを使用し、長くてランダムにする最善の方法は、各パスワードの隣にソルトを保存しても問題ありません。攻撃者は、一般的なパスワードと辞書の単語のすべての組み合わせに対して、個々のパスワードごとにハッシュ テーブルの生成を実行する必要があるため、これにより攻撃者の速度が大幅に低下します。これにより、攻撃者が強力なパスワードを推測できなくなります。

これに関する良い記事を読んだことがありますが、今は見つかりません。しかし、「パスワードソルト」をグーグルで検索すると、いくつかの良い結果が得られます。この記事をご覧ください。

于 2013-02-20T04:43:40.350 に答える
0

ハードコードされたソルトを使用して説明したスキームは、実際にはソルトではなく、キーまたはペッパーのように機能することを指摘しておきます。塩こしょうはさまざまな問題を解決します。

ソルトはパスワードごとにランダムに生成する必要があり、ハッシュされたパスワードと一緒にデータベースに保存できます。プレーンテキストで保存でき、攻撃者に知られている場合でもその目的を果たします。

コショウは秘密鍵であり、すべてのパスワードに使用されます。データベースには保存されませんが、代わりに安全な場所に保管する必要があります。コショウが攻撃者に知られている場合、それは役に立たなくなります。

私は小さなチュートリアルで違いを説明しようとしました、多分あなたはそこで見てみたいと思うでしょう。

于 2013-02-20T09:16:05.113 に答える
0

理にかなっています。攻撃者にとっては、(かなりの価値または重要性のあるサイトでない限り) 努力する価値があるように思えます。

規模の大小を問わず、重要であろうとなかろうとすべてのサイトで、パスワード ハッシュを重要視する必要があります。

各ハッシュが独自の大きなランダムソルトを持っている限り、はい、ほとんど実行不可能になります。各ハッシュが静的ソルトを使用する場合、レインボーテーブルを使用して、たとえば password1 を使用したユーザーハッシュを除外できます

適切なハッシュ アルゴリズムを使用することも重要です (MD5 または SHA1 を使用することは、最近のマルチ GPU セットアップでプレーンテキストを使用するのとほとんど同じです)。高い)

于 2013-02-21T05:35:52.747 に答える