2番目のプリイメージ攻撃と衝突攻撃の違いは何ですか?


24

ウィキペディアでは、2番目のプリイメージ攻撃を次のように定義しています。

固定メッセージm1が与えられた場合、hash(m2)= hash(m1)となるような別のメッセージm2を見つけます。

ウィキペディアでは、衝突攻撃を次のように定義しています。

hash(m1)= hash(m2)となるような2つの任意の異なるメッセージm1およびm2を見つけます。

私が見ることができる唯一の違いは、2番目のプリイメージ攻撃では、m1がすでに存在し、攻撃者に知られていることです。ただし、それは重要だとは思いません。最終的な目標は、同じハッシュを生成する2つのメッセージを見つけることです。

2回目のプリイメージ攻撃と衝突攻撃の実行方法の本質的な違いは何ですか?結果の違いは何ですか?

(余談ですが、この質問に適切にタグ付けすることはできません。「暗号化セキュリティプリイメージコリジョン」タグを適用しようとしていますが、十分な評判がありません。誰かが適切なタグを適用できますか?)


1
あなたの印象は正しいです-それは違いです。あなたが間違っている部分は、これが実際には大きな違いであることです。衝突のある2つのものを見つけることができることと、特定の平文の衝突を見つけることができることはまったく別のことです。たとえば、特定のメッセージをスプーフィングしたい場合、実在の偽造をコミットするのは無意味です。傍受したメッセージと同じものにハッシュする別のメッセージが必要です。
エイドリアンペトレスク

@Adrian Petrescu:それを答えて、おそらくそれについてもう少し詳しく説明してもらえますか?それぞれ(衝突イメージ攻撃ではなく、プリイメージ攻撃の状況を提供する)が最適な場合などを追加しますか?
トーマスオーエンズ

回答:


27

攻撃シナリオを使用して、違いを動機付けることができます。

最初のプリイメージ攻撃、我々は唯一の指定された、敵を尋ねるを見つけるために、MまたはいくつかのM 'その結果、H M ' = H Mは。ウェブサイトが{ u s eの代わりに{ u s e r n a m e H p a s s w o r d }をデータベースに保存するとしますH(m)mmH(m)H(m){username,H(password)}。Webサイトは、パスワードを受け入れて H i n p u t = を比較することで、ユーザーの信頼性を検証できますH P A S S W O のR D (の確率で 1 / 2 Nいくつかの大規模のために N偽陽性のために)。ここで、このデータベースが漏えいしたか、さもなければ危険にさらされているとします。A{username,password}H(input)=?H(password)1/2nn最初のプリイメージ攻撃は、攻撃者がメッセージダイジェストにのみアクセスし、この値にハッシュするメッセージを生成しようとする状況です。

では第二プリイメージ攻撃、我々は敵より多くの情報を可能にします。具体的には、だけでなく、mも与えます。ハッシュ関数を考える及び大きい素数とされているパブリック定数です。明らかに、最初のプリイメージ攻撃では、これがRSAの問題になり、難しいと考えられています。ただし、2番目のプリイメージ攻撃の場合、衝突の発見が容易になります。1セットがあれば、H(m)mp q d m = m p q + m H m p q + m = m p q + m dH(m)=mdmodpqpqdm=mpq+mH(mpq+m)=(mpq+m)dmodpq=mdmodpq。そのため、攻撃者は、ほとんどまたはまったく計算せずに衝突を発見しました。

デジタル署名スキームのために、一方向ハッシュ関数が2番目のプリイメージ攻撃に耐性があるようにしたいと思います。この場合、は公開情報と見なされ、ドキュメントのすべてのコピーと共に(間接レベルを介して)渡されます。ここで、攻撃者はと両方にアクセスできます。攻撃者は、元の文書(または完全に新しいメッセージ)のバリエーションを考え出すことができる場合はというように、彼が、元の署名者であるかのように、彼は彼の文書を公開することができます。d o cH(document)H d o c u m e n t d H d = H d o c u m e n t documentH(document)dH(d)=H(document)

衝突攻撃は、敵がさらに機会ができます。このスキームでは、となるような2つのメッセージおよびを見つけるように、敵(ボブと呼べますか?)に依頼します。ピジョンホールの原理と誕生日の逆説により、「完璧な」ハッシュ関数でさえ、プリイメージ攻撃よりも衝突攻撃に対して二次的に弱いです。言い換えれば、予測不可能で不可逆的なメッセージダイジェスト関数が与えられた場合、ブルートフォースに時間かかるため、衝突が発生する可能性があります常に予想される時間ます。m 2 H m 1= H m 2f { 0 m1m2H(m1)=H(m2)f({0,1})={0,1}nO S 、Q 、R 、T 2 N= O 2 n / 2O(2n)O(sqrt(2n))=O(2n/2)

ボブは、さまざまな方法で衝突攻撃を利用して自分の利益を得ることができます。最も簡単なものの1つです。ボブは2つのバイナリと()の衝突を検出し、bは有効なMicrosoft Windowsセキュリティパッチ、はマルウェアです。(BobはWindowsで動作します)。ボブは、セキュリティパッチをコマンドチェーンに送り、ボールトの背後でコードに署名し、世界中のWindowsユーザーにバイナリを送信して欠陥を修正します。ボブは、とMicrosoftが計算した署名を使用して、世界中のすべてのWindowsコンピューターに接続して感染できるようになりました。b H b = H b b b bbbH(b)=H(b)bbb。これらの種類の攻撃シナリオを超えて、ハッシュ関数が衝突耐性があると信じられている場合、そのハッシュ関数はプリイメージ耐性がある可能性が高くなります。


それは美しく説明されています。私が探していたよりもはるかに多くの数学が、私は努力に非常に感謝しています-私はそれぞれをあなたに従ってきました。ありがとう。
トーマスオーエンズ

そしてすごい。仲間のRIT学生。
トーマスオーエンズ

1
トーマスはどう?あなたは私の友人アラン・ミーキンスと物理学をしていたと思います。ここでRITの人々に会えてうれしいです!また、答えを受け入れてくれてありがとう。
ロススナイダー

かなり良い。あなたが秋にキャンパスの周りにいて、セキュリティに興味があるなら、おそらく私たちは直接会うことができます。私はこの夏にいくつかの応用セキュリティ作業(速記、ステガナリシス、公開鍵暗号化、デジタル署名の適用)を行っており、理論的な側面について知りたいと思っています(私が興味を持っている限り-私は持っていません時間または数学的な背景をテーマに関する論文の多くを通過します)。
トーマスオーエンズ

rws1236@cs.rit.edu
ロススナイダー


1

ロスが離散ログ問題であると言及している問題は、実際にはまったく異なる問題であるRSA問題であり、これは離散ログよりもルートの計算にはるかに関連しています。


2
これは確かに真実です!おっとっと。もともと私は離散ログ問題を使用し、後でスキームの詳細を編集しました。良いキャッチ。これが新しい答えを構成するかどうかわからない-私の答えの下にコメントとして残すほうがおそらく適切だった。
ロススナイダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.