2026/8/9
ZIPファイルが改ざンされていないかハッシュ値で確認する方法
ZIPファイルの中身が改ざんされていないか確認する方法を考えるとき、まず理解しておくべきことは、ZIPというフォーマットそのものが持つ構造上の特徴と、ハッシュ値という暗号学的な指標がどのように互补い合うかという点です。ZIPはアーカイブ形式として広く普及している反面、ファイルの格納方式や圧縮レベル、アーカイブ作成時のタイムスタンプ処理などが使用するソフトウェアによって微妙に異なるため、「同じ内容のファイルを再ZIPしたのにハッシュ値が変わってしまった」という現象に遭遇した経験がある方は少なくないでしょう。本記事では、こうした落とし穴を踏まえたうえで、ZIPファイルの中身が改ざんされていないかを技術的に確認する実践的なアプローチを解説します。ただし、ここで説明するのはあくまで技術的な検証とメタデータ分析、および暗号学的な証明の手法であり、法的な所有権や真正性を最終的に判断するものではないことを前置きしておきます。FilesAuditのようなプラットフォームは、ファイルから技術的メタデータを抽出し、SHA-256やMD5などの暗号学的ハッシュを計算し、専門的なPDFレポートを生成することで、ファイルが同一であるか、あるいは変更が加えられたかを示す証拠を文書化するものですが、それ自体が法的な結論を出すわけではありません。
ZIPファイルの完全性を確認する際、最も信頼性が高く広く用いられる手法が暗号学的ハッシュ関数による指紋照合です。具体的にはSHA-256やMD5、CRC32といったハッシュアルゴリズムを用いて、ファイルの内容から固定長のハッシュ値を計算し、この値が元のファイルと一致するかどうかを比較します。SHA-256は現時点で衝突耐性が極めて高く、実用上は同一のハッシュ値を生成する異なるファイルを作成することは事実上不可能とされているため、改ざん検知のゴールドスタンダードとなっています。MD5は過去の脆弱性が指摘され衝突攻撃の可能性が示唆されているものの、ファイルの意図的でない破損や誤った変更を検知する用途では依然として有用であり、多くのシステムで併用されています。CRC32は圧縮ファイルの破損チェックなどで日常的に使われる軽量なチェックサムであり、ZIP形式の内部構造にもローカルファイルヘッダーや中央ディレクトリにCRC-32値が記録されていますが、暗号学的な強度を持たないため改ざん防止の単独の証拠としては不十分です。したがって、実務ではSHA-256を主軸とし、MD5やCRC32を補助的な指標として併記することで、検証の網の目をより堅牢にする手法が一般的です。FilesAuditを利用すれば、ZIPファイルをアップロードするだけでこれら三つのハッシュ値が自動的に計算され、専門的なPDFレポートとして文書化されるため、後から第三者に検証結果を提示する際にも有用です。
ZIPファイルの中身が改ざんされていないか確認する際に多くの人が直面する最大の難問は、「ZIPファイル全体のハッシュ値」と「ZIPの中に含まれる個別ファイルのハッシュ値」のどちらを比較すべきかという点です。実は、ZIPファイル全体のハッシュ値は、中身のファイルが一字一句変わっていなくても、再圧縮や再アーカイブを行うだけで変化してしまいます。これはZIP形式の仕様に起因しており、ファイルの格納順序、使用したアーカイブソフトのバージョン、圧縮アルゴリズムのパラメータ、さらにはファイルヘッダーに記録されるタイムスタンプの秒単位の違いなど、内容以外の要素がハッシュ値に反映されるためです。たとえば、まったく同じ10枚の写真をWindowsのエクスプローラーでZIP化した場合と、7-Zipで最高圧縮設定でZIP化した場合を比べると、展開後の中身は完全に同一であっても、ZIPファイルそのもののSHA-256ハッシュ値はまったく異なる値になります。したがって、ZIPファイルの中身が改ざんされていないかを厳密に確認したい場合は、ZIP全体のハッシュ値を比較するのではなく、アーカイブを展開したうえで内部の各ファイルについて個別にハッシュ値を計算し、それらを原本の各ファイルのハッシュ値と照合するという、ファイル単位の比較が本質的に正しいアプローチとなります。
このファイル単位の比較アプローチを実践する具体的な手順を説明します。まず、原本となるZIPファイルを展開し、中に含まれるすべてのファイルについてSHA-256ハッシュ値を計算して記録します。Windows環境であればPowerShellを開き、対象のフォルダに移動して「Get-FileHash -Algorithm SHA256 *」というコマンドを実行すれば、フォルダ内の全ファイルのハッシュ値が一覧表示されますし、macOSやLinuxであればターミナルから「shasum -a 256 *」を実行することで同様の結果が得られます。次に、検証対象のZIPファイルを別の作業用ディレクトリに展開し、同じコマンドを実行してハッシュ値の一覧を取得します。あとは二つのハッシュ値リストを比較し、ファイル名とハッシュ値が完全に一致していれば、中身は改ざんされていないと技術的に結論づけることができます。この作業を手作業で行うのはファイル数が多い場合に煩雑でエラーが生じやすいため、リストをテキストファイルに出力してdiffコマンドやファイル比較ツールで差分を確認する手法が実務的です。あるいは、FilesAuditにZIPファイルを直接アップロードすれば、アーカイブ内部の構造解析と含まれるファイルのメタデータ抽出が自動的に行われ、全体のSHA-256ハッシュ値とともにレポート化されるため、手動でのコマンド操作に不慣れな方でも確実な検証記録を残すことができます。ただし、先述の通りZIP全体のハッシュ値は再圧縮で変化する可能性があるため、FilesAuditのレポートを原本のZIPのレポートと直接比較する際は、ZIPファイルが同一のバイナリとして保存されていたことが前提となります。同一のZIPファイルが損なわれずに保管されていたことを前提に、そのハッシュ値が一致すれば、ファイル全体が一切変更されていないことの暗号学的証明となります。
ZIPファイルの中身の改ざんを確認する際、ハッシュ値の比較と並んで重要になるのがメタデータの分析です。ZIP形式は内部的にローカルファイルヘッダーと中央ディレクトリという二つの構造を持っており、それぞれにファイル名、圧縮方式、最終更新日時、CRC-32値、圧縮前後のサイズなどのメタデータが記録されています。これらのメタデータを詳細に調べることで、ファイルが意図せず変更された可能性や、あるいは意図的に細工された痕跡を見つける手がかりが得られます。たとえば、原本のZIPファイルの中央ディレクトリに記録されたファイルサイズが、展開後の実際のファイルサイズと一致しない場合は、アーカイブの破損または何らかの改ざんが疑われます。また、ZIPファイル内の各ファイルの最終更新日時が、原本の作成時と異なるタイムスタンプになっている場合は、展開と再圧縮の過程でメタデータが書き換えられた可能性があります。FilesAuditの詳細なZIPメタデータ分析機能を利用すれば、ZIPファイルの内部構造に記録されたメタデータを視覚的に確認でき、ZIP形式の内部構造に記録されたメタデータを詳細に確認できるため、ローカルファイルヘッダーと中央ディレクトリの間の不整合や、ファイル名に埋め込まれた特殊文字の有無など、手動では見落としやすい異常を検出できます。
もう一つ見落としてはならないのが、ZIPファイルの内部構造自体が持つCRC-32チェックサムによる整合性検証です。ZIP形式の仕様では、アーカイブ内の各ファイルについて、圧縮前のデータから計算されたCRC-32値がヘッダーに記録されることになっており、ファイルを展開する際に圧縮データから再度CRC-32を計算し、ヘッダーに記録された値と照合することで、データの破損や改ざんを検出する仕組みが組み込まれています。一般的なアーカイブソフトでZIPファイルを展開する際、もしCRCエラーが表示された場合は、圧縮データが破損するか何らかの改ざんを受けたことを意味します。ただし、CRC-32は暗号学的な強度を持たないため、攻撃者が意図的に改ざんを行い、同時にCRC-32値も再計算してヘッダーに書き込むことで、展開時のCRC検証をパスするような細工を理論上は行うことができます。したがって、CRC-32はあくまで偶然の破損を検出するための第一段階のチェックと捉えるべきで、真の改ざん検知にはSHA-256などの暗号学的ハッシュ値の照合が不可欠です。実務的なワークフローとしては、まずZIPファイルの展開がエラーなく完了するかでCRC検証を行い、次に展開された各ファイルのSHA-256ハッシュ値を原本と照合するという二段構えの検証を設けることで、偶発的な破損と意図的な改ざんの双方を網羅することができます。
大規模なZIPファイルや多数のアーカイブを扱う場面では、手動でのコマンド実行や個別のハッシュ値比較が現実的でないケースも出てきます。たとえば、数百個のZIPファイルが含まれるディレクトリを一括で検証したい場合や、数ギガバイトの容量を持つZIPアーカイブの完全性を定期的に監査したいような状況です。このようなシナリオでは、FilesAuditのデスクトップアプリを利用することで、ローカル環境で無制限かつバルク処理でのメタデータ分析が可能になり、ネットワークにファイルをアップロードすることなく安全に処理を進められます。また、FilesAuditが対応するファイル形式は200種類以上に及び、画像、動画、音声、文書、CAD、ソースコード、アーカイブに至るまで横断的にサポートしているため、ZIPファイルの中に多様な形式のファイルが混在している場合