PDF 署名チェッカー
PDF の署名フィールドを検査し、署名マーカーを数え、ByteRange 整合性ウィンドウを分析します。
PDF の署名フィールドを検査し、署名マーカーを数え、ByteRange 整合性ウィンドウを分析します。 PDF の署名フィールドを検査し、署名マーカーを数え、ByteRange 整合性ウィンドウを分析します。
PDF の署名フィールドを検査し、署名マーカーを数え、ByteRange 整合性ウィンドウを分析します。
PDF の署名フィールドを検査し、署名マーカーを数え、ByteRange 整合性ウィンドウを分析します。 PDF の署名フィールドを検査し、署名マーカーを数え、ByteRange 整合性ウィンドウを分析します。
PDF のデジタル署名は、ページに描かれた印ではありません(視覚的な署名表示が 存在することもあります)。これは暗号オブジェクトで、署名辞書の /Contents 値に DER エンコードされた PKCS#7 SignedData 構造が入っています。この構造には署名者 の証明書、ダイジェストアルゴリズム、PDF バイトの正確なスライスに対して計算 された署名が含まれます。署名辞書の /ByteRange 配列は、署名がファイルのどの バイト範囲をカバーするかを正確に記述します:通常 [0, a, b, c] は「バイト 0..a-1 と b..b+c-1」を意味します。範囲内のすべてが署名され、範囲外(署名値 自体を含む)は署名されません。この設計により、PDF は最終的な長さを事前に 知らなくても署名できます。
署名を検証するには、チェッカーが署名範囲のバイトをハッシュし、PKCS#7 構造に 埋め込まれたダイジェストと比較します。署名後に誰かが PDF を編集すると、対象 バイトが変わり、再計算ハッシュが乖離し、検証が失敗します--これが改ざんの シグナルです。したがって /ByteRange は整合性ウィンドウを定義します:署名は カバーするバイトしか保護できません。範囲が文書全体をカバーしない署名は、 残りのファイルを検出されない改変にさらします。このチェッカーは、範囲が 存在するか、バイト 0 から始まりヘッド+テールをカバーするか(あらゆる署名 ツールが生成する形)を報告します。
同梱の pdf-lib ライブラリ(Apache-2.0)で PDF を解析し、以下を報告します: ページ数、AcroForm で見つかった署名フィールド数、生バイトストリームの /FT /Sig マーカー数、/ByteRange 配列の有無、その範囲が標準形 [0, head, tailStart, tailLen] かどうか。マーカーがゼロの PDF には署名がまったく ありません。マーカーはあるが範囲を解析できない PDF は異常で、注意深く 見る価値があります。完全な暗号検証(ハッシュ再計算と証明書チェーン検証) には署名者の完全なチェーンとトラストストアが必要です。このページは、署名が 存在するか、整合性ウィンドウが無傷かを明らかにする構造分析に焦点を当てます。
署名マーカーが複数ある場合は、複数署名か、インクリメンタル更新で再署名された 文書を意味することが多いです。暗号化された PDF は署名辞書をパーサーから隠す ことがあり、構造を報告するため ignoreEncryption モードを使用しています。 覚えておいてください:このツールは構造を検査し、身元は検査しません。署名者が 自称する人物かどうかは分かりません--それには信頼ルートに対する証明書の検証が 必要です。受け取った文書の一次トリアージとして使い、重要なものはプラットフォーム の完全な署名検証でフォローアップしてください。分析は完全にブラウザ内で行われ、 PDF がアップロードされることはありません。