ハッシュ+塩、解読のための万能薬のような

Habrは再投稿やコピーアンドペーストの場所ではありません-思い出しました!

これは、ハブポストで言及されたコメントの再投稿であり、コメント自体は、この記事のコメント(トートロジーについては申し訳ありません)であり、ここで見つけることができます。 私の意見では、彼は傑作だから、彼はハブの場所を持っています! すべてのプログラマとDBAはこれを読む必要があり、実際、any%username%に役立ちます。



塩か水、または何か他のものを順番に追加するために、あなたは延々とすることができます...私はポイントを見ません。

最初の問題は、短い「異常ではない」(多くの場合数字のみで構成されている)ユーザーパスワードです。 ハッキングとは、盗まれたハッシュと「レインボーテーブル」からのハッシュを比較することです。 テーブルのサイズは無限ではありません。 6文字のすべてのパスワードを試すとき(つまり、そのようなパスワードで可能なすべての文字、たとえば0-9、az、AZ、62文字のみを試したとき)、62 ^ 6(6次の62文字)= 56 ' 800'235'584ハッシュ。 それぞれの長さは32バイトです。つまり、テーブルを保存するためのディスク領域には56'800'235'584 * 32 = 1'817'607'538'688、つまり約2 TBが必要です。 これはそれほど多くありませんが、私たちが持っていたパスワードは6文字だけで、そのような短いパスワードでした(まあ、または9-12文字より少し長いですが、パスワードハッシュが生成され、辞書、つまり最も使用されるリストに保存されますパスワードユーザー、これらは通常の単語、数字など、つまり「不正な」パスワードではありません)。 次に、パスワードの長さが32文字のハッシュの数を計算します。 しかし、ユーザーに32文字のパスワードを入力して記憶させることは、もちろん現実的ではないため、たとえばmd5();関数を使用して、実際のユーザーパスワードを2回実行するだけです。 最初の実行後、単純ではないが「倒錯」した32バイト長のパスワードを取得します。 2回目の実行では、既に32文字のパスワードが使用されているため、新しいハッシュを取得して保存します。 ここで、既存のハッシュから以前のハッシュを整理し、見つかった以前のハッシュを使用して実際のユーザーパスワードを使用するために、控えめに言うと、「無限」ハッシュテーブルが必要になります...

だから、約!



しかし、それはすべてのことわざでした!!! そして、おとぎ話は先です...



ここで、主な問題であるユーザーの短いパスワードと簡単なパスワードに戻ります。



上記のパスワードの「保存」方法を「クラック」するために必要なもの。 そして最も重要なこと-私はこれのためにすでに何を持っていますか?

そして、私は絶対に少しはありません! 私たちはすでにユーザーパスワードを持っていると言うことができます!!! より正確には、私はすでにほとんどのユーザーのすべてのパスワードを持っています!!! なんで? はい、すべて同じです! 「短くて単純なユーザーパスワード。」



今、私は何をしています...

1.ハッキングされたサイトにサインアップします。

2.データベースまたはパスワードハッシュが保存されている場所をハックします。 (これはこのトピックの条件です)

3.ハッシュを見つけました。 (私のユーザー名による)



-。 最初の3つのステップが必要なのはなぜですか?

+。 サイトでハッシュを取得する方法を決定するため。 つまり、可能なオプションを並べ替えます。

md5($パス);

md5(md5($ pass));

md5(md5(md5($ pass)));

sha1(md5(crypt($ pass)));

...など、ハッシュを取得するまで!

プログラマーがmd5(md5($ pass));を使用した場合;;それは私にとって簡単です。



4.ハッシュを取得するための「式」がありますが、今は生成するプログラムが必要です

