説明

文書管理システム及び文書管理装置と文書作成装置並びに文書管理方法

【課題】複数のファイルから構成される文書のバージョン管理を実現する文書管理装置において、ディジタル署名の作成と検証の処理時間を短縮し、さらに、バージョン間の整合性の検証を可能とする。
【解決手段】CPU202と記憶装置203、204とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱い、文書データの更新履歴を前記記憶装置に保存する文書管理装置104であって、記憶装置203、204は、文書データに含まれる複数のファイルそれぞれのハッシュ値である更新後ファイルハッシュ値と、ファイルの更新前ファイルそれぞれのハッシュ値である更新前ファイルハッシュ値とを含むハッシュ値リストと、ハッシュ値リストに対して付与されたディジタル署名とを保存する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、文書管理システム及び文書管理装置と文書作成装置並びに文書管理方法であり、特に複数のファイルから構成される文書のバージョン管理を行うシステムにおいて、各バージョンの文書の改ざん検知を行う技術に関する。
【背景技術】
【0002】
近年のIT技術の進展に伴い、民間企業や官公庁などでは紙ベースの業務から電子ベースの業務へと移行している。また、法律等の規制により紙での保存が義務付けられていた書類の電子的な保存(以下、「スキャナ保存」という)を認めるe−文書法(正式な法律名は「民間事業者等が行う書面の保存等における情報通信の技術の利用に関する法律」)が2005年4月に施行された。
e−文書法の対象となる書類はさまざまであり、また、書類によってスキャナ保存のための要件が異なる。見読性のみを確保すれば良い書類から、ディジタル署名やタイムスタンプを用いた厳密な管理が要求される書類がある。
また、e−文書法の対象となる書類で最も厳しい要件が課せられている書類としては、国税関係帳簿書類がある。国税関係帳簿書類のうち、金銭の流れに直結する書類については、ディジタル署名とタイムスタンプとバージョン管理機能による完全性の確保が要求されている。
このうち、バージョン管理機能は、電子ファイルの登録、更新、削除の履歴を管理する機能である。バージョン管理機能は、主にプログラムの開発におけるソースコードの管理に使用されていたが、国税関係帳簿書類のスキャナ保存では、電子ファイルの変更、削除を防止する手段として使用される。バージョン管理機能の実現方法については、たとえば、非特許文献1で開示されている。
非特許文献1の方式を用いると、複数のファイルから構成される文書を、1つの文書として扱うことができ、この文書に含まれる各ファイルの登録、更新、削除の履歴、すなわち、バージョン管理を実現できる。
また、特許文献1では、複数ファイルから構成される文書の原本性を保証する方式として、各ファイルに対して改ざん検知情報(例として、ディジタル署名)を作成する方式を開示している。
【特許文献1】特開2001−5728号公報
【非特許文献1】AIIM(The Association For Information and Image Management International):Document Management Architecuture
【非特許文献2】RFC3161 − Internet X.509 Public Key Infrastructure Time−Stamp Protocol (TSP)
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、特許文献1で開示されている手法では、ファイル毎にディジタル署名を作成するため、複数のファイルを1文書として登録する際であってもファイル数と同じ数のディジタル署名を生成する必要がある。そのため、多くの処理時間がかかり、また、ディジタル署名を保管するための多くの記憶領域が必要である。また、特許文献1では、ディジタル署名はサーバ装置に格納されている鍵を用いて付与するとされており、クライアント側での署名付与の方法については開示していない。国税関係帳簿書類のスキャナ保存では、スキャニング者もしくは監督者としているため、スキャナ保存のディジタル署名の要件を満たしていない。さらに、特許文献1では、バージョン間の整合性を保証する手段を開示していない。ディジタル署名により、各種属性データを保護する手段を開示しているが、バージョン間の整合性を保証する手段とは言えない。
【0004】
本発明は、以上の従来技術の問題点を解決し、ディジタル署名の作成および検証の処理時間を削減することができ、さらに、バージョン間の整合性を保証する文書管理方法を提供する。
【課題を解決するための手段】
【0005】
本発明は、複数のファイルから構成される文書のバージョン管理を実現する文書管理システムにおいて、文書を構成する複数のファイルそれぞれについてハッシュ値を計算し、これらのハッシュ値を集めたハッシュ値リストに対して、1つのディジタル署名を付与することを特徴とする。本発明によれば、作成されるディジタル署名の数は、複数のファイルに対して1つであるため、各ファイルに対してディジタル署名を作成する場合と比較して、ディジタル署名の作成時間および検証時間を短縮できる。また、ディジタル署名はクライアント装置、サーバ装置を問わず、いずれの装置でも作成することができる。
【0006】
また、本発明では、ハッシュ値リストに更新前のファイルのハッシュ値と更新後のファイルのハッシュ値を含めることを特徴としている。これにより、文書作成者もしくは更新者が、どのファイルを作成したか、また、どのファイルを更新したかを検証することができる。また、連続するバージョン間の更新前のファイルハッシュ値と更新後のファイルのハッシュ値を比較することで、バージョン間の連続性を検証することができる。
【0007】
すなわち、本発明は、CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱い、前記文書データの更新履歴を前記記憶装置に保存する文書管理装置であって、前記記憶装置は、前記文書データに含まれる複数のファイルそれぞれのハッシュ値である更新後ファイルハッシュ値と、前記ファイルの更新前ファイルそれぞれのハッシュ値である更新前ファイルハッシュ値とを含むハッシュ値リストと、前記ハッシュ値リストに対して付与されたディジタル署名とを保存する文書管理装置である。
【0008】
また、本発明は、前記記憶装置は、前記ハッシュ値リスト及び/又はディジタル署名に対する、時刻保証が可能なタイムスタンプを保存する文書管理装置である。
【0009】
そして、本発明は、CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書作成装置と、前記文書作成装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、前記文書管理装置は、前述した文書管理装置であり、かつ、前記文書作成装置から複数のファイルとハッシュ値リストとディジタル署名とを受信し、受信した複数のファイルそれぞれについてハッシュ値を計算し、受信したハッシュ値リストの更新後ファイルハッシュ値の中に、計算して得たハッシュ値に一致するハッシュ値が含まれることを検証し、前記ハッシュ値リストと前記ディジタル署名と文書データを構成する全てのファイルIDを含むバージョン属性データを作成する文書管理システムである。
【0010】
更に、本発明は、CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書検証装置と、前記文書検証装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、前記文書管理装置は、前述した文書管理装置であり、かつ、前記文書検証装置から検証対象のファイルのファイルIDを受信し、受信したファイルIDを基に前記記憶装置に保存されているファイルと前記ファイルに関連するバージョン属性データを取得し、取得したバージョン属性データからハッシュ値リストとディジタル署名を取得し、取得したディジタル署名を検証し、前記ファイルについてのハッシュ値を計算し、取得したハッシュ値リストの更新後ファイルハッシュ値の中に、計算して得たハッシュ値に一致するハッシュ値が含まれることを検証する文書管理システムである。
【0011】
また、本発明は、CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書検証装置と、前記文書検証装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、前記文書管理装置は、前述した文書管理装置であり、かつ、前記文書検証装置から検証対象の文書IDを受信し、受信した文書IDを基に前記記憶装置に保存されているバージョン属性データを取得し、取得したバージョン属性データからハッシュ値リストとディジタル署名とファイルIDを取得し、取得したファイルIDに対応する全てのファイルを取得し、前記ディジタル署名を検証し、取得したファイルそれぞれのハッシュ値を計算し、取得したハッシュ値リストの更新後ファイルハッシュ値の中に、計算して得たハッシュ値に一致するハッシュ値が含まれることを検証してハッシュ値リスト検証を行い、ハッシュ値リスト検証を行う際に、前記ハッシュ値リストから第二のハッシュ値リストを作成し、前記第二のハッシュ値リストに前記計算して得たハッシュ値に一致するハッシュ値が含まれることを検証し、前記第二のハッシュ値リストから一致したハッシュ値を削除する文書管理システムである。
【0012】
そして、本発明は、CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書作成装置と、前記文書作成装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、前記文書管理装置は、前述した文書管理装置であり、かつ、前記文書作成装置から文書IDを受信し、受信した文書IDを基に前記記憶装置に保存されている最新のバージョンIDを取得し、取得したバージョンIDからハッシュ値リストを取得し、取得したハッシュ値リストを前記文書作成装置に送信し、前記文書作成装置から更新後の文書IDと更新後のファイルとファイルIDとハッシュ値リストとディジタル署名とを受信し、受信したファイルそれぞれのハッシュ値を計算し、受信したハッシュ値リストの更新後ファイルハッシュ値の中に計算して得たハッシュ値に一致するハッシュ値が含まれることを検証し、受信したハッシュ値リストとディジタル署名と文書データを構成する全てのファイルIDを含むバージョン属性データを作成する文書管理システムである。
【0013】
更に、本発明は、CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書検証装置と、前記文書検証装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、前記文書管理装置は、前述した文書管理装置であり、かつ、前記文書検証装置から検証対象の文書IDを受信し、受信した文書IDを基に前記記憶装置に保存されている文書データに関連する全てのバージョン属性データを取得し、取得した各バージョン属性データからハッシュ値リストとディジタル署名とを取得し、前記ディジタル署名を検証し、各バージョン間のハッシュ値リストの整合性を検証してバージョン間整合性検証を行い、バージョン間整合性検証を行う際に、バージョンが連続する2つのハッシュ値リストを取得し、古い方のハッシュ値リストから有効なハッシュ値を取り出し、第二のハッシュ値リストを作成し、前記第二のハッシュ値リストに含まれるハッシュ値が全て新しい方のハッシュ値リストに含まれることを検証する文書管理システムである。
【0014】
また、本発明は、ネットワークを介して接続した文書作成装置から文書IDを受信し、受信した文書IDを基に前記記憶装置に保存されている最新のバージョンIDを取得し、取得したバージョンIDからハッシュ値リストを取得し、取得したハッシュ値リストを前記文書作成装置に送信し、前記文書作成装置から更新後の文書IDと更新後のファイルとファイルIDとハッシュ値リストとディジタル署名とを受信し、受信したファイルそれぞれのハッシュ値を計算し、受信したハッシュ値リストの更新後ファイルハッシュ値の中に計算して得たハッシュ値に一致するハッシュ値が含まれることを検証し、受信したハッシュ値リストとディジタル署名と文書データを構成する全てのファイルIDを含むバージョン属性データを作成する文書管理装置である。
【0015】
そして、本発明は、CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書作成装置であって、更新対象の文書IDを、ネットワークを介して接続した文書管理装置に送信し、前記文書管理装置からハッシュ値リストを受信し、ファイルを更新して更新後ファイルを作成し、更新後ファイルのハッシュ値を計算して新しいハッシュ値リストを作成し、新しいハッシュ値リストに対してディジタル署名を付与し、文書IDと更新後ファイルと新しいハッシュ値リストとディジタル署名とを、前記文書管理装置に送信する文書作成装置である。
【0016】
更に、本発明は、CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書作成装置が作成した文書を管理する方法であって、前記文書作成装置から複数のファイルとハッシュ値リストとディジタル署名とを受け取ることと、受け取った複数のファイルそれぞれについてハッシュ値を計算することと、受け取ったハッシュ値リストの更新後ファイルハッシュ値の中に、計算して得たハッシュ値に一致するハッシュ値が含まれることを検証することと、前記ハッシュ値リストと前記ディジタル署名と文書データを構成する全てのファイルIDを含むバージョン属性データを作成することを有する文書管理方法である。
【発明の効果】
【0017】
本発明により、複数のファイルから構成される文書のバージョン管理を実現する文書管理システムにおいて、クライアント側でのディジタル署名の生成に対応できるだけでなく、ディジタル署名の生成および検証処理を高速化できるようになる。また、バージョン間の整合性を保証できるようになる。
【発明を実施するための最良の形態】
【0018】
本発明を実施するための最良の形態を説明する。
以下、本発明の文書管理システム及び文書管理装置と文書作成装置並びに文書管理方法の実施形態について、図1〜図12を参照して詳細に説明する。
【0019】
図1は、本発明の実施形態に係るシステム構成の例を示した図である。図1に示すように、本システムは、文書作成装置101と、検証装置102と、タイムスタンプ発行装置103と、文書管理装置104とを含み、さらにこれらの装置がネットワーク105を介して相互に接続されて構成される。以下、これら各装置101〜104およびその装置の構成および機能について説明する。
【0020】
図1において、文書作成装置101は、少なくともCPU(Central Processing Unit)と記憶装置とを備えたコンピュータであり、文書登録部111、文書更新部112などの機能ブロックを備える。文書登録部111は、ユーザが作成した1つ以上のファイルから構成される文書から作成されるデータに対してディジタル署名を作成し、ファイルとディジタル署名などを文書管理装置104に送信する。また、文書更新部112は、文書管理装置104にすでに登録されている文書を更新する。なお、ディジタル署名のフォーマットについては、例えば、「RFC3852 Cryptographic Message Syntax(CMS)」で開示されている。
【0021】
次に、検証装置102は、少なくともCPUと記憶装置とを備えたコンピュータであり、文書検証部121などの機能ブロックを備える。文書検証部121は、文書管理装置104に登録されているファイルの検証要求を発行し、検証結果を表示する。
【0022】
次に、タイムスタンプ発行装置103は、少なくともCPUと記憶装置とを備えたコンピュータであり、タイムスタンプ発行部131などの機能ブロックを備える。タイムスタンプ発行部131は、文書管理装置104がタイムスタンプ発行装置103に送信したデータに対して、存在証明と完全性証明が可能なタイムスタンプを発行する。なお、このようなタイムスタンプを実現する方法については、例えば、非特許文献2で開示されている。
【0023】
次に、文書管理装置104は、少なくともCPUと記憶装置とを備えたコンピュータであり、文書登録部141、文書更新部142、文書検証部143などの機能ブロックを備える。また、文書属性データ144、バージョン属性データ145、ファイル属性データ146、ファイル147などのデータを記憶装置に保存している。文書登録部141は、文書作成装置101が作成したファイルとディジタル署名などから、文書属性データ144、バージョン属性データ145、ファイル属性データ146を作成し、記憶装置に保存する。また、文書更新部142は、登録されている文書に含まれるファイルの変更、削除、追加を行う。また、文書検証部143は、記憶装置に保存されているディジタル署名とタイムスタンプを検証する。
【0024】
図2は、本発明の実施形態に係るコンピュータの一般的な構成の例を示した図である。図2に示すように、コンピュータ201は、CPU202、主記憶装置203、補助記憶装置204、ネットワークインターフェース205、I/Oインターフェース206などが内部バス207によって相互に接続されて構成される。そして、コンピュータ201の処理は、主記憶装置203などに格納されたプログラムがCPU202にて実施されることにより行われる。メモリなお、本明細書では、主記憶装置203と補助記憶装置204とを総称する場合には、単に「記憶装置」という。
【0025】
続いて、図3を参照して、文書の新規登録処理のフローについて説明する。この処理は、文書作成装置101の文書登録部111と、文書管理装置104の文書登録部142の機能により実行される。
【0026】
図3において、文書作成装置101は、まず、各ファイルのハッシュ値を計算し、ハッシュ値リストを作成する(ステップS301)。そして、そのハッシュ値リストに対してディジタル署名を付与する(ステップS302)。続いて、文書名、ファイル、ファイル名、ハッシュ値リスト、ディジタル署名を文書管理装置104に送信する(ステップS303)。
【0027】
ここで、ハッシュ値とは、ハッシュ関数と呼ばれる任意長の入力データから固定長の値を出力する関数を用いて作成される値である。情報の安全性を確保する目的からは、ハッシュ関数は、同じ出力値を与えるような2つの異なる入力データを見出すのが困難で、かつ、出力値から入力データを見出すのが困難であるような関数を用いるのが好ましい。なお、ハッシュ関数の計算アルゴリズムは公開されていても構わない。
【0028】
次に、文書管理装置104は、文書作成装置101から受信したデータを検証する(ステップS304)。この検証処理には、ディジタル署名を用いたハッシュ値リストの完全性検証と、各ファイルのハッシュ値を計算し、そのハッシュ値がハッシュ値リストに含まれることの検証の各処理が含まれる。なお、これらの検証処理に失敗した場合には、文書管理装置104は、文書作成装置101にエラーを返送し、文書の新規登録処理を終了する(図示せず)。
【0029】
次に、文書管理装置104は、ディジタル署名に対するタイムスタンプをタイムスタンプ発行装置103から取得する(ステップS305)。タイムスタンプ発行装置103は、タイムスタンプ発行部131の機能を実行することにより、タイムスタンプを発行する。
【0030】
なお、別の実施形態として、タイムスタンプを取得しない場合には、ステップS305を省略してもよい。法令やシステム要件等により、時刻保証が必要ない場合にはタイムスタンプを取得しなくてもよい。
【0031】
また、さらに、別の実施形態として、タイムスタンプの付与対象をディジタル署名とハッシュ値リストの両方、もしくは、ハッシュ値リストのみ、もしくは、受信した各ファイルを結合したデータ、もしくは、受信した各ファイルを結合したデータとディジタル署名の両方としてもよい。
【0032】
次に、文書管理装置104は、文書属性データ144、バージョン属性データ145、ファイル属性データ146を作成する(ステップS306)。そして、文書属性データ144、バージョン属性データ145、ファイル属性データ146、ファイル147を記憶装置に保存する(ステップS307)。
【0033】
また、別の実施形態として、ディジタル署名を付与しない場合には、ステップS302を省略し、ステップS303において、ディジタル署名を除いたデータを文書管理装置104に送信する。また、ステップS305では、ハッシュ値リストに対するタイムスタンプを、タイムスタンプ発行装置103から取得する。
【0034】
e−文書法では、文書の種類に応じて、ディジタル署名が必要な場合、ディジタル署名とタイムスタンプの両方が必要な場合、ディジタル署名とタイムスタンプの両方が不要な場合がある。また、ディジタル署名の付与対象、タイムスタンプの付与対象についても、e−文書法では指定されている。本発明は、いずれの場合であっても対応可能である。
【0035】
続いて、図4を参照して、文書の新規登録の際に文書作成装置101が作成するハッシュ値リストの例を示す。図4(a)では新規登録時に作成されるハッシュ値リストの例を、図4(b)では更新時に作成されるハッシュ値の例を示している。図4(a)(b)に示すように、ハッシュ値リストは、更新後ファイルハッシュ値、更新前ファイルハッシュ値によって構成される。
【0036】
ここで、更新後ファイルハッシュ値は、新規に追加したファイル、または、更新したファイルのハッシュ値である。また、更新前ファイルハッシュ値は、ファイルを更新する場合の更新前のファイルのハッシュ値である。文書の新規登録の際には、更新前のファイルは存在しないため、更新前ファイルハッシュ値には、「0」を指定する。また、文書の更新の際には、内容を変更したファイルについては、更新前ファイルハッシュ値と更新後ファイルハッシュ値の両方は「0」以外の値となる。また、削除したファイルのハッシュ値については、ハッシュ値リストには含めない。
【0037】
また、ハッシュ値リストは、ディジタル署名もしくはタイムスタンプを付与する前であれば、更新後ファイルハッシュ値、または、更新前ファイルハッシュ値でソートしておいても良い。ソートすることにより、ハッシュ値リストに含まれるハッシュ値を検索する速度を高速化できる。
【0038】
また、ハッシュ値リストには、ファイルのハッシュ値のみを含めることで、システムに依存しない形式で本発明のシステムを実現できる。例えば、ファイルIDなどのシステム固有の情報を含めた場合には、他社システムなどへの移行が非常に困難となるが、本発明ではシステム移行をより簡単に実現可能となる。
【0039】
また、図4に示すような形式のハッシュ値リストにファイルの作成者のディジタル署名を付与することで、「だれが」「どのファイル」を作成したか、または、更新したかを明確化できる。
【0040】
続いて、図5を参照して、文書管理装置104に保存する文書属性データ144、バージョン属性データ145、ファイル属性データ146の例を示す。
【0041】
文書属性データ144は、文書に対して1つ存在するデータであり、文書ID、文書名、作成日時、最終更新日時、および、文書のバージョン情報を管理するバージョン属性データへの参照データ(バージョンID)などのデータを持つ。バージョンIDは、文書のバージョンの数だけ存在する。例えば、現在の文書のバージョンが3の場合には、バージョンIDは3個存在する。
【0042】
バージョン属性データ145は、文書の新規登録、更新の際に作成されるデータであり、バージョンID、バージョン番号、文書ID、作成日時、ハッシュ値リスト、ディジタル署名、タイムスタンプ、および、ファイル情報を管理するファイル属性データへの参照データ(ファイルID)などのデータを持つ。ファイルIDは、そのバージョンを構成するファイルの数だけ存在する。例えば、バージョンを構成するファイルが5個の場合には、5個のファイルIDが存在する。
【0043】
ファイル属性データ146は、ファイルが追加・更新された際に作成されるデータであり、ファイルID、前バージョンファイルID、バージョンID、ファイルハッシュ値、ファイル名などのデータを持つ。なお、前バージョンファイルIDは、ファイルが追加の場合には「0」を指定する。また、バージョンIDは、このファイルが新規登録、または、追加された際に作成されたバージョン属性データのバージョンIDである。
【0044】
続いて、図6を参照して、文書属性データ144、バージョン属性データ145、ファイル属性データ146、ファイル147の関連を示す。
【0045】
図6に示すように、文書属性データ144は、1個以上のバージョン属性データ145への参照情報(バージョンID)を含んでいる。また、バージョン属性データ145は、1個以上のファイル属性データ146への参照情報(ファイルID)を含んでいる。バージョン属性データ145が参照するファイル属性データ146は、バージョンを構成する全ファイルのファイル属性に対する参照情報(ファイルID)を含んでいる。また、ファイル属性データ146は、1個のファイルに対する参照を含んでいる。
【0046】
また、ファイル属性データ146は、1個以上のバージョン属性データから参照されている。旧バージョンから新バージョンにバージョンが上がった際に、更新または削除されなかったファイルのファイル属性データ146は、旧バージョンと新バージョンのバージョン属性データ145の両方から参照されることになる。更新または削除された場合には、ファイル属性データ145は、新バージョンのバージョン属性データ145から参照されない。
【0047】
図6に示すような関連性を持たせることで、ある文書のバージョン一覧を検索したり、ある特定のファイルの更新履歴を辿ったりすることが可能となる。
【0048】
文書属性データとファイル属性データとバージョン属性データとファイルは、検索性の観点から関係データベースで管理することが望ましい。また、改ざんの防止を目的に、バージョン属性データ、ファイル属性データ、ファイルを書き換え困難な記憶装置(例えば、CD−R、DVD−Rなど)や改ざん防止機能のあるデータベース領域に格納することが望ましい。
【0049】
続いて、図7を参照して、1個のファイルの検証処理のフローについて説明する。この処理は、検証装置102の文書検証部121と、文書管理装置104の文書検証部143の機能により実行される。
【0050】
図7において、検証装置102は、まず、検証対象のファイルIDを文書管理装置104に送信する(ステップS701)。
【0051】
次に、文書管理装置104は、検証装置102から受信したファイルIDからファイル属性データ146を参照し、バージョンIDを取得する(ステップS702)。そして、バージョンIDからバージョン属性データ145を参照し、ハッシュ値リスト、ディジタル署名、タイムスタンプを取得する(ステップS703)。続いて、ファイルIDに対応するファイル146を取得する(ステップS704)。
【0052】
次に、文書管理装置104は、ディジタル署名とタイムスタンプを検証する(ステップS705)。ディジタル署名の検証は、ハッシュ値リストとディジタル署名を用いて行う。ディジタル署名の検証に必要な公開鍵はディジタル署名の中に含まれている。また、タイムスタンプの検証は、タイムスタンプの付与対象とタイムスタンプを用いて行う。タイムスタンプの付与対象は、システム要件により異なるが、例えば、ディジタル署名のみ、または、ディジタル署名とハッシュ値リスト、または、ハッシュ値リストのみ、などが考えられる。なお、ディジタル署名、もしくは、タイムスタンプの検証に失敗した場合には、文書管理装置104は、検証装置102にエラーを返送し、検証処理を終了する(図示せず)。
【0053】
なお、別の実施形態として、ディジタル署名を登録時に作成していない場合は、ステップS705におけるディジタル署名の検証処理は省略する。また、同様に、タイムスタンプを登録時に作成していない場合は、ステップS705におけるタイムスタンプの検証処理を省略する。また、ディジタル署名のみ、もしくは、タイムスタンプのみの検証だけでも良い。検証装置102からの要求により、選択的に指定できるようにしても良い。
【0054】
次に、文書管理装置104は、ファイルのハッシュ値を計算する(ステップS706)。そして、計算したハッシュ値がハッシュ値リストに含まれるかチェックする(ステップS707)。なお、このチェックは、ハッシュ値リストの更新後ファイルハッシュ値の列を参照する。
【0055】
次に、文書管理装置104は、検証結果を検証装置102に送信する(ステップS708)。そして、検証装置102は、受信した検証結果を表示する(ステップS709)。
【0056】
続いて、図8を参照して、あるバージョンに含まれる全てのファイルの検証処理のフローについて説明する。この処理は、検証装置102の文書検証部121と、文書管理装置104の文書検証部143の機能により実行される。
【0057】
図8において、検証装置102は、まず、検証対象の文書ID、バージョンIDを文書管理装置に送信する(ステップS801)。
【0058】
次に、文書管理装置104は、検証装置102から受信した文書IDから文書属性データ144を参照し、指定されたバージョンIDのバージョン属性データ145を取得する(ステップS802)。そして、バージョン属性データ145を参照し、ハッシュ値リスト、ディジタル署名、タイムスタンプ、ファイルIDを取得する(ステップS803)。続いて、ファイルIDに対応する全てのファイルを取得する(ステップS804)。
【0059】
次に、文書管理装置104は、ディジタル署名とタイムスタンプを検証する(ステップS805)。ディジタル署名の検証は、ハッシュ値リストとディジタル署名を用いて行う。ディジタル署名の検証に必要な公開鍵はディジタル署名の中に含まれている。また、タイムスタンプの検証は、タイムスタンプの付与対象とタイムスタンプを用いて行う。タイムスタンプの付与対象は、システム要件により異なるが、例えば、ディジタル署名のみ、または、ディジタル署名とハッシュ値リスト、または、ハッシュ値リストのみ、などが考えられる。なお、ディジタル署名、もしくは、タイムスタンプの検証に失敗した場合には、文書管理装置104は、検証装置102にエラーを返送し、検証処理を終了する(図示せず)。
【0060】
なお、別の実施形態として、ディジタル署名を登録時に作成していない場合は、ステップS805におけるディジタル署名の検証処理は省略する。また、同様に、タイムスタンプを登録時に作成していない場合は、ステップS805におけるタイムスタンプの検証処理を省略する。また、ディジタル署名のみ、もしくは、タイムスタンプのみの検証だけでも良い。検証装置102からの要求により、選択的に指定できるようにしても良い。
【0061】
次に、文書管理装置104は、ファイルのハッシュ値をそれぞれ計算する(ステップS806)。そして、ハッシュ値がハッシュ値リストに全て含まれるかチェックする。(ステップS807)。なお、具体的なチェック方法については、後述する。
【0062】
次に、文書管理装置104は、検証結果を検証装置102に送信する(ステップS808)。そして、検証装置102は、受信した検証結果を表示する(ステップS809)。
【0063】
続いて、図9を参照して、図8におけるステップS807のハッシュ値がハッシュ値リストに全て含まれるかをチェックするための処理フローについて説明する。
【0064】
図9において、文書管理装置104は、ハッシュ値リストから、有効なハッシュ値を取り出し、第二のハッシュ値リストを作成する(ステップS901)。この処理では、ハッシュ値リストの各行から、更新後ファイルハッシュ値、または、更新前ファイルハッシュ値のいずれかの値を取り出す。更新後ファイルハッシュ値が「0」でない場合には、更新後ファイルハッシュ値を取り出し、「0」の場合には、更新前ファイルハッシュ値を取り出す。第二のハッシュ値リストは、取り出したハッシュ値を一列に並べたリストである。
【0065】
次に、文書管理装置104は、第二のハッシュ値リストをソートする(ステップS902)。ソートすることにより、ハッシュ値の比較の際の検索速度を高速化できる。
【0066】
次に、文書管理装置104は、内部変数iにバージョンに含まれるファイル数Nを代入する(ステップS903)。そして、ステップS806で計算したハッシュ値の中から1つのハッシュ値を取り出し、ハッシュ値が第二のハッシュ値リストに含まれているかチェックする(ステップS904)。なお、第二のハッシュ値リストに含まれていない場合には、ステップS908へ進む(図示せず)。
【0067】
次に、文書管理装置104は、第二のハッシュ値リストから、ステップS904で一致したハッシュ値を削除する(ステップS905)。そして、内部変数iの値から1を減算する(ステップS906)。続いて、内部変数iの値が「0」よりも大きいかどうか判定する。「0」よりも大きい場合には、ステップS904に戻り、そうでない場合には、ステップS908へ進む(ステップS907)。
【0068】
次に、ハッシュ値の比較結果を返す(ステップS908)。比較結果は、内部変数iの値が「0」であり、かつ、第二のハッシュ値リストにハッシュ値が含まれない場合は、成功であり、それ以外の場合は失敗となる。また、失敗した場合、補足情報として、一致しなかったファイルのハッシュ値や、第二のハッシュ値リストの含まれるハッシュ値の数とファイル数Nが一致しないなどの情報を返しても良い。
【0069】
続いて、図10を参照して、文書の更新処理フローについて説明する。この処理は、文書作成装置101の文書更新部112と、文書管理装置104の文書更新部142の機能により実行される。
【0070】
図10において、文書作成装置101は、まず、更新対象の文書IDを文書管理装置104に送信する(ステップS1001)。
【0071】
次に、文書管理装置104は、文書作成装置101から受信した文書Idから文飾属性データ144を参照し、最新のバージョンIDを取得する(ステップS1002)。そして、バージョンIDからバージョン属性データ145を参照し、ハッシュ値リストを取得し、文書作成装置101に送信する(ステップS1003)。
【0072】
次に、文書作成装置101は、更新後のファイルのハッシュ値を計算し、ハッシュ値リストを作成する(ステップS1004)。更新時のハッシュ値リストの例については、図4(b)に示している。
【0073】
次に、文書作成装置101は、ハッシュ値リストに対してディジタル署名を付与する(ステップS1005)。そして、文書ID、ファイル、ファイルID、ハッシュ値リスト、ディジタル署名を文書管理装置104に送信する(ステップS1006)。
【0074】
次に、文書管理装置104は、受信データを検証する(ステップS1007)。この検証処理には、ディジタル署名を用いたハッシュ値リストの完全性検証と、各ファイルのハッシュ値を計算し、そのハッシュ値がハッシュ値リストに含まれることの検証の各処理が含まれる。なお、これらの検証処理に失敗した場合には、文書管理装置104は、文書作成装置101にエラーを返送し、文書の更新処理を終了する(図示せず)。
【0075】
次に、文書管理装置104は、ディジタル署名に対するタイムスタンプをタイムスタンプ発行装置103から取得する(ステップS1008)。タイムスタンプ発行装置103は、タイムスタンプ発行部131の機能を実行することにより、タイムスタンプを発行する。
【0076】
なお、別の実施形態として、タイムスタンプを取得しない場合には、ステップS305を省略してもよい。法令やシステム要件等により、時刻保証が必要ない場合にはタイムスタンプを取得しなくてもよい。さらに別の実施形態として、タイムスタンプの付与対象をディジタル署名とハッシュ値リストの両方、もしくは、ハッシュ値リストのみとしてもよい。
【0077】
次に、文書管理装置104は、バージョン属性データ145、ファイル属性データ146を作成し、文書属性データ144を更新する(ステップS1009)。そして、ファイル147、バージョン属性データ145、ファイル属性データ146を記憶装置に保存する(ステップS1010)。
【0078】
また、別の実施形態として、ディジタル署名を付与しない場合には、ステップS1005を省略し、ステップS1006において、ディジタル署名を除いたデータを文書管理装置104に送信する。また、ステップS1008では、ハッシュ値リストに対するタイムスタンプを、タイムスタンプ発行装置103から取得する。
【0079】
続いて、図11を参照して、バージョン間の連続性検証のフローについて説明する。この処理は、検証装置102の文書検証部121と、文書管理装置104の文書検証部142の機能により実行される。
【0080】
図10において、バージョンに含まれる全てのファイルの検証処理では、更新前のバージョンに含まれるファイルが改ざんされていないことを保証できない。図11に示す処理は、これを補う処理であり、文書の更新が正しいプロセスで行われたことを検証する。
【0081】
図11において、検証装置102は、まず、検証対象の文書IDを文書管理装置104に送信する(ステップS1101)。
【0082】
次に、文書管理装置104は、受信した文書IDから文書属性データ144を参照し、全てのバージョンIDを取得する(ステップS1102)。そして、各バージョンIDに対応するバージョン属性データ145を取得する(ステップS1103)。続いて、各バージョン属性データ145から、ハッシュ値リスト、ディジタル署名、タイムスタンプを取得する(ステップS1104)。
【0083】
次に、文書管理装置104は、ディジタル署名、タイムスタンプをバージョン毎に検証する(ステップS1105)。ディジタル署名の検証は、ハッシュ値リストとディジタル署名を用いて行う。ディジタル署名の検証に必要な公開鍵はディジタル署名の中に含まれている。また、タイムスタンプの検証は、タイムスタンプの付与対象とタイムスタンプを用いて行う。なお、ディジタル署名、もしくは、タイムスタンプの検証に失敗した場合には、文書管理装置104は、検証装置102にエラーを返送し、検証処理を終了する(図示せず)。
【0084】
なお、別の実施形態として、ディジタル署名を登録時に作成していない場合は、ステップS805におけるディジタル署名の検証処理は省略する。また、同様に、タイムスタンプを登録時に作成していない場合は、ステップS805におけるタイムスタンプの検証処理を省略する。また、ディジタル署名のみ、もしくは、タイムスタンプのみの検証だけでも良い。検証装置102からの要求により、選択的に指定できるようにしても良い。
【0085】
次に、文書管理装置104は、バージョン間のハッシュ値リストの整合性をチェックする(ステップS1106)。なお、具体的なチェック方法については後述する。
【0086】
次に、文書管理装置104は、検証結果を検証装置102に送信する(ステップS1107)。そして、検証装置102は、検証結果を表示する(ステップS1108)。
【0087】
続いて、図12を参照して、図11におけるステップS1106のバージョン間のハッシュ値リストの整合性を検証する方法について説明する。
【0088】
図12において、文書管理装置104は、バージョン(M)とバージョン(M+1)のそれぞれのハッシュ値リストを取得する(ステップS1201)。ここで、「M」はバージョン番号を表しており、このステップでは連続する2つのバージョンのハッシュ値リストを取得している。
【0089】
次に、文書管理装置104は、バージョン(M)のハッシュ値リストから、有効なハッシュ値を取り出し、第二のハッシュ値リスト(M)を作成する(ステップS1202)。この処理では、ハッシュ値リストの各行から、更新後ファイルハッシュ値、または、更新前ファイルハッシュ値のいずれかの値を取り出す。更新後ファイルハッシュ値が「0」でない場合には、更新後ファイルハッシュ値を取り出し、「0」の場合には、更新前ファイルハッシュ値を取り出す。第二のハッシュ値リストは、取り出したハッシュ値を一列に並べたリストである。
【0090】
次に、文書管理装置104は、バージョン(M+1)のハッシュ値リストの更新前ファイルハッシュ値が、第二のハッシュ値リスト(M)に全て含まれるか検証する(ステップS1203)。
【0091】
以上の処理を、全ての連続するバージョン間において実行する。
【0092】
以上のようにして、複数のファイルから構成される文書のバージョン管理を実現する文書管理システムにおいて、クライアント側でのディジタル署名の生成に対応できるだけでなく、ディジタル署名の生成および検証処理を高速化できる。また、バージョン間の整合性を保証できる。そして、文書管理システムにおける文書の変更履歴の真正性を保証する用途に適用できる。
【図面の簡単な説明】
【0093】
【図1】本発明の実施形態に係るシステム構成の例を示した図である。
【図2】本発明の実施形態に係るコンピュータの一般的な構成の例を示した図である。
【図3】本発明の実施形態に係る文書の新規登録処理のフローを示した図である。
【図4】本発明の実施形態に係るハッシュ値リストの例を示した図である。
【図5】本発明の実施形態に係る文書属性データとバージョン属性データとファイル属性データの各データの例を示した図である。
【図6】本発明の実施形態に係る文書属性データとバージョン属性データとファイル属性データとファイルとの関連を示した図である。
【図7】本発明の実施形態に係る1個のファイルの検証処理のフローを示した図である。
【図8】本発明の実施形態に係るバージョンに含まれる全てのファイルの検証処理のフローを示した図である。
【図9】本発明の実施形態に係るファイルのハッシュ値とハッシュ値リストの比較処理のフローを示した図である。
【図10】本発明の実施形態に係る文書の更新処理のフローを示した図である。
【図11】本発明の実施形態に係るバージョン間の連続性の検証処理のフローを示した図である。
【図12】本発明の実施形態に係るバージョン間のハッシュ値リストの整合性の検証処理のフローを示した図である。
【符号の説明】
【0094】
101 文書作成装置
102 検証装置
103 タイムスタンプ発行装置
104 文書管理装置
105 ネットワーク
111 文書登録部
112 文書更新部
121 文書検証部
131 タイムスタンプ発行部
141 文書登録部
142 文書更新部
143 文書検証部
144 文書属性データ
145 バージョン属性データ
146 ファイル属性データ
147 ファイル
201 コンピュータ
202 CPU
203 主記憶装置
204 補助記憶装置
205 ネットワークインターフェース
206 I/Oインターフェース
207 内部バス

