はい、実際には心配する価値があります。MD5 はひどく壊れているため、研究者は、認証局によって署名された実際の証明書と一致する偽の証明書を偽造することができました。これは、彼らが独自の偽の認証局を作成できることを意味し、完全に信頼できるブラウザで銀行や企業になりすますことができました.
現在、これには PlayStation 3 のクラスターを使用して多くの時間と労力を要し、適切な衝突を見つけるのに数週間かかりました。しかし、一度壊れると、ハッシュ アルゴリズムは悪化するだけで、改善されることはありません。セキュリティを気にするのであれば、SHA-2 ファミリーの 1 つなど、壊れていないハッシュ アルゴリズムを選択することをお勧めします(SHA-1 も弱体化されていますが、MD5 ほど壊れていません)。
編集:私が提供したリンクで使用されている手法には、2つの任意のメッセージプレフィックスと共通のサフィックスを選択できることが含まれており、そこから各プレフィックスに対して、そのプレフィックスと共通のサフィックスの間に挿入できるデータのブロックを生成できます。他のプレフィックスから構築されたメッセージと同じ MD5 サムを持つメッセージを生成します。あなたが説明した状況でこの特定の脆弱性が悪用される可能性がある方法は考えられません。一般に、メッセージ認証にセキュアなハッシュを使用することは、デジタル署名に使用するよりも攻撃に対して耐性がありますが、いくつか考えられます注意が必要な脆弱性は、選択したハッシュとはほとんど関係ありません。
説明したように、アルゴリズムではパスワードをサーバーにプレーン テキストで保存する必要があります。これは、サーバー上のパスワードを発見できる可能性のある情報漏えい攻撃に対して脆弱であることを意味します. 攻撃者がデータベースにアクセスできれば成功だと思うかもしれませんが、ユーザーはおそらく、サーバーが侵害されたとしても、パスワードが公開されないことを好むでしょう。オンラインでパスワードが急増したため、多くのユーザーが複数のサービスで同じまたは類似のパスワードを使用しています。さらに、コード実行攻撃や権限昇格攻撃が不可能な場合でも、情報漏えい攻撃が可能になる可能性があります。
ランダムなソルトでハッシュされたパスワードをサーバーに保存することで、この攻撃を軽減できます。ペアをサーバーに保存し、ソルトをクライアントに送信して、言及したプロトコルでパスワードの代わりに使用するように<salt,hash(password+salt)>
計算できるようにします。hash(password+salt)
ただし、これは次の攻撃から保護するものではありません。
攻撃者がクライアントから送信されたメッセージを盗聴できる場合、クライアントのパスワードに対してオフライン辞書攻撃を行うことができます。ほとんどのユーザーはエントロピーがかなり低いパスワードを使用しており、数十万の既存のパスワードの優れた辞書に加えて、それらをランダムに並べ替えることで、攻撃者がメッセージをスニッフィングして得た情報を考えると、パスワードを簡単に見つけることができます。
あなたが提案する手法は、サーバーを認証しません。これがあなたが話している Web アプリかどうかはわかりませんが、そうである場合、DNS ハイジャック攻撃や、安全でないワイヤレス ネットワークでの DHCP ハイジャックなどを実行できる人物が、クライアントから平文のパスワードを収集する中間者攻撃。
MD5 に対する現在の攻撃は、あなたが説明したプロトコルに対しては機能しない可能性がありますが、MD5 は深刻な危険にさらされており、ハッシュは弱くなるだけで、強くなることはありません。あなたに対して使用される可能性のある新しい攻撃について知り、攻撃者がそれを悪用する機会を得る前に、ハッシュ アルゴリズムをアップグレードする時間があることに賭けたいですか? MD5 がさらに壊れていることに対処しなければならない可能性を減らすために、現在 MD5 よりも強力なものから始める方がおそらく簡単でしょう。
さて、フォーラムなどで他のユーザーからのメッセージを偽造しないようにするためにこれを行っているのであれば、確かに、あなたが説明したプロトコルを破るために誰かが時間と労力を費やす可能性は低いでしょう. 誰かが本当に他の誰かになりすますことを望んでいる場合、O の代わりに 0 を使用した新しいユーザー名を作成するか、Unicode を使用してさらに類似した名前を作成するだけで、メッセージを偽造したりハッシュ アルゴリズムを破ったりすることさえ気にしなくて済みます。
これがセキュリティが本当に重要な何かに使用されている場合は、独自の認証システムを発明しないでください。TLS/SSLを使用してください。暗号化の基本的なルールの 1 つは、独自の. そして、おそらくそれほど問題にならないフォーラムの場合でも、独自のものを作成するよりも、すぐに使用できることが証明されているものを使用する方が簡単ではないでしょうか?