md5がどのように機能するかを知っていれば、遺伝的プログラミングなどの人口ベースのアルゴリズムを使用して単純なパスワードを破ることは可能でしょうか?
たとえば、5〜10文字の文字列のmd5ハッシュが与えられた場合、文字列を取り戻そうとします。
はいの場合、何ができますか
- 人口の個人のための良い表現
- 選択基準
- 組換え方法
これは、遺伝的アルゴリズムの適用を理解し、誰かがこの種のことをしたかどうかを知ることです。
md5がどのように機能するかを知っていれば、遺伝的プログラミングなどの人口ベースのアルゴリズムを使用して単純なパスワードを破ることは可能でしょうか?
たとえば、5〜10文字の文字列のmd5ハッシュが与えられた場合、文字列を取り戻そうとします。
はいの場合、何ができますか
これは、遺伝的アルゴリズムの適用を理解し、誰かがこの種のことをしたかどうかを知ることです。
あまり。
たった5文字で、無理な時間でブルートフォース攻撃を行うことができますが、おそらくMD5を壊すよりもGAについてもっと質問しているのでしょう。問題は、MD5ハッシュに悪用可能な構造がないことです。「互いに接近している」文字列は、有用な距離関係の下で「互いに接近している」ハッシュを生成しません。適応度関数は基本的にランダムになります。
答えは「ノー」だと思います。クロスオーバー機能が取れないからです。そして、適応度関数はブール値になります。突然変異演算子とそのような適応度関数のみを備えたGAはブルートフォースです。
いいえ、可能性はほとんどありません。
遺伝的アルゴリズムが使用されます。いくつかの関数のローカル/グローバル最大/最小を見つけるため。md5ハッシュの場合、md5ハッシュを計算する値を変更すると、md5ハッシュが完全に変更されるため、入力値の範囲を狭めることはまったく役に立ちません。MD5アルゴリズムは、入力データが何らかの方法で変更された場合に生成された値をハッシュするように設計されています。正しい値を見つける唯一の可能性は、ミューテーションを適用する場合ですが、ランダムな入力値をチェックして、指定されたハッシュを生成するかどうかを確認します(これは、オキシルミンが言ったように、単なるブルートフォース攻撃です)。
特定のmd5ハッシュを生成した値の検索について詳しくは、こちら(レインボーテーブル)をご覧ください。
答えはおそらく「いいえ」ですが、考慮すべき注意点が1つあります。公開された衝突は数キーバイトだけ異なる文字列です:https://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
遺伝的アルゴリズムで平文を推測することは保証されていませんが、その方法で衝突を発見する方が効率的かもしれません。
または、PHPで、md5ハッシュを==
演算子と比較する場合... https://eval.in/108854