PDF 電子署名 (Digita Signature)
PDF構文 (PDF Syntax ISO 32000-2)
PDF1.7は、ISO技術委員会によって2008年1月に“ISO 32000-1規格”として承認されました。2017年7月にはPDF2.0の規格ISO3200-2が承認され、2020年12月にはそれが第二稿に更新されました。
ここでは32000-2規格に基づいたPDF1.7の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明し、PDF-ToolsでのPDFデータ解析や編集をより詳細にできるようにします。
ここでは32000-2規格に基づいたPDF1.7の構文(構造)について説明しています。
PDFファイルは8-bitデータを単位として構成されていて一般の文書編集アプリケーションで開くことができその内容を読取ることができます。ただし、バイナリのデータもそのまま(表示可能な文字に変換されずに)格納されていますので文字化けしているように表示されますが、これはPDFの仕様です。
ここではそのデータの一部を読み解くことでPDF文書へのデータ追加などPDF再構成の意味を説明し、PDF-ToolsでのPDFデータ解析や編集をより詳細にできるようにします。
15.0 電子署名(Digital Signature)機能
PDFへの電子署名は署名者に関連する検証情報を使って文書内容の整合性を検証するために使えます。
検証の際に使われる特定の認証形式は署名ハンドラという特別なソフトウェアモジュールによって実装されます。
通常は事前に定義された署名ハンドラを使用します。
PDFの電子署名は以下をサポートします。
PDF2.0を処理するソフトウェアの電子署名機能はCryptographic Message Syntax(CMS;RFC5652)とCMS Advanced Electronic Signatures (CAdES;ETSI EN 319 122)をサポートしなければなりません。
署名情報は署名辞書に格納されます。
署名は適切な署名ハンドラ(追加する署名タイプと一致したもの)を使用しなければなりません。 署名ハンドラは文書のデータに対してダイジェスト値(ハッシュ値)を計算しそれを文書に保存します。
署名検証では、署名を作成した署名ハンドラと同じタイプのものが必要です。
署名者の証明書は署名ハンドラによって決定され検証パラメータやその他の条件のいずれかと一致することが検証されます。 検証に失敗した場合、署名は無効と見なされます。
文書のダイジェストは再計算されドキュメントに保存されているダイジェスト値と比較されます。 ふたつのダイジェストに違いがある場合はドキュメントが署名されてから変更が加えられたことを示していて、署名は無効と見なされます。
検証の際に使われる特定の認証形式は署名ハンドラという特別なソフトウェアモジュールによって実装されます。
通常は事前に定義された署名ハンドラを使用します。
PDFの電子署名は以下をサポートします。
- 文書へのデジタル署名の追加
- 文書に追加された署名の有効性の検証
- 電子署名後に検証ができるようにDSS 辞書と検証関連情報(VRI)を追加
- タイムスタンプ後に検証ができるようにドキュメント タイムスタンプ辞書(DTS)を追加
PDF2.0を処理するソフトウェアの電子署名機能はCryptographic Message Syntax(CMS;RFC5652)とCMS Advanced Electronic Signatures (CAdES;ETSI EN 319 122)をサポートしなければなりません。
署名情報は署名辞書に格納されます。
署名は適切な署名ハンドラ(追加する署名タイプと一致したもの)を使用しなければなりません。 署名ハンドラは文書のデータに対してダイジェスト値(ハッシュ値)を計算しそれを文書に保存します。
署名検証では、署名を作成した署名ハンドラと同じタイプのものが必要です。
署名者の証明書は署名ハンドラによって決定され検証パラメータやその他の条件のいずれかと一致することが検証されます。 検証に失敗した場合、署名は無効と見なされます。
文書のダイジェストは再計算されドキュメントに保存されているダイジェスト値と比較されます。 ふたつのダイジェストに違いがある場合はドキュメントが署名されてから変更が加えられたことを示していて、署名は無効と見なされます。
電子署名・タイムスタンプおよび署名検証機能を持ったライブラリ
PDF Structure Security
PDF Structure Security
- 署名されたPDFのサンプル
- 署名後に変更されたPDFのサンプル
電子署名やタイムスタンプされたPDF文書
LTV対応ですので、署名時点での検証が可能な文書です。
DigitalSigned.pdf - 電子署名 TimeStamp.pdf - ドキュメント タイムスタンプ
LTV対応ですので、署名時点での検証が可能な文書です。
DigitalSigned.pdf - 電子署名 TimeStamp.pdf - ドキュメント タイムスタンプ
PDFとしては問題ありませんが、署名後の変更ですので「改ざんされた文書」と判断されるべきものです。
StampAfterSign.pdf - タイムスタンプの後に電子印鑑追加
AddRectangleAfterSign.pdf - タイムスタンプの後に図形追加
AddRectangleAfterSign.pdf - タイムスタンプの後に図形追加