私はあなたがデータベースでパスワードの無塩MD5ハッシュを使うべきではないことを知っています。しかし残念ながら、人々はそうします。 https://hashes.org/public.php を参照してください。
このサイトからダウンロードしました ファイル パスワードを付けてダウンロードしましたが、md5ハッシュがリークしたために明らかにクラックされました。
このファイルには、ブルートフォースで取得できるため、短いパスワードと辞書に表示されるパスワードが含まれていることは明らかです。
私が理解していないのは、なぜこのファイルにSHA256ハッシュがあるのですか?入力スペースが大きすぎるため、すべてのSHA256ハッシュをMD5に入力することはできません。
では、この長いランダムに見えるパスワードをどのようにして見つけたのでしょうか。
つまり、人々は「abc123」のようなパスワードを使用し、SHA-256にハッシュして「6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090」を取得します。
そして、2番目は「abc123」よりも安全であると考えています。しかし、そうですか?
はい。ハッシュ化されたバージョンは、パスワードエントロピーについて話をしているときに、より安全な場合があります。より長いので、より多くのランダムな数字と文字があります...
ただし、これは、あいまいさを介してセキュリティと呼ばれるものです。この方法は、これを使用していることに誰も知らない限り安全です。なぜなら、これは実際には弱い単語をSHA-256にハッシュして、それらが一致するかどうかを確認する場合にすぎません。
辞書攻撃を行う際のパスワードクラッカーは、ルールを定義します。これは、「辞書のすべての単語の後に '123'でも試す」、または「辞書の単語の最初の文字を大文字にする」のようなものですが、「SHA-256ハッシュですべての単語を辞書とそれを試してみてください。」.
そして、そのルールはおそらくこのパスワード攻撃者が使用したものです。そして、はい、SHA-256は比較的遅いので(これは良いことです)、攻撃者はますます優れたハードウェアを必要とするでしょう。しかし、人々は、たとえば4つのトップレベルのNvidia Titan GPUを備えた専用のコンピューターシステムを持っています。それでも、一定の時間内に多くのMD5(SHA-256($ pass))を試行できます。そして言うまでもなく、ボットネットもまた、コンピュータの負荷を組み合わせてより強力なものにするためのものです。
tl; dr:
これは、適切なルールを使用することの問題です。そして、時間を節約するために、すべてではなく、SHA-256の短い/弱い単語のみを使用している可能性があります。
保存パスワードを使用するためのヒント:
たとえば、バッテリー、ランプ、リビングルーム、キャンドル、火速度など、覚えやすい5つの単語を使用してください。 (私のランプのバッテリーが空だったので、candlein myliving roomwithfirespeed )。このように、あなたのパスワードは次のとおりです:batterylamplivin_groomcandlefirespeedこのようにして、+-35文字にすると、単語の途中にランダムな「_」が挿入されます攻撃者が推測することをはるかに困難にするため。そして、攻撃者が単語を組み合わせるルールで辞書攻撃を行っているとき。彼はこの5つの単語を正しい順序で組み合わせる必要があります。たとえば、「firespeed」のような単語と、文字列のすべての場所に_を配置するルールが含まれます。つまり、これは強力なパスワードであり、覚えやすく、入力も簡単です。パスワードマネージャーの方が優れていますが、上記のパスワードはマネージャーのマスターパスワードとして使用できます。
データベースにパスワードを保存するためのヒント:
SHA-256などの強力なアルゴリズムを使用しますが、さらに優れています:Bcrypt。ソルトとコショウの方法に関する論文を読んで、実際に使用する前にコードを複数の人にレビューしてもらい、独自のアルゴリズムを作成しないでください。
レインボーテーブル攻撃と呼ばれる攻撃ベクトルがあります。
攻撃者は、既知のmd5ハッシュのデータベースに対してmd5合計を相互参照します。常に力ずくで実行する必要はありません。
このファイルはこの手法を使用して入力されたと思います。