1
  1. 進化的アルゴリズムは、適応度関数を使用して、世代を超えて生存する候補を選択します(「適者生存」)。すべての適応度関数は、候補の値が目的の値に近いほど、入力(「キー」)が目的の入力に近くなければならないことを前提としています。

  2. 暗号化ハッシュ関数には、「特定のハッシュを持つメッセージを生成することは不可能である」という特性があります。これは、値の「近さ」とキーの「近さ」の間にほとんどまたはまったく相関関係がないことを意味すると理解しています。

これら2つをまとめると、「適者生存」の仮定が暗号化ハッシュ関数にとって間違っていることを意味しませんか?つまり、進化的アルゴリズムを使用して暗号化ハッシュ値の逆を理解しようとすると、適応度関数が間違った方向に移動します。値の「近さ」とキーの「近さ」の間の相関関係は、進化的アルゴリズムの前提条件ですか?

4

2 に答える 2

9

はい、3つすべての(適切な)暗号化ハッシュ関数の出力に基づいて、値Aが値Bよりも目標に近いことを一貫して示す適応度関数を作成することはほとんど不可能です。それはあなたが言及したプロパティから続きます。したがって、進化的アルゴリズムでは、平均的な場合の暗号化ハッシュ関数の反転を高速化することはできません。ただし、これは驚くべきことではありません。このプロパティは、進化的アルゴリズムのアプローチを正確に破る(ハッシュ値の類似性を調べることで反転を高速化する)ため、そもそも有用です。

これを一般化すると、進化的アルゴリズム(たとえば、ヒューリスティックに依存して検索をガイドする他のすべてのアルゴリズムと同様)は、意味のある適応度関数(ヒューリスティック) †</sup>A*を定義できる場合にのみ役立ちます。明らかに、これを許可しない問題を構築することは可能であり(たとえば、情報が少なすぎるなど)、同じ問題を抱えている実際のアプリケーションが他にもある可能性があります。進化的アルゴリズムは癌を治療しませんが、これも驚くことではありません(何も治療しません。そうでなければ、別の比喩に移行したでしょう)。

†</sup>ちなみに、この適応度関数は特定の値に近い必要はありません。たとえば、パフォーマンスのためにコードを最適化する場合、適応度は操作の数になる可能性があるなど、適応度が無限に大きくなる可能性がある多くの問題があります。毎秒。

于 2011-09-17T17:49:37.483 に答える
1

暗号化ハッシュ関数には、「特定のハッシュを持つメッセージを生成することは不可能である」という特性があります。これは、値の「近さ」とキーの「近さ」の間にほとんどまたはまったく相関関係がないことを意味すると理解しています。

値とキーの「近さ」についてのあなたの理解は真実です。実際、それがハッシュ関数の主な目的です。そして、進化的アルゴリズムはここではうまく機能しません。

ただし、それが「特定のハッシュを持つメッセージを生成することは不可能」である理由ではありません。これは、ハッシュ関数が1対1ではないためです。たとえば、hash(a) = key = hash(b)。したがって、キーが与えられた場合、元のメッセージがaであるかbであるかを判断する方法はありません。

于 2012-03-15T21:13:43.720 に答える