1

わかりましたので、ハッシュ化する前にパスワードをソルトすることがなぜ良い考えなのか理解できました。問題は、通常、人々はパスワードにソルトを追加または追加することを提案していますが、両方を実行しないのはなぜですか?

私の考えでは、ハッカー氏が DB を手に入れて x さんのパスワードを取得したい場合、ほとんどの人はソルトを追加または先頭に追加することを提案しているので、そうしましょう..彼はレインボー テーブルを生成します。パスワード + ソルトのすべての組み合わせを調べて、運試しをします。それがうまくいかない場合、彼は同じことをしますが、salt + password.

攻撃をより困難にするために、開発者はさらに一歩進んで「ソルト + パスワード + ソルト」または「リバース (ソルト) + パスワード + ソルト」を実行しないでください。パスワード/ソルト、あちこちにソルトを入れ始めます。

ハッカーがパスワードを見つけることができる唯一の方法は、ソースコードにアクセスできる場合です (ハッシュする前にソルトがパスワードにどのように織り込まれたかを知るため)。

さらに注意してください、人々はキーストレッチ時に最低1000回の反復を行うことを提案しています.1147、1652などではありません:)

2 つ目の注意事項として、ハッシュ文字列を見ると、使用されているハッシュ関数を特定できますか?

4

2 に答える 2

7

特に、攻撃者がハッシュ化されたパスワードのデータベースと 1 つの既知の一致 (自分のパスワード) を持っている場合は、パスワードをブルートするよりもソルトが適用される方法を推測する方がはるかに簡単です。彼がそれを知らなくても、既知のパスワードと既知のハッシュを使用して、ソルトとソルティング アルゴリズムをブルート フォースすることができます。

同じことがハッシュアルゴリズムにも当てはまります。壊れていないハッシュ関数はほんのわずかしかなく、有能な管理者であればそれらの 1 つを使用している可能性があります。

暗号化の前提の 1 つは、使用されるアルゴリズムに関するすべての情報が公開されていると想定されることです。あいまいなアルゴリズムを使用して物事をハッシュしているため、攻撃者がシステムを破壊できないことに頼るべきではありません。なぜなら、そのような侵害されたデータベースでパスワードを総当たり攻撃する費用と比較して、すべてのハッシュアルゴリズムを総当たり攻撃することは非常に安価だからです。

プログラムをユーザーに配布すると、プログラムを逆アセンブルまたはデバッグすることで、プログラムがどのようにハッシュ化されているかを正確に把握できます。サーバー プログラムの場合、他の脆弱性に侵入したり、ソフトウェアを購入/盗んだり、入手したりできます。私は、すべての優れた暗号化ソフトウェアはオープンソースであるとまで言っています。全世界がそれがどのように機能するかを知っていても、それでも解読可能ではありません.

あなたが頼ろうとしているのは、あいまいさによるセキュリティです。多くの人や企業が、製品を保護する方法としてこれを使用しています。私が覚えている最後の大きな事件は、Symantec の PCAnywhere ソフトウェアのソース コードが盗まれたときでした。それがどうなったか覚えているかもしれません。この話の教訓は、誰もそれがどのように機能するかを知らなければ安全ではないということです。

于 2012-06-27T18:02:34.853 に答える
0

あなたのコードをリバース エンジニアリングすることは、特定のハッカーにとってそれほど難しくありません。

実績のあるハッシュ技術を使用する必要があります。たとえば、bcrypt アルゴリズムに似たものを考えてみましょう。パスワードをハッシュ化する場合は、次の手順を実行します。

  1. 十分に強力なランダム ソルトを生成する (16 ~ 32 バイト)
  2. ハッシュ コストを設定します (15 - 20) (コストが大きいほど、ハッシュは遅くなり、強力になります)
  3. 実行するハッシュ ラウンドの数を計算します (2^cost)

以下をせよ:

hash = ""
for(numberOfHashRounds)
{
hash = SHA256(hash + salt + password)
}

次に、使用したソルトとコストとともにハッシュを保存します。検証する必要がある場合は、保存されているソルトとコストで同じことを行います。コンピューターが高速になるにつれて、アルゴリズムのコストが高くなる可能性があります。ハッシュの計算に最大 500 ミリ秒かかるように、または犠牲にする意思がある限り、取得してみてください。

クラッカーはソルトごとにレインボー テーブルを生成し、同じ回数のラウンドを実行する必要があるため、これは安全です。クラックに使用された GPU アレイでも、これには数十年かかります。

その上に難読化を追加したい場合は、その過程でアルゴリズムのセキュリティを壊さないでください。

于 2012-06-27T19:58:32.267 に答える