【特許請求の範囲】
【請求項1】
CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱い、前記文書データの更新履歴を前記記憶装置に保存する文書管理装置であって、
前記記憶装置は、前記文書データに含まれる複数のファイルそれぞれのハッシュ値である更新後ファイルハッシュ値と、前記ファイルの更新前ファイルそれぞれのハッシュ値である更新前ファイルハッシュ値とを含むハッシュ値リストと、前記ハッシュ値リストに対して付与されたディジタル署名とを保存することを特徴とする文書管理装置。
【請求項2】
請求項1に記載の文書管理装置であって、
前記記憶装置は、前記ハッシュ値リスト及び/又はディジタル署名に対する、時刻保証が可能なタイムスタンプを保存することを特徴とする文書管理装置。
【請求項3】
CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書作成装置と、前記文書作成装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、
前記文書管理装置は、請求項1又は2に記載の文書管理装置であり、かつ、前記文書作成装置から複数のファイルとハッシュ値リストとディジタル署名とを受信し、受信した複数のファイルそれぞれについてハッシュ値を計算し、受信したハッシュ値リストの更新後ファイルハッシュ値の中に、計算して得たハッシュ値に一致するハッシュ値が含まれることを検証し、前記ハッシュ値リストと前記ディジタル署名と文書データを構成する全てのファイルIDを含むバージョン属性データを作成することを特徴とする文書管理システム。
【請求項4】
CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書検証装置と、前記文書検証装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、
前記文書管理装置は、請求項1又は2に記載の文書管理装置であり、かつ、前記文書検証装置から検証対象のファイルのファイルIDを受信し、受信したファイルIDを基に前記記憶装置に保存されているファイルと前記ファイルに関連するバージョン属性データを取得し、取得したバージョン属性データからハッシュ値リストとディジタル署名を取得し、取得したディジタル署名を検証し、前記ファイルについてのハッシュ値を計算し、取得したハッシュ値リストの更新後ファイルハッシュ値の中に、計算して得たハッシュ値に一致するハッシュ値が含まれることを検証することを特徴とする文書管理システム。
【請求項5】
CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書検証装置と、前記文書検証装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、
前記文書管理装置は、請求項1又は2に記載の文書管理装置であり、かつ、前記文書検証装置から検証対象の文書IDを受信し、受信した文書IDを基に前記記憶装置に保存されているバージョン属性データを取得し、取得したバージョン属性データからハッシュ値リストとディジタル署名とファイルIDを取得し、取得したファイルIDに対応する全てのファイルを取得し、前記ディジタル署名を検証し、取得したファイルそれぞれのハッシュ値を計算し、取得したハッシュ値リストの更新後ファイルハッシュ値の中に、計算して得たハッシュ値に一致するハッシュ値が含まれることを検証してハッシュ値リスト検証を行い、
ハッシュ値リスト検証を行う際に、前記ハッシュ値リストから第二のハッシュ値リストを作成し、前記第二のハッシュ値リストに前記計算して得たハッシュ値に一致するハッシュ値が含まれることを検証し、前記第二のハッシュ値リストから一致したハッシュ値を削除することを特徴とする文書管理システム。
【請求項6】
CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書作成装置と、前記文書作成装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、
前記文書管理装置は、請求項1又は2に記載の文書管理装置であり、かつ、前記文書作成装置から文書IDを受信し、受信した文書IDを基に前記記憶装置に保存されている最新のバージョンIDを取得し、取得したバージョンIDからハッシュ値リストを取得し、取得したハッシュ値リストを前記文書作成装置に送信し、前記文書作成装置から更新後の文書IDと更新後のファイルとファイルIDとハッシュ値リストとディジタル署名とを受信し、受信したファイルそれぞれのハッシュ値を計算し、受信したハッシュ値リストの更新後ファイルハッシュ値の中に計算して得たハッシュ値に一致するハッシュ値が含まれることを検証し、受信したハッシュ値リストとディジタル署名と文書データを構成する全てのファイルIDを含むバージョン属性データを作成することを特徴とする文書管理システム。
【請求項7】
CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書検証装置と、前記文書検証装置とネットワークを介して接続した文書管理装置とからなる文書管理システムであって、
前記文書管理装置は、請求項1又は2に記載の文書管理装置であり、かつ、前記文書検証装置から検証対象の文書IDを受信し、受信した文書IDを基に前記記憶装置に保存されている文書データに関連する全てのバージョン属性データを取得し、取得した各バージョン属性データからハッシュ値リストとディジタル署名とを取得し、前記ディジタル署名を検証し、各バージョン間のハッシュ値リストの整合性を検証してバージョン間整合性検証を行い、
バージョン間整合性検証を行う際に、バージョンが連続する2つのハッシュ値リストを取得し、古い方のハッシュ値リストから有効なハッシュ値を取り出し、第二のハッシュ値リストを作成し、前記第二のハッシュ値リストに含まれるハッシュ値が全て新しい方のハッシュ値リストに含まれることを検証することを特徴とする文書管理システム。
【請求項8】
請求項1又は2に記載の文書管理装置において、
ネットワークを介して接続した文書作成装置から文書IDを受信し、受信した文書IDを基に前記記憶装置に保存されている最新のバージョンIDを取得し、取得したバージョンIDからハッシュ値リストを取得し、取得したハッシュ値リストを前記文書作成装置に送信し、前記文書作成装置から更新後の文書IDと更新後のファイルとファイルIDとハッシュ値リストとディジタル署名とを受信し、受信したファイルそれぞれのハッシュ値を計算し、受信したハッシュ値リストの更新後ファイルハッシュ値の中に計算して得たハッシュ値に一致するハッシュ値が含まれることを検証し、受信したハッシュ値リストとディジタル署名と文書データを構成する全てのファイルIDを含むバージョン属性データを作成することを特徴とする文書管理装置。
【請求項9】
CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書作成装置であって、
更新対象の文書IDを、ネットワークを介して接続した文書管理装置に送信し、前記文書管理装置からハッシュ値リストを受信し、ファイルを更新して更新後ファイルを作成し、更新後ファイルのハッシュ値を計算して新しいハッシュ値リストを作成し、新しいハッシュ値リストに対してディジタル署名を付与し、文書IDと更新後ファイルと新しいハッシュ値リストとディジタル署名とを、前記文書管理装置に送信することを特徴とする文書作成装置。
【請求項10】
CPUと記憶装置とを少なくとも備え、複数のファイルにより構成される文書データを1単位として扱う文書作成装置が作成した文書を管理する方法であって、
前記文書作成装置から複数のファイルとハッシュ値リストとディジタル署名とを受け取ることと、受け取った複数のファイルそれぞれについてハッシュ値を計算することと、受け取ったハッシュ値リストの更新後ファイルハッシュ値の中に、計算して得たハッシュ値に一致するハッシュ値が含まれることを検証することと、前記ハッシュ値リストと前記ディジタル署名と文書データを構成する全てのファイルIDを含むバージョン属性データを作成することを有すること特徴とする文書管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2008−102573(P2008−102573A)
【公開日】平成20年5月1日(2008.5.1)
【国際特許分類】
【出願番号】特願2006−282258(P2006−282258)
【出願日】平成18年10月17日(2006.10.17)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】