3

簡単に言うと、PDFに(iTextを使用して)複数の署名を追加し、それぞれに新しいリビジョンを追加する必要はありません。

私は次のスレッドを読みました、そしてそれは非常に理にかなっています(ブルーノが答えを書いたので)

ドキュメントに2つのリビジョンがある場合、最初の署名が2番目のリビジョンをカバーしていないことは明らかです。ただし、(PDF標準およびiTextに従って)同じリビジョンに対して2つの署名を持つことは可能ですか?(認定レベルをに設定しましたCERTIFIED_FORM_FILLING_AND_ANNOTATIONS)。

重要なのは、ドキュメントは一度作成され、署名を追加することを除いて、まったく変更されないということです。また、署名されたPDFは技術者以外の人に送信されるため、「ドキュメントが変更されました」を見ると、「不信」を引き起こす可能性があります(PDFに関する知識が不足しているため、残念ながら、期待できません)。 。つまり、もう一度言い換えると、1つのリビジョンに2つの署名があり、さまざまな人によってさまざまなタイミングで追加される可能性があります。

4

1 に答える 1

2

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 番目の方法として、カスタム署名を検証するカスタム Adob​​e プラグインを構築できます。


後付けで 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 メーリング リストより)

于 2009-12-03T18:45:36.823 に答える