バイナリファイルのどの部分が変更されているかを知る方法

バイナリファイルのどの部分が変更されているかを知る方法

ファイルのどの部分が変更されているかを確認できるツールはありますか? ハード ドライブのどのセグメントがアクセスされているかを示すツールを見たことがありますが、もしそのようなツールがあれば、単一のファイルに対して同様のものが欲しいです。

ファイルを暗号化していますが、一部がディスクに書き込まれた後、その部分が再び変更されるかどうかを確認したいと考えています。たとえば、ファイルの最初の MB が暗号化されてディスクに保存され、プログラムが次に進むと、暗号化が完了すると最初の MB 内の何かが更新されますか。

詳細なコンテキストとして、gpg4win を使用して非常に大きなファイル (36 GB) を暗号化し、それをリモート サーバーに FTP で転送するプロセスがあります。このプロセスの両方の手順には何時間もかかりますが、FTP の方が少し時間がかかります。暗号化によってファイルが拡張され続けるだけで、先頭が変更されていない場合は、ファイルが少し進んだ時点で FTP プロセスを開始できます。ただし、暗号化されたファイルのヘッダーが最後に更新された場合は、その手順が完了するまでアップロードを開始できません。

答え1

通常、それはrsync アルゴリズムのような:

* split a file into blocks of x bytes
* build a hash over these x bytes
* compare the hash for each block between both files
* transfer the changed blocks

これは明らかにファイルが変更されていない場合にのみ機能します全てブロックが書き込まれるときに。したがって、これは引用段落心に留めておくべきこと:

ディスク暗号化では、多くの場合、アプリケーション専用に設計された特殊モードが使用されます。調整可能なナローブロック暗号化モード (LRW、XEX、XTS) とワイドブロック暗号化モード (CMC および EME) は、ディスクのセクターを安全に暗号化するように設計されています。(ディスク暗号化理論を参照)

OpenGPG は混合暗号システム (目的を達成するために非対称暗号と対称暗号を混合) ですが、現在、使用されている暗号とブロック レベルのデルタへの適用については何も見つかりません。次の観察に基づいて、別の暗号ソリューション (openssl など) を選択することをお勧めします。http://www.daemonology.net/blog/2009-06-11-cryptographic-right-answers.html

そうは言っても、

どちらもバイナリの差分を計算し、後で部分をマージするためのツールです。

関連している:暗号化されたデータの増分(デルタ)バックアップ

関連情報