証明書を使用してフォームに電子的に署名できるようにすることにより、フォームの整合性を保護できます。フォームに署名すると、署名を無効にしない限りフォームの署名された部分は変更できなくなります。電子署名によって、必要な電子署名機能を備えたサードパーティ製署名ハンドラーが起動されます。
署名を検証すれば、データの送信後に誰もデータを改ざんしていないことが保証されます。あるユーザーがフォームに署名すると、署名されるデータのメッセージ要約が作成され、数学計算によってそのユーザーの秘密鍵と指定されたフォームデータが結合され、それらが一緒に暗号化されます。それによって出力されるのが電子署名です。この電子署名には、署名されたデータと、フォームに署名した人に関連付けられた証明書情報が含まれています。
署名が検証されると、署名者の公開鍵を使用して、署名されたデータが復号化され、要約値が取得されます。署名処理と同じアルゴリズムを使用して、受信したドキュメントに関する新しい要約値が計算されます。2 つの要約値が一致しない場合は、フォームの署名後にデータが改ざんされており、検証に失敗したことを意味します。
電子署名では、証明書も署名データに連結されます。署名に含まれる証明書が信頼できるものであることを証明すると、データに署名した人が本人であることが確認できます。
署名者がフォームに署名するには、適切な証明書発行者からの電子署名が必要です。Adobe の署名では、RSA MD5、RSA SHA-1 または DSA SHA-1 ハッシュアルゴリズムを使用する PKCS(Public Key Cryptography Standard)#7 がサポートされます。
Designer には、以下の 2 種類の電子署名が含まれています。
ドキュメント署名
ドキュメント署名では、フォームオブジェクトの外観とこれらのオブジェクトに格納される値が保護されます。ドキュメント署名を作成するには、署名フィールドをフォームデザインに追加します。ドキュメント署名をフォーム全体に適用するか、フォーム上のオブジェクトのコレクションに適用するかを指定できます。デフォルトでは、フォーム全体に適用されます。ドキュメント署名をフォームオブジェクトのコレクションに適用する場合、署名者は Acrobat または Adobe Reader 8.0 以降を使用する必要があります。
ドキュメント署名がオブジェクトのコレクションに適用される場合、円や長方形などのスタティックオブジェクトは無視されます。ドキュメント署名は、ボタン、チェックボックス、日付 / 時間フィールド、十進数フィールド、コンボボックス、画像フィールド、リストボックス、数値フィールド、Paper Forms Barcode、パスワードフィールド、ラジオボタン、その他の署名フィールドおよびテキストフィールドにのみ適用されます。
フォームに署名するには、署名フィールドをクリックします。ドキュメントがフォームオブジェクトのコレクションに適用される場合、署名で指定されたオブジェクトはロックされ、読み取り専用に設定されます。オブジェクトをロックすると、ドキュメントの署名後にオブジェクトの値が受信者によって変更されるのを防ぐことができます。
データ署名
データ署名では、フォームデータが保護され、送信時にデータの整合性が確保されます。データ署名を作成するには、送信ボタン、電子メール送信ボタンまたは HTTP 送信ボタンを追加して、オブジェクトパレットの「送信時に署名」オプションを選択します。データに署名するには、署名者が Acrobat または Adobe Reader 8.0 以降を使用する必要があります。
データ署名は、フォームデータのみに適用される場合と、注釈、ドキュメント署名、PDF ドキュメントなどの添付データを含む送信データ全体に適用される場合があります。
ユーザーがフォームデータに署名するには、送信ボタンをクリックします。ユーザーは、このボタンをクリックするときに、署名入り証明書を指定して、フォームデータを送信する前に電子署名が適用されるようにする必要があります。
署名フィールドを追加するには
Designer には署名フィールドが組み込まれており、フォームに追加して、入力したデータにユーザーが署名できるようにすることができます。デフォルトでは、署名はフォーム上のすべてのオブジェクトに適用されます。署名をフォーム上のオブジェクトのコレクションに適用するには、コレクションを作成してから、オブジェクトパレットの「署名」タブでそのコレクションを指定する必要があります。詳しくは、署名フィールドの使用を参照してください。
署名がオブジェクトのコレクションに適用される場合は、ドキュメントに署名すると、コレクション内のフィールドもロックされます。複数の署名フィールドをフォームの複数の部分にわたって追加した場合、最初の署名フィールドが署名された時点で最初のオブジェクトコレクションがロックされ、その後は残りのフィールド以外には入力できなくなります。オブジェクトコレクションについて詳しくは、フォームオブジェクトコレクションの使用を参照してください。
署名がオブジェクトのコレクションに適用されると、オブジェクトに格納されている値が保護されます。また、署名によってコレクション内のオブジェクトの外観も保護されるので、フォームを開いたときに、元の外観が保たれるようになります。オブジェクトの外観を保護できるかどうかは、フォームのプロパティダイアログボックスの「デフォルト」タブにある「保存時にスクリプティングの変更をフォームに保持」オプションによって決まります。このオプションがデフォルトの「自動」に設定されている場合、オブジェクトの外観は自動的に保護されます。このオプションが「手動」に設定されている場合は、オブジェクトの外観を保つためのスクリプトを作成する必要があります。
署名フィールドは、繰り返し可能に設定したり、繰り返し可能なサブフォームオブジェクトに挿入したりしないでください。繰り返し可能な署名フィールドを持つフォームは無効であり、Acrobat に署名フィールドが一切表示されないという問題の原因となります。
署名がオブジェクトのコレクションにわたっている場合は、オブジェクトの数が変化すると署名が無効になるので、コレクション内のオブジェクトを繰り返し可能に設定しないでください。その場合は、繰り返し可能なオブジェクトをコレクションから削除するか、データ署名を代わりに使用することができます。
フォームに署名するには、署名フィールドをクリックします。フォームオブジェクトのコレクションに署名するには、署名者が Acrobat または Adobe Reader 8.0 以降を使用する必要があります。
オブジェクトライブラリパレットで標準カテゴリをクリックし、フォームデザインに署名フィールドをドラッグします。
(オプション)フォーム上のフィールドのコレクションに署名を適用するには、オブジェクトパレットの「署名」タブをクリックして、「署名後にフィールドをロックする」を選択します。
(オプション)コレクションを作成して選択するには、次の操作を行います。
「コレクションの新規作成 / 管理」を選択します。
コレクションリストダイアログボックスで「新規」をクリックします。コレクション名を入力したら、Enter キーを押して、「変更」をクリックします。
コレクションエディターダイアログボックスで、コレクションに含めるオブジェクトを選択し、「OK」をクリックします。
コレクションリストダイアログボックスで「閉じる」をクリックします。
リストからコレクションを選択します。
(オプション)コレクションに含まれているフィールドまたはコレクションに含まれていないフィールドに署名を適用するには、次の操作を行います。
(オプション)署名ハンドラーや証明書失効リストなどのオプションのセキュリティ設定を定義するには、「設定」をクリックします。
パレットを使用して、署名フィールドの外観を整えます。
フォームデザインを保存します。
複数の署名フィールドを追加する際の考慮点
フォームデザインに署名フィールドを配置するとき、「署名後にフィールドをロックする」オプションはデフォルトで選択されています。つまり、フィールドに署名した後、すべてのフォームオブジェクトはロックされます。
複数の署名フィールドをフォームデザインに配置する場合、少なくとも 1 つの署名フィールドに対して「署名後にフィールドをロックする」オプションが選択されていると、そのフォームに署名した後、すべての署名フィールドを含むすべてのフォームオブジェクトがロックされます。
すべての署名フィールドに署名できるようにするには、署名フィールドオブジェクトの 1 つだけを含むフォームオブジェクトのコレクションを作成し、「署名後にフィールドをロックする」オプションが選択されていることを確認します。この署名フィールドに署名した後、コレクションで指定されたすべてのオブジェクトはロックされます。残りの署名フィールドオブジェクトをコレクションの外部に置き、それぞれの「署名後にフィールドをロックする」オプションの選択を解除すると、それらの署名フィールドは署名可能なままになります。
オブジェクトコレクションについて詳しくは、フォームオブジェクトコレクションの使用を参照してください。
ダイナミック PDF フォームで電子署名を使用するには
電子署名をダイナミック PDF フォームに追加する場合、署名された時点のフォーム状態を保持する必要があります。フォーム状態を保持すると、フォームを保存するときに、フォーム内のスクリプトの変更が確実に保持されます。例えば、フォームが署名されたときに一部のフィールドが非表示になっている場合、それらのフィールドはフォームを保存して再度開いても非表示になります。
フォーム状態は自動でも手動でも保持することができます。自動で保持すると、フォームを保存するときに、自動的にスクリプトの変更が保持されます。手動で保持すると、フォームを保存するときに、スクリプティングを使用してスクリプトの変更が保持されます。フォーム状態を手動で保持するには、delta スクリプトオブジェクトと preSave イベントおよび initialize イベントを使用します。
preSave イベントと initialize イベントについて詳しくは、『スクリプティング基礎』の「イベント」を参照してください。
フォームが承認されていない場合は、フォーム状態を自動でも手動でも保持することができます。フォームが承認されている場合は、フォーム状態を手動で保持する必要があります。自動的にスクリプトの変更を保持し、フォーム状態を復元すると、承認済みフォームの電子署名が無効になります。
注意: フォームが承認されている場合は、フォーム状態の特定にスクリプトではなく、データの連結を使用できます。
フォームのプロパティダイアログボックスを使用して、フォーム状態の保持方法を指定します。
フォームのプロパティダイアログボックスを表示するには、ファイル/フォームのプロパティを選択し、「デフォルト」をクリックします。
「保存時にスクリプティングの変更をフォームに保持」を選択します。