iText メーリング リストで有益な回答を得たので、共有します。
ここでは、mkl というニックネームの男が、アドビ製品の場合、これは卵が先か卵が先かという問題にかかっていると説明しています。
ISO 32000-1:2008、セクション 12.8.1 は次のように述べています。 , 署名辞書を含みますが、署名値自体 (Contents エントリ) は除外します. 他の範囲を使用することもできますが、ドキュメントへのすべての変更をチェックするわけではないため、それらの使用はお勧めしません. バイト範囲ダイジェストが存在する場合、すべてシグネチャ ディクショナリの値は直接オブジェクトでなければなりません。」
したがって、この規範によれば、より多くの区分的なバイト範囲が許容されます。したがって、署名するバイトから複数の署名コンテナーを除外することは特に許容されます。
しかし...
アドビ製品にすぐに署名を受け入れてもらいたい場合、署名がそのリビジョン自体以外のすべてに署名することを期待していることがわかります。2 つの署名の場合、これは、各署名が互いを含む範囲に署名する必要があることを意味し、鶏が先か卵が先かの問題です。
署名が所有するソフトウェアでのみ検証可能である必要があり、アドビ製品が署名を無効としてマークする可能性がある場合、そのような独立した二重署名を非常に簡単に作成できます。参照。
http://old.nabble.com/Uncommon-ByteRange-entry-in-signature-dictionary-to23670277.html
いくつかのインスピレーションのために。iText を変更して、あまり問題なくそれを行うことができます。しかし、そこにあるレナードの言葉を心に留めておいてください。
「Adobe Acrobat と Reader は、2 組を超える ByteRange を即座に無効にします。そのため、複数の範囲を持つものはすべて検証されません。」
3 番目の方法として、カスタム署名を検証するカスタム Adobe プラグインを構築できます。
後付けで 1 つだけ...署名ビジネスに真剣に取り組みたい場合は、現在の単純な PDF 標準 (つまり、ISO-32000-1:2008) だけでなく、追加の標準も念頭に置く必要があります。
たとえば、ETSI TS 102 778-1 を付与します。v1.1.1 のセクション 4.1 は次のように述べています。署名ディクショナリを含むが、PDF 署名自体を除くファイル全体です. 範囲は、署名ディクショナリの ByteRange エントリによって示されます.
このように ByteRange エントリを制限することにより、PDF 署名自体以外に、ダイジェストでカバーされないバイトが PDF に含まれないようにします。
注: パート 2 および 3 で定義されたプロファイルは、ISO 32000-1 [1]、条項 12.8.1 で推奨されているこの要件を規範的なものにします。」
したがって、署名に真剣に取り組むとすぐに、署名されたバイト範囲は、このバイト範囲に署名する 1 つの署名コンテナー以外のすべてのリビジョンをカバーする必要があります。
(2009 年 12 月 1 日の iText メーリング リストより)