web-dev-qa-db-ja.com

チェックサム/ハッシュからファイルの内容を回復できますか?

複数の部分に分割されたビデオファイルがあるとします。各ピースは2メガバイトです。また、各ピースとファイル全体の*ハッシュ名をここに挿入*のリストも持っています。

ここで、これらのピースの1つを紛失/紛失/フバーしたと仮定します。

ブルートフォースまたは他の方法を使用して、ハッシュから失われた部分をhuman-lifespan時間で取得できますか? =

レインボースタイルのテーブルは実現不可能だと思います。

ボーナス数値の質問-ほとんどがコンシューマPCに基づく中規模の分散コンピューティングネットワークでどれくらいかかりますか? (例:4 GHz CPU +エントリレベルGPU + 8 GB RAM)

31
beppe9000

簡単な答え、いいえ。

それは、もし知っていれば、x%4 = 3xの値を見つけることは可能ですか?いいえ、確かに、この方程式を満たすxの値は無限になりますが、どちらが正しいのかは簡単にはわかりません。

同様に、多くの(または無限の)ビデオクリップは、特定のハッシュ値をもたらす可能性があります(明らかに、無限のビデオクリップは特定の数のハッシュ値にマッピングされる必要があるため、衝突が発生します)。どのクリップが正しいか分からないでしょう。

それも、人間の時代では?番号。

編集:コメントで指摘されているように、ファイルは2MBの断片にチャンク化されているため、無限の可能性はありませんが、かなり大きくなります(2は1670万の累乗、約)。人間の時代では、そのような多数の可能性をブルートフォースで強制することはまだ不可能に近いです。しかし、そうです、それはinfiniteではありません。

60
pri

コンピュータがどれほど高速であっても、これは不可能です。これは、実際には何もない状態から正しい情報を再作成できないためです。

実際には、32バイト(SHA-256のサイズ)または最大64バイト(チャンクおよびファイル全体の場合はSHA-256)から2 MBを復元することを求めています。これは、1:65536または1:32768の比率になります。ビデオがすでにかなり圧縮されていることを考えると、このわずかな情報から元のデータを復元できる可能性は事実上ゼロです。 2 MBのチャンクを作成して特定のSHA-256ハッシュを作成できる可能性がありますが、これがその元のチャンクである可能性は非常に低いです。

14
Steffen Ullrich

妥当な時間内にファイルを複製できませんでした。その理由は、ハッシュを「リバース」する唯一の方法はブルートフォースを使用することであり、元のファイルの大きさを考慮すると、ブルートフォースに正確なバイト数が必要になるためです。

正確に言うと、100MBのビデオファイルがあるとします。

  • 1MB = 1,000,000バイト
  • 100MB = 100,000,000バイト

これは、この元のファイルをブルートフォースしてハッシュであることを確認する必要があることを意味します。n^ r順列を試す必要があります。ビデオファイルが1バイトあたり256文字(ASCII)しか使用していないとすると、次のようになります。

256100,000,000 ≈10240,823,997 ∞∞

これは基本的に無限です-CPUリソースに関係なく、これを計算するには基本的にFOREVERが必要です。

