【ITニュース解説】How to Check a PDF’s Creation & Modification Dates
2026年09月16日に「Dev.to」が公開したITニュース「How to Check a PDF’s Creation & Modification Dates」について初心者にもわかりやすく解説しています。
ITニュース概要
PDFの作成・更新日はファイルプロパティで確認できる。しかし、これらの日付は簡単に書き換え可能で、見た目の日付だけで信頼性を判断できない。正確な改ざん有無の判断には、日付だけでなくPDFの内部構造を分析する「構造チェック」が必要だ。
ITニュース解説
PDFファイルには、その情報を示すための様々なデータが含まれている。その中でも特に重要なのが「作成日」と「更新日」だ。システムエンジニアを目指す皆さんにとって、これらの日付がどのような意味を持ち、どのように扱われるべきかを知ることは、セキュリティやデータ管理の基礎を理解する上で非常に役立つだろう。
まず、PDFファイルの「作成日」と「更新日」とは何かについて説明する。 すべてのPDFファイルには、それがいつ作られたかを示す「CreationDate(作成日)」と、最後にいつ保存されたかを示す「ModDate(更新日)」という、主に2つの日付が記録されている。これらの日付は、ファイルを開いてプロパティを見れば、誰でも簡単に確認できる。例えば、Adobe Acrobat Readerでファイルを開き、「ファイル」メニューから「プロパティ」を選択すると、「説明」タブの中に「作成日」と「更新日」が表示される。Windowsであればファイルを右クリックして「プロパティ」を選び、「全般」タブを見ることで、またmacOSではファイルを右クリックして「情報を見る」を選び、「一般情報」の項目で確認できる。ただし、macOSの場合、ファイルシステム(OSが管理するファイルのタイムスタンプ)の日付が表示されることもあり、PDFファイル内部の正確な日付とは異なる場合もあるため、注意が必要だ。より正確な情報を知るためには、オンラインのメタデータビューアなど、ファイル内部の情報を直接読み取るツールを使うと良いだろう。
これらの日付は、ファイルそのものの内部にある「メタデータ」と呼ばれる情報の一部として記録されている。メタデータとは、「データに関するデータ」という意味で、PDFファイルの内容(テキストや画像など)を説明するための情報のことだ。具体的には、PDFファイルの末尾にある「Info dictionary」という小さな情報ブロックに「CreationDate」と「ModDate」というフィールドとして存在している。また、Adobe製品などのツールによって作成されたPDFファイルでは、「XMPパケット」と呼ばれる、XML形式の別のメタデータ層にもこれらの日付が複製されて記録されることがある。これらの日付情報は、パソコンのファイルシステムに記録される日付とは異なり、ファイル自体に組み込まれているため、PDFファイルをメールで送ったり、別のフォルダにコピーしたりしても、ファイルと一緒に移動する特徴がある。
「CreationDate」は、文字通りPDFファイルが最初に生成された瞬間、つまりPDFのバイトデータが書き込まれた時点を記録している。これは、PDFの内容が作られた時(例えば、スキャンされた元の紙の文書が作られた時)とは必ずしも同じではない。一方、「ModDate」は、ファイルが最後に保存された時点を記録している。PDFのテキストを編集したり、デジタル署名を追加したり、フォームの入力フィールドを埋めたり、ファイルを圧縮したり形式変換したりするような、ファイルを変更して保存するあらゆる操作で、この「ModDate」は更新される。もし、一度作成されたきり、まったく変更されていないPDFファイルであれば、これら2つの日付はほぼ同じか、ごくわずかな差しかないはずだ。
さて、ここが非常に重要なポイントになるのだが、これらの日付は実は簡単に「書き換え可能」なのだ。 CreationDateやModDateは、単なる「プレーンテキスト」、つまり飾り気のない普通の文字データとして保存されている。そのため、特別に暗号化されていたり、ハッシュ値(データの改ざんを検知する仕組み)やデジタル署名(作成者の真正性や改ざんがないことを証明する仕組み)のような、改ざん防止の仕組みは何も施されていない。どんなPDFエディタや、コマンドラインのメタデータ編集ツール、さらには通常のテキストエディタを使っても、これらの日付フィールドは好きな値に書き換えられてしまう。そして、日付が変更されたファイルは、何の警告も表示されずに正常に開くことができる。
この事実が意味するのは、PDFファイルに表示されている作成日や更新日は「事実」ではなく「主張」である、ということだ。 例えば、「作成日」と「更新日」が異なる場合、それはファイルが作成後に何らかの変更を受けて保存されたという、ある種の「正直な報告」と捉えられる。ファイルへの実際の保存操作があれば、必ずModDateは更新されるからだ。しかし、その具体的な日付の値そのものは、最後にファイルに触れたソフトウェアや、その操作を行った人が「自己申告」しているに過ぎない。もし誰かが悪意を持って日付を偽装しようとすれば、簡単に偽りの値を書き込むことができてしまう。
このため、日付の「不一致」があったとしても、それが必ずしも改ざんの証拠にはならないし、逆に日付が「一致」していたとしても、それがファイルが未編集である証拠にはならない。 例えば、不自然な日付(PDF形式が存在するよりもはるか昔の日付や、未来の日付、あるいは今日作成された古い文書の「作成日」が今日になっているなど)が見つかっても、それが不正の確実な証明とは限らない。単なるソフトウェアのバグや時計のずれである可能性もゼロではないからだ。また、完璧に日付が一致しているファイルであっても、偽造者が意図的に両方のフィールドを同じ値に設定して、変更を隠している可能性も十分にあり得る。 これらの日付フィールドを読み取るだけでは、ファイルの信頼性を完全に判断することはできないのだ。
では、どうすればPDFの信頼性を判断できるのか。ここで必要になるのが「構造的なチェック」という考え方だ。 単に日付フィールドを「チェック」する(読み取る)だけでなく、ファイル全体の構造が、その日付が語るストーリーと矛盾しないかを「検証」する必要がある。例えば、記事で言及されている「HTPBE」のような高度な分析アルゴリズムは、単に2つの日付を比較するだけではない。 「Info dictionary」と「XMPパケット」という、異なる2つのメタデータ層に記録されている日付が食い違っていないかを相互にチェックしたり、そもそもPDF形式が存在するよりも前の日付や、遠い未来の日付など、物理的にありえない日付が記録されていないかを検出したりする。さらに、ファイルが実際に何回保存されたかという「保存履歴」や、どのソフトウェアによって作成されたかという「作成元情報」、ファイルの内部構造である「クロスリファレンス構造」なども総合的に評価する。 これらの情報は、メタデータの日付だけを改ざんしても簡単には変更できない、ファイルの「骨格」のような情報であり、偽造者がすべてを整合性のある形に書き換えることは非常に難しい。日付の偽装は可能でも、ファイル全体の整合性を完璧に保つことは、専門家でない限りほぼ不可能だからだ。
もちろん、CreationDateとModDateに違いがあるからといって、必ずしもファイルが改ざんされたわけではない、自然なケースも存在する。 例えば、PDF文書を開いて署名を追加し、そのまま保存した場合、署名操作自体が保存を伴うためModDateが更新されるが、CreationDateとの差はごくわずかで、これは正常な動作だ。また、長期保存に適したPDF/A形式にファイルを変換する場合も、内容が変わらなくてもファイルの内部構造が書き換えられるため、ModDateが更新される。これも正当な理由による更新だ。他にも、バッチ処理やスケジュールされたレポート生成システムでは、テンプレートが作成された時にCreationDateが設定され、実際のレポートが生成・保存された時にModDateが設定されるため、両者の間に時間差が生じることもよくある。 これらの「正当な理由」による日付の不一致は、ファイルに実際に「書き込み」操作が行われたことを示すものであり、その事実は消えない。その書き込みがあなたのワークフローにとって許容されるものかどうかは、人間が判断すべきことだ。
システムエンジニアを目指す皆さんにとって重要なのは、PDFの日付は「参考情報」であって「絶対的な証拠」ではないという認識を持つことだ。 単なる目視での確認は、大まかな傾向を掴むのには役立つが、重要な意思決定の基盤とするには不十分である。特に、ローン申請や契約書、請求書など、信頼性が極めて重要となる文書においては、日付フィールドだけでなく、ファイル全体の構造的な整合性を専門のツールやアルゴリズムで確認することが不可欠となる。もし、大量のPDFファイルを自動的に処理し、その信頼性を評価するシステムを構築するような場合には、HTPBE APIのような、構造的なチェックを提供するツールを組み込むことが検討されるだろう。これらのツールは、ファイルレベルの分析結果を提供し、最終的な判断は人間が行うべきであるという注意喚起も行ってくれる。
最後に、PDFの日付に関するよくある疑問をいくつかまとめる。 PDFの作成日は後から変更できるか? → はい、簡単にできる。だから日付だけでは証拠にならない。 PDFを印刷したり、別の形式に変換したりすると日付は変わるか? → 物理プリンタへの印刷では変わらないが、PDFへの変換やファイル形式の変換では通常ModDateが更新される。 未来の日付が表示されるのはなぜか? → 短時間であればPCの時計のずれの可能性が高いが、大幅な未来の日付は不自然である。 日付が一致していれば、PDFは編集されていないと証明されるか? → いいえ、証明されない。偽造者が意図的に一致させることも可能であり、未編集と矛盾しないというだけで、未編集の証明にはならない。 PDFの実際の保存回数を知りたい場合は? → 日付フィールドからはわからない。ファイルの「改訂履歴(revision chain)」という別の情報を確認する必要がある。
これらの知識は、PDFという日常的に使われるファイル形式の背後にある技術的な側面を理解し、その信頼性やセキュリティについて深く考えるための第一歩となるだろう。