Security object offset
Security object offsetとは、PDF ファイル内でセキュリティ関連オブジェクトが始まるバイト位置を指し、暗号化とアクセス制御機構に不可欠な要素です。
Security object offsetとは、PDF ファイル内でセキュリティ関連オブジェクトが始まるバイト位置を指し、暗号化とアクセス制御機構に不可欠な要素です。 ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で定義されているPDF構造において、オブジェクトオフセットはクロスリファレンステーブルに記録され、ファイル内の任意のオブジェクトへのランダムアクセスを可能にします。セキュリティオブジェクトに関しては、正確なオフセット追跡により、PDF処理中に保護されたコンテンツの適切な復号化と検証が保証されます。
Security object offsetとは、暗号化辞書、権限設定、デジタル署名辞書などのセキュリティ機能に関連するオブジェクトが格納されている、PDFファイル内の正確なバイト位置です。任意のPDFオブジェクトを単に指す一般的なオブジェクトオフセットとは異なり、security object offsetは文書保護、ユーザー権限、暗号化操作を制御するオブジェクトを特定して参照します。これらのオフセットは、 ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で定義されているPDFファイル構造の重要な構成要素であり、クロスリファレンステーブル(xrefテーブル)またはクロスリファレンスストリームに記録されます。これらはすべてのオブジェクトをバイト位置で特定するためのファイルのインデックスとして機能します。
Security object offsetは、暗号化オフセットやtrailerオフセットとは異なり、文書trailerの暗号化設定ではなく、特定のセキュリティ辞書オブジェクトを指します。PDFが暗号化されている場合、複数のセキュリティ関連オブジェクトがファイル全体に存在する可能性があり、それぞれに固有のオフセットがあり、適切な文書アクセスと復号化のために正確に維持される必要があります。
PDFセキュリティに取り組む開発者にとって、security object offsetの理解はいくつかの実用的な理由から重要です。第一に、暗号化または復号化ルーチンを実装する際、コードはセキュリティ辞書を正しく特定して読み取り、暗号化パラメータ、権限フラグ、認証要件を決定する必要があります。オフセット計算が不正確だと、復号化の失敗やセキュリティのバイパスを引き起こす可能性があります。
第二に、PDF文書を変更または更新する際、特にインクリメンタル更新時には、正確なsecurity object offsetを維持することで、既存のセキュリティ機能が機能し続けることが保証されます。PDFを書き込みまたは操作するソフトウェアは、オブジェクトが追加、変更、または削除されるたびに、正しいオフセット値でクロスリファレンステーブルを更新する必要があります。
第三に、文書検証とセキュリティ監査ツールにとって、security object offsetの検証は改ざんや破損の検出に役立ちます。オフセットが実際のオブジェクト位置と一致しない場合、セキュリティを損なう可能性のあるファイル操作や構造上の損傷を示している可能性があります。
PDFファイルは、ファイル全体を解析することなくオブジェクトへのランダムアクセスを可能にするために、クロスリファレンス機構を使用します。 ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で指定されているように、各PDFオブジェクトにはオブジェクト番号と世代番号が割り当てられ、クロスリファレンステーブルはファイルの先頭から各オブジェクトのバイトオフセットを保持します。
PDFリーダーがセキュリティで保護された文書に遭遇すると、次のプロセスに従います:
- trailerディクショナリを特定 - ファイル末尾にあり、Encryptディクショナリへの参照を含む
- Encryptエントリを読み取る - 暗号化ディクショナリのオブジェクト番号を見つける
- クロスリファレンステーブルを参照 - そのセキュリティオブジェクトのバイトオフセットを取得
- 指定されたオフセットにシーク - 暗号化パラメータを含むセキュリティオブジェクトを読み取る
- セキュリティ情報を使用 - コンテンツストリームを復号化し、ユーザー権限を検証
インクリメンタル更新では、新しいセキュリティオブジェクトが新しいオフセットで追加される一方、クロスリファレンステーブルは書き換えられずに拡張されます。つまり、改訂履歴を持つ文書には複数のsecurity object offsetが存在する可能性があります。開発者は、従来のxrefテーブルと圧縮されたxrefストリーム(PDF 1.5で導入)の両方を処理する必要があります。どちらの方法もオブジェクトオフセットを格納しますが、異なる形式を使用するためです。
PDFセキュリティ処理を実装する際、開発者は通常、順次解析ではなく、security object offsetに直接シークするためにバイトレベルのファイルアクセスを使用するため、オフセットの正確性はパフォーマンスと正確性にとって重要です。
- Cross-reference table(クロスリファレンステーブル) - オブジェクト番号をPDFファイル内のバイトオフセットにマッピングするインデックス構造
- Encryption dictionary(暗号化ディクショナリ) - アルゴリズム仕様、鍵長、権限フラグを含むセキュリティオブジェクト
- Incremental update(インクリメンタル更新) - ファイル全体を書き換えるのではなく、変更と新しいクロスリファレンスセクションを追加してPDFを変更する方法
- Object stream(オブジェクトストリーム) - 複数のPDFオブジェクトを圧縮したコンテナで、オフセットの計算と格納方法に影響する
- Trailer dictionary(trailerディクショナリ) - クロスリファレンステーブルとルートセキュリティ設定を参照するPDFの終了構造
- (N.A.) (2020)
- (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html