この式によるすべてのハッシュ(ダウンロードまたは自分で作成)、および多くの時間(1秒あたり1'000'000ハッシュがある場合、56'800'235'584ハッシュの場合、これには約20時間かかりますが、辞書を並べ替えたり、数字からパスワードを並べ替えたりするだけで、必要な時間は大幅に短縮されます)。

そしてすべて! 最大6文字のパスワードはすべて私のポケットに入っています!



それで! この方法はハッキングされ、現在はPRO SALT ...



著者の方法を破る...



-。 最初の3つのステップを実行します。



今、データベースにハッキングしてパスワードハッシュを受け取った場合、すべての「ストロー」も受け取りました!!!



そして、私は何をしていますか?

はい、すべて同じ!!!



ちょうど今、ハッシュを取得するための「式」を検索するときに、このソルトを追加し、可能なすべてのオプションを追加します。



md5(md5($ pass。$ salt));

md5(md5($ pass)。$ salt);

md5(sha1($ salt.crypt($ pass)));

...など...

さて、私はすでに推測していると思います...遺伝子はすでに正しい場所に塩を追加し、正しい式を使用することですべてをハッシュします。



しかし、ここでわかるように、すでに1つの「薄い」プラス記号があります。

これはすべてのパスワードを解読することではなく、単一のアカウントを解読することです。ソルトはユーザーごとに異なるため、ユーザーごとにテーブルを再度生成する必要があります。 何時!

プラス記号が「薄い」のはなぜですか?

はい、繰り返しますが、これはすべて「シンプルで短いパスワード」だからです!!! (右側では、もうあなたにうんざりしていませんか?!..我慢してください!)



数字のみを使用して辞書から生成を開始します(ほとんどのパスワードは誕生日です)。 通常、サイトには少なくとも6文字の長さのパスワードが必要です。つまり、たとえば次のように並べ替えます。



タイプ010101の日付。 (6文字の長さ、1901年1月1日から2011年4月22日までのすべての365 * 110 = 36500 !!!合計?!まだ寛大ですが、最初の50年と最後の10-15年は安全に削除できます。 。



また、ユーザーが111977のようなものを書き込む日付。 (1977年1月1日、つまりゼロのないオプション)



7桁の日付と8桁の日付のオプションも...



「私は1年でした... 3-脱出のために... 5-幼稚園のために...さて、彼らは老婦人にいくら与えるでしょうか? まあ、それは10歳にしてみましょう...そして、私は、約16年のために... "



さて、生年月日の1'000'000のバリアントのみを取得しましょう! マシンが毎秒1'000'000ハッシュを生成する場合-毎秒ユーザーを開きますが、若い方から古い方に移動すると、さらに速くなります!!!



そして、私たちは何をしましたか? 1時間でオープン-3600人のユーザーが「SALTで」!



そして、すべての魅力は、塩が助けにならなかったことです! なんで? すでに推測されたように、私は顔に見えます!

前回:「シンプルで短いパスワード」!!!



「だから何?」あなたは言う、「だから信頼できる方法はないの?」



そして、正しく言ってください!



信頼できる方法をインターネットで探しているのか、それとも「頻繁に使用する方法」が好きなのか、それと同時に間違いを犯しているのか! なぜなら、「2人が知っていること、誰もが知っていること!」、そしてあなたが知っているように、「1人が作ったもの、もう1人が永遠に壊れる」からです。



それではどうしますか?



そして、それは簡単です、「生きたい-戻れ!」



よく知られたテクニックを使用したり、独自の方法で変更したり、切り取り、接着、交換、コピー、独自の何かを発明したりなどしないでください。 とにかく、シープスキンがキャンドルの価値があるかどうかを考えますか?!!! この具体的な要塞が必要ですか、それともとにかく木製の要塞に住むことができますか?例えば、enter.phpファイルでハッシュ関数を10から20回交代させるコードを書いても。 まず、関数md5、sha1、cryptなどの代替のすべての選択肢を反復処理するプログラムを書くことを妨げ、最終的に希望するシーケンスを数秒で見つけることができます。 次に、「enter.php」ファイルを実行せずにサーバーに強制するのではなく、単にファイルを読み取るか、サイトの別のホールを見つけてファイルのソースコードを取得するという保証です。 そして、あなたのコードが1000回回転しても、ハッシュテーブルを生成するときにコードを繰り返すだけで、結果は同じになり、あなたの努力はすべて無駄になります...



そのため、信頼できる保護はありません。 より信頼性の高い防御しかありません。そして、あなたよりも巧妙なハッカーがいます。



PS再投稿に対する元のコメントの著者を削除すると、コメントが特定の「k313」、おそらくこれによって残されました。

元のコメントからのこの再投稿を伴うPSSは、余分な句読点を削除しました。



All Articles