(57)【特許請求の範囲】
【請求項１】
ページレイアウトを許可するポリシーが付与され、コンテンツに対してディジタル署名された電子文書を編集する電子文書制御装置であって、
前記電子文書の編集において、ディジタル署名された前記コンテンツが改ざんされていないことを検証する第１の検証手段と、
前記電子文書の編集において新たに生成された新規ページの参照先がディジタル署名された署名領域であることを検証する第２の検証手段と、
前記電子文書にページレイアウトを許可するポリシーが付与されている場合に、前記電子文書の編集において新たに生成された新規ページの参照先がディジタル署名された前記コンテンツ以外を含まないことを検証する第３の検証手段と、
前記第１の検証手段、前記第２の検証手段、及び前記第３の検証手段を用いて、前記電子文書への編集が許可されたものか否かを判定する判定手段と、
を有することを特徴とする電子文書制御装置。
【請求項２】
前記判定手段による判定の結果、前記電子文書への編集が許可されたものであると判定された場合に、当該編集された電子文書を保存する保存手段をさらに有し、
前記判定手段による判定の結果、前記電子文書への編集が許可されたものでないと判定された場合に、前記保存手段は、当該編集された電子文書を保存しないことを特徴とする請求項１に記載の電子文書制御装置。
【請求項３】
前記電子文書には、ページレイアウトに加えてコンテンツの背景描画を許可するポリシーが付与され、
前記第３の検証手段は、前記電子文書の編集において新たに生成された新規ページの参照先が前記コンテンツ及び前記コンテンツの背景オブジェクト以外を含まないことを検証することを特徴とする請求項１又は２に記載の電子文書制御装置。
【請求項４】
前記背景オブジェクトは、少なくとも文字列とイメージの一方を含むことを特徴とする請求項３に記載の電子文書制御装置。
【請求項５】
前記ページレイアウトは、少なくとも面付けとページ割付けと前記コンテンツの配置のいずれかであることを特徴とする請求項１乃至４のいずれか１項に記載の電子文書制御装置。
【請求項６】
ページレイアウトを許可するポリシーが付与され、コンテンツに対してディジタル署名された電子文書を編集する電子文書制御装置において実行される電子文書制御方法であって、
前記電子文書制御装置の第１の検証手段が、前記電子文書の編集において、ディジタル署名された前記コンテンツが改ざんされていないことを検証する第１の検証工程と、
前記電子文書制御装置の第２の検証手段が、前記電子文書の編集において新たに生成された新規ページの参照先がディジタル署名された署名領域であることを検証する第２の検証工程と、
前記電子文書制御装置の第３の検証手段が、前記電子文書にページレイアウトを許可するポリシーが付与されている場合に、前記電子文書の編集において新たに生成された新規ページの参照先がディジタル署名された前記コンテンツ以外を含まないことを検証する第３の検証工程と、
前記電子文書制御装置の判定手段が、前記第１の検証工程、前記第２の検証工程、及び前記第３の検証工程を用いて、前記電子文書への編集が許可されたものか否かを判定する判定工程と、
を有することを特徴とする電子文書制御方法。
【請求項７】
請求項６に記載の電子文書制御方法をコンピュータで実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、作成者により作成された電子文書を編集する電子文書制御装置に関する。
【背景技術】
【０００２】
従来、作成者により作成された電子文書（原本）に対して、他の利用者が、その電子文書を編集するような作業が広く行われている。例えば、他の利用者は、原本となる電子文書に対して、「４ｉｎ１」等のレイアウトに変更するような編集を行う。そのような編集は、作成者が電子文書（即ち、原本）に付与したアクセス権限等のセキュリティ・ポリシーに従って行われ、その結果、不特定多数の利用者からの不正なアクセスを防ぎ、電子文書の原本性を保証することができる。
【０００３】
電子文書のデータの原本性を保証しつつ、その電子文書のデータを変更するために、様々な技術が開発されている。特許文献１には、原データを変更する際に、その変更に関する変更情報を保持する保持手段と、変更情報が原本であることを保証するための変更保証情報を作成する変更保証情報作成手段とを備える情報処理装置が記載されている。その情報処理装置によると、原データの変更が正当なものであるか否かを判断し、正当なものである場合には変更情報により原データを変更することができると記載されている。
【０００４】
従来、利用者は、電子文書のコンテンツ情報を変更せずに、レイアウト編集のみを行いたい場合においても、作成者が、そのレイアウト編集された電子文書を目視で内容を確認し、ディジタル署名等によって承認する必要があった。
【０００５】
一般的に、複数の作成者が存在することを考慮し、セキュリティ・ポリシー等を管理するサーバを設置し、複数のクライアント端末と接続された電子文書制御システムとして構築する場合が多い。また、利用者が増え、そのようなシステムの規模が大きくなると、ネットワークの形態も多様化し、利用者と作成者とが直接、通信できるような環境にあるとは必ずしもいえない。しかしながら、そのような必要性は、作成者と利用者とが通信可能な環境であるということが前提とされており、電子文書制御システムによっては、必ずしも実現できるとは限らない。従って、利用者が、作成者により作成された電子文書を編集する際には、編集内容についての作成者の承認を得ることを考慮した環境を構築する必要があった。
【特許文献１】特開２００４−１８０２７８号公報（段落００１９）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで、上記の点に鑑み、本発明は、利用者が電子文書を編集する際の利便性を向上することができる電子文書制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る電子文書制御装置は、ページレイアウトを許可するポリシーが付与され、コンテンツに対してディジタル署名された電子文書を編集する電子文書制御装置であって、前記電子文書の編集において、ディジタル署名された前記コンテンツが改ざんされていないことを検証する第１の検証手段と、前記電子文書の編集において新たに生成された新規ページの参照先がディジタル署名された署名領域であることを検証する第２の検証手段と、前記電子文書にページレイアウトを許可するポリシーが付与されている場合に、前記電子文書の編集において新たに生成された新規ページの参照先がディジタル署名された前記コンテンツ以外を含まないことを検証する第３の検証手段と、前記第１の検証手段、前記第２の検証手段、及び前記第３の検証手段を用いて、前記電子文書への編集が許可されたものか否かを判定する判定手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、利用者が電子文書を編集する際の利便性を向上することができる。
【発明を実施するための最良の形態】
【０００９】
以下に、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
＜全体概略＞
図１は、本発明に係る実施形態における電子文書制御装置を含む電子文書制御システムの処理の手順の概要を示すフローチャートである。図１に示すフローチャートは、図３に示すような電子文書の作成者が用いる端末装置と、利用者が用いる端末装置と、電子文書に付与するポリシーを制御するポリシーサーバとを含む電子文書制御システムにおいて実行される。図３については、後述する。
【００１０】
まず、ステップＳ１０１において、作成者は、自身の端末装置において、ポリシーサーバと通信しながら、電子文書に対してレイアウト制御（背景描画制御を含む）のポリシーを付与する。電子文書は、例えば、ＰＤＦ（Portable Document Format）ファイルである。ステップＳ１０２において、作成者は、端末装置において、保護したいコンテンツ情報のみに対してディジタル署名（以下、署名という）を行う。以下、そのような署名処理を部分署名という。
【００１１】
次に、ステップＳ１０３において、利用者は、端末装置において、作成者によって作成され、部分署名された電子文書を編集する。本実施形態においては、作成された電子文書に対して、「２ｉｎ１」等のページ割付けを含むページレイアウトを行う。また、本実施形態におけるページレイアウト（レイアウト編集）とは、ページ割付けの他、面付けや、作成者の作成したＰＤＦデータにおけるコンテンツのレイアウト配置も含む。
【００１２】
ステップＳ１０４以降において、コンテンツ情報が改ざんされることなく、レイアウトの変更のみが行われたか否かの検証を行い、その結果、電子文書が改ざんされたか、又は、改ざんされなかったかを判定する。まず、ステップＳ１０５において、部分署名されたコンテンツ情報に対して検証を行う（部分検証）。その段階で、改ざんされなかったと判定された場合には、ステップＳ１０６に進む。一方、改ざんされたと判定された場合には、その結果をもって本処理を終了する。
【００１３】
次に、ステップＳ１０６において、レイアウト編集部分において参照しているコンテンツ情報が、部分署名領域の情報と一致しているか否かを検証する。ここで、一致していると判定された場合には、コンテンツ情報に改ざんはなく、レイアウト編集のみが行われたと判定し、その結果をもって本処理を終了する。一方、一致していないと判定された場合には、改ざんされたと判定し、その結果をもって本処理を終了する。
【００１４】
以上の処理において、ＰＤＦファイルを電子文書として説明しているが、階層化されたデータ構造を有し、参照情報によって各構造要素が結合されている電子文書であれば、他の文書形式であっても良い。例えば、ＸＰＳ（XML Paper Specification）や、ＳＶＧ(Scaleable Vector Graphic)等の構造化電子文書を用いても良い。
＜全体フロー＞
以下、図２を参照しながら、図１のフローチャートをより詳細に説明する。図２は、本実施形態における電子文書制御システムの処理の手順をより詳細に示すフローチャートである。
【００１５】
まず、ステップＳ２０１において、作成者は、自身の端末装置において電子文書を生成する。その生成された電子文書が、電子文書制御システムにおける原本となる。ステップＳ２０２において、作成者の端末装置は、ポリシーサーバ等と通信を行い、電子文書に対してレイアウト制御のポリシーを付与する。ステップＳ２０３において、作成者は、端末装置においてコンテンツ情報のみに対して部分署名を行う。
【００１６】
次に、ステップＳ２０４において、利用者は、作成者により作成された電子文書を取得し、自身の端末装置において電子文書編集アプリケーション等を用いて、部分署名された電子文書に対してページレイアウト編集を開始する。以降の処理は、利用者の端末装置において行われ。また、各ステップの処理は、端末装置のＣＰＵが周辺ブロックを制御することによって実行される。
【００１７】
まず、ステップＳ２０５において、電子文書の総ページ数が取得される。ステップＳ２０６において、最終的にどのようなレイアウトにするかが決定される。例えば、「Ｎｉｎ１」の一般的な割付けレイアウトにするように決定される。この決定は、利用者によって行われても良いし、予め定められていても良い。また、ページ毎に異なる複雑なレイアウト処理が行われても良い。
【００１８】
ステップＳ２０７において、レイアウト編集された最終的な新規ページ数を決定する。本実施形態においては、新規ページ数は、「総ページ数÷Ｎ」によって決定する。例えば、総ページ数が１００ページであり、「Ｎｉｎ１」の「Ｎ」が「４」である場合は、新規に生成されるレイアウトの新規ページ数は、２５ページとなる。
【００１９】
ステップＳ２０８において、ステップＳ２０９における処理が行われていないページの有無を判定する。ここで、まだステップＳ２０９の処理が行われていないページが有ると判定された場合には、ステップＳ２０９に進む。一方、全てのページが処理されたと判定された場合には、ステップＳ２１０に進む。ステップＳ２０９において、各ページが参照しているコンテンツ情報をオブジェクト化する。一般的に、このオブジェクト化は、構造化文書において様々な方法が用いられるが、例えば、電子文書がＰＤＦファイルの場合には、「FormXObject」と呼ばれるコンテナで包むことにより行われる。「FormXObject」でオブジェクト化されたデータ構造の一例は、図１１において示す。
【００２０】
ステップＳ２１０において、レイアウト編集後の新規ページ数分の白紙ページを電子文書の最後尾に挿入したか否かを判定する。ここで、まだ新規ページ数分の白紙ページを電子文書に挿入していないと判定された場合には、ステップＳ２１１において、白紙ページを新規ページ数分、電子文書に挿入する。一方、新規ページ数分の白紙ページを電子文書に挿入したと判定された場合には、ステップＳ２１２に進む。
【００２１】
ステップＳ２１２において、挿入された全ての白紙ページのコンテンツに対して、ステップＳ２１３における処理が行われたか否かを判定する。ここで、まだ処理が行われていないページが有ると判定された場合には、ステップＳ２１３に進む。一方、全ての白紙ページのコンテンツに対して、ステップＳ２１３における処理が行われたと判定された場合には、ステップＳ２１４に進む。ステップＳ２１３において、ページのレイアウト編集が実行される。具体的には、例えば、２ｉｎ１である場合には、挿入された白紙ページのコンテンツに対して、元の１ページと２ページのコンテンツ情報を参照するように、「FormXObject」を配置する。ステップＳ２１４において、元ページのコンテンツ情報を削除することなく、元ページの枠を削除する。例えば、ＰＤＦの場合には、親の辞書であるPages辞書から元ページの参照情報を削除することによって、元ページの枠を削除する。以上のように、電子文書に対してのページレイアウト編集が行われる。
【００２２】
次に、ステップＳ２１５において、レイアウト編集のみが正しく行われたか否か（即ち、レイアウト編集の結果、電子文書のコンテンツ情報が改ざんされなかったか否か）を検証する。ステップＳ２１５における処理の詳細については、後述する。ステップＳ２１６において、ステップＳ２１５の検証の結果、改ざんされたと判定された場合には、ステップＳ２１９に進み、電子文書を保存せずに、改ざんされた旨をポリシーサーバに通知し、本処理を終了する。一方、改ざんされなかったと判定された場合には、ステップＳ２１７に進み、レイアウト編集された電子文書を保存し、改ざんされなかった旨とレイアウト編集内容とをポリシーサーバに通知し、本処理を終了する。
＜レイアウト制御ポリシーを付与してから利用者が電子文書を表示するまでの流れ＞
以下、図３を参照しながら、図２のステップＳ２０２の処理の詳細について説明する。図３に示すように、本実施形態における電子文書制御システムは、電子文書の作成者の端末装置と、作成者により作成された電子文書を編集する利用者の用いる端末装置と、電子文書にポリシーを付与するポリシーサーバとを含む。図３に示すそれぞれの端末装置は、ネットワークを介してポリシーサーバと接続されている。ここで、ポリシーサーバとは、ＰＤＦファイル等の電子文書に対して設定されている権限（アクセス権等のポリシー）を制御（管理）することに用いられる。例えば、ある電子文書に対して、ユーザ単位毎に変更や印刷の可否が設定されているとする。ここで、作成者が、その電子文書に対しての権限をグループ単位毎の変更や印刷の可否に変更したいとする場合に、ポリシーサーバと通信することによって権限の変更を動的に行うことができる。そのような変更は、既に利用者に電子文書が配布された後でも行うことができる。また、それぞれの端末装置は、電子文書に対して編集等の処理を行うように電子文書編集アプリケーションを実装している。
【００２３】
図１４は、図３に示す作成者又は利用者が用いる端末装置、ポリシーサーバに適用される情報処理装置の構成の一例を示す図である。図１４に示すように、この情報処理装置は、ＲＯＭ又は外部メモリに記憶されたプログラム等に基づいて、例えば、図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵを備えている。このＣＰＵは、システムバスに接続されているそれぞれのブロックを総括的に制御する。
【００２４】
また、このＲＯＭ又は外部メモリには、ＣＰＵの制御プログラムであるオペレーティングシステムプログラム（ＯＳ）等が格納されている。また、ＲＯＭ又は外部メモリには、処理に応じた各種データが格納されている。
【００２５】
ＲＡＭは、ＣＰＵの主メモリ又はワークエリア等として機能する。入力インタフェースは、キーボードやポインティングデバイスからのキー入力を制御する。出力インタフェースは、ＣＲＴディスプレイ等の表示を制御する。ディスクコントローラは、ブートプログラム、各種のアプリケーション、ユーザファイル、編集ファイル等を格納する外部メモリとのアクセスを制御する。外部メモリは、ハードディスク（ＨＤ）等が用いられる。ネットワークインタフェースは、ＬＡＮ等のネットワークに接続され、他の装置と通信することができる。
【００２６】
図３は、作成者がレイアウト制御ポリシーを電子文書に付与してから、利用者に電子文書を表示するまでの流れを説明する図である。まず、ステップＳ３０１において、作成者が電子文書を作成した後、電子文書編集アプリケーションによってレイアウト制御のポリシーを付与する旨を設定する。また、その場合に、必要に応じて、背景描画を許可する旨のサブポリシーを設定しても良い。ステップＳ３０２において、作成者は、電子文書編集アプリケーションを用いて、作成者自身のＩＤ及びパスワードによってポリシーを付与するポリシーサーバにログインし、レイアウト制御のポリシーを電子文書に付与する旨を依頼する。ステップＳ３０３において、ポリシーサーバは、依頼を受けた後、暗号キーとポリシー情報を電子文書編集アプリケーションに返信する。
【００２７】
ステップＳ３０４において、電子文書編集アプリケーションは、ポリシー情報によって電子文書に対してポリシーを付与し、暗号キーによって電子文書を暗号化する。その後、電子文書編集アプリケーションは、作成者の証明書を用いて、電子文書に対して後述する部分署名の処理を行う。ステップＳ３０５において、レイアウト制御のポリシーが付与された電子文書は、利用者に配布される。配布は、ネットワークを用いてメールやＷｅｂ等に行われても良いし、ネットワークを用いずにＵＳＢメモリ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の媒体によって行われても良い。
【００２８】
ステップＳ３０６において、レイアウト制御のポリシーが付与された電子文書を取得した利用者は、利用者自身のＩＤ及びパスワードをポリシーサーバに送信する。ステップＳ３０７において、ポリシーサーバは、利用者のＩＤ及びパスワードを受信した後、利用者が作成者の意図する利用者であることを認証する処理を行う。ここで、認証することができた場合には、複合キーとポリシー情報を電子文書編集アプリケーションに返信する。
【００２９】
ステップＳ３０８において、電子文書編集アプリケーションは、復号キーとポリシー情報を元に、暗号化された電子文書を復号化し表示を行う。また、利用者は、ポリシー情報に基づいた操作を行うことができる。
＜コンテンツ情報のみ部分署名を行う方法＞
以下、図４及び図５を参照しながら、図２のステップＳ２０３の処理（部分署名）の詳細について説明する。図４は、作成者が電子文書のコンテンツ情報に部分署名を行う前と後における電子文書の構成を示す図である。また、図５は、作成者が電子文書のコンテンツ情報のみに部分署名を行う処理の手順を示すフローチャートである。
【００３０】
図４に示す電子文書４００は、部分署名の処理がされる前の電子文書の内部構造を示している。以下において、電子文書はＰＤＦとして説明する。図４に示すように、電子文書４００は、ページ辞書とコンテンツ辞書とリソース辞書とを、ページ毎に含んでいる。ページ辞書は、コンテンツ辞書を参照し、コンテンツ辞書は、リソース辞書を参照している。なお、以下、コンテンツ辞書とリソース辞書とをまとめてコンテンツ情報ともいう。また、リソース辞書が、更に他の情報を参照しているのであれば、参照されたその情報もコンテンツ情報に含むものとする。
【００３１】
本実施形態において、全ページのコンテンツ情報についてハッシュ値を算出し、コンテンツの作成者の証明書に含まれる公開鍵と対になる秘密鍵を用いてハッシュ値を暗号化することによって、電子署名情報を生成する。生成された電子署名情報と、証明書と、ハッシュ範囲とは、電子文書４０１（部分署名の処理がされた後）に示すように、署名辞書として電子文書のデータの最後部に挿入される。ここで、ハッシュ範囲は、配列で示され、各ページにおけるコンテンツ辞書とリソース辞書の、電子文書ファイル最上部からのオフセット値とバイト数を示している。署名辞書の例については、図１０において説明する。
【００３２】
図５を参照して部分署名の処理の手順について説明する。まず、ステップＳ５０１において、電子文書の総ページ数を取得する。ステップＳ５０２において、全てのページにおいて、ページ辞書が参照するコンテンツ情報のオフセット値とバイト数を取得したか否かを判定する。ここで、全てのページにおいて取得したと判定された場合には、ステップＳ５０９に進む。一方、全てのページにおいて取得されていないと判定された場合には、ステップＳ５０３に進む。
【００３３】
ステップＳ５０３において、ページ辞書からコンテンツ辞書を参照する。一般的に、電子文書が特に構造化文書の場合には、ページ辞書に相当するページの枠組みと、内容を示すコンテンツ情報とは分離されているので、ページの枠組みが１つ以上のコンテンツ情報を含んでいる。ステップＳ５０４において、参照されたコンテンツ辞書について、電子文書のファイルの先頭からのオフセット値とバイト数とを取得する。取得されたオフセット値とバイト数とは、一時的にメモリ上に格納しておく。
【００３４】
ステップＳ５０５において、ページ辞書からリソース辞書を参照する。ステップＳ５０６において、参照されたリソース辞書について、電子文書のファイルの先頭からのオフセット値とバイト数とを取得する。取得されたオフセット値とバイト数とは、一時的にメモリ上に格納しておく。
【００３５】
ステップＳ５０７において、リソース辞書から更に参照されている情報の有無を判定する。ここで、リソース辞書から更に参照されている情報が有ると判定された場合には、ステップＳ５０８に進む。ステップＳ５０８においては、リソース辞書から更に参照されているイメージやフォント等のリソース情報について電子文書のファイルの先頭からのオフセット値とバイト数とを取得する。取得されたオフセット値とバイト数とは、一時的にメモリ上に格納しておく。ステップＳ５０８の処理の後、ステップＳ５０７に戻る。一方、ステップＳ５０７において、リソース辞書から更に参照されている情報が無いと判定された場合には、ステップＳ５０２に戻る。
【００３６】
ステップＳ５０９において、ステップＳ５０４で一時的にメモリに格納しておいたコンテンツ辞書のオフセット値とバイト値を元にハッシュ値を取得する。取得されたハッシュ値も、一時的にメモリ上に格納しておく。ステップＳ５１０において、ステップＳ５０６で一時的にメモリに格納しておいたリソース辞書のオフセット値とバイト値を元にハッシュ値を取得する。取得されたハッシュ値も、一時的にメモリ上に格納しておく。
【００３７】
ステップＳ５１１において、一時的にメモリに格納されたハッシュ値を電子文書の作成者の秘密鍵によって暗号化し、電子署名情報を生成する。
【００３８】
ステップＳ５１２において、署名辞書を生成し、ステップＳ５１３において、電子署名情報と、電子文書の作成者の公開鍵を含む証明書とを署名辞書に挿入する。ステップ５１４において、一時的にメモリ上に格納されていたオフセット値とバイト数を、署名の対象領域の情報として署名辞書に挿入する。署名の対象領域の情報とは、図４において説明したハッシュ範囲を示す。
【００３９】
以上のように、作成者による電子文書の部分署名の処理が行われる。なお、ステップＳ５１２〜Ｓ５１４に示す処理は、図４に示すように、電子文書の最後尾に挿入していくように行われる。そのような処理は、ＰＤＦファイルの場合には、インクリメンタル・セーブと呼ばれている。
＜利用者によるレイアウト編集＞
ここで、利用者が、レイアウト制御のポリシーを付与され部分署名された電子文書を取得し、レイアウト編集を行った際の電子文書の構造について説明する。図６は、利用者がレイアウト編集を行った際の電子文書の構造について説明する図である。
【００４０】
電子文書６００は、コンテンツ情報に部分署名が行われ、更にレイアウト編集が行われた後の電子文書のデータの内部構造を示している。図６に示すように、レイアウト編集が行われた情報は全て、データ６０１に示すように、電子文書の最後尾にインクリメンタル・セーブされている。本実施形態においては、データ６０１に示すレイアウト編集内容として、まず、電子文書６００のコンテンツ情報を「FormXObject」を用いてラッピングすることが記述されている。これは、図２のステップＳ２０９の処理に対応する。また、その後、新規に白紙ページを挿入し、「FormXObject」を指定位置に縮小して面付け数分、貼り付けることが記述されている。ここで、白紙ページの挿入は、図２のステップＳ２１１に対応し、面付け数分貼り付ける処理は、図２のステップＳ２１３に対応している。また、最後に、ページ辞書の参照情報を削除することが記述されている。これは、図２のステップＳ２１４に対応しており、実際にページ辞書のデータを削除するのではなく、Pages辞書の要素からページ情報を参照する参照情報を削除している。Pages辞書については、図７において説明する。イメージ６０２は、レイアウト編集を行った結果、利用者に表示されるイメージ図である。ここでは、「２ｉｎ１」の面付けを行った場合の新規レイアウトページの表示内容が示されている。
【００４１】
図７は、レイアウト編集前の電子文書（ＰＤＦファイル）のデータ構造の一例を示す図である。また、図８は、レイアウト編集後の電子文書（ＰＤＦファイル）のデータ構造の一例を示す図である。図７に示すデータ７００は、ＰＤＦファイルにおける各ページ辞書を管理する親の辞書であり、Pages辞書と言われる。Pages辞書に、実際に使用される（表示される）ページの情報が記述される。例えば、図７においては、「/Kids」の値として、配列形式でページ辞書の参照が記述されている。
【００４２】
データ７０１は、ページ辞書を示し、既に説明したように、コンテンツ情報とリソース辞書とを参照している。データ７０２は、ページ辞書から参照されるリソース辞書であり、イメージやフォント等のリソース情報をまとめる。また、リソース辞書は、各種のリソース情報を参照している。データ７０３は、ページ辞書から参照されるコンテンツ辞書であり、実際にディスプレイ等に表示される描画内容が記述されている。また、コンテンツ辞書内の情報は、更に、イメージやフォント等の情報を参照している。データ７０４は、イメージやフォント等のリソース辞書から参照される各種辞書である。
【００４３】
図４において説明したコンテンツ情報は、リソース辞書（データ７０２）、コンテンツ辞書（データ７０３）、各種辞書（データ７０４）を含んでいる。また、図７において、太線の黒枠で囲まれた部分が、部分署名の対象領域とされる。
【００４４】
図８は、レイアウト編集後の電子文書（ＰＤＦファイル）のデータ構造の一例を示す図である。図８に示すデータ８００は、レイアウト編集後の電子文書（ＰＤＦファイル）のデータ構造におけるPages辞書である。図８は、図２のステップＳ２１１において挿入された白紙ページにデータ８０１〜８０５が挿入され、データ８００の「/Count」と「/Kids」の値が挿入されたページを参照するように変更される。データ８００に示す「/Kids」の値は、新規に作成されたページ辞書を示している。また、図６において説明したように、レイアウト編集前に存在したページ参照情報（図７のデータ７００の「Kids」の値）は、削除されている。
【００４５】
データ８０１は、レイアウト編集に伴って新規に追加したページ辞書であり、データ８０２で示されるリソース辞書と、データ８０３で示されるコンテンツ辞書を参照している。データ８０２は、更に、コンテンツ情報を「FormXObject」でオブジェクト化したデータ８０４及び８０５を参照している。データ８０３の「Do /Page1 Do /Page2」の記述によって、本レイアウトが、「２ｉｎ１」であることが示されている。
【００４６】
ここで、データ８０４及び８０５は、レイアウト編集前において、コンテンツ情報を「FormXObject」でオブジェクト化した辞書である。また、両者から参照されるコンテンツ辞書及びリソース辞書の実体は、レイアウト編集前の各ページに存在しており、変更されていない。
＜レイアウト編集のみが正しく行われたか否かの検証方法＞
以下、電子文書のレイアウト編集のみが正しく行われて改ざんされなかったかを検証する処理について説明する。
【００４７】
図９は、本実施形態において、レイアウト編集のみが正しく行われたか否かを検証する処理の手順を示すフローチャートである。図９に示す処理は、ステップＳ９０１〜Ｓ９０５に示す部分（第１の検証）と、ステップＳ９０６〜Ｓ９１０に示す部分（第２の検証）と、ステップＳ９１１〜Ｓ９１４に示す部分（第３の検証）との３つの部分に大別される。ステップＳ９０１〜Ｓ９０５に示す部分は、コンテンツ情報に関連する部分について部分検証を行う。また、ステップＳ９０６〜Ｓ９１０に示す部分は、新規ページに作成した「FormXObject」のコンテンツ辞書の参照先が、作成者により部分署名が行われたコンテンツ辞書と一致しているか否かを検証する。また、ステップＳ９１１〜Ｓ９１４に示す部分は、新規ページのコンテンツ辞書が、新規ページに作成した「FormXObject」のみを参照していることと、「FormXObject」以外のいかなるデータも参照してしないことを検証する。図９は、電子文書がＰＤＦファイルの場合について説明しているが、他の構造化文書が用いられる場合に、上記の３つの検証の目的を実現できるように、図９の各処理に対応する処理が実行される。また、その場合に、各処理の３つの区分けが、図９に示すフローチャートに従っていなくとも良い。例えば、第３の検証の一部のステップが第２の検証で示されるステップにおいて行われても良い。
【００４８】
まず、ステップＳ９０１において、電子文書から署名辞書を取得し、ステップＳ９０２において、取得した署名辞書から、署名を行った領域（署名領域）、即ち、オフセット値とバイト数のペアの情報を取得する。ステップＳ９０３において、ステップＳ９０２で取得した署名領域を元にハッシュ値を取得する。ステップＳ９０４において、電子署名情報と、証明書に含まれる公開鍵を取得する。また、取得した公開鍵を用いて、電子署名情報を復号化し、メッセージダイジェストを取得する。メッセージダイジェストとは、電子署名情報に含まれるハッシュ値のことである。ステップＳ９０５において、ステップＳ９０３で取得したハッシュ値と、ステップＳ９０４で取得したメッセージダイジェストとを比較する。ここで、一致すると判定された場合には、ステップＳ９０６に進む。一致しない場合には、改ざんされたと判定し、本処理を終了する。
【００４９】
次に、ステップＳ９０６において、ステップＳ９０７〜Ｓ９１０の処理を全ての新規ページに対して行ったか否かを判定する。ここで、全てのページに対して行ったと判定された場合には、ステップＳ９１１に進む。一方、未処理のページがあると判定された場合には、ステップＳ９０７に進む。
【００５０】
ステップＳ９０７において、ページ辞書内のコンテンツにある「FormXObject」を参照する。この「FormXObject」とは、図８に示すデータ８０４又は８０５を示す。ステップＳ９０８において、「FormXObject」内のストリーム情報内にあるコンテンツを参照する。例えば、図８に示すデータ８０４の「stream」に記述されているコンテンツを参照するということである。ステップＳ９０９において、ステップＳ９０８で参照したコンテンツの電子文書のファイルの先頭からのオフセット値とバイト数を取得する。ステップＳ９１０において、署名辞書から取得された署名領域の情報（即ち、ハッシュ範囲）にステップＳ９０９で取得したオフセット値とバイト数のペアがあるか否かを判定する。ここで、あると判定された場合には、その新規ページにおける「FormXObject」内のコンテンツ参照は、署名で保護されているといえるので、改ざんされていないとみなし、ステップＳ９１１に進む。一方、ないと判定された場合には、署名辞書から取得された署名領域外のコンテンツを参照しているといえるので、改ざんされていると判定し、本処理を終了する。
【００５１】
次に、ステップＳ９１１において、ステップＳ９１２〜Ｓ９１４の処理を全ての新規ページに対して行ったか否かを判定する。ここで、まだ、未処理のページが存在する場合には、ステップＳ９１２に進む。ステップＳ９１２において、ページ辞書内のコンテンツにある「FormXObject」を参照する。ステップＳ９１３において、ページ辞書内のコンテンツにある「FormXObject」が、確かにレイアウト作成時に作成した「FormXObject」であるか否かを判定する。
【００５２】
ここで、図１２を参照する。図１２は、新規ページに挿入されたコンテンツ辞書の一例を示す図である。図１２に示すように、描画情報が記述されている「stream」内において、部分署名を行ったコンテンツである、１ページ及び２ページ以外（例えば、３ページ）の「FormXObject」を参照していない。従って、確かにレイアウト作成時に作成した「FormXObject」であると判定する。
【００５３】
ここで、レイアウト作成時に作成した「FormXObject」であると判定された場合には、ステップＳ９１４に進む。一方、レイアウト作成時に作成した「FormXObject」でないと判定された場合には、署名領域外のコンテンツを参照しているとみなせるので、改ざんされていると判定し、本処理を終了する。
【００５４】
次に、ステップＳ９１４において、コンテンツ辞書の最後にデータが存在しているか否かを判定する。
【００５５】
再度、図１２を参照する。図１２に示すように、「stream」内の「Do /Page2」以降（星印の部分）には、何もデータが存在していない。従って、描画データ及び部分署名を行ったコンテンツ以外の参照が存在していないと判定される。ここで、存在していないと判定された場合には、ステップＳ９１１に戻る。一方、例えば、イメージやフォント等の参照情報が、図１２の星印の箇所に記載されている場合には、署名領域外のコンテンツを参照しているか又は挿入されているとみなせるので、改ざんされていると判定し、本処理を終了する。ステップＳ９１１において、全てのページについて、ステップＳ９１２〜Ｓ９１４の処理が行われたと判定された場合には、利用者によってレイアウト編集された結果、改ざんされていないと判定し、本処理を終了する。
【００５６】
図１０は、部分署名が行われた状態の、電子文書のデータ構造の一例を示す図である。図１０に示すように、電子文書１０００における各ページのコンテンツ辞書とリソース辞書のオフセット値とバイト数とがハッシュ範囲として署名辞書に挿入されている。署名辞書は、既に説明したように、最後尾にインクリメンタル・セーブされている。また、図９のステップＳ９０１〜Ｓ９０５に示す部分署名の検証を行う場合には、図１０に示す署名辞書１００１に含まれる各種の情報を利用する。署名辞書１００１に示す「/ByteRange」とは、コンテンツ情報に対してハッシュ値の計算を行った範囲を示している。図１０に示すように、ハッシュ範囲は、電子文書の先頭からのオフセット値とバイト数のペアから構成される。そのハッシュ範囲と、「/Contents」に含まれる証明書と、暗号化したハッシュ値を用いて、部分署名の検証を行う。
【００５７】
図１１は、コンテンツ情報をFormXObject化した辞書の一例を示す図である。図１１に示すFormXObject化した辞書は、図９に示すステップＳ９０６〜Ｓ９１０における、部分署名を行ったコンテンツ辞書との一致を検証する処理に用いられる。データ１１００は、コンテンツ情報をFormXObject化した辞書を示している。データ１１００の描画情報が記述されている「stream」内の参照情報のオフセット値とバイト数とを取得する。その取得されたペアの値が署名辞書内に存在するのであれば、データ１１００が参照するコンテンツは署名で保護されているといえるので改ざんされていないと判定できる。一方、その取得されたペアの値が署名辞書内に存在しないのであれば、データ１１００は署名領域外のコンテンツを参照しているといえるので改ざんされていると判定できる。図１１においては、データ１１００は、データ１１０１を参照しており、データ１１０１は、部分署名を行ったコンテンツ辞書であるので、改ざんされていないと判定できる。
【００５８】
図１３は、利用者が、レイアウト編集において、背景描画データを追加した場合のコンテンツ辞書のデータ構造の一例を示す図である。電子文書制御システムにおいては、作成者が、電子文書に対してレイアウト制御のポリシーと共に、背景描画可能／不可能のポリシーを設定することによって、背景描画の制御を行うことができる。図１３に示すデータ１３００は、ＰＤＦ形式で表現された、レイアウト編集用に新たに追加したページのコンテンツ辞書の内容を示している。ここで、各「FormXObject」は、既に説明したように、コンテンツ情報をオブジェクト化している。
【００５９】
電子文書に対してレイアウト制御のポリシーと背景描画可能のポリシーが付与された場合に、電子文書編集アプリケーションは、データ１３００に示すように、streamデータの先頭にのみ描画情報を追加することによって背景描画を可能とする。その結果、イメージ１３０１のように指定した位置情報に対して文字列が描画される。図１３においては、「４ｉｎ１」のレイアウトの場合を示している。ここで、描画内容（背景オブジェクト）は、文字列でなく、イメージであっても良い。
【００６０】
利用者が背景描画を行う場合においても、図９において説明したような第１〜第３の検証が行われる。特に第３の検証においては、新規ページのコンテンツ辞書が、新規ページに作成した「FormXObject」のみを参照していることと、「FormXObject」及び背景オブジェクト以外のいかなるデータも参照してしないことを検証する。また、図１３のデータ１３００に示すように、streamデータの先頭にのみ描画情報を追加しても、図９のステップＳ９１４においては、コンテンツ辞書の最後にデータが存在しているか否かを判定しているので処理は変わらない。
【００６１】
以上のように、本実施形態においては、電子文書に付与したレイアウト制御ポリシーに基づいて利用者がレイアウト編集を行った場合に、コンテンツ内容が改ざんされたか否かを利用者側において判定する。その結果、レイアウト編集のみが正しく行われたことを検証する際に、作成者に問い合わせて承認を得る必要がない。従って、作成者が誰であるかということや、作成者と通信を行う環境等を考慮して承認を得る必要がないので、利用者側の利便性を大きく向上することができる。また、電子文書に付与した背景描画の許可ポリシーに基づいて、コンテンツの内容を変更することなく、バリアブルデータ等の描画内容を背景に追加することができる。
【００６２】
本発明には、プログラム（電子文書制御プログラム）コードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた場合についても、本発明は適用される。その場合に、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００６３】
【図１】本発明に係る実施形態における電子文書制御装置を含む電子文書制御システムの処理の手順の概要を示すフローチャートである。
【図２】本実施形態における電子文書制御システムの処理の手順をより詳細に示すフローチャートである。
【図３】本実施形態における電子文書制御システムの概要を示す図である。
【図４】作成者が電子文書のコンテンツ情報に部分署名を行う前と後における電子文書の構成を示す図である。
【図５】作成者が電子文書のコンテンツ情報のみに部分署名を行う処理の手順を示すフローチャートである。
【図６】利用者がレイアウト編集を行った際の電子文書の構造について説明する図である。
【図７】レイアウト編集前の電子文書（ＰＤＦファイル）のデータ構造の一例を示す図である。
【図８】レイアウト編集後の電子文書（ＰＤＦファイル）のデータ構造の一例を示す図である。
【図９】本実施形態において、レイアウト編集のみが正しく行われたか否かを検証する処理の手順を示すフローチャートである。
【図１０】部分署名が行われた状態の、電子文書のデータ構造の一例を示す図である。
【図１１】コンテンツ情報をFormXObject化した辞書の一例を示す図である。
【図１２】新規ページに挿入されたコンテンツ辞書の一例を示す図である。
【図１３】利用者が、レイアウト編集において、背景描画データを追加した場合のコンテンツ辞書のデータ構造の一例を示す図である。
【図１４】図３に示す作成者又は利用者が用いる端末装置、ポリシーサーバに適用される情報処理装置の構成の一例を示す図である。
【符号の説明】
【００６４】
４００、４０１、６００、１０００  電子文書
６０１、７００、７０１、７０２、７０３、７０４、８０１、８０２、８０３、８０４、８０５、１１００、１１０１、１２００、１３００  データ
６０２、１３０１  イメージ
１００１  署名辞書
【図１】
0005400319.tif 000002
【図２】
0005400319.tif 000003
【図３】
0005400319.tif 000004
【図４】
0005400319.tif 000005
【図５】
0005400319.tif 000006
【図６】
0005400319.tif 000007
【図７】
0005400319.tif 000008
【図８】
0005400319.tif 000009
【図９】
0005400319.tif 000010
【図１０】
0005400319.tif 000011
【図１１】
0005400319.tif 000012
【図１２】
0005400319.tif 000013
【図１３】
0005400319.tif 000014
【図１４】
0005400319.tif 000015