web-dev-qa-db-ja.com

署名にMD5を使用する場合の安全性

一般的に言って、最近は安全に使用するためにMD5が壊れていると考えられていますが、最近、会社でMD5を使用した署名デザインに何度も遭遇しました。詳細は次のとおりです。

T =テキスト。これは、HTTPヘッダーのプレーンテキストとして直接表示できます。

AppId、AccessKey =サーバーから承認されたIDとキーのペア。 IDは、HTTPヘッダーのプレーンテキストとしても追加されます。

署名= MD5(T ||タイムスタンプ|| AppId || AccessKey)

私の質問は、この署名のデザインがどれだけ安全かということです。私はさまざまな種類の衝突攻撃を検索しましたが、この状態に最も近いものは 選択されたプレフィックス攻撃 であり、このシグネチャを効果的に悪用することはまだ難しいようです。

どんなアイデアでも大歓迎です。

1
Dee

誰も言及していない 長さ拡張攻撃 にはまだ驚いています。これは脆弱ではないようですが、単に偶然に脆弱になることを回避した可能性もあります。

すぐには攻撃に対して脆弱ではないように見えますが、標準ではありません。 「署名」が必要な場合(実際に必要なものは [〜#〜] mac [〜#〜] と呼ばれます)、そのために設計されたアルゴリズムを使用する必要があります [〜#〜] hmac [〜#〜]

HMAC-MD5は実際にはまだ安全であると考えられていますが、実際に書き換える価値があると判断された場合は、HMAC-SHA256を使用することもできます。 HMACに影響を与える改善された攻撃が最終的に発見された場合、MD5がSHA-256よりも劣るのは良い賭けです。

1
AndrolGenhald

MD5は、同じハッシュで2つのデータを作成できるという意味で壊れています。ただし、両方のデータを変更できる必要があります。

たとえば、両方の画像を操作して、 同じMD5で2つの画像を作成する を行うことができます。次に、ユーザーまたはシステムがファイルのMD5のみをチェックする場合、イメージをスワップできますが、MD5は同じままです。

あなたの例では、AppIdとAccessKeyを持つ攻撃者のために、同じ署名を持つ2つのテキストを作成することが可能です。システムのセキュリティを損なうことはないと思いますが、それは署名の使用方法に依存します。

任意のMD5でファイルを作成したり、ブルートフォース以外の方法でMD5ハッシュから元のデータを見つけたりすることはできません。したがって、例で使用されているキーが十分に長い場合、AppIdまたはAccessKeyを持たない攻撃者に対して安全です。

ただし、MD5は衝突耐性がないことが判明したため、優れたハッシュ関数であると多くの人々から信頼されなくなりました。評判が悪く、どのような用途にも適していません。したがって、新しいシステムを開発する場合は、MD5(またはSHA1)を使用しないでください。

1
Sjoerd

私の意見では、署名の一致を取得するためだけにTを編集できることは役に立ちません。夢のシナリオでは、Tを敵の利点に合わせて編集し、シグネチャマッチを得ることができます。これは、それほど単純ではなく、簡単に達成できるものでもありません。

したがって、この場合、これはMD5にとって十分なアプリケーションです。複雑すぎません。

これを理解するのとは対照的に、これをログインメカニズムとして使用すると、安全性が低下します。

0
Jason Poh