(57)【特許請求の範囲】
【請求項１】
基準時点において、指定された条件を満たすファイルから構成される第１のファイル群について、その特徴を一意に表す第１の検査符号を、前記第１のファイル群に属するファイルのメタデータに基づいて生成し、前記基準時点以降の検証時点において、前記条件を満たすファイルから構成される第２のファイル群について、その特徴を一意に表す第２の検査符号を、前記第２のファイル群に属するメタデータに基づいて生成する検査符号生成手段と、
前記第１の検査符号と前記第２の検査符号とを比較し、両者の不一致をもって前記１のファイル群と前記第２のファイル群との不整合を検出する不整合検出手段と、
ファイルおよびそのメタデータが格納された第１および第２の記憶装置と、
差分データ記憶手段と、
前記第１の記憶装置に格納されているファイルの内の、前記基準時点以降に更新されたファイルを前記差分データ記憶手段に記録する差分データ抽出手段と、
前記差分データ記憶手段に記録されている差分データを前記第２の記憶装置に展開する差分データ適用手段と、を備え、且つ、
前記検査符号生成手段は、前記基準時点においては、前記第１の記憶装置に格納されているファイルの内の前記条件を満たすファイルのメタデータに基づいて前記第１の検査符号を生成し、前記検証時点においては、前記第２の記憶装置に格納されているファイルの内の、前記条件を満たすファイルのメタデータに基づいて前記第２の検査符号を生成し、
前記差分データ適用手段は、前記不整合検出手段によって前記第１のファイル群と前記第２のファイル群との不整合が検出されなかった場合に限り、前記差分データを前記第２の記憶装置に展開し、
さらに、
適用条件記憶手段と、
前記第２の記憶装置に記録されている実行バイナリファイルと、その実行バイナリファイルが依存している依存ファイルとの依存関係を表す有向グラフであって、１つのノードが１つのファイルに対応し、各ノードには対応するファイルの属性が付されている有向グラフを、ファイルの内容部の特定領域に格納された依存ファイル情報を辿って生成し、生成した有向グラフを前記適用条件記憶手段に記録するファイル依存関係分析手段と、
前記差分データ記憶手段に記録されている差分データに含まれているファイルの属性と、前記適用条件記憶手段に記録されている有向グラフとに基づいて、前記差分データの展開を許可するか否かを判定する適用条件判定手段と、を備え、且つ、
前記差分データ適用手段は、前記不整合検出手段によって前記第１のファイル群と前記第２のファイル群との不整合が検出されず、且つ、前記適用条件判定手段によって前記差分データの展開が許可された場合に限り、前記差分データを前記第２の記憶装置に展開する、ことを特徴とするファイル群整合性検証システム。
【請求項２】
請求項１に記載のファイル群整合性検証システムにおいて、
前記検査符号は、前記条件を満たすファイルのメタデータの属性の内の、一部の属性の出現度数分布であることを特徴とするファイル群整合性検証システム。
【請求項３】
請求項１に記載のファイル群整合性検証システムにおいて、
前記検査符号は、前記条件を満たすファイルのメタデータの属性の内の、少なくとも一部の属性についてのハッシュチェーンであることを特徴とするファイル群整合性検証システム。
【請求項４】
検査符号生成手段と、不整合検出手段と、第１および第２の記憶装置と、差分データ記憶手段と、差分データ抽出手段と、差分データ適用手段と、適用条件記憶手段と、ファイル依存関係分析手段と、適用条件判定手段と、を備えたコンピュータシステムによるファイル群整合性検証方法であって、
基準時点において、前記検査符号生成手段が、指定された条件を満たすファイルから構成される第１のファイル群について、その特徴を一意に表す第１の検査符号を、前記第１のファイル群に属するファイルのメタデータに基づいて生成し、
前記基準時点以降の検証時点において、前記検査符号生成手段が、前記条件を満たすファイルから構成される第２のファイル群について、その特徴を一意に表す第２の検査符号を、前記第２のファイル群に属するファイルのメタデータに基づいて生成し、
前記不整合検出手段が、前記第１の検査符号と前記第２の検査符号との不一致をもって前記第１のファイル群と前記第２のファイル群との不整合を検出し、
前記第１および第２の記憶装置にファイルおよびそのメタデータが格納されており、
前記差分データ抽出手段が、前記第１の記憶装置に格納されているファイルの内の、前記基準時点以降に更新されたファイルを前記差分データ記憶手段に記録し、
前記差分データ適用手段が、前記差分データ記憶手段に記録されている差分データを前記第２の記憶装置に展開し、且つ、
前記検査符号生成手段は、前記基準時点においては、前記第１の記憶装置に格納されているファイルの内の前記条件を満たすファイルのメタデータに基づいて前記第１の検査符号を生成し、前記検証時点においては、前記第２の記憶装置に格納されているファイルの内の、前記条件を満たすファイルのメタデータに基づいて前記第２の検査符号を生成し、
前記差分データ適用手段は、前記不整合検出手段によって前記第１のファイル群と前記第２のファイル群との不整合が検出されなかった場合に限り、前記差分データを前記第２の記憶装置に展開し、
さらに、
前記ファイル依存関係分析手段が、前記第２の記憶装置に記録されている実行バイナリファイルと、その実行バイナリファイルが依存している依存ファイルとの依存関係を表す有向グラフであって、１つのノードが１つのファイルに対応し、各ノードには対応するファイルの属性が付されている有向グラフを、ファイルの内容部の特定領域に格納された依存ファイル情報を辿って生成し、生成した有向グラフを前記適用条件記憶手段に記録し、
前記適用条件判定手段が、前記差分データ記憶手段に記録されている差分データに含まれているファイルの属性と、前記適用条件記憶手段に記録されている有向グラフとに基づいて、前記差分データの展開を許可するか否かを判定し、且つ、
前記差分データ適用手段は、前記不整合検出手段によって前記第１のファイル群と前記第２のファイル群との不整合が検出されず、且つ、前記適用条件判定手段によって前記差分データの展開が許可された場合に限り、前記差分データを前記第２の記憶装置に展開する、ことを特徴とするファイル群整合性検証方法。
【請求項５】
コンピュータをファイル群整合性検証システムとして機能させるためのファイル群整合性検証用プログラムであって、
前記コンピュータを、
基準時点において、指定された条件を満たすファイルから構成される第１のファイル群について、その特徴を一意に表す第１の検査符号を、前記第１のファイル群に属するファイルのメタデータに基づいて生成し、前記基準時点以降の検証時点において、前記条件を満たすファイルから構成される第２のファイル群について、その特徴を一意に表す第２の検査符号を、前記第２のファイル群に属するファイルのメタデータに基づいて生成する検査符号生成手段、
前記第１の検査符号と前記第２の検査符号とを比較し、両者の不一致をもって前記１のファイル群と前記第２のファイル群との不整合を検出する不整合検出手段、として機能させ、
第１および第２の記憶装置にファイルおよびそのメタデータが格納されており、
さらに、前記コンピュータを、
前記第１の記憶装置に格納されているファイルの内の、前記基準時点以降に更新されたファイルを差分データ記憶手段に記録する差分データ抽出手段、
前記差分データ記憶手段に記録されている差分データを前記第２の記憶装置に展開する差分データ適用手段、として機能させ、且つ、
前記検査符号生成手段は、前記基準時点においては、前記第１の記憶装置に格納されているファイルの内の前記条件を満たすファイルのメタデータに基づいて前記第１の検査符号を生成し、前記検証時点においては、前記第２の記憶装置に格納されているファイルの内の、前記条件を満たすファイルのメタデータに基づいて前記第２の検査符号を生成し、
前記差分データ適用手段は、前記不整合検出手段によって前記第１のファイル群と前記第２のファイル群との不整合が検出されなかった場合に限り、前記差分データを前記第２の記憶装置に展開し、
さらに、前記コンピュータを、
前記第２の記憶装置に記録されている実行バイナリファイルと、その実行バイナリファイルが依存している依存ファイルとの依存関係を表す有向グラフであって、１つのノードが１つのファイルに対応し、各ノードには対応するファイルの属性が付されている有向グラフを、ファイルの内容部の特定領域に格納された依存ファイル情報を辿って生成し、生成した有向グラフを適用条件記憶手段に記録するファイル依存関係分析手段、
前記差分データ記憶手段に記録されている差分データに含まれているファイルの属性と、前記適用条件記憶手段に記録されている有向グラフとに基づいて、前記差分データの展開を許可するか否かを判定する適用条件判定手段、として機能させ、且つ、
前記差分データ適用手段は、前記不整合検出手段によって前記第１のファイル群と前記第２のファイル群との不整合が検出されず、且つ、前記適用条件判定手段によって前記差分データの展開が許可された場合に限り、前記差分データを前記第２の記憶装置に展開する、
ファイル群整合性検証用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はファイル群の整合性を検証するファイル群整合性検証技術に関し、特にデータ量が巨大な２つのファイル群が異なることを、高速に検証できるファイル群整合性検証技術に関する。
【背景技術】
【０００２】
現在のコンピュータシステムでは、セキュリティ目的でのファイル改ざんの検査、バックアップ・リストア作業に際してのディスク状態の検証、アプリケーションソフトウェアやパッチの頒布における依存ファイルのチェックなど、検証時点のファイル群が、それ以前の基準時点のファイル群と整合するか否か（対応するファイル群が更新されていないか・更新されているか）の判定を求める機会が多い。【０００３】
こうした整合性検証は、基準時点のファイル群と検証時点のファイル群との間で、互いに対応するファイルの内容をビット単位もしくはバイト単位に比較・照合することで容易に実現できる。【０００４】
しかし、近年の二次記憶装置の大容量化に伴い、オペレーティングシステム（ＯＳ）を構成するカーネル・ライブラリ等のバイナリファイル群や、音声・動画ファイル群など、数100ギガバイトに及ぶ巨大なファイル群を扱う場面が増えており、上述した自明な方法では、巨大ファイル群の整合性検証に長時間（数１０分〜数時間）を要することが課題となっている。【０００５】
これまでに開示されている高速な整合性検証技術としては、特許文献１に記載されている「ハッシュ値」を利用したものがある。ハッシュ値は、データに対してハッシュ関数による演算を行うことにより得られる値であり、元のデータのサイズにかかわらず常に一定の長さ（通常、128〜512ビット程度）になるといった特徴や、元のデータが異なれば異なる値になるといった特徴を有する。特許文献１に記載されている技術では、論理ディスクに記録されているデータ全体に対するハッシュ値を基準時点に算出して記録しておき、この記録されているハッシュ値と検証時点に算出したハッシュ値とを比較することにより、整合性を検証するようにしている。ハッシュ値は、論理ディスクのサイズに比較して極めて小さいので、比較処理に要する時間を極めて短くすることができる。また、特許文献１に記載されている技術では、ハッシュ値の算出処理に要する時間を短縮するため、論理ディスクを固定長のセグメントに分割すると共に、並列動作が可能な複数の第１のハッシュ値算出手段と、第２のハッシュ値算出手段とを設けている。そして、各第１のハッシュ値算出手段が並行して自手段に割り当てられたセグメントのハッシュ値を算出し、第２のハッシュ値算出手段が各第１のハッシュ値算出手段で算出されたセグメント毎のハッシュ値に基づいて、論理ディスク全体のハッシュ値を算出するようにしている。【０００６】
また、別の高速な整合性検証技術として、特許文献２に「ネーティブ・データ署名」を用いた方法が開示されている。ここで、ネーティブ・データ署名とは、ファイルの変更自刻や変更操作履歴などに基づいて生成される、ファイルの変更回数（版数）に相当する固定長のデータであり、そのサイズは、ファイルのデータ・ストリームに比較して遥かに小さい。特許文献２に記載されている技術では、データ・ストリームを含む第１のファイルをディスク装置に格納した後、上記データ・ストリームと一意に対応する第１のネーティブ・データ署名を生成して第１のファイルに組み込む。更に、第１のファイルのデータ・ストリームに対して変更を加えた第２のファイルをディスク装置に書き戻した場合、第２のファイル中のデータ・ストリームと一意に対応する第２のネーティブ・データ署名を生成して第２のファイルに組み込む。そして、第１のファイルのデータ・ストリームと第２のファイルのデータ・ストリームとの整合性を検証する場合には、第１のファイルに組み込まれている第１のネーティブ・データ署名と第２のファイルに組み込まれている第２のネーティブ・データ署名とを比較する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２５７５６６号公報
【特許文献２】特許４２８３４４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載されている技術では、ハッシュ値を比較することにより、整合性を検証しているので、ビット単位もしくはバイト単位でデータを比較する場合に比べ、比較処理に要する時間を極めて短くすることができる。また、ハッシュ値を算出する際、並列動作が可能な複数のハッシュ値算出手段を利用してハッシュ値を算出するようにしているので、１個のハッシュ値算出手段を利用してハッシュ値を算出する場合に比較して、ハッシュ値の算出時間を短縮することができる。しかし、特許文献１に記載されている技術では、整合性を検証するデータ全体を対象にしてハッシュ値を算出するようにしているので、並列動作が可能な複数のハッシュ値算出手段を利用してハッシュ値を算出するようにしても、整合性検証対象にするデータのサイズが大きい場合、ハッシュ値算出のために多くの時間が費やされてしまい、その分、整合性検証処理に要する時間が長くなってしまう。【０００９】
また、特許文献２に記載されている技術によれば、第１のファイルに組み込まれているネーティブ・データ署名と、第２のファイルに組み込まれているネーティブ・データ署名とを比較することにより、第１のファイルと第２のファイルとの整合性を検証することができるので、ファイルの内容をビット単位もしくはバイト単位で比較する場合に比較して、比較処理に要する時間を極めて短くすることができる。しかし、特許文献２に記載されている技術では、ファイルの更新操作を常に監視し、データ・ストリームの変更されたファイルがディスク装置（二次記憶装置）に書き戻された場合、上記ファイル中のデータ・ストリームと一意に対応するネーティブ・データ署名を上記ファイルに組み込む処理が必要である。このような処理は通常のＯＳのファイル出力処理では行われていない付加的な処理であるので、ファイルの更新操作を監視する処理およびネーティブ・データ署名をファイルに組み込む処理によって、コンピュータシステムの日常的な運用時におけるファイル出力処理性能が低下してしまうという問題がある。【００１０】
［発明の目的］
そこで、本発明の目的は、整合性の検証対象にするファイル群のサイズが大きい場合、整合性検証処理に要する時間が長くなってしまうという課題、および、整合性検証処理によって日常的なファイル出力処理性能が低下してしまうという課題を解決したファイル群整合性検証システムを提供することにある。
【課題を解決するための手段】
【００１１】
基準時点において、指定された条件を満たすファイルから構成される第１のファイル群について、その特徴を一意に表す第１の検査符号を、前記第１のファイル群に属するファイルのメタデータに基づいて生成し、前記条件を満たすファイルから構成される第２のファイル群について、その特徴を一意に表す第２の検査符号を、前記第２のファイル群に属するメタデータに基づいて生成する検査符号生成手段と、
前記第１の検査符号と前記第２の検査符号とを比較し、両者の不一致をもって前記１のファイル群と前記第２のファイル群との不整合を検出する不整合検出手段とを備える。【００１２】
本発明の他の形態にかかるファイル群整合性検証方法は、
基準時点において、検査符号生成手段が、指定された条件を満たすファイルから構成される第１のファイル群について、その特徴を一意に表す第１の検査符号を、前記第１のファイル群に属するファイルのメタデータに基づいて生成し、
前記基準時点以降の検証時点において、検査符号生成手段が、前記条件を満たすファイルから構成される第２のファイル群について、その特徴を一意に表す第２の検査符号を、前記第２のファイル群に属するファイルのメタデータに基づいて生成し、
不整合検出手段が、前記第１の検査符号と前記第２の検査符号との不一致をもって前記第１のファイル群と前記第２のファイル群との不整合を検出する。【００１３】
また、本発明の他の形態にかかるファイル群整合性検証用プログラムは、
コンピュータをファイル群整合性検証システムとして機能させるためのファイル群整合性検証用プログラムを記録した、コンピュータが読み取り可能な記録媒体であって、
前記コンピュータを、
基準時点において、指定された条件を満たすファイルから構成される第１のファイル群について、その特徴を一意に表す第１の検査符号を、前記第１のファイル群に属するファイルのメタデータに基づいて生成し、前記基準時点以降の検証時点において、前記条件を満たすファイルから構成される第２のファイル群について、その特徴を一意に表す第２の検査符号を、前記第２のファイル群に属するファイルのメタデータに基づいて生成する検査符号生成手段、
前記第１の検査符号と前記第２の検査符号とを比較し、両者の不一致をもって前記１のファイル群と前記第２のファイル群との不整合を検出する不整合検出手段として機能させる。
【発明の効果】
【００１４】
本発明によれば、整合性の検証対象にするファイル群のサイズが大きい場合であっても、コンピュータシステムの日常的な運用時におけるファイル出力性能に悪影響を与えることなく、ファイル群の整合性の検証処理に要する時間を短くできるという効果を得られる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施の形態の構成例を示すブロック図である。
【図２】本発明の第１の実施の形態の処理例を示すフローチャートである。
【図３】本発明の第２の実施の形態の構成例を示すブロック図である。
【図４】本発明の第２の実施の形態の処理例を示すフローチャートである。
【図５】二次記憶装置におけるメタデータの配置例を示す図である。
【図６】本発明の第２の実施の形態における差分データ，フィンガープリント，ファイル名リストの頒布方法の一例を示す図である。
【図７】本発明の第２の実施の形態における差分データ，フィンガープリント，ファイル名リストの頒布方法の別の例を示す図である。
【図８】本発明の第３の実施の形態の構成例を示すブロック図である。
【図９】本発明の第３の実施の形態の処理例を示すフローチャートである。
【図１０】本発明の第３の実施の形態の変形例を示すブロック図である。
【図１１】本発明の第３の実施の形態における依存関係を表す有向グラフの一例を示す図である。
【図１２】フィンガープリントの生成方法の一例を示す図である。
【図１３】フィンガープリントの生成方法の別の例を示す図である。
【図１４】フィンガープリントの生成方法の更に別の例を示す図である。
【図１５】本発明の第４の実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【００１６】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１７】
［本発明の第１の実施の形態］
図１を参照すると、本発明の第１の実施の形態は、プログラム制御により動作するコンピュータシステム１が、フィンガープリント生成手段１０１と、フィンガープリント記憶手段１０２と、不整合検出手段１０３と、二次記憶装置１０４と、を備えた構成となっている。
【００１８】
フィンガープリント生成手段１０１は、検査符号生成手段として機能するものである。そして、フィンガープリント生成手段１０１は、整合性の検証対象にするファイル群１０４１を構成するファイルが満たすべき条件を含んだフィンガープリント生成指示がユーザによって入力された場合、上記条件を満たすファイルそれぞれのメタデータを二次記憶装置１０４から入力し、これら一連のメタデータに基づいてファイル群１０４１固有のフィンガープリント（検査符号）ＦＰ１を生成する。そして、生成したフィンガープリントＦＰ１を基準時点のフィンガープリントとしてフィンガープリント記憶手段１０２に記録すると共に、フィンガープリント生成指示に含まれていた条件をフィンガープリント記憶手段１０２に記録する。また、フィンガープリント生成手段１０１は、不整合検出手段１０３からフィンガープリント生成指示が入力された場合、この指示に含まれている条件を満たすファイルを構成要素とするファイル群１０４１についてのフィンガープリントＦＰ２を生成し、生成したフィンガープリントＦＰ２を検証時点のフィンガープリントとして不整合検出手段１０３に返却する。ここで、フィンガープリント生成指示に含ませる条件としては、例えば、整合性の検証対象にするファイル群に含ませるファイルのファイル名が載ったファイル名リストや、整合性の検証対象にするファイル群に含ませるファイルの作成日時が載った作成日時リストなどを用いることができ、以下の説明では、ファイル名リストを用いた場合を例にして説明を行う。
【００１９】
不整合検出手段１０３は、ユーザによって検証指示が入力されると、フィンガープリント記憶手段１０２からファイル名リストを入力し、このファイル名リストを含んだフィンガープリント生成指示をフィンガープリント生成手段１０１に対して出力する。そして、フィンガープリント生成指示に応答してフィンガープリント生成手段１０１から検証時点のフィンガープリントＦＰ２が返却されると、それとフィンガープリント記憶手段１０２に記録されている基準時点のフィンガープリントＦＰ１とを比較する。そして、両者が一致しない場合は、検証対象にしているファイル群が不整合の状態にあることをユーザに通知する。
【００２０】
なお、フィンガープリント生成手段１０１および不整合検出手段１０３は、コンピュータによって実現可能であり、コンピュータによって実現する場合には、例えば、次のようにする。コンピュータをフィンガープリント生成手段１０１および不整合検出手段１０３として機能させるためのプログラムを記録したディスク、半導体メモリ、その他の記録媒体を用意し、コンピュータに上記プログラムを読み取らせる。コンピュータは、読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上に、フィンガープリント生成手段１０１および不整合検出手段１０３を実現する。
【００２１】
[第１の実施の形態の動作の説明]
次に、図１及び図２のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００２２】
先ず、ユーザが図示を省略したキーボードなどの入力手段からフィンガープリント生成手段１０１に対してフィンガープリント生成指示を入力する。このフィンガープリント生成指示には、ファイル名リストＬが含まれている。ファイル名リストＬは、ファイル名を要素とするリストであり、整合性の検証対象にするファイル群１０４１を構成する各ファイルのファイル名が列挙されている。より具体的には、ファイル名リストＬには、ＯＳカーネル、ライブラリ、アプリケーションのバイナリファイルのファイル名や、重要データが格納されているファイルのファイル名など、ファイル群１０４１を構成する各ファイルのファイル名が列挙されている。なお、以下の説明では、ファイル名リストＬには、ファイル名ｆ１〜ｆＮが列挙されているとする。また、以下の説明では、ファイル名ｆのファイルを単にファイルｆと記す場合もある。
【００２３】
フィンガープリント生成手段１０１は、ユーザから入力されたフィンガープリント生成指示を受け付ける（図２のステップＳ１）。次に、フィンガープリント生成手段１０１は、フィンガープリント指示に含まれているファイル名リストＬの要素ｆ１〜ｆＮのそれぞれについて、その要素ｆ１〜ｆＮに対応するメタデータＭ[f1]〜Ｍ[fN]を二次記憶装置１０４から入力する。更に、ファイル名リストＬにファイル名が載っているファイルを構成要素としたファイル群１０４１についてのフィンガープリントＦＰ１を、入力したメタデータＭ[f1]〜Ｍ[fN]に基づいて生成する（ステップＳ２）。ここで、メタデータＭ[ｆ]とは、ファイルｆのファイル名、タイムスタンプ、ファイルサイズなどを含む、ファイルｆの二次的な属性であり、ファイルｆの内容を含まないデータセットである。
【００２４】
一般的なＯＳのファイルシステムにおいて、メタデータＭ[f]は、二次記憶装置１０４の特定領域に格納されたデータであって、ファイルｆの内容のデータ長に比べて極小さいサイズのデータである。たとえば、Windows OSのファイルシステム（NTFS）では、任意のファイルｆに対応するメタデータＭ[f]は、MFT（マスタファイルテーブル）とよばれる領域に、４Ｋバイト以内の固定長レコードとして格納される（図５参照）。また、フィンガープリント生成手段１０１は、MFTを先頭から1度走査することで、全てのメタデータに格納されたファイル名、タイムスタンプ、ファイルサイズに関する情報を取得できる。
【００２５】
メタデータＭ[f1]〜Ｍ[fN]からフィンガープリントを生成する方法は、ファイルｆ１〜ｆＮの何れかの内容が更新されたときに、更新前と更新後とでフィンガープリントの値が異なるものになるという性質をもつものであれば、任意の方法を用いてよい。一例として、メタデータＭ[f1]〜Ｍ[fN]を、それに含まれているファイル名が辞書順となるように連結したベクタを生成する方法が挙げられる（図１２参照）。ファイルｆ１〜ｆＮの内の何れかの内容が更新された場合、メタデータＭ[f1]〜Ｍ[fN]の内の何れかの値（例えば、タイムスタンプやファイルサイズ）が変化するので、メタデータＭ[f1]〜Ｍ[fN]を連結したベクタ（フィンガープリント）の値も更新前とは異なる値になる。
【００２６】
後述するフィンガープリントの比較処理にかかる時間を短くするために、より好適には、フィンガープリントそのもののデータサイズが小さいことが望ましい。具体的には、メタデータＭ[f1]〜Ｍ[fN]の一部の属性値に関する統計量を算出し、それをフィンガープリントとする。例えば、メタデータＭ[f1]〜Ｍ[fN]に含まれる一部の属性に関する統計量として、共通するタイムスタンプの値とその出現回数とを算出し、それをフィンガープリントとするようにしてもよい（図１３参照）。図１３の例は、タイムスタンプ「ＴＳ１」を含むメタデータが２個、タイムスタンプ「ＴＳ２」を含むメタデータが１個であることを示している。また、より高い整合性の検証精度を得るために、タイムスタンプとファイルサイズとの組について、共通するタイムスタンプとファイルサイズとの組と、その出現回数とを算出し、それをフィンガープリントとするようにしてもよい。メタデータの一部の属性値の統計量を利用してフィンガープリントを生成する何れの方法においても、前述した理由により、ファイルの更新前後で異なる値のフィンガープリントを生成することができる。また、メタデータの一部の属性値しか利用していないので、メタデータＭ[f1]〜Ｍ[fN]をビット列として連結する前述した方法に比較してデータサイズが小さくなり、後述するフィンガープリントの比較処理に要する時間が短縮される。
【００２７】
その他の好適な一例として、メタデータＭ[f1]〜Ｍ[fN]に対してハッシュチェーンを算出し、それをフィンガープリントとする方法が挙げられる。すなわち、メタデータＭ[f1]〜Ｍ[fN]を、それに含まれるファイル名が辞書順になるように並べたもの「M[f1], M[f2],…, M[fN]」について、ハッシュチェーン「h(M[fN]・h(M[fN-1]・h(…・h(M[f1]))))」を算出し、それをフィンガープリントとする（図１４参照）。ここで関数hは、MD5などのハッシュ関数であり、任意長の入力値に対して固定長の出力値を出力し、当該出力値は異なる入力値について高確率に異なる値となる性質をもつ。また、メタデータＭ[f1]〜Ｍ[fN]に含まれる属性値の一部についてハッシュチェーンを算出し、それをフィンガープリントとする方法を採用することもできる。例えば、メタデータＭ[f1]〜Ｍ[fN]に含まれるファイル名を辞書順に並べたもの「f1, f2,…, fN」について、ハッシュチェーン「h(fN・h(fN-1・h(…・h(f1))))」を算出し、それをフィンガープリントとする。ハッシュチェーンを算出し、それをフィンガープリントとする方法を採用することで、フィンガープリントは固定長（たとえば256ビット）で表されるようになり、ファイル内容のサイズやファイル名リストＬの要素数が増大しても、フィンガープリントの比較にかかる計算時間が一定となるという効果が得られる。
【００２８】
フィンガープリント生成手段１０１は、上述したようにして生成したフィンガープリントＦＰ１を、基準時点のフィンガープリントとしてフィンガープリント記憶手段１０２に記録すると共に、フィンガープリント生成指示に含まれていたファイル名リストＬもフィンガープリント記憶手段１０２に記録する（ステップＳ３）。以上で、基準時点での処理が完了する。
【００２９】
その後、ファイル名リストＬに名前が載っているファイルを構成要素とするファイル群の内容について、基準時点との整合性を検証したい場合、ユーザは、図示を省略したキーボードなどから、不整合検出手段１０３に対して検証指示を入力する。
【００３０】
これにより、不整合検出手段１０３は、フィンガープリント記憶手段１０２からファイル名リストＬを入力し、このファイル名リストＬを含んだフィンガープリント生成指示をフィンガープリント生成手段１０１に対して出力する。この指示を受け付けたフィンガープリント生成手段１０１は、前述した処理と同様の処理を行うことにより、検証時点のフィンガープリントＦＰ２を生成し、それを不整合検出手段１０３に返却する（ステップＳ４）。
【００３１】
不整合検出手段１０３は、検証時点のフィンガープリントＦＰ２を受け取ると、フィンガープリント記憶手段１０２から基準時点のフィンガープリントＦＰ１を入力し、両者を比較する（ステップＳ５）。そして、両者が一致すれば、基準時点と検証時点でファイル群１０４１が整合していることをユーザに通知し（ステップＳ６）、そうでなければ、不整合の状態にあることをユーザに通知する（ステップＳ７）。
【００３２】
[第１の実施の形態の効果]
次に、本実施の形態の効果について説明する。
【００３３】
本実施の形態によれば、整合性の検証対象にするファイル群のサイズが大きい場合であっても、コンピュータシステムの日常的な運用時におけるファイル出力性能に悪影響を与えることなく、ファイル群の整合性の検証処理に要する時間を短縮できるという効果を得られる。その理由は、ファイル群を構成するファイルのメタデータに基づいて生成したフィンガープリント（検査符号）を利用して、ファイル群の整合性を検証するようにしているからである。一般的なＯＳでは、メタデータのサイズは数Ｋバイト〜数１０Ｋバイトであり、ファイルのサイズに比較して極めて小さいので、メタデータに基づいてフィンガープリントを生成することにより、フィンガープリントの生成処理に要する時間を短くすることができ、その分、整合性の検証処理に要する時間を短くすることができる。また、メタデータは、一般的なＯＳが行う通常の処理によって二次記憶装置１０４の所定領域（例えば、マスタファイルテーブル）に記録されるものであり、特許文献２に記載されている技術のように、通常のＯＳでは行われていない、ファイルの更新操作を監視する処理およびネーティブ・データ署名を二次記憶装置１０４へ書き出す処理を行う必要がないので、コンピュータシステムの日常的な運用時におけるファイル出力性能に悪影響を与えることはない。
【００３４】
また、本実施の形態では、フィンガープリントを、メタデータの属性値の内の、一部の属性値の出現度数分布としたので、フィンガープリントのサイズを小さくすることができ、その結果、フィンガープリントの比較処理に要する時間を短くすることができる。
【００３５】
また、本実施の形態では、フィンガープリントを、メタデータの属性値の内の少なくとも一部の属性値についてのハッシュチェーンとしたので、フィンガープリントは固定長となり、その結果、検証対象にするファイル群に含まれるファイルのファイル数やファイルサイズにかかわらず、フィンガープリントの比較処理に要する時間を一定にすることができる。
【００３６】
[本発明の第２の実施の形態]
次に、本発明の第２の実施の形態について詳細に説明する。本実施の形態は、第１のコンピュータシステムから第２のコンピュータシステムに対してソフトウェアを頒布する際にファイル群の整合性を検証するようにしている。
【００３７】
図３を参照すると、本発明の第２の実施の形態は、プログラム制御により動作するコンピュータシステム１ａ，２ａを備える。
【００３８】
コンピュータシステム１ａは、フィンガープリント生成手段１０１ａと、二次記憶装置１０４と、差分データ抽出手段１０５とを備えると共に、フィンガープリント記憶手段１０２と差分データ記憶手段１０６が接続されている。
【００３９】
フィンガープリント生成手段１０１ａは、ユーザから入力されるフィンガープリント生成指示に応答して、二次記憶装置１０４に格納されている全てのファイルのメタデータを走査し、上記各ファイルのファイル名が載ったファイル名リストＬを生成する。即ち、ファイル群１０４１を構成するファイルのファイル名が載ったファイル名リストＬを生成する。更に、フィンガープリント生成手段１０１ａは、ファイル群１０４１についてのフィンガープリントＦＰ１を、ファイル群１０４１に含まれる各ファイルのメタデータに基づいて生成し、生成したフィンガープリントＦＰ１を基準時点のフィンガープリントとしてフィンガープリント記憶手段１０２に記録する。また、ファイル名リストＬもフィンガープリント記憶手段１０２に記録する。
【００４０】
フィンガープリント記憶手段１０２は、フィンガープリント生成手段１０１ａによって基準時点のフィンガープリントＦＰ１およびファイル名リストが記録される記録媒体であり、たとえばコンパクトディスクやＵＳＢメモリなどの可搬な不揮発性メモリや、ネットワーク上のファイル共有サーバなどを含む。
【００４１】
差分データ抽出手段１０５は、ユーザから入力される差分データ抽出指示に応じて、上記基準時点以降に変更・追加された二次記憶装置１０４上の全てのファイル（メタデータおよびファイル内容）を差分データとして抽出し、差分データ記憶手段１０６に記録する。
【００４２】
差分データ記憶手段１０６は、差分データ抽出手段１０５によって差分データが記録される記録媒体であり、たとえばコンパクトディスクやＵＳＢメモリなどの可搬な不揮発性メモリや、ネットワーク上のファイル共有サーバなどを含む。なお、差分データ記憶手段１０６とフィンガープリント記憶手段１０２は、同一媒体であってもよい。
【００４３】
フィンガープリント生成手段１０１ａおよび差分データ抽出手段１０５は、例えば、コンピュータをフィンガープリント生成手段１０１ａおよび差分データ抽出手段１０５として機能させるためのプログラムをコンピュータに読み取らせ、コンピュータに上記プログラムに従った動作を行わせることにより実現することができる。
【００４４】
また、コンピュータシステム２ａは、不整合検出手段１０３ａと、フィンガープリント生成手段２０１と、二次記憶装置２０４と、差分データ適用手段２０５と、を有する。
【００４５】
不整合検出手段１０３ａは、ユーザから入力される整合性検証指示に応答して、フィンガープリント記憶手段１０２に記録されているファイル名リストＬを含んだフィンガープリント生成指示をフィンガープリント生成手段２０１に対して出力する。そして、この指示に応答してフィンガープリント生成手段２０１から返却された検証時点のフィンガープリントＦＰ２と、フィンガープリント記憶手段１０２に記録されている基準時点のフィンガープリントＦＰ１とを比較し、両者が一致しているか否かを判定する。
【００４６】
フィンガープリント生成手段２０１は、不整合検出手段１０３ａからのフィンガープリント生成指示に応答して、上記指示中のファイル名リストによって特定されるファイルを構成要素としているファイル群２０４１に対するフィンガープリントＦＰ２を、ファイル群２０４１を構成している各ファイルのメタデータに基づいて生成する。そして、生成したフィンガープリントＦＰ２を不整合検出手段１０３ａに返却する。
【００４７】
差分データ適用手段２０５は、不整合検出手段１０３ａの比較結果が比較一致であった場合、差分データ記憶手段１０６に格納された差分データを参照しながら、二次記憶装置２０４上の対応するファイルを更新または追記する。
【００４８】
なお、不整合検出手段１０３ａ、フィンガープリント生成手段２０１、および、差分データ適用手段２０５は、コンピュータを不整合検出手段１０３ａ、フィンガープリント生成手段２０１、および、差分データ適用手段２０５と機能させるためのプログラムをコンピュータに読み取らせ、コンピュータに上記プログラムに従った動作を行わせることにより実現できる。
【００４９】
[第２の実施の形態の動作の説明]
次に、図３及び図４のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００５０】
まず、コンピュータシステム１ａのフィンガープリント生成手段１０１ａが、ユーザから入力されたフィンガープリント生成指示に応答して、二次記憶装置１０４に格納された全てのファイルに対するメタデータを走査し、ファイル名リストＬを生成する（図４のステップＴ１）。そして、ファイル名リストＬを参照しながら、第1の実施の形態におけるステップＳ２およびＳ３と同様の動作で、ファイル名リストＬに名前が載っているファイルを構成要素とするファイル群１０４１についてのフィンガープリントＦＰ１を生成し、生成したフィンガープリントＦＰ１およびファイル名リストＬをフィンガープリント記憶手段１０２に記録する（ステップＴ２）。なお、本実施の形態では、二次記憶装置１０４に格納されている全てのファイルを構成要素とするファイル群１０４１についてのフィンガープリントＦＰ１を生成するようにしているが、第１の実施の形態と同様に、ユーザによって入力された条件を満たすファイルを構成要素とするファイル群についてのフィンガープリントＦＰ１を生成するようにしてもよい。但し、このようにした場合には、第１の実施の形態と同様に、ユーザによって入力された条件をフィンガープリント記憶手段１０２に記録する必要がある。また、ユーザが入力する条件として、二次記憶装置１０４に格納されている全て或いは一部のファイルのファイル名が載っているファイル名リストを入力するようにしてもよい。
【００５１】
その後、コンピュータシステム１ａのユーザは、ＯＳのアップデート、新規アプリケーションのインストールなどを行った後、差分データ抽出手段１０５に対して差分データ抽出指示を入力する。これにより、差分データ抽出手段１０５は、ＯＳのアップデートファイルやインストールされたアプリケーションのバイナリデータなどの更新データ及び追加データを含む差分データＤを作成して、差分データ記憶手段１０６に格納する（ステップＴ３）。その際、差分データ抽出手段１０５は、二次記憶装置１０４上のメタデータに含まれるタイムスタンプ情報が、前記基準時点以降であることで、差分データとして抽出すべき更新データおよび追加データに対応するファイルを同定する。
【００５２】
以上のステップＴ１〜Ｔ３を行なった後、コンピュータシステム１ａのユーザは、フィンガープリント記憶手段１０２および差分データ記憶手段１０６を他のコンピュータに頒布する（ステップＴ４）。頒布の方法は、ファイル名リストＬ、基準時点のフィンガープリントＦＰ１、および、差分データＤを他のコンピュータシステムから参照可能にする任意の方法を用いてよい。具体的な一例としては、フィンガープリント記憶手段１０２および差分データ記憶手段１０６を、コンパクトディスクやＵＳＢメモリなどの可搬な不揮発性メモリ媒体で構成し、当該媒体またはそのコピーを頒布する形態を採ることができる（図６参照）。また、ネットワーク上のファイル共有サーバ装置などで、フィンガープリント記憶手段１０２および差分データ記憶手段１０６を構成して、他のコンピュータと当該ファイル共有サーバ装置を共有する形態をとってもよい（図７参照）。
【００５３】
次に、コンピュータシステム２ａのユーザは、頒布されたフィンガープリント記憶手段１０２および差分データ記憶手段１０６をコンピュータシステム２ａに接続した後、不整合検出手段１０３ａに対して整合性検証指示を入力する。これにより、不整合検出手段１０３ａは、フィンガープリント記憶手段１０２に記録されているファイル名リストＬを入力し、上記ファイル名リストＬを含んだフィンガープリント生成指示をフィンガープリント生成手段２０１に対して出力する。フィンガープリント生成手段２０１は、フィンガープリント生成指示を受け付けると、前述した第１の実施の形態におけるステップＳ４と同様の動作を行い、二次記憶装置２０４に記録されているファイルの内の、ファイル名リストＬに名前が載っているファイルを構成要素としたファイル群２０４１についてのフィンガープリントＦＰ２を生成する。そして、生成したフィンガープリントＦＰ２を検証時点のフィンガープリントとして不整合検出手段１０３ａに返却する（ステップＴ５）。
【００５４】
不整合検出手段１０３ａは、フィンガープリント生成手段２０１からフィンガープリントＦＰ２が返却されると、それとフィンガープリント記憶手段１０２に記録されている基準時点のフィンガープリントＦＰ１を比較し、両者が一致するか否かを判定する（ステップＴ６）。
【００５５】
その後、不整合検出手段１０３ａが、フィンガープリントＦＰ１，ＦＰ２が一致すると判定した場合は、差分データ適用手段２０５は、差分データ記憶手段１０６に格納された差分データＤを、二次記憶装置２０４に書き出し、既存ファイルの更新または新規ファイルの追加を行なう（ステップＴ７）。この際、不整合検出手段１０３ａはフィンガープリントＦＰ１，ＦＰ２が一致する旨をユーザに通知し、ユーザが改めて差分データ適用手段２０５に差分データの適用を指示する方法をとってもよい。または、不整合検出手段１０３ａが適用指示信号を差分データ適用手段２０５に出力する方法を用いてもよい。
【００５６】
一方、不整合検出手段１０３ａは、フィンガープリントＦＰ１，ＦＰ２が一致しないと判定した場合は、差分データを安全に適用できる必要条件である「差分データを適用する対象ファイル群の整合」が満たされていないことをユーザに通知し、差分データの適用を禁止する（ステップＴ８）。
【００５７】
[第２の実施の形態の効果]
本実施の形態によれば、コンピュータシステム１ａで作成した差分データＤを、コンピュータシステム２ａに適用する際に発生し得る、アプリケーションとライブラリ間の不整合などといった障害を事前に且つ高速に検知することができるため、性能低下を極わずかに抑えながら、より安全なソフトウェア配布を行うことができる。その理由は、コンピュータシステム２ａに差分データＤを適用する際、基準時点においてフィンガープリント生成手段１０１ａで生成されたフィンガープリントＦＰ１と、検証時点においてフィンガープリント生成手段２０１で生成されたフィンガープリントＦＰ２とを比較し、両者が不一致の場合、差分データＤの適用を禁止するようにしているからである。
【００５８】
不整合検出ステップを含むことを特徴とする従来のソフトウェア配布方法の一例として、特開平１１−８５５２８に開示された「版数」に基づくソフトウェア配布方法が挙げられる。しかし、この方法は、版数の計測のためにソフトウェア配布サーバをすべてのコンピュータシステムに接続し、常時、全てのコンピュータシステムにおけるファイル更新を監視する必要がある。これに対して、本発明の第２の実施の形態によれば、特別なソフトウェア配布サーバの設置が不要であるため、配布システム全体の導入・運用コストを低減できる。また、コンピュータシステムにおけるファイル更新を監視する必要がないため、日常的なコンピュータシステム運用における性能低下の課題を解決できる。
【００５９】
[本発明の第３の実施の形態]
次に、本発明の第３の実施の形態について詳細に説明する。前述した第２の実施の形態では、差分データＤの頒布元のコンピュータシステムのファイル群１０４１と、差分データＤの適用先（頒布先）のコンピュータシステムのファイル群２０４１とが整合していることを条件にして差分データＤを適用先のコンピュータシステムに適用するようにしたが、本実施の形態では、更に、適用先のコンピュータシステム固有の適用条件も考慮して差分データＤを適用するか否かを判定する。
【００６０】
ここで適用条件とは、差分データＤに含まれるファイルが、当該差分データＤの適用先のコンピュータシステムにのみ含まれるアプリケーションと競合しない条件である。たとえば、適用先のコンピュータシステムに導入済みのアプリケーションが、特定バージョンのライブラリにしか対応しておらず、差分データＤに異なるバージョンの当該ライブラリが含まれている場合、差分データＤの適用によって、アプリケーションが動作しなくなる可能性がある。ここで、適用条件として、上記ライブラリの特定バージョンを指定し、差分データが本適用条件に合致しない場合に差分データ適用を中断すれば、上述した問題の発生を防止できる。
【００６１】
本実施の形態は、図３に示したシステムにおいて、コンピュータシステム２ａの代わりに図８に示したコンピュータシステム２ｂを使用することにより実現される。コンピュータシステム２ｂは、差分データ適用手段２０５の代わりに差分データ適用手段２０５ｂを備えている点、適用条件判定手段２０６を備えている点、および、適用条件記憶手段２０７を備えている点が図３に示したコンピュータシステム２ａと相違している。
【００６２】
適用条件記憶手段２０７には、コンピュータシステム２ｂ固有の適用条件が記録されている。適用条件判定手段２０６は、差分データ記憶手段１０６に記録されている差分データＤ中の全てのファイルが、適用条件記憶手段２０７に記録されている適用条件を満たすか否かを判定する。差分データ適用手段２０５ｂは、不整合検出手段１０３ａによってフィンガープリントＦＰ１，ＦＰ２が一致すると判定され、且つ、適用条件判定手段２０６によって差分データＤが適用条件に合致すると判定された場合、差分データＤを二次記憶装置２０４に適用（展開）する。
【００６３】
なお、不整合検出手段１０３ａ、フィンガープリント生成手段２０１、差分データ適用手段２０５ｂ、および、適用条件判定手段２０６は、コンピュータによって実現可能であり、コンピュータによって実現する場合は、例えば、次のようにする。コンピュータを不整合検出手段１０３ａ、フィンガープリント生成手段２０１、差分データ適用手段２０５ｂ、および、適用条件判定手段２０６として機能させるためのプログラムを記録したディスク、半導体メモリ、その他の記録媒体を用意し、コンピュータに上記プログラムを読み取らせる。コンピュータは、読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上に、不整合検出手段１０３ａ、フィンガープリント生成手段２０１、差分データ適用手段２０５ｂ、および、適用条件判定手段２０６を実現する。
【００６４】
[第３の実施の形態の動作の説明]
次に、本実施の形態の動作について説明する。なお、コンピュータシステム１ａの動作は、前述した第２の実施の形態と同様であるので、ここでは、図９のフローチャートを参照してコンピュータシステム２ｂの動作についてのみ説明する。
【００６５】
コンピュータシステム２ｂのユーザは、頒布されたフィンガープリント記憶手段１０２および差分データ記憶手段１０６をコンピュータシステム２ｂに接続した後、不整合検出手段１０３ａに対して整合性検証指示を入力する。これにより、不整合検出手段１０３ａは、フィンガープリント生成手段２０１を利用して検証時点のフィンガープリントＦＰ２を生成する（ステップＴ５）。
【００６６】
その後、不整合検出手段１０３ａは、ステップＴ５で生成したフィンガープリントＦＰ２と、フィンガープリント記憶手段１０２に記録されている基準時点のフィンガープリントＦＰ１とを比較する（ステップＴ６）。
【００６７】
そして、フィンガープリントＦＰ１，ＦＰ２が不一致の場合は、不整合検出手段１０３ａは、ユーザにその旨を通知し、差分データＤの適用を禁止する（ステップＴ８）。
【００６８】
これに対して、フィンガープリントＦＰ１，ＦＰ２が一致している場合は、適用条件判定手段２０６が、差分データ記憶手段１０６内の差分データＤを参照して、当該差分データＤに含まれる各ファイルが、適用条件記憶手段２０７に記録されている適用条件を満たすかどうかを判定し（ステップＴ９）、満たす場合は当該差分データＤを二次記憶装置２０４に適用し（ステップＴ７）、さもなければ差分データＤの適用を禁止する（ステップＴ８）。
【００６９】
「適用条件」として、ファイルサイズの上限など、差分データＤに含まれるファイルのメタデータや内容に関する任意の条件を用いてよいが、好適な一例としては「コンピュータシステム２ｂ固有のファイル依存関係」を用いることが望ましい。
【００７０】
ファイル依存関係とは、コンピュータシステム１ａには存在せず、コンピュータシステム２ｂにのみ存在するファイル（以下、固有ファイル）が要求する依存ファイルの条件である。たとえば固有ファイルがあるアプリケーションの実行バイナリファイルであった場合、上記条件は、当該ファイルの実行に必要となるライブラリやドライバなどの依存ファイルを同定するための、バージョン情報やタイムスタンプ情報などといった、メタデータに関する条件である。
【００７１】
一般にファイル依存関係をユーザが直接入力することは困難であるため、図１０に示すように、コンピュータシステム２ｂに、さらにファイル依存関係分析手段２０８を設けてもよい。なお、ファイル依存関係分析手段２０８もコンピュータをプログラム制御することにより実現可能である。
【００７２】
ファイル依存関係分析手段２０８は、二次記憶装置２０４に記録されている全ての実行バイナリファイルについて、ファイルの内容部の特定領域に格納された依存ファイル情報を辿って、図１１に示すようなファイル依存関係に相当する有向グラフを生成し、適用条件記憶手段２０７に記録する。図１１の有向グラフにおいて、各ノードＮ１，Ｎ２，…，Ｎ７，…は、それぞれ１つのファイルに対応しており、ノード内の文字列は、対応するファイルのファイル名を示している。また、始点ノードＮ１，Ｎ２，…は実行バイナリファイルに対応し、入力辺を持つノードＮ３，Ｎ４，…，Ｎ７，…は、実行バイナリファイルの実行に必要な依存ファイルに対応している。ノードＮ３，Ｎ４，…，Ｎ７，…には、対応する依存ファイルの属性「バージョンおよびタイムスタンプ」が付されている。ファイル依存関係分析手段２０８は、この属性「バージョンおよびタイムスタンプ」をファイルのメタデータから取得する。
【００７３】
適用条件判定手段２０６は、図１１に示した有向グラフを用いて、差分データＤの適用可否を判定する。具体的には、適用条件判定手段２０６は、有向グラフの始点ノードの内、差分データＤに含まれていない実行バイナリファイルに対応する始点ノードを同定する。そして、同定した始点ノードの内の１つに注目し、注目ノードから到達可能なノードの中に、差分データＤに含まれている依存ファイルと対応するノードがあるか否かを、例えば、ファイル名に基づいて判定する。そして、そのようなノードが存在する場合には、ノードに付されている属性と、差分データＤ中の対応するファイルの属性とを比較し、不一致であれば、差分データＤの適用を禁止する。これに対して、属性が一致していれば、上記同定した始点ノードの中に未注目の始点ノードが存在するか否かを調べる。そして、未注目のノードがなければ、差分データＤの適用を許可する。これに対して、未注目のノードが存在する場合には、未注目のノードの内の１つに注目し、前述した処理と同様の処理を行う。
【００７４】
[第３の実施の形態の効果]
本実施の形態によれば、コンピュータシステム２ｂに差分データＤを適用することにより発生し得る、コンピュータシステム２ｂ固有の固有ファイルに対応するアプリケーションが動作しなくなるといった事態の発生を防止することができる。その理由は、適用条件記憶手段２０７に記録されている、コンピュータシステム２ｂ固有の固有ファイルが依存している依存ファイルの満たすべき属性と、差分データＤに含まれる属性とに基づいて、差分データの適用を許可するか否かを判定する適用条件判定手段２０６を備えているからである。
【００７５】
また、本実施の形態によれば、ユーザに負担をかけることなく、コンピュータシステム２ｂ固有の固有ファイルに対応するアプリケーションが動作しなくなるといった事態の発生を防止することができる。その理由は、実行バイナリファイルと依存ファイルとの依存関係を示す有向グラフであって、１つのノードが１つのファイルに対応し、各ノードには、そのノードに対応するファイルの属性が付されている有向グラフを、ファイルの内容部の特定領域に格納された依存ファイル情報を辿って生成するファイル依存関係分析手段２０８と、ファイル依存関係分析手段２０８が生成した有向グラフを利用して差分データＤを適用する否かを判定する適用条件判定手段２０６を備えているからである。
【００７６】
[本発明の第４の実施の形態]
次に、本発明の第４の実施の形態について説明する。図１５を参照すると、本実施の形態にかかるファイル群整合性検証システムは、検査符号生成手段１０と、不整合検証手段２０とを備える。
【００７７】
検査符号生成手段１０は、基準時点において、指定された条件を満たすファイルから構成される第１のファイル群について、その特徴を一意に表す第１の検査符号を、上記第１のファイル群に属するファイルのメタデータに基づいて生成する。第１の検査符号は、第１のファイル群が変更された場合、異なるものになる。更に、検査符号生成手段１０は、上記条件を満たすファイルから構成される第２のファイル群について、その特徴を一意に表す第２の検査符号を、上記第２のファイル群に属するメタデータに基づいて生成する。
【００７８】
不整合検出手段２０は、上記第１の検査符号と上記第２の検査符号とを比較し、両者の不一致をもって上記第１のファイル群と上記第２のファイル群との不整合を検出する。
【００７９】
この構成によれば、整合性の検証対象にするファイル群のサイズが大きい場合であっても、コンピュータシステムの日常的な運用時におけるファイル出力性能に悪影響を与えることなく、ファイル群の整合性の検証処理に要する時間を短縮することができる。その理由は、ファイル群を構成するファイルのメタデータに基づいて生成した検査符号を利用してファイル群の整合性を検証するようにしているからである。
【００８０】
この場合、上記ファイル群整合性検証システムは、
ファイルおよびそのメタデータが格納された記憶装置を備え、
上記検査符号生成手段は、上記基準時点および上記検証時点において、それぞれ、上記記憶装置に格納されているメタデータの内の、上記条件を満たすファイルのメタデータに基づいて、上記第１の検査符号および上記第２の検査符号を生成するのが好適である。
【００８１】
また、上記ファイル群整合性検証システムにおいて、
ファイルおよびそのメタデータが格納された第１および第２の記憶装置と、
差分データ記憶手段と、
上記第１の記憶装置に格納されているファイルの内の、上記基準時点以降に更新されたファイルを上記差分データ記憶手段に記録する差分データ抽出手段と、
上記差分データ記憶手段に記録されている差分データを上記第２の記憶装置に展開する差分データ適用手段とを備え、且つ、
上記検査符号生成手段は、上記基準時点においては、上記第１の記憶装置に格納されているファイルの内の上記条件を満たすファイルのメタデータに基づいて上記第１の検査符号を生成し、上記検証時点においては、上記第２の記憶装置に格納されているファイルの内の、上記条件を満たすファイルのメタデータに基づいて上記第２の検査符号を生成し、
上記差分データ適用手段は、上記不整合検出手段によって上記第１のファイル群と上記第２のファイル群との不整合が検出されなかった場合に限り、上記差分データを上記第２の記憶装置に展開するのが好適である。
【００８２】
これによれば、或るコンピュータシステムの第１の記憶装置に格納されているファイルの内の基準時点以降に更新されたファイル（差分データ）を、他のコンピュータシステムの第２の記憶装置に展開する場合に発生し得る、アプリケーションとライブラリ間の不整合などといった障害を事前に且つ高速に検知することができるため、性能低下を極僅かに抑えながら、より安全なソフトウェア配布を行うことができる。
【００８３】
また、上記ファイル群整合性検証システムにおいて、
上記第２の記憶装置固有の固有ファイルが依存する依存ファイルの満たすべき属性が記録された適用条件記憶手段と、
上記差分データ記憶手段に記録されている差分データに含まれるファイルの属性と上記適用条件記憶手段に記録されている属性とに基づいて、上記差分データの展開を許可するか否かを判定する適用条件判定手段とを備え、且つ、
上記差分データ適用手段は、上記不整合検出手段によって上記第１のファイル群と上記第２のファイル群との不整合が検出されず、且つ、上記適用条件判定手段によって上記差分データの展開が許可された場合に限り、上記差分データを上記第２の記憶装置に展開するのが望ましい。
【００８４】
これによれば、或るコンピュータシステムの第１の記憶装置に格納されているファイルの内の基準時点以降の更新されたファイル（差分データ）を、他のコンピュータシステムの第２の記憶装置に展開する場合に発生し得る、上記他のコンピュータシステム固有の固有ファイルに対応するアプリケーションが動作しなくなるといった事態の発生を防止することができる。その理由は、適用条件記憶手段に記録されている、上記他のコンピュータシステム固有の固有ファイルが依存している依存ファイルの満たすべき属性と、差分データに含まれている属性とに基づいて、差分データの展開を許可するか否かを判定する適用条件判定手段を備えているからである。
【００８５】
また、上記したファイル整合性検証システムにおいて、
適用条件記憶手段と、
上記第２の記憶装置に記録されている実行バイナリファイルと、その実行バイナリファイルが依存している依存ファイルとの依存関係を表す有向グラフであって、１つのノードが１つのファイルに対応し、各ノードには対応するファイルの属性が付されている有向グラフを、ファイルの内容部の特定領域に格納された依存ファイル情報を辿って生成し、生成した有向グラフを上記適用条件記憶手段に記録するファイル依存関係分析手段と、
上記差分データ記憶手段に記録されている差分データに含まれているファイルの属性と、上記適用条件記憶手段に記録されている有向グラフとに基づいて、上記差分データの展開を許可するか否かを判定する適用条件判定手段とを備え、且つ、
上記差分データ適用手段は、上記不整合検出手段によって上記第１のファイル群と上記第２のファイル群との不整合が検出されず、且つ、上記適用条件判定手段によって上記差分データの展開が許可された場合に限り、上記差分データを上記第２の記憶装置に展開するのが好適である。
【００８６】
これによれば、実行バイナリファイルと依存ファイルとの依存関係を示す有向グラフであって、１つのノードが１つのファイルに対応し、各ノードには、そのノードに対応するファイルの属性が付されている有向グラフを、ファイルの内容部の特定領域に格納された依存ファイル情報を辿って生成するファイル依存関係分析手段と、ファイル依存関係分析手段が生成した有向グラフを利用して差分データの展開を許可するか否かを判定する適用条件判定手段とを備えているので、ユーザに負担をかけることなく、差分データの展開先のコンピュータシステムにおいて、そのコンピュータシステム固有の固有ファイルに対応するアプリケーションが動作しなくなるといった事態の発生を防止することができる。
【００８７】
また、上記ファイル群整合性検証システムにおいて、
上記検査符号は、上記条件を満たすファイルのメタデータの属性の内の、一部の属性の出現度数分布であるのが好適である。これによれば、検査符号のサイズを小さくすることができ、その結果、検査符号の比較処理に要する時間を短くすることができる。
【００８８】
また、上記ファイル群整合性検証システムにおいて、
上記検査符号は、上記条件を満たすファイルのメタデータの属性の内の、少なくとも一部の属性についてのハッシュチェーンであることが好適である。これによれば、検査符号は固定長となり、その結果、検証対象にするファイル群に含まれているファイル数やファイルサイズにかかわらず、検査符号の比較処理に要する時間を一定にすることができる。
【００８９】
また、本発明の他の形態であるファイル群整合性検証方法は、
基準時点において、検査符号生成手段が、指定された条件を満たすファイルのメタデータに基づいて、上記条件を満たすファイルを構成要素とする第１のファイル群の特徴を一意に表す第１の検査符号を生成し、
上記基準時点以降の検証時点において、検査符号生成手段が、上記条件を満たすファイルのメタデータに基づいて、上記条件を満たすファイルを構成要素とする第２のファイル群の特徴を一意に表す第２の検査符号を生成し、
不整合検出手段が、上記第１の検査符号と上記第２の検査符号との不一致をもって上記第１のファイル群と上記第２のファイル群との不整合を検出する。
【００９０】
これによれば、整合性の検証対象にするファイル群のサイズが大きい場合であっても、コンピュータシステムの日常的な運用時におけるファイル出力性能に悪影響を与えることなく、ファイル群の整合性の検証処理に要する時間を短くすることができる。その理由は、ファイル群を構成しているファイルのメタデータに基づいて生成した検査符号を利用して、ファイル群の整合性を検証するようにしているからである。
【００９１】
また、本発明の他の形態であるコンピュータが読み取り可能な記録媒体は、
コンピュータをファイル群整合性検証システムとして機能させるためのファイル群整合性検証用プログラムを記録した、コンピュータが読み取り可能な記録媒体であって、
上記コンピュータを、
基準時点において、指定された条件を満たすファイルのメタデータに基づいて、上記条件を満たすファイルを構成要素とする第１のファイル群の特徴を一意に表す第１の検査符号を生成し、上記基準時点以降の検証時点において、上記条件を満たすファイルのメタデータに基づいて、上記条件を満たすファイルを構成要素とする第２のファイル群の特徴を一意に表す第２の検査符号を生成する検査符号生成手段、
上記第１の検査符号と上記第２の検査符号とを比較し、両者の不一致をもって上記１のファイル群と上記第２のファイル群との不整合を検出する不整合検出手段として機能させる。
【００９２】
これによれば、整合性の検証対象にするファイル群のサイズが大きい場合であっても、コンピュータシステムの日常的な運用時におけるファイル出力性能に悪影響を与えることなく、ファイル群の整合性の検証処理に要する時間を短くすることができる。その理由は、ファイル群を構成しているファイルのメタデータに基づいて生成した検査符号を利用して、ファイル群の整合性を検証するようにしているからである。
【００９３】
以上、上記各実施形態を参照して本発明を説明したが、本発明は、上述した実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【００９４】
なお、本発明は、日本国にて２０１０年１月２１日に特許出願された特願２０１０−０１０６７１の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
【産業上の利用可能性】
【００９５】
本発明によれば、重要データの改ざん検査といったセキュリティシステム用途に適用できる。また、バックアップシステムやソフトウェア頒布システムにおける障害可能性の事前検査といった用途にも適用可能である。
【符号の説明】
【００９６】
１，１ａ，２ａ，２ｂ  コンピュータシステム
１０１，１０１ａ  フィンガープリント生成手段
１０２  フィンガープリント記憶手段
１０３，１０３ａ  不整合検出手段
１０４  ファイル群
１０４  二次記憶装置
１０５  差分データ抽出手段
１０６  差分データ記憶手段
２０１  フィンガープリント生成手段
２０４  二次記憶装置
２０５，２０５ｂ  差分データ適用手段
２０６  適用条件判定手段
２０７  適用条件記憶手段
２０８  ファイル依存関係分析手段
１０４１  ファイル群
２０４１  ファイル群
１０  検査符号生成手段
２０  不整合検出手段
【図１】
0005644777.tif 000002
【図２】
0005644777.tif 000003
【図３】
0005644777.tif 000004
【図４】
0005644777.tif 000005
【図５】
0005644777.tif 000006
【図６】
0005644777.tif 000007
【図７】
0005644777.tif 000008
【図８】
0005644777.tif 000009
【図９】
0005644777.tif 000010
【図１０】
0005644777.tif 000011
【図１１】
0005644777.tif 000012
【図１２】
0005644777.tif 000013
【図１３】
0005644777.tif 000014
【図１４】
0005644777.tif 000015
【図１５】
0005644777.tif 000016