web-dev-qa-db-ja.com

ニューラルネットワークはハッシュアルゴリズムを解読できますか?

私はニューラルネットワークと、多くの複雑な関数を近似するそれらの能力について少し読んでいます。

ニューラルネットワークは、SHA256のようなハッシュアルゴリズムを解読することができませんか?

たとえば、ハッシュされた8文字の文字列をクラックするようにネットワークをトレーニングしたいとします。入力と期待される出力がわかっているので、すべての順列を通過してネットワークをトレーニングできます。ネットワークは、技術的には、8文字の文字列にマップされる比較的大量のSHA256ハッシュをクラックできますか?これは以前に行われたことがありますか?

24
Omega

番号。

ニューラルネットワークはパターンマッチャーです。それらは非常に良いパターンマッチャーですが、パターンマッチャーはまったく同じです。彼らが模倣することを意図している生物の脳よりも進んでいない。より徹底的で精力的ですが、洗練されていません。

パターンが見つかるにはそこにある必要があります。いじめるには、データにバイアスが必要です。ただし、暗号化ハッシュは、出力のバイアスを排除するように明示的かつ非常に慎重に設計されています。どのビットも他のどのビットよりも可能性が高く、1つの出力が特定の入力に相関する可能性は高くありません。そのような相関が可能である場合、ハッシュは「壊れている」と見なされ、新しいアルゴリズムが代わりに使用されます。

ハッシュ関数の欠陥は以前に見つかりました ですが、ニューラルネットワークを利用したものではありません。代わりに、特定の数学的原理を注意深く適用してきました。

35
tylerl

別の角度から:
これを未解決の問題に減らすことができます。「- 整数因数分解 の効率的なアルゴリズムは存在しますか?」そのようなアルゴリズムが存在する場合、NNは ガイド付き証明検索 を介してそれを発見でき、それを使用してすべてのセキュリティを弱体化できます。

10
micimize

あなたのコメントを与えられた更新:

私はそれが計算上不可能であることを知っています。私はそれが理論的に可能かどうか知りたかっただけです(それはタイラーに従っていないようです)

はい、無限の時間と無限のエネルギーが与えられた場合、ニューラルネットはSHA256をクラックする可能性があります。しかし(これが@tylerlが作っているポイントだと私は思います)ハッシュ関数には識別可能なパターンがないため、ニューラルネットはすべてのハッシュを計算してルックアップテーブルを作成するという素朴な力以上のことはできません可能な文字列。このようなルックアップテーブルには、より多くのエントリ(〜2256)地球上に原子がある場合(〜2166)-したがって、少なくとも現在の技術レベルでは、このようなテーブルをメモリに保持したり、ディスクに保存したりすることは「不可能」です。同様に、ニューラルネットのパフォーマンスがダイスロールよりも著しく優れている場合、必要なニューロンの数もおそらく惑星上の原子の数を超えるでしょう。

だから、はい、それは計算的に実行不可能ですが、それでも理論的には可能です。実際、暗号化については、理論的にはalwaysでブルートフォースが可能であることが一般的ですが、そうすることで、存続期間よりも多くの時間を必要とすることを証明できる場合、「十分」と言います。宇宙と太陽に含まれているよりも多くのエネルギー。


私は反論は以下に対する反応だと思います:

入力と予想される出力がわかっているので、すべての順列とネットワークをトレーニングできます。

1)これはルックアップテーブルとは根本的に異なりますか?

2)SHA256の出力スペースは2です。256、そして本質的に無限である入力空間。参考までに、ビッグバンからの経過時間は50億年と推定され、約1.577 x 10です。27日 ナノ秒、約290 ns。したがって、各トレーニングの反復に1 nsかかると仮定すると、2166 あなたのニューラルネットを訓練する宇宙の時代。

ここでのポイントは、SHA256には2256 可能な出力、および2256 本当に本当に本当に大きな数です。

9
Mike Ounsworth

「ニューラルネットワークはハッシュ関数の「逆関数」になることができますか?」多分。与えられたハッシュ関数SHAまたは他のハッシュ関数)がドメインとイメージの間にパターンがないことを数学的に証明するものはありません。他の回答者が指摘したように、ハッシュ関数は既知の保存された品質はありません。ある種のパターンがある場合、理論的にはニューラルネットワークがそれを見つけることができますが、以前に試されたことは確かであり、SHAがまだ存在しているので、ハッシュ関数ごとに、この「パターンの欠如」を個別に証明する必要があることをお話しします。

ハッシュ関数は全射型である必要があります(ただし、通常、射影型は正式に証明されていない)ため、「逆関数」を引用符で囲みます。そのため、2つの数値を同じ数値にマッピングできるため、真の逆はありません。ただし、逆関数は、数値のセットまたは数値のセットを記述する関数を返すことができるという意味で、真の関数である必要はありません。ハッシュ関数のブルートフォース逆関数は単純にドメイン(自然数など)を返し、より高度な逆関数はドメインの実際のサブセットを返します。

これは実際にニューラルネットをトレーニングするのに興味深いものです。NNは関数を出力として返します。この関数は画像内である程度の密度を持ち、密度が低いほど報酬が高くなります。ここでNNをトレーニングするには、f(x)と入力し、x <-{g(c) | c <-| N}であるかどうかを確認します。 NNが出力として返す関数です。

5
Mark I.O.

ニューラルネットワークやその他の機械学習アルゴリズムは、このように見えても魔法ではありません。最後に、これらのメソッドは、入力を出力にマップする一連の方程式(つまり、数学)であり、学習は、この方程式のパラメーターを調整して、結果がトレーニングデータを可能な限り反映するようにします。このようにして、データの固有の構造を学習しようとします。この構造が他のほとんどの可能な入力でも同じであることを期待しています。または要約すると、その単なる数学です。

ハッシュ値から元の値への比較的簡単なマッピングを可能にするこのような固有の構造が存在する場合、または検索スペースが大幅に削減されてブルートフォースが可能になる場合でも、このハッシュは暗号の強力なハッシュとは見なされません。 。そして、そのような問題を調査するためにニューラルネットワークなどを使用する必要がないので、これが実行され、ニューラルネットワークが新しい危険を課すことはないと確信しています。

3
Steffen Ullrich

いいえ、ニューラルネットワークは基本的に勾配の適切な最適化を使用します。ニューラルネットワークは興味深い関数のファミリーであり、実際には、凸問題ではなくても、うまくうまく管理できます。

このような最適化手法が機能するためには、最小限の滑らかさが必要であり、ほぼ正しいという概念が必要です。暗号化ハッシュ関数ではこれはありません。シングルビットフリップで出力の半分がフリップされることを期待します。ほとんどの場所で、小さな変更が暗号化ではなく小さな変更につながります。これが、ニューラルネットワークが暗号プリミティブを反転することを学習できる理由です。

3
Meir Maor