web-dev-qa-db-ja.com

複数のハッシュがある場合、元のパスワードを取得する方が簡単ですか?

ほとんどのユーザーは通常、複数のアプリケーションに同じパスワードを使用します。これらのアプリケーションはすべて、何らかの方法でパスワードをハッシュするとします。攻撃者がすべての異なるハッシュにアクセスできれば、元のパスワードを取得する方が簡単でしょうか?もちろん、攻撃者はおそらくハッシュを見て、どちらがより弱いかを知っていて、これをブルートフォースしようと試みるかもしれませんが、同じパスワードの他のハッシュにアクセスできるものを手に入れましたか?また、攻撃者がこれらのハッシュのいずれかを含むレインボーテーブルを持っていないと仮定します。

したがって、攻撃者が同じパスワードのこれらすべてのハッシュにアクセスできる場合、md5ハッシュの1つをブルートフォースで攻撃するよりも速く破ることができますか(この場合はリンクが弱いため)。

  • 33c38d9db9759da0d0a813968bc3c1fb
  • 7b8758cf3cb6e540d60b3e9999c48fbef0502ac6
  • faa81286aa90907253a58acfd83d2d89e58120031630d60dc05d0cd365b6df8d
  • $1$NPeNiNCA$AwpOWKuur2LZvXiJxNM6U1
  • $5$VHVZwDnI4aAEUG2m$ZhSJ537JmYJ5ISDxPQ6doWxPOrz9AMjyvxYxecViK23
  • $5$3bRXBWCpG9GEHdm$a2xIBbgK.fyr5k26BhUGo2QCvl25yQU1I9mwFp7mmh5p
  • $6$Hcdqud1hDgz$5MOEbgtOdxfF289OSXrmIevt7NnZBLaQkNGKeijR/X09ZDEbQ/ZfObJjNo0J64t4haSSqihRhfPe4z8l.ptro1
  • $6$hqaQ3RzX$bk8dgMsAlmDPpOX0IWWIrJ9T3awblvI.PCipeqJDdJZSVDQJgCRsQRX8pKpFU2XNcvRr56e3MARcTQR5oJ94V/
  • $2a$13$Hdz8T8vlEqwCvhixyu4rlel2cjj.TfA1qXEZ2dXhabogN35Idd8Je
  • $2a$15$hLPoYhbVJNA48A/Wmv1I5.5XBv/G/1s8BGfDLU7mt37ojGhNjETd2

ところで、元のパスワードはhello12345world12345、私は(あなたを)誰かのパスワードを解読しようとはしていません;-)

8

理論的には、いくつかのハッシュを持つことは役立つかもしれません。実際には、それほどではありません。

理論

SHA-256について考えてみましょう。この関数から、anotherハッシュ関数を定義できます。これは、SHB-256(m )= SHA-256(m)XORm。簡単に言うと、 XORおよびmの最初の256ビット。

この「SHB-256」は、SHA-256と同じくらい優れた 暗号化ハッシュ関数 です。これは、衝突、プリイメージ、および2番目のプリイメージに対して同様に耐性があります。ただし、両方SHA-256(m)とSHB-256(m )、両方の値の単純なXORは、mの最初の256ビットを生成します。

練習

同じパスワードで計算されたいくつかのハッシュを利用することは、ハッシュ関数がどれほど「類似」しているかに依存し、互いに「キャンセル」できるようにします。これは非常に明確に定義されていないプロパティであり、(まだ)完全には調査されていません。私の知る限り、そのようなショートカットは既存のハッシュ関数では知られていません。心に留めておくべき詳細はたくさんあります。反復された関数と塩の使用により、問題はさらに複雑になります。

複数のハッシュに直面したときに現実的な攻撃者ができることは、攻撃しやすいハッシュを使用し、他のハッシュを無視することです。それらの1つが無塩の場合、攻撃者はその1つを標的にします。これにより、ハッシュされた複数のパスワードの同時攻撃と事前計算された(Rainbow)テーブルの使用が可能になります。そうでない場合、彼はハードウェアに実装されたときに最も効率的な関数を使用します(たとえば、 PBKDF2 および Bcrypt に直面している場合、攻撃者はPBKDF2をターゲットにします)。 GPUに実装します)。 @Polynomialが言うように、ハッシュは最も弱いハッシュと同じくらい強力になります。

追加の間接的な影響は、CPUバジェットについてです。 registrationを行う場合、ユーザーのパスワードをallハッシュ関数でハッシュします。 bcryptやPBKDF2のように「設定が遅い」ハッシュ関数の場合、これを使用すると、1つだけ使用した場合よりも「少し高速」に設定して、独自のコストを抑えることができます。許容範囲内。 heはすべてのハッシュではなく、1つのハッシュをクラックするだけなので、これは攻撃者の労力を軽減します。

10
Thomas Pornin

パスワードの強度とハッシュに使用されるハッシュアルゴリズムによって異なります。ブルートフォース攻撃を使用してハッシュを破壊するためにCPU + GPUを使用するプログラムがあります。したがって、一般的なパスワードを使用すると、PCとグラフィックカードを使用して簡単に解読できます。 CPUと共にGPUのパワーを使用するアプリケーションはたくさんあります。パスワードのハッシュを2種類または3種類指定しても問題はありません。ブルートフォースのタイミングは、パスワードの強度とハッシュアルゴリズムによって異なります。

パスワードのハッシュが5種類あり、そのうちの1つが非常に弱い場合、最も弱いハッシュアルゴリズムのハッシュを攻撃することで、そのパスワードをすばやく回復できます。

0
sujeesh