web-dev-qa-db-ja.com

MD5ハッシュを復号化することは可能ですか?

MD5ハッシュを使用してパスワードをハッシュする方法に関するビデオを見ていました。それをグーグルで調べた後、FacebookもMD5ハッシュスキームを使用していることがわかりました。パスワードを簡単に解読できるかどうか知りたいと思いました。もしそうなら、MD5ハッシュの利点は何ですか?

2
user46959

短い答え: MD5は、パスワードを実際に保持することなく、パスワード(一意の指紋)を比較するのに十分な知識を持っている方法です。

長い方: MD5は指紋ジェネレータと考えることができます。あなたはできるだけ多くのビットを取ります、そして最後は128ビットです。 md5sumは、どの文字列でも常に同じです。ただし、特定の文字列に対してmd5sumがどうなるかを予測するのは困難です。逆にすることはできません。ハッシュからパスワードを取り戻すことはできません。その情報は破棄されます。

なぜMD5なのか?実際のパスワードを保存する必要はありません。 DBに侵入できれば、パスワードを取得します。これは安全ではありません。

だから私はハッシュを保存することができます。ログイン時に、入力したパスワードのmd5sumと、データベース内のmd5sumを取得し、それらが一致するかどうかを確認します。そうすれば、ハッシュを取得しても、パスワードを取得するためにさかのぼることはできません。ハッシュはありますが、理論的にはパスワードを取得できません。

これはより安全ですが、同じパスワードが常に同じmd5にハッシュされることを忘れないでください。 「パスワード」は常に286755fad04869ca523320acce0dc6a4になります。データベースに286755fad04869ca523320acce0dc6a4が表示されている場合、パスワードは「password」であることがわかります。したがって、1つの手法は、パスワードに少し一意性のある「salt」と呼ばれるものを追加することです。だから、私にとって、私の塩は、ああ、イドンノ、「1b24」になるように選ばれています。これをmd5データに追加すると、c4f8469e00c67d70dfbaa91cdf948fa8が取得されます。パスワードを保存するときは、1b24 | c4f8469e00c67d70dfbaa91cdf948fa8を保存するかもしれません。次に、「password」と入力すると、データベースに1b24を追加する必要があることがわかり、一致するものが得られます。

MD5は実際にはそれほど使用されていません。より良いビットを投げる新しいもの(SHA1のような)があります。時々あなたは複数のラウンドを通過します。これにより、これらのフィンガープリントの膨大なリストの生成が困難になり、セキュリティが強化されます。計算に時間がかかりすぎます。

9
Rich Homolka

MD5は一方向ハッシュです。これはスタックオーバーフローで数回議論されています:

https://stackoverflow.com/questions/1240852/is-it-possible-to-decrypt-md5-hashes

https://stackoverflow.com/questions/1471654/reversing-an-md5-hash

6
EBGreen

IT Security @ stackexchange に関するこの投稿は、問題を理解するのに十分なはずです。

問題は(大胆に)2つの事実にあります:

  • 「md5_mixalpha-numeric-all-space#1-8:1049 GB」は、 これら のように、サイトのすべての人に無料の急流としてダウンロードできます。つまり、1 TBを超える異なる一意の文字列にミックスローワーand大文字and数字とスペースand長さ1〜8文字。
    ハードドライブにファイルがある場合(squashfsの人を使用してください!)、必要なMD5を検索するだけで、元の文字列を取得できます(または、場合によっては衝突も発生します準不可能ラッキー)、とにかく有効なパスワードを持っています:)

  • すべての単純なハッシュスキームの問題は、同じパスワードを使用する2人のユーザーが同じハッシュを取得し、そのうちの1つを逆にすると、一度に複数のアカウントが提供され、最初の欠陥の結果が悪化するだけであるということです。

これには3つの解決策があります。

  • 古いくだらないもの:
    MD5(パスワード)またはSHA128(パスワード)、デフォルトでは壊れていますが、多くの* NIXは、少なくとも20年以来、より優れたスキームを実装しており、追加するものはありません。

  • MD5(SALT + PASSWORD)。SALTはユーザーごとに一意であり、クリアに保存されます。これにより、攻撃者は、解読したいパスワードごとにレインボーテーブルを生成する必要があります。
    一部を阻止できますが、多くの/ほとんどのユーザーが弱いパスワードを持っているため、辞書攻撃は依然として非常に強力です。
    そして、強力なGPUクラスターを(比較的)安価にレンタルするソリューションがあることを忘れないでください。400ドルのGPUでさえ、文字列のハッシュに最適です。特に、計算が 分散 マシン。

  • 「まったく新しいものではない」そして現在受け入れられる解決策のみ: bcrypt および scrypt

賢明で後者の解決策を採用してください。少なくとも自分で設計しようとしないPKBDF2スキームを選択してください。こちらをご覧ください:
https://security.stackexchange.com/questions/3959/recommended-of-iterations-when-using-pkbdf2-sha256

2
Shadok

パスワードをmd5ハッシュで保存すると、パスワードを回復できません。回復パスワードモジュールがあるサイトでは、パスワードはプレーンで保存されます。

http://md5pass.com を試してmd5パスワードを回復することができます

1
Jepes

それは絶えず述べられているので、確かにそれを解読しないでください。ただし、今ではmd5の衝突を強制することについて話しているかなりの数の論文があります。これは基本的に、ハッシュはハッシュしている情報のすべてのビットに適用される「方程式」のランダムなセットによって生成されるため(パスワードからファイル、またはいくつかまで何でもハッシュできることを忘れないでください)、次を見つけることもできることを意味します同じハッシュを作成する未定義の長さの別の文字列。

これは、このトピックに関する最初の(そして私が最も優れていると思う)研究論文の1つへのリンクです。 [PDF] http://www.google.com.mx/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDcQFjAB&url=http%3A%2F%2Fciteseerx.ist.psu.edu %2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.175.4122%26rep%3Drep1%26type%3Dpdf&ei = 6OtQUZaQH8Si2QXhwoGYBA&usg = AFQjCNH3JEEhxpuNqY2N4x9lmHuuGIZvuQ

1
Ryoku