(57)【要約】  第１の実行ファイル名、該第１の実行ファイルから所定の方法により算出した第１の識別情報および該第１の実行ファイルの生成に用いられた第１のソースファイル群の情報を対応付けて記憶部に記憶する手順と、第２の実行ファイルから所定の方法により算出した第２の識別情報を算出する手順と、前記第２の識別情報と前記第１の識別情報を比較し、一致した場合に、前記第２の実行ファイルの所定の領域から第３の識別情報を抽出する手順と、前記記憶部から前記第１の実行ファイルに対応付けられた第１のソースファイル群の情報を抽出し、所定の方法により算出した第４の識別情報を算出する手順と、前記第３の識別情報と前記第４の識別情報とを比較し、一致した場合に、前記第２の実行ファイルが前記第１のソースファイル群により生成された旨を通知する。
2012017522.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに
第１の実行ファイル名、該第１の実行ファイルから所定の方法により算出した第１の識別情報および該第１の実行ファイルの生成に用いられた第１のソースファイル群の情報を対応付けて記憶部に記憶する手順と、
第２の実行ファイルから所定の方法により算出した第２の識別情報を算出する手順と、
前記第２の実行ファイル名と同一名の前記第１の実行ファイルに対応付けられた前記第１の識別情報を前記記憶部から取得する手順と、
前記第２の識別情報と前記第１の識別情報を比較し、一致した場合に、前記第２の実行ファイルの所定の領域から第３の識別情報を抽出する手順と、
前記記憶部から前記第１の実行ファイルに対応付けられた第１のソースファイル群の情報を抽出し、所定の方法により算出した第４の識別情報を算出する手順と、
前記第３の識別情報と前記第４の識別情報とを比較し、一致した場合に、前記第２の実行ファイルが前記第１のソースファイル群により生成された旨を通知する手順と、
を実行させるための検証プログラム。
【請求項２】
前記第３の識別情報と前記第４の識別情報とが一致した場合、前記第１のソースファイル群の情報を表示する手順を実行させることを特徴とする請求項１記載の検証プログラム。
【請求項３】
前記第１の識別情報は、前記第１の実行ファイルのハッシュ値であり、前記第２の識別情報は前記第２の実行ファイルのハッシュ値であることを特徴とする請求項１または２記載の検証プログラム。
【請求項４】
前記第３の識別情報は、前記第２の実行ファイルの生成に用いられたソースファイル群に基づくハッシュ値であり、前記第４の識別情報は、前記第１のソースファイル群に基づくハッシュ値であることを特徴とする請求項１乃至３記載の検証プログラム。
【請求項５】
第１の実行ファイル名、該第１の実行ファイルから所定の方法により算出した第１の識別情報および該第１の実行ファイルの生成に用いられた第１のソースファイル群の情報を対応付けて記憶する記憶部と、
第２の実行ファイルから所定の方法により算出した第２の識別情報を算出する手順と、
前記第２の実行ファイル名と同一名の前記第１の実行ファイルに対応付けられた前記第１の識別情報を前記記憶部から取得し、
前記第２の識別情報と前記第１の識別情報を比較し、一致した場合に、前記第２の実行ファイルの所定の領域から第３の識別情報を抽出し、
前記記憶部から前記第１の実行ファイルに対応付けられた第１のソースファイル群の情報を抽出し、所定の方法により算出した第４の識別情報を算出し、
前記第３の識別情報と前記第４の識別情報とを比較し、一致した場合に、前記第２の実行ファイルが前記第１のソースファイル群により生成された旨を通知する
検証部と、
を備える検証装置。
【請求項６】
前記検証部は、前記第３の識別情報と前記第４の識別情報とが一致した場合、前記第１のソースファイル群の情報を表示することを特徴とする請求項５記載の検証装置。
【請求項７】
前記第１の識別情報は、前記第１の実行ファイルのハッシュ値であり、前記第２の識別情報は前記第２の実行ファイルのハッシュ値であることを特徴とする請求項５または６記載の検証装置。
【請求項８】
前記第３の識別情報は、前記第２の実行ファイルの生成に用いられたソースファイル群に基づくハッシュ値であり、前記第４の識別情報は、前記第１のソースファイル群に基づくハッシュ値であることを特徴とする請求項５乃至７記載の検証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行ファイルを検証する検証プログラムおよび検証装置に関する。
【背景技術】
【０００２】
現在、運用環境に配備されている実行ファイルがどのようなソースファイル群から作成されているかを特定するには、人手で管理簿を作成するなどの手段が用いられている。例えば、実行ファイルを作成した時点のソースファイル群をファイルシステム上にまとめて保管しておき、実行ファイル名、実行ファイルのタイムスタンプ、および開発資産リポジトリ内のソースコード群の位置情報を対応付けて管理簿に記入しておくなどの手段が用いられている。【０００３】
しかしながら、実行ファイルと該実行ファイルを作成する際に使用したソースファイル群を関連付けた情報の記載を人手により行うと、記載誤りや管理データ改ざん等のおそれがあり、記録されている情報の正しさを証明することが困難である。【０００４】
それにより、実行ファイルを修正したくても、修正すべきソースファイルが不明であるという問題があった。
また、情報システム監査の際に、システムの完全性（integrity）を証明できないという問題があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０６−２５９２３７号公報
【特許文献２】特開平１０−１７７４７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、実行ファイルと該実行ファイルの構築に用いたソースファイルとの対応が分かるプログラムを提供することである。
【課題を解決するための手段】
【０００７】
実施の形態のプログラムは、コンピュータに、第１の実行ファイル名、該第１の実行ファイルから所定の方法により算出した第１の識別情報および該第１の実行ファイルの生成に用いられた第１のソースファイル群の情報を対応付けて記憶部に記憶する手順と、第２の実行ファイルから所定の方法により算出した第２の識別情報を算出する手順と、前記第２の実行ファイル名と同一名の前記第１の実行ファイルに対応付けられた前記第１の識別情報を前記記憶部から取得する手順と、前記第２の識別情報と前記第１の識別情報を比較し、一致した場合に、前記第２の実行ファイルの所定の領域から第３の識別情報を抽出する手順と、前記記憶部から前記第１の実行ファイルに対応付けられた第１のソースファイル群の情報を抽出し、所定の方法により算出した第４の識別情報を算出する手順と、前記第３の識別情報と前記第４の識別情報とを比較し、一致した場合に、前記第２の実行ファイルが前記第１のソースファイル群により生成された旨を通知する手順と、を実行させる。
【発明の効果】
【０００８】
実施の形態のプログラムによれば、実行ファイルと該実行ファイルの構築に用いたソースファイルとの対応が分かる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態に係るアプリケーション管理システムの構成図である。
【図２】実施の形態に係る記憶部の構成図である。
【図３】実施の形態に係る識別情報付加処理のフローチャートである。
【図４】識別情報ＩＳ１算出時に生成されるファイルの例である。
【図５】実行ファイルＡ１の構成図である。
【図６】実施の形態に係る識別情報検証処理のフローチャートである。
【図７】情報処理装置の構成図である。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照しながら本発明の実施の形態を説明する。
図１は、実施の形態に係るアプリケーション管理システムの構成図である。
アプリケーション管理システム１０１は、識別情報付加装置（開発側）２０１および検証装置（運用側）３０１を備える。【００１１】
識別情報付加装置２０１および検証装置３０１は、例えば、各種処理を行うCentral Processing Unit(CPU)、情報を格納するメモリや記憶部等を備えるサーバやパーソナルコンピュータ等の情報処理装置である。尚、情報処理装置の構成については後述する。識別情報付加装置２０１と検証装置３０１は、Wide Area Network(WAN)やLocal Area Network(LAN)等のネットワークで接続している。尚、識別情報付加装置２０１および検証装置３０１は、単一の情報処理装置内に構築してもよい。【００１２】
識別情報付加装置２０１は、記憶部２０２、実行ファイル構築部２０３、識別情報生成部２０４、情報結合部２０５、および開発側検証部２０６を備える。
記憶部２０２は、ソースファイルＳ１−１、Ｓ１−２、Ｓ２−１、Ｓ２−２および資産管理テーブル２０７を格納する。識別情報付加装置２０１は、階層型ファイルシステムにより記憶部２０２に格納するソースファイルＳ１−１、Ｓ１−２、Ｓ２−１、Ｓ２−２や管理テーブル２０７を管理する。【００１３】
図２は、実施の形態に係る記憶部の構成図である。
ソースファイルＳ１−１、Ｓ１−２、Ｓ２−１、Ｓ２−２は、実行ファイルの生成に用いられるソースコードが記述されたファイルである。【００１４】
ソースファイルＳ１−１およびＳ１−２は、実行ファイルＡ１を生成するために用いられるファイルである。以下、ソースファイルＳ１−１およびＳ１−２をまとめてソースファイル群Ｓ１と呼ぶ。【００１５】
ソースファイルＳ２−１およびＳ２−２は、実行ファイルＡ２を生成するために用いられるファイルである。以下、ソースファイルＳ２−１およびＳ２−２をまとめてソースファイル群Ｓ２と呼ぶ。【００１６】
資産管理テーブル２０７は、ソースファイル群Ｓｎ管理域（ｎ＝１、２）を有する。
ソースファイル群Ｓｎ管理域には、ソースファイルＳｎ−１、Ｓｎ−１の位置情報（ファイルのパス）、ソースファイル群Ｓｎにより生成された実行ファイルＡｎのファイル名である実行ファイルＡｎ名、実行ファイルＡｎから生成された識別情報ＩＡｎが記述されている。さらにソースファイル群Ｓｎから生成された識別情報ＩＳｎが記述される場合もある。【００１７】
実行ファイル構築部２０３は、記憶部２０２からソースファイル群Ｓｎを読み出し、ソースファイル群Ｓｎから実行ファイルＡｎを生成し、実行ファイルＡｎを情報結合部２０５に送信する。【００１８】
識別情報生成部２０４は、記憶部２０２からソースファイル群Ｓｎを読み出し、ソースファイル群Ｓｎに基づいて、識別情報を生成し、識別情報を情報結合部２０５に送信する。【００１９】
情報結合部２０５は、実行ファイルに識別情報を付加し、識別情報が付加された実行ファイルを運用側検証部３０２に送信する。また、情報結合部２０５は、識別情報等の情報を資産管理テーブル２０７に格納する。【００２０】
開発側検証部２０６は、運用側検証部３０２の要求に応じて、識別情報を算出または資産管理テーブル２０７から検索し、識別情報を運用側検証部３０２に送信する。
検証装置３０１は、運用側検証部３０２および表示部３０３を備える。【００２１】
運用側検証部３０２は、実行ファイルの識別情報の算出、実行ファイルに含まれる識別情報の抽出、識別情報の比較などの処理を行う。
表示部３０３は、運用側検証部３０２での検証結果などを表示する。【００２２】
図３は、実施の形態に係る識別情報付加処理のフローチャートである。
以下の実施の形態においては、ソースファイル群Ｓ１から実行ファイルＡ１を生成し、識別情報を付加する場合について説明する。【００２３】
ステップＳ５０１において、識別情報生成部２０４は、記憶部２０２からソースファイル群Ｓ１（ソースファイルＳ１−１、Ｓ１−２）を取得する。
ステップＳ５０２において、実行ファイル構築部２０３は、記憶部２０２からソースファイル群Ｓ１を取得し、コンパイル、リンク、アーカイブを行い、実行ファイルＡ１を生成する。そして、実行ファイル構築部２０３は、実行ファイルＡ１を情報結合部２０５に送信する。【００２４】
ステップＳ５０３において、識別情報生成部２０４は、ソースファイル群Ｓ１から識別情報ＩＳ１を算出し、情報結合部２０５に送信する。
識別情報ＩＳ１の算出方法は、先ずソースファイルのそれぞれについて、ソースファイルのパス（記憶部２０２におけるソースファイル群Ｓ１の最上位階層からの相対パス）とソースファイルのコンテンツのＭＤ５ハッシュ値のペアをリストしたファイル（図４参照）を作成する。そして、作成したファイルのＭＤ５ハッシュ値を計算し、該ハッシュ値を識別情報ＩＳ１とする。【００２５】
なお、識別情報ＩＳ１の算出時にソースファイルの内容をフィルタリングすることで、目的に応じて同一性保証の厳密度を調整可能とすることができる。例えば、ＩＳ１算出時にソースファイル内のコメント部分は削除し、コメントを削除したソースファイルのＭＤ５ハッシュ値を計算することで、アプリロジックに着目した識別情報ＩＳ１が計算できる。すなわち、ソースファイルに対してコメントの変更のみでアプリロジックに変更が無い場合に、同一の識別情報ＩＳ１が算出される。【００２６】
さらに、識別情報生成部２０４は、識別情報ＩＳ１を資産管理テーブル２０７のソースファイル群Ｓ１管理域に記述してもよい。
ステップＳ５０４において、情報結合部２０５は、実行ファイルＡ１に識別情報ＩＳ１を付加し、運用側検証部３０２に送信する。【００２７】
例えば、Java（登録商標）言語で作成された実行ファイルの場合、情報結合部２０５は、jarファイル内のMETA-INF/MANIFEST.MFに識別情報ＩＳ１を書き込む。
図５は、実行ファイルＡ１の構成図である。【００２８】
実行ファイルＡ１は、図５に示すように、実行コード、リソース、識別情報ＩＳ１を含む。実行コードは、CPUが実行可能なコードであり、リソースは実行ファイルＡ１のアイコンや表示する文字列等の情報である。【００２９】
ステップＳ５０５において、情報結合部２０５は、実行ファイルＡ１の識別情報ＩＡ１を算出する。
識別情報ＩＡ１は、実行ファイルＡ１のＭＤ５ハッシュ値を識別情報ＩＡ１とする。例えば、Java言語を使用した実行ファイルの場合、jarファイルのＭＤ５ハッシュ値を識別情報ＩＡ１とする。【００３０】
ステップＳ５０６において、情報結合部２０５は、実行ファイルＡ１の名前（実行ファイルＡ１のファイル名）と識別情報ＩＡ１を資産管理テーブル２０７のソースファイル群Ｓ１管理域に記述する。【００３１】
図６は、実施の形態に係る識別情報検証処理のフローチャートである。
以下の実施の形態においては、識別情報付加装置２０１で生成された実行ファイルＡ１の検証を行う場合を説明する。尚、実行ファイルＡ１は、情報結合部２０５から運用側検証部３０２に送信されているものとする。【００３２】
ステップＳ６０１において、実行ファイルＡ１の識別情報ＩＡ１’を算出する。識別情報ＩＡ１’の算出方法は、上述のステップＳ５０５の識別情報ＩＡ１の算出方法と同様である。実施の形態において、識別情報ＩＡ１’は、実行ファイルＡ１のＭＤ５ハッシュ値を識別情報ＩＡ１’とする。【００３３】
ステップＳ６０２において、運用側検証部３０２は、開発側検証部２０６に実行ファイルＡ１の名前（ファイル名）を送信し、実行ファイルＡ１の識別情報ＩＡ１を要求する。開発側検証部２０６は、実行ファイルＡ１の名前をキーとして資産管理テーブル２０７を検索し、実行ファイルＡ１の識別情報ＩＡ１を読み込む。そして、開発側検証部２０６は、識別情報ＩＡを運用側検証部３０２に送信する。また、開発側検証部２０６は、ソースファイル群Ｓ１管理域内の情報（例えば、ソースファイルＳ１−１位置情報、ソースファイルＳ１−２位置情報など）を運用側検証部３０２に送信する。【００３４】
ステップＳ６０３において、運用側検証部３０２は、識別情報ＩＡ１を受信し、識別情報ＩＡと識別情報ＩＡ１’とを比較し、一致するか否か判定する。識別情報ＩＡと識別情報ＩＡ１’とが一致する場合、制御はステップＳ６０５に進み、一致しない場合、制御はステップＳ６０４に進む。【００３５】
ステップＳ６０４において、運用側検証部３０２は、識別情報ＩＡと識別情報ＩＡ１’とが一致していないので、実行ファイルＡ１は、運用側への配備後に変更されていると判断する。そして、運用側検証部３０２は、実行ファイルＡ１が変更されている旨をユーザに通知、例えば実行ファイルＡ１が変更されている旨を表示部３０３に表示する。【００３６】
ステップＳ６０５において、運用側検証部３０２は、実行ファイルＡ１から識別情報ＩＳ１を抽出する。
ステップＳ６０６において、運用側検証部３０２は、開発側検証部２０６にソースファイル群Ｓ１の識別情報ＩＳ１’の計算を依頼する。【００３７】
開発側検証部２０６は、ソースファイル群Ｓ１の識別情報ＩＳ１’を算出する。識別情報ＩＳ１’の算出方法は、上述のステップＳ５０３の識別情報ＩＳ１の算出方法と同様である。尚、資産管理テーブル２０７に識別情報ＩＳ１が格納されている場合は、開発側検証部２０６は、識別情報ＩＳ１を読み出し、識別情報ＩＳ１を識別情報ＩＳ１’とする。【００３８】
開発側検証部２０６は、識別情報ＩＳ１’を運用側検証部３０２に送信し、運用側検証部３０２は識別情報ＩＳ１’を受信する。
ステップＳ６０７において、運用側検証部３０２は、識別情報ＩＳ１と識別情報ＩＳ１’とを比較し、一致するか否か判定する。識別情報ＩＳ１と識別情報ＩＳ１’とが一致する場合、制御はステップＳ６０８に進み、一致しない場合制御はステップＳ６０９に進む。【００３９】
ステップＳ６０８において、運用側検証部３０２は、識別情報ＩＡ１と識別情報ＩＡ１’とが一致していたので、実行ファイルＡ１は、運用側へ配備された直後の状態と同一であると判断する。そして、運用側検証部３０２は、実行ファイルＡ１が検証装置３０１へ配備された直後の状態と同一である、すなわち実行ファイルＡ１は変更されていない旨をユーザに通知、例えば実行ファイルＡ１が変更されていない旨を表示部３０３に表示する。【００４０】
さらに、運用側検証部３０２は、識別情報ＩＳ１と識別情報ＩＳ１’とが一致していたので、実行ファイルＡ１はソースファイル群Ｓ１により構築されたと判断する。そして、運用側検証部３０２は、実行ファイルＡ１がソースファイル群Ｓ１により構築されている旨をユーザに通知する。例えば、運用側検証部３０２は、ソースファイル群Ｓ１の情報（例えば、ソースファイルＳ１−１、Ｓ１−２の位置情報やファイル名等）を実行ファイルＡ１の正当なソースとして表示部３０３に表示する。また、例えば、運用側検証部３０２は、実行ファイルＡ１がソースファイル群Ｓ１により構築されている旨を所定のファイルに書き込んだり、他の装置に通知する。これにより、実行ファイルＡ１がソースファイル群Ｓ１により構築されていることが分かる。【００４１】
ステップＳ６０９において、運用側検証部３０２は、識別情報ＩＳ１と識別情報ＩＳ１’とが一致していなかったので、実行ファイルＡ１の正当なソースファイル群が見つからない旨を表示部３０３に表示する。【００４２】
さらに、運用側検証部３０２は、開発側検証部２０６に正当なソースの検索を依頼しても良い。開発側検証部２０６は、正当なソースの検索を依頼されたとき、各ソースファイル群の識別情報を算出し、識別情報ＩＳ’と一致する識別情報が算出されたソースファイル群を見つけ出す。そして、開発側検証部２０６は、該ソースファイル群の情報を正当なソースとして運用側検証部３０２に送信する。運用側検証部３０２は、運用側検証部３０２は、受信したソースファイル群の情報を正当なソースとして表示部３０３に表示する。【００４３】
実施の形態の装置によれば、実行ファイルの識別情報や実行ファイルに含まれるソースファイルの識別情報を記録されている識別情報または計算した識別情報と比較することで、実行ファイルが変更されているかやソースファイルが実行ファイルの構築に用いられたソースファイルであるかを判断することが出来る。【００４４】
実施の形態の装置によれば、実行ファイルと該実行ファイルの構築に用いたソースファイルの対応を証明することが出来る。
図７は、情報処理装置（コンピュータ）の構成図である。【００４５】
実施の形態の識別情報付加装置２０１および検証装置３０１は、例えば、図７に示すような情報処理装置１によって実現される。
情報処理装置１は、CPU２、メモリ３、入力部４、出力部５、記憶部６、記録媒体駆動部７、およびネットワーク接続部８を備え、それらはバス９により互いに接続されている。【００４６】
CPU２は、情報処理装置１全体を制御する中央処理装置である。CPU２は、実行ファイル構築部２０３、識別情報生成部２０４、情報結合部２０５、開発側検証部２０６、および運用側検証部３０２に対応する。【００４７】
メモリ３は、プログラム実行の際に、記憶部６（あるいは可搬記録媒体１０）に記憶されているプログラムあるいはデータを一時的に格納するRead Only Memory(ROM)やRandom Access Memory(RAM)等のメモリである。CPU２は、メモリ３を利用してプログラムを実行することにより、上述した各種処理を実行する。【００４８】
この場合、可搬記録媒体１０等から読み出されたプログラムコード自体が実施の形態の機能を実現する。
入力部４は、例えば、キーボード、マウス、タッチパネル等である。【００４９】
出力部５は、例えば、ディスプレイ、プリンタ等である。
記憶部６は、例えば、磁気ディスク装置、光ディスク装置、テープ装置等である。情報処理装置１は、記憶部６に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ３に読み出して使用する。記憶部６は、記憶部２０２に対応する。【００５０】
記録媒体駆動部７は、可搬記録媒体１０を駆動し、その記録内容にアクセスする。可搬記録媒体としては、メモリカード、フレキシブルディスク、Compact Disk Read Only Memory(CD-ROM)、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。ユーザは、この可搬記録媒体１０に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ３に読み出して使用する。【００５１】
ネットワーク接続部８は、LAN等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う。
【図１】
2012017522.tif 000003
【図２】
2012017522.tif 000004
【図３】
2012017522.tif 000005
【図４】
2012017522.tif 000006
【図５】
2012017522.tif 000007
【図６】
2012017522.tif 000008
【図７】
2012017522.tif 000009
【国際調査報告】
2012017522.tif 000010
2012017522.tif 000011