[〜#〜] update [〜#〜]:もちろん、ここで省略したハッシュの衝突の問題もあります-Sha256ハッシュでは、私たちの例と同じくらいの大きさのファイルとの衝突のほとんど無限の量。簡単にするために、これについては前に触れませんでした。

9
rdegges

処理能力が無限大で、可能なすべてのハッシュに対してすべての可能なメッセージを短時間で確実にチェックできるコンピューターがあるとします。現在直面している問題は次のとおりです:collisions

衝突とは何ですか?多くの異なるファイルがまったく同じ署名と一致する可能性があります。多くの異なるメッセージがまったく同じ署名と一致する可能性があります。

ハッシュはone-way。一連の文字をハッシュに変換します。ハッシュを検証するときは、メッセージがハッシュの計算値と一致するかどうかを確認するだけです。 問題は、多くの異なるメッセージがこの同じハッシュに一致する可能性があることです。これはcollisionと呼ばれます。

ただし、計算能力は無限であるため、超大規模な試行錯誤によって最終的にファイルを再構築することもできます。ただし、このハッシュ値の考えられる例をすべて入手したら、どのハッシュ値がどれであるかをどのようにして判断しますか?


だからチャンスがあるって言ってるの?

So you're telling me there's a chance?

今日のテクノロジーでは、無限の計算能力はないので、それは完全に不可能です。全世界の計算能力を合わせて10億倍にしても、これを行うことはできません。どういうわけかこれをしたとしても、どのメッセージが正しいかをどのようにして知ることができますか?


私のアイデアはどこに適用されますか?

  • ハッシュは一方向です。提供されたキーを使用して、計算されたハッシュと一致することのみを検証します。
  • 暗号化は双方向です。提供されたキーを使用すると、結果が返されます。

あなたのアイデアはハッシュではなく暗号化の下で適用されます。暗号化を使用すると、キーがあれば、ファイルの復号化されたコンテンツを取得できます。

7
Mark Buffalo

基礎となるファイルのエントロピーが十分に高い場合は困難です。基礎となるデータについて何か知っている場合は、それを回復できる可能性があります。たとえば、近くのどこかにハッカーがいる場合、誰かが私がmd5でハッシュしたものを取得する前に誰かに言われるまでには、それほど長くはありません。

73868cb1848a216984dca1b6b0ee37bc

ただし、ビデオ通常には多くのエントロピーがあり、これは失われた原因または少なくとも非常に難しい原因になります。あなたはビデオがビデオカメラであることを必要とし、欠けているチャンクが黒い夜のように黒の1時間を示すことを期待する必要があります。これを全体的に見てみましょう。ビットコインを作成することは、本質的にハッシュを逆にすることの問題です。非常に短いビデオの切り取りを反転することは、おそらく約20ビットコインを作成することと似ています。だからあなたの靴の中で私はビットコインを作り、ビデオの新鮮なコピーを購入し、変化をポケットに入れます。ほぼ8000ドル相当の変化。たぶん私は量子コンピューター会社の株式を購入し、将来の悪用を容易にするでしょう。 「不可能」をするのは楽しい。

「ハッシュは多対1であるため、ハッシュされたものはわかりません」と言う人にとってはそうです。しかし、その1つの値にハッシュする多くの値のうち、一部の値は他の値よりももっともらしくなります。上記のハッシュを反転すると、正しい入力を見つけたことに疑いの余地はありません。楽しんで! :-)

4
Max Murphy

これには1つの可能性があります。Googleit-文字通りです。

ファイルがすでにいくつかのファイル共有サイトのいずれかにアップロードされている場合、それらはおそらくそのハッシュを投稿しており、インデックスが作成されている可能性があります。

たとえば、google ' 60CCE9E9C6557335B4F7B18D02CFE2B438A8B3E2 'です。

コメントですが長すぎます:

他の人が示したように、これは不可能です。ただし、確かに妥当な関連する問題があります。

わかりました。99の2 MBファイルが100に分割された200 MBビデオを再構築することはできません。

ただし、2MB以上の髪の毛になる別のファイルを作成して、欠落しているoneファイルを再構築できます。このような2つのファイルを使用すると、不足している2つのファイルを再構築できます。ブロックサイズをファイルサイズよりも大きく設定することはできませんが(4MBの修復ファイルは1つの欠落ファイルのみを修正します)、部分的に破損する可能性がある場合に役立つ小さな値に設定できます。 (計算時間は長くなり、ファイルは少し大きくなりますが、損傷から回復する能力が高くなります。)

長い間標準プログラムは Quickpar でしたが、古くから更新されていません。私が知っている(まだあまり使用していません)より現代的な代替手段は Multipar です(注:このサイトは日本語です。ただし、プログラムは英語で優れています)。

一部のデータをDVDにバックアップする場合、何かが発生した場合に備えて、定期的に追加の修復ファイルを作成します。DVDの余分なスペースがとにかく無駄になるので、そこに保険をかけませんか? Multiparには、DVD-RまたはBD-Rディスクに書き込むためのブロックを生成するためのモードがあります(まだ試していませんが)。

1
Loren Pechtel

それは基本的に時間がかかりすぎる満足のいく結果を達成するには、両方に対処します:不足しているビデオ部分の生成(計算可能な基準による)と最適な並べ替えそれらのうちの1つ(それは人間の知能または非常に高度に発達したAIを必要とします)。最終的にすべての基準に一致する素敵なビデオがあったとしても、元の映画が同じ内容であったかどうかは決してわかりません。それは意味をなさないかもしれません最も変化しやすいものを「再構築」しようとします-より良くそしてより速く:あなた自身のファンタジーを使用してください。

確かに、いくつかの "クロスファイア" 10バイトのハッシュ値は10 MBの情報を表現/含むことができないため、要点は次のとおりです。

ビデオファイル全体の中に修正のための多くの追加情報がある場合でも:データ形式、フレーム、ストーリーボード自体、俳優の声など:既知のすべてに適合する数千の多かれ少なかれ異なるビデオがあります基準。 ほんの一握りの単一のビデオフレームがあちこちにあり、任意のビデオ同じハッシュにつながります。

この質問は非常に似ています。(小さい)ウイルスが(大きい)量の可変バイトをパディングすることにより、ファイルのチェックサムを同じ値に保ちながら、(大きい)ファイルに自分自身を追加することは可能ですか?今日は計算が難しいですが、それは可能だと思います。一方、考えられる多くのコードが同じハッシュにつながるため、計算時間が過大評価される可能性があることがわかっています。多分それは数秒で可能です-ハッカーだけが知っています。

編集:一晩かけて、「lost-video-part-problem」の素敵な追加比較のインスピレーションを得ました:そのような場合(完全なデータ復旧) )RAID-5テクノロジーが既に発明されています(Wikiはこちらを参照してください: https://en.wikipedia.org/wiki/ RAID )。 3つ以上のハードドライブのうち1つが故障し、すべてのデータをロスレスで再構築できます。確かに、すべてのドライブに大量のデータオーバーヘッド(エラー修正のための冗長性)が保存されているため、そうすることができます。

ハッシュ/チェックサムは、ファイル内のどこかで発生した少し(ビットまたは数バイト)の改ざん/エラーの検出に適しています。より高度なのは、エラー訂正付きのCRCです。少なくとも、RAIDのような冗長システムがあります。

1
Didi

答えは「いいえ」で、2つの異なるものを混同しているようです。

  • チェックサムハッシュ一方向の整合性チェッカーです。その点でのそれらの使用の目的は、データが破損していないことを確認することであり、他の何もない
  • 回復コードは、必要な場合に使用するコードです提供されたコードでデータを回復する。最も優れた例は、CD-ROMデータを回復するための Reed-Solomon code です。この問題におけるそれらの使用の目的は、何らかの理由で破損/失われたデータを回復するのを助けることです

一見すると同じように見えますが、[〜#〜] very [〜#〜]異なるものです。

1
Alexey Vesnin

序文:ハッシュは通常、ファイルまたはデータセットの整合性を検証する際に使用されます。

チェックサムハッシュにデータと名前が含まれている場合、それはコンテナーの参照ポイントになる可能性があり、チェックサムパターンマッチングの検索で実装できます。ソルト(たとえば、日付や時刻の値が含まれる可能性があります)を知っている場合。

1MH/sの速度で単一の衝突を引き起こすには、わずか15の数の結果の絶対的な可能性をすべて排除するのに約3年かかる可能性があります。したがって、別の参照を理解します。このファイルがストレージメディア上にある場合、より具体的になります。セクターまたはファイルIDエントリ。

ただし、データ転送(特にネットワーク経由)は、参照用に独自のチェックサムを使用することで、一般的に邪魔になる傾向があることに注意してください。

そして誰かが主張したい場合には、塩は通常補完的であり、暗号は回復と混同されるべきではありません、あなたがいくつかの哀れな暗号規格だけでなく暗号化し、あなたが鍵を忘れたとき、あなたは通常あなたができないでしょうデータを回復します。

0
Alex Davies

ハッシュは一方向に設計されています。左から右に移動するのは簡単ですが、ハッシュについて話すとき、右から左に移動することは事実上不可能です。

0
abhinav singh

情報理論のため、それは事実上不可能です。 「宇宙の熱死」のように事実上不可能であることが、検索の正当な制限要因になります。

2,000,000バイト(2MB)のスライスがありません。 SHA-1のようなハッシュには、20バイトの情報が含まれています。情報理論では、まだ不明である1,999,980バイトがあると予想する必要があります。つまり、2 ^(8 * 1,999,980)のファイルを調査することができます。これは非常に大きな数であり、atom魔法のように2Ghzプロセッサとして動作し、タンデムで動作するすべての場所で、それが見つかる前に、宇宙の熱死について話し始めます。 tには、どのソリューションが正しいものであるかを実際に把握するという課題が含まれます。

追加情報があると述べた人もいます。たとえば、ファイル全体のSHA-1があるとします。残念ながら、これはあまり役に立ちません。このハッシュがあると仮定すると、まだ不明な1,999,960バイトの情報があるため、2 ^(8 * 199,960)のスライスを検討する必要があります。私たちはまだ宇宙の領域の猛暑の中にいます。既存のビデオとの連続性などの制約を追加することもできますが、最終的には、知っている情報から直接再作成するだけの十分な情報がなければ、スライスについてどの程度知ることができるかについて限界に達します。

あなたが持つ可能性が最も高いのは、問題を解決するために全世界を結束させ、インターネット全体でデータの2MBスライスごとにフィードすることです。データを「失った」場合、他の誰かがそのコピーを持っている可能性が高いです。人類が収集したペタバイトのデータをスキャンする方が、2 MBの任意のデータが提供するはるかに多くの可能性をスキャンするよりもはるかに簡単です。

0
Cort Ammon