(57)【要約】【課題】プログラムによる処理結果の改ざんを防止できるようにする。【解決手段】入力データ受付手段１１ａにより、入力データ３の入力が受け付けられると共に、受け付けられた当該入力データ３が情報格納手段２に送信される。次に、演算プログラム実行手段１１ｂにより、入力データ３に基づく演算プログラム１２の実行がコンピュータ１に指示され、演算プログラム１２の演算結果が出力データとして取得される。次に、出力データ送信手段１１ｃにより、演算プログラム実行手段１１ｂによって取得された出力データが、情報格納手段２に送信される。次に、出力データ２ｃに関する情報、および入力データ２ａに関する情報に電子署名を施した監査署名情報が生成され、生成された監査署名情報が、情報格納手段２に送信される。【選択図】図１
2009048283.tif 000002
【特許請求の範囲】
【請求項１】
演算プログラムによる処理結果の改ざんを防止する処理をコンピュータに実行させる改ざん防止プログラムにおいて、
前記コンピュータを、
前記演算プログラムによって処理される入力データの入力を受け付けると共に、受け付けた当該入力データを情報格納手段に送信する入力データ受付手段、
前記入力データに基づく前記演算プログラムの実行を前記コンピュータに指示し、前記演算プログラムの演算結果を出力データとして取得する演算プログラム実行手段、
前記演算プログラム実行手段によって取得された前記出力データを前記情報格納手段に送信する出力データ送信手段、
前記入力データに関する情報および前記出力データに関する情報に電子署名を施した監査署名情報を生成し、生成した前記監査署名情報を前記情報格納手段に送信する監査署名情報出力手段、
として機能させることを特徴とする改ざん防止プログラム。
【請求項２】
前記情報格納手段に格納されており、前記演算プログラムに関する情報に電子署名を施した演算プログラム署名情報を、当該情報格納手段から取得する演算プログラム署名受付手段、
前記演算プログラム署名情報に基づいて、前記演算プログラムの正当性を確認する演算プログラム確認手段、
として機能させることを特徴とする請求項１記載の改ざん防止プログラム。
【請求項３】
前記演算プログラムは、前記情報格納手段に格納されており、
前記コンピュータを、さらに、
前記演算プログラムを前記情報格納手段から取得するプログラム取得手段、
前記演算プログラム取得手段によって取得された前記演算プログラムを格納する格納手段、
として機能させ、
前記演算プログラム実行手段は、さらに、前記演算プログラムの実行を指示する際には、前記コンピュータに前記演算プログラムを前記格納手段から読み出して実行させることを特徴とする請求項１記載の改ざん防止プログラム。
【請求項４】
前記監査署名情報出力手段は、前記入力データに関する情報、前記出力データに関する情報、および前記演算プログラム署名情報に関する情報に電子署名を施した監査署名情報を生成することを特徴とする請求項２記載の改ざん防止プログラム。
【請求項５】
前記コンピュータを、さらに、前記情報格納手段に格納されており前記情報格納手段を認証するための認証情報を受け付ける認証情報受付手段として機能させることを特徴とする請求項１記載の改ざん防止プログラム。
【請求項６】
前記入力データに関する情報、前記出力データに関する情報、および前記演算プログラムの実行によって算出された前記出力データの算出時刻を示す情報に電子署名を施した監査署名情報を生成することを特徴とする請求項１記載の改ざん防止プログラム。
【請求項７】
演算プログラムによる処理結果の改ざんを防止する改ざん防止装置において、
前記演算プログラムによって処理される入力データの入力を受け付けると共に、受け付けた当該入力データを情報格納手段に送信する入力データ受付手段と、
前記入力データに基づく前記演算プログラムを実行し、前記演算プログラムの演算結果を出力データとして取得する演算プログラム実行手段と、
前記演算プログラム実行手段によって取得された前記出力データを前記情報格納手段に送信する出力データ送信手段と、
前記出力データに関する情報および前記入力データに関する情報に電子署名を施した監査署名情報を生成し、生成した前記監査署名情報を前記情報格納手段に送信する監査署名情報出力手段と、
を有することを特徴とする改ざん防止装置。
【請求項８】
演算プログラムによる処理結果の改ざんを防止する改ざん防止システムにおいて、
情報を格納可能な情報格納手段と、
前記演算プログラムによって処理される入力データの入力を受け付けると共に、受け付けた当該入力データを前記情報格納手段に送信する入力データ受付手段と、
前記入力データに基づく前記演算プログラムを実行し、前記演算プログラムの演算結果を出力データとして取得する演算プログラム実行手段と、
前記演算プログラム実行手段によって取得された前記出力データを前記情報格納手段に送信する出力データ送信手段と、
前記入力データに関する情報および前記出力データに関する情報に電子署名を施した監査署名情報を生成し、生成した前記監査署名情報を前記情報格納手段に送信する監査署名情報出力手段と、
を有することを特徴とする改ざん防止システム。
【請求項９】
前記入力データ受付手段と、前記演算プログラム実行手段と、前記出力データ送信手段と、前記監査署名情報出力手段と、を有する改ざん防止装置を有し、
前記情報格納手段は、外部サーバであり、
前記改ざん防止装置と前記外部サーバとは、電気通信回線によって接続されていることを特徴とする請求項８記載の改ざん防止システム。
【請求項１０】
演算プログラムによる処理結果の改ざんを防止するコンピュータによる改ざん防止方法において、
前記演算プログラムによって処理される入力データの入力を受け付けるステップと、
受け付けた前記入力データを情報を格納可能な情報格納手段に送信し、前記入力データに基づく前記演算プログラムの実行を前記コンピュータに指示し、前記演算プログラムの演算結果を出力データとして取得し、前記演算プログラムの実行によって取得された前記出力データを前記情報格納手段に送信し、前記出力データに関する情報および前記入力データに関する情報に電子署名を施した監査署名情報を生成し、生成した前記監査署名情報を前記情報格納手段に送信するステップと、
を有することを特徴とする改ざん防止方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は改ざんを防止する改ざん防止プログラム、改ざん防止装置、改ざん防止システム、および改ざん防止方法に関し、特にプログラムによる処理結果の改ざんを防止可能な改ざん防止プログラム、改ざん防止装置、改ざん防止システム、および改ざん防止方法に関する。
【背景技術】
【０００２】
プログラムの演算処理によって算出されたデータの正当性についての検証が行われる場合がある。例えば、建物の建築を申請する場合には、その建物の規模などにより、建物の安全性を確認するために構造計算の計算結果を構造計算書に添付することが義務付けられている場合などである。
【０００３】
ここで、構造計算書とは、建物の設計者が、建物が自重、積載荷重、積雪荷重、風荷重、地震荷重、土圧、水圧、衝撃などの外力に対する安全性を確認し、他者に伝えるための書類である。
【０００４】
この構造計算において、構造計算を行う構造計算プログラムが一般に知られている（例えば、特許文献１参照）。また、建築確認の申請者は、構造計算書の提出の際、構造計算において、国に認定された構造計算プログラム（「一貫構造計算プログラム」）を用いた計算結果を添付することもできる。
【０００５】
この場合、申請者は構造計算プログラムにデータを入力し、出力された情報を紙に印刷して提出する。これに応じて検証者は、申請者から提出された資料を確認することによって検証を行っている。
【０００６】
さらに、ソフトウェア製品の納入時において、納品されたソフトウェアが、仕様書通り正しく動作するか否かが検証される場合がある。
これらのように、コンピュータ上において実行されたプログラムに入力データを入力して得られた処理結果について、その処理結果が正当に処理されて得られたものであるか否かがチェックされることがある。
【０００７】
また、電子文書などの電子データに公開鍵方式などを用いた電子署名を付与して、データの改ざんを防止する技術がある（例えば、特許文献２参照）。
【特許文献１】特開２００３−３１６８３１号公報
【特許文献２】特開２００６−３０９４４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１の構造計算プログラムを用いたのみでは、検証者は、申請者がプログラムを正しく使用し、かつ正しいデータを入力したか否かのチェックはできない。そのため、検証者は性善説に立ち、申請者が提出した結果資料を信用し、処理結果が正当なものであるとして、建築を許可しているに過ぎない。この場合、申請者（構造計算プログラムのユーザ）は、提出する資料のデータについて、例えば、複数の計算結果の都合の良い箇所を繋ぎ合わせて改ざんすることによって、監査者や第三者を欺くことも可能である。
【０００９】
また、これに対して特許文献２のような電子署名による電子データの改ざん防止技術をそのまま用いても、電子署名の付与前にデータを改ざんすることができるため、処理結果（構造計算書）の改ざんを防ぐことはできない。
【００１０】
本発明はこのような点に鑑みてなされたものであり、プログラムによる処理結果の改ざんを防止できる改ざん防止プログラム、改ざん防止装置、改ざん防止システム、および改ざん防止方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明では上記課題を解決するために、図１に示すような改ざん防止プログラム１１が提供される。本発明に係る改ざん防止プログラム１１は、演算プログラム１２による処理結果の改ざんを防止するために、図１に示す入力データ受付手段１１ａ、演算プログラム実行手段１１ｂ、出力データ送信手段１１ｃ、および監査署名情報出力手段１１ｄの機能をコンピュータ１に実行させることができる。
【００１２】
入力データ受付手段１１ａは、演算プログラム１２によって処理される入力データ３の入力を受け付けると共に、受け付けた当該入力データ３を情報格納手段２に送信する。送信された入力データ３は、情報格納手段２に、入力データ２ａとして格納される。
【００１３】
演算プログラム実行手段１１ｂは、入力データ３に基づく演算プログラム１２の実行をコンピュータ１に指示し、演算プログラム１２の演算結果を出力データとして取得する。
出力データ送信手段１１ｃは、演算プログラム実行手段１１ｂによって取得された出力データを、情報格納手段２に送信する。送信された出力データは、情報格納手段２に、出力データ２ｃとして格納される。
【００１４】
監査署名情報出力手段１１ｄは、入力データ３に関する情報、および出力データ２ｃに関する情報に電子署名を施した監査署名情報を生成し、生成した監査署名情報を、情報格納手段２に送信する。送信された監査署名情報は、情報格納手段２に、監査署名情報２ｄとして格納される。
【００１５】
なお、情報格納手段２に格納された入力データ２ａ、出力データ２ｃ、および監査署名情報２ｄが、演算プログラム１２によって正しく算出されたものであるか否かについては、検証者が使用するコンピュータ４内の検証手段４ａによって検証される。
【００１６】
このような改ざん防止プログラム１１に入力データ３が入力されると、入力データ受付手段１１ａにより、入力データ３の入力が受け付けられると共に、受け付けられた当該入力データ３が情報格納手段２に送信される。次に、演算プログラム実行手段１１ｂにより、入力データ３に基づく演算プログラム１２の実行がコンピュータ１に指示され、演算プログラム１２の演算結果が出力データ２ｃとして取得される。次に、出力データ送信手段１１ｃにより、演算プログラム実行手段１１ｂによって取得された出力データ２ｃが、情報格納手段２に送信される。次に、入力データ２ａに関する情報および出力データ２ｃに関する情報に電子署名を施した監査署名情報２ｄが生成され、生成された監査署名情報２ｄが、情報格納手段２に送信される。
【００１７】
また、上記課題を解決するために、演算プログラムによる処理結果の改ざんを防止する改ざん防止装置において、前記演算プログラムによって処理される入力データの入力を受け付けると共に、受け付けた当該入力データを情報格納手段に送信する入力データ受付手段と、前記入力データに基づく前記演算プログラムを実行し、前記演算プログラムの演算結果を出力データとして取得する演算プログラム実行手段と、前記演算プログラム実行手段によって取得された前記出力データを前記情報格納手段に送信する出力データ送信手段と、前記出力データに関する情報および前記入力データに関する情報に電子署名を施した監査署名情報を生成し、生成した前記監査署名情報を前記情報格納手段に送信する監査署名情報出力手段と、を有することを特徴とする改ざん防止装置が提供される。
【００１８】
このような改ざん防止装置によれば、入力データ受付手段により、演算プログラムによって処理される入力データの入力が受け付けられると共に、受け付けられた当該入力データが情報格納手段に送信され、演算プログラム実行手段により、入力データに基づく演算プログラムが実行され、演算プログラムの演算結果が出力データとして取得される。そして、出力データ送信手段により、演算プログラム実行手段によって取得された出力データが情報格納手段に送信され、監査署名情報出力手段により、出力データに関する情報、および入力データに関する情報に電子署名を施した監査署名情報が生成され、生成された監査署名情報が情報格納手段に送信される。
【００１９】
また、上記課題を解決するために、演算プログラムによる処理結果の改ざんを防止する改ざん防止システムにおいて、情報を格納可能な情報格納手段と、前記演算プログラムによって処理される入力データの入力を受け付けると共に、受け付けた当該入力データを前記情報格納手段に送信する入力データ受付手段と、前記入力データに基づく前記演算プログラムを実行し、前記演算プログラムの演算結果を出力データとして取得する演算プログラム実行手段と、前記演算プログラム実行手段によって取得された前記出力データを前記情報格納手段に送信する出力データ送信手段と、前記入力データに関する情報および前記出力データに関する情報に電子署名を施した監査署名情報を生成し、生成した前記監査署名情報を前記情報格納手段に送信する監査署名情報出力手段と、を有することを特徴とする改ざん防止システムが提供される。
【００２０】
このような改ざん防止システムによれば、情報格納手段により、情報が格納可能であり、入力データ受付手段により、演算プログラムによって処理される入力データの入力が受け付けられると共に、受け付けられた当該入力データが情報格納手段に送信される。次に、演算プログラム実行手段により、入力データに基づく演算プログラムが実行され、演算プログラムの演算結果が出力データとして取得され、出力データ送信手段により、演算プログラム実行手段によって取得された出力データが情報格納手段に送信される。そして、監査署名情報出力手段により、入力データに関する情報および出力データに関する情報に電子署名を施した監査署名情報が生成され、生成された監査署名情報が情報格納手段に送信される。
【００２１】
また、上記課題を解決するために、演算プログラムによる処理結果の改ざんを防止するコンピュータによる改ざん防止方法において、前記演算プログラムによって処理される入力データの入力を受け付けるステップと、受け付けた前記入力データを情報を格納可能な情報格納手段に送信し、前記入力データに基づく前記演算プログラムの実行を前記コンピュータに指示し、前記演算プログラムの演算結果を出力データとして取得し、前記演算プログラムの実行によって取得された前記出力データを前記情報格納手段に送信し、前記出力データに関する情報および前記入力データに関する情報に電子署名を施した監査署名情報を生成し、生成した前記監査署名情報を前記情報格納手段に送信するステップと、を有することを特徴とする改ざん防止方法が提供される。
【００２２】
このような改ざん防止方法によれば、まず、演算プログラムによって処理される入力データの入力が受け付けられる。次に、受け付けられた入力データが情報を格納可能な情報格納手段に送信され、入力データに基づく演算プログラムの実行がコンピュータに指示され、演算プログラムの演算結果が出力データとして取得され、演算プログラムの実行によって取得された出力データが情報格納手段に送信され、出力データに関する情報および入力データに関する情報に電子署名を施した監査署名情報が生成され、生成された監査署名情報が情報格納手段に送信される。
【発明の効果】
【００２３】
本発明では、処理結果を出力する演算プログラムによるデータ出力後に、自動的に入力データおよび出力データに関して電子署名を施す監査署名情報を出力するようにした。これにより、入力データおよび出力データならびに署名鍵を用いれば、出力データの正当性を検証することができるので、出力データを改ざんすることが困難になると共に、入力データと出力データの組の正当性（すなわち、当該出力データは、同時に電子署名が施された入力データから出力されたものであること）も担保される。したがって、プログラムによる処理結果の改ざんを防止することが可能となる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、発明の概要を示す図である。本発明に係る改ざん防止プログラム１１は、演算プログラム１２による処理結果の改ざんを防止するために、図１に示す入力データ受付手段１１ａ、演算プログラム実行手段１１ｂ、出力データ送信手段１１ｃ、および監査署名情報出力手段１１ｄの機能をコンピュータ１に実行させることができる。
【００２５】
入力データ受付手段１１ａは、演算プログラム１２によって処理される入力データ３の入力を受け付ける。入力データ３は、演算プログラム１２で処理するためのデータである。そして、入力データ受付手段１１ａは、受け付けた当該入力データ３を情報格納手段２に送信する。送信された入力データ３は、情報格納手段２において、入力データ２ａとして格納される。この情報格納手段２に格納された入力データ２ａは、後述する出力データ２ｃおよび監査署名情報２ｄと共に、コンピュータ４内の検証手段４ａによって、演算プログラム１２の処理結果が改ざんされていないことの検証に用いられる。
【００２６】
ここで、情報格納手段２は、耐タンパ機能を備えており、内部に保持されているデータを、不正なアクセス（読み出しおよび書き込み）や改ざんから保護する。
演算プログラム実行手段１１ｂは、入力データ３に基づく演算プログラム１２の実行をコンピュータ１に指示する。この演算プログラム１２は、例えば、構造計算プログラムなどが該当する。そして、演算プログラム実行手段１１ｂは、演算プログラム１２の演算結果を出力データとして取得する。この出力データは、改ざんの有無の検証の対象となるデータであり、例えば、構造計算の計算結果などが該当する。
【００２７】
出力データ送信手段１１ｃは、演算プログラム実行手段１１ｂによって取得された出力データを、情報格納手段２に送信する。送信された出力データは、情報格納手段２に、出力データ２ｃとして格納される。
【００２８】
監査署名情報出力手段１１ｄは、入力データ３自体や入力データ３のハッシュ（hash）値などの入力データ３に関する情報および出力データ２ｃ自体や出力データ２ｃのハッシュ値などの出力データ２ｃに関する情報に電子署名を施すことによって監査署名情報を生成し、生成した監査署名情報を、情報格納手段２に送信する。送信された監査署名情報は、情報格納手段２に、監査署名情報２ｄとして格納される。
【００２９】
なお、情報格納手段２に格納された入力データ２ａ、出力データ２ｃ、および監査署名情報２ｄが、演算プログラム１２によって正しく算出されたものであるか否かについては、演算結果の正当性を検証する検証者が使用するコンピュータ４内の検証手段４ａによって検証される。
【００３０】
このような改ざん防止プログラム１１に入力データ３が入力されると、入力データ受付手段１１ａにより、入力データ３の入力が受け付けられ、受け付けられた当該入力データ３が情報格納手段２に送信される。
【００３１】
次に、演算プログラム実行手段１１ｂにより、入力データ３に基づく演算プログラム１２の実行がコンピュータ１に指示され、演算プログラム１２の演算結果が出力データとして取得される。
【００３２】
さらに、出力データ送信手段１１ｃにより、演算プログラム実行手段１１ｂによって取得された出力データが、情報格納手段２に送信される。
そして、出力データに関する情報、および入力データに関する情報に電子署名を施した監査署名情報が生成され、生成された監査署名情報が、情報格納手段２に送信される。
【００３３】
このようにして、処理結果を出力する演算プログラムによるデータ出力後に、自動的に入力データおよび出力データに関して電子署名を施した監査署名情報を出力するようにした。そのため、入力データおよび出力データから監査署名を再作成し、情報格納手段２に予め格納されている監査署名と照合することで、出力データの正当性を検証することができる。これにより、出力データを改ざんすることが困難になると共に、入力データと出力データの組の正当性（すなわち、当該出力データは、同時に電子署名が施された入力データから出力されたものであること）も担保される。したがって、プログラムによる処理結果の改ざんを防止することが可能となる。
【００３４】
［第１の実施の形態］
以下、第１の実施の形態を、図面を参照して詳細に説明する。
図２は、監査用コンピュータのハードウェア構成例を示す図である。監査用コンピュータ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入出力インタフェース１０５、ＰＣカードインタフェース１０６、および通信インタフェース１０７が接続されている。
【００３５】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００３６】
グラフィック処理装置１０４には、モニタ１４０が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１４０の画面に表示させる。入出力インタフェース１０５には、キーボード１５１、マウス１５２、およびプリンタ１５３が接続されている。入出力インタフェース１０５は、キーボード１５１やマウス１５２から送られてくる信号をバス１０８を介してＣＰＵ１０１に送信すると共に、バス１０８を介してＣＰＵ１０１から送られてくるプリントアウト信号をプリンタ１５３に送信する。
【００３７】
ＰＣカードインタフェース１０６は、ＰＣカード形式で構成されたトークンモジュール２００を接続することができる。そして、ＰＣカードインタフェース１０６は、接続されたトークンモジュール２００との間でデータの送受信を行う。
【００３８】
トークンモジュール２００は、監査用コンピュータ１００で演算された監査プログラム１２０ｆによる演算結果および演算結果の正当性を検証するためのデータを格納する装置である。トークンモジュール２００は、図示しない記憶部を内蔵しているＰＣカード形式のハードウェアモジュールであり、記憶部は、監査用コンピュータ１００に送信するためのデータおよび監査用コンピュータ１００から送信されたデータを格納可能である。トークンモジュール２００は、耐タンパ機能を備えており、内部に保持されているデータを、不正なアクセス（読み出しおよび書き込み）や改ざんから保護することができる。
【００３９】
トークンモジュール２００は、監査用コンピュータ１００からの正当な要求に応じて、監査用コンピュータ１００から送信されたデータを格納し、格納されているデータを監査用コンピュータ１００に送信する。また、トークンモジュール２００は、検証用コンピュータのＰＣカードインタフェース（図示省略）にも接続可能である。監査プログラムの出力結果の検証時には、トークンモジュール２００は検証用コンピュータに接続されることによって、格納しているデータを検証用コンピュータに送信する。
【００４０】
通信インタフェース１０７は、ネットワーク５００に接続されている。通信インタフェース１０７は、ネットワーク５００を介して、他のコンピュータとの間でデータの送受信を行うことができる。
【００４１】
なお、本実施の形態のトークンモジュール２００は、ＰＣカード形式によって構成されているが、これに限らず、ＵＳＢ（Universal Serial Bus）方式や、その他の規格や仕様などに従った、可搬性を有する記憶装置で構成することもできる。この場合の記憶装置も、耐タンパ機能を持たせるとよい。
【００４２】
また、本実施の形態のトークンモジュール２００に代えて、トークンモジュール２００の機能を、耐タンパ機能を備えたハードディスク装置（ＨＤＤ）によって実現してもよい。この場合、ハードディスク装置は、持ち運び可能な外付式ハードディスク装置や、取り外し可能な内蔵式ハードディスク装置として、監査用コンピュータ１００および検証用コンピュータに自由に接続の変更を行えるようにするとよい。さらに、当該ハードディスク装置を、ネットワークに接続可能に構成して、ネットワークを介して監査用コンピュータ１００および検証用コンピュータと自由に接続可能にしてもよい。
【００４３】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図２では、監査用コンピュータ１００のハードウェア構成のみを示したが、検証用コンピュータも同様のハードウェア構成で実現することができる。
【００４４】
次に、第１の実施の形態において、監査プログラムによる処理結果の改ざんを防止するために改ざん防止プログラム１１０が監査用コンピュータ１００に実現させる機能について説明する。
【００４５】
図３は、第１の実施の形態の監査用コンピュータの機能を示すブロック図である。監査用コンピュータ１００は、改ざん防止プログラム１１０により、認証情報受付部１１０ａ、プログラム署名受付部１１０ｂ、プログラム確認部１１０ｃ、入力データ受付部１１０ｄ、監査プログラム実行部１１０ｅ、出力データ送信部１１０ｇ、およびタイムスタンプ出力部１１０ｈとして機能する。
【００４６】
認証情報受付部１１０ａは、トークンモジュール２００に格納されておりトークンモジュール２００を認証するための認証情報２００ａを、トークンモジュール２００から取得する。この認証情報２００ａは、各トークンモジュール２００に固有にまたは共通して、不正に書き換えることができないように格納されている情報である。なお、認証情報２００ａは、チャレンジ・レスポンス認証（challenge and response authentication）などのワンタイム・パスワードを用いて動的に変化させて、よりセキュアに構成してもよい。
【００４７】
プログラム署名受付部１１０ｂは、トークンモジュール２００に格納されており、監査プログラム１２０ｆに関する情報に電子署名を施したプログラム署名情報２００ｂを受け付ける。
【００４８】
ここで、監査プログラム１２０ｆに関する情報とは、監査プログラム１２０ｆ自体、または監査プログラム１２０ｆからハッシュ関数などを用いて作成したハッシュ（hash）値などの監査プログラム１２０ｆを識別可能な情報である。後述する入力データ３００に関する情報、出力データ２００ｇに関する情報、および監査プログラム１２０ｆの実行によって算出された出力データ２００ｇの算出時刻を示す情報も、それぞれ同様である。
【００４９】
また、電子署名とは、例えば、前述する監査プログラム１２０ｆに関する情報などに公開鍵方式の秘密鍵を用いて暗号化して生成したメッセージ認証子（MAC:Message Authentication Code）を、公開鍵方式の公開鍵を用いて復号化することによって、改ざんの有無を検証可能にすることにより、監査プログラム１２０ｆなどが改ざんされていないことを担保するものである。
【００５０】
プログラム確認部１１０ｃは、プログラム署名情報２００ｂに基づいて、監査プログラム１２０ｆの正当性を確認する。監査プログラム１２０ｆの正当性の確認は、改ざん防止処理（図５参照）のステップＳ１５において、トークンモジュール２００から読み出されたプログラム署名情報２００ｂと、改ざん防止処理（図５参照）のステップＳ１４において、監査プログラム１２０ｆに関する情報に対して、前述のプログラム署名情報２００ｂを作成するときに用いられた電子署名の署名鍵と同一の署名鍵を施して作成された監査プログラム１２０ｆの電子署名とを比較することによって行われる。
【００５１】
そして、この比較の結果、一致していれば、監査プログラム１２０ｆは正当性が認められる一方、一致しなければ、監査プログラム１２０ｆの正当性は認められず、不正が行われている可能性があることになる。ここで、「プログラム署名情報２００ｂを作成するときに用いられた署名鍵と同一の署名鍵」は、トークンモジュール２００に格納されており、プログラム作成ベンダーの署名鍵（ＫＥＶＡ２０１ｋ：図４参照）である。
【００５２】
なお、監査プログラム１２０ｆの正当性の確認は、トークンモジュール２００から読み出されたプログラム署名情報２００ｂを電子署名の公開鍵で復号化したものと、プログラム署名情報２００ｂを生成するときに用いたハッシュ関数と同一のハッシュ関数で求めた監査プログラム１２０ｆに関する情報とを比較することによって行ってもよい。
【００５３】
また、改ざん防止プログラム１１０についても、監査プログラム１２０ｆと同様にして、電子署名によって正当性を担保することとしてもよい。
入力データ受付部１１０ｄは、監査プログラム１２０ｆによって処理される入力データ３００の入力を受け付ける。入力データ３００は、監査プログラム１２０ｆで処理するためのデータである。そして、入力データ受付部１１０ｄは、受け付けた当該入力データ３００をトークンモジュール２００に送信する。送信された入力データ３００は、トークンモジュール２００において、入力データ２００ｄとして格納される。このトークンモジュール２００に格納された入力データ２００ｄは、後述する出力データ２００ｇおよびタイムスタンプ２００ｈと共に、検証用コンピュータ４００によって、監査プログラム１２０ｆの処理結果の改ざんがされていないことの検証に用いられる。
【００５４】
ここで、前述したように、トークンモジュール２００は、耐タンパ機能を備えた持ち運び可能なＰＣカードであり、内部に保持されているデータを、不正なアクセス（読み出しおよび書き込み）や改ざんから保護する。
【００５５】
監査プログラム実行部１１０ｅは、入力データ３００に基づく監査プログラム１２０ｆの実行を監査用コンピュータ１００に指示する。この監査プログラム１２０ｆは、監査プログラム格納部１２０に格納されている。監査プログラム１２０ｆは、例えば、構造計算プログラムなどが該当する。
【００５６】
監査プログラム格納部１２０は、トークンモジュール２００が監査用コンピュータ１００に接続されると、トークンモジュール２００に圧縮されて格納されている監査プログラム２００ｆを読み出して、読み出された監査プログラム２００ｆを監査プログラム格納部１２０自身に展開して監査プログラム１２０ｆとして、監査用コンピュータ１００により実行可能に格納する。
【００５７】
ここで、監査プログラム１２０ｆは、国土交通大臣などの国の機関による認定を受けたプログラムであって、プログラムが改ざんされていない限り、正しいデータが入力されていれば、正しい出力データが得られるものとする。
【００５８】
また、改ざん防止プログラム１１０は、監査プログラム１２０ｆに対して入力するデータの受け渡し、および監査プログラム１２０ｆから出力されたデータの取得や出力などを行うプログラムである。また、監査用コンピュータ１００を操作するユーザは、必ず改ざん防止プログラム１１０を介して監査プログラム１２０ｆに処理を実行させることとし、直接に監査プログラム１２０ｆに関与することはできないように設計されている。
【００５９】
監査プログラム実行部１１０ｅは、監査プログラム１２０ｆの実行を指示する。また、監査プログラム実行部１１０ｅは、監査プログラム１２０ｆの実行を指示する際には、監査プログラム格納部１２０に格納された監査プログラム１２０ｆを読み出して監査用コンピュータ１００に実行させる。この監査プログラム実行部１１０ｅによる実行の指示に基づいて、監査用コンピュータ１００は、監査プログラム１２０ｆによって、入力データ３００に対して演算処理を行う。
【００６０】
そして、監査プログラム実行部１１０ｅは、入力データ３００に基づく監査プログラム１２０ｆの演算結果を出力データとして取得する。この出力データは、改ざんがされていないことの検証の対象となるデータであり、例えば、構造計算の計算結果などが該当する。
【００６１】
出力データ送信部１１０ｇは、監査プログラム実行部１１０ｅによって取得された出力データを、トークンモジュール２００に送信する。送信された出力データは、トークンモジュール２００に、出力データ２００ｇとして格納される。
【００６２】
タイムスタンプ出力部１１０ｈは、入力データ２００ｄに関する情報、出力データ２００ｇに関する情報、認証情報２００ａに関する情報、プログラム署名情報２００ｂに関する情報、および監査プログラム１２０ｆの実行によって算出された出力データ２００ｇの算出時刻を示す情報（図４参照）に電子署名を施すことによって、タイムスタンプを生成する。そして、タイムスタンプ出力部１１０ｈは、生成したタイムスタンプを、トークンモジュール２００に送信する。送信されたタイムスタンプは、トークンモジュール２００に、タイムスタンプ２００ｈとして格納される。
【００６３】
すなわち、タイムスタンプ出力部１１０ｈは、監査プログラム１２０ｆの演算結果に対して電子署名を施す際に、演算結果のデータに電子署名を施してタイムスタンプ２００ｈを生成する。具体的には、タイムスタンプ出力部１１０ｈは、出力データ２００ｇなどの監査プログラム１２０ｆの演算結果を取得すると、演算結果のデータなどに電子署名を施すことによって、データの内容と演算時の時刻に応じたタイムスタンプ２００ｈを生成する。そして、タイムスタンプ出力部１１０ｈは、生成したタイムスタンプ２００ｈをトークンモジュール２００等に格納する。これにより、検証者は、トークンモジュール２００および検証用コンピュータ４００を利用して、タイムスタンプ２００ｈに基づいて、電子署名が施された演算結果の改ざんのチェックを行うことができる。
【００６４】
また、タイムスタンプ出力部１１０ｈは、タイムスタンプ２００ｈをプリンタ１５３に出力可能である。このタイムスタンプ２００ｈは、詳しくは図４において後述する。
検証用コンピュータ４００は、検証者が、監査プログラム１２０ｆによる演算結果の正当性の検証を行うためのコンピュータである。検証用コンピュータ４００は、耐タンパ機能のトークンモジュール２００に格納されているデータを正当に読み書き可能である。
【００６５】
検証者は、構造計算書に添付された監査プログラム１２０ｆによる演算結果が正当なものであるかの検証を行う際に、演算時に監査用コンピュータ１００に接続されていたトークンモジュール２００をこの検証用コンピュータ４００に接続して、演算時に格納された入力データ２００ｄ、出力データ２００ｇ、タイムスタンプ２００ｈを読み出して、演算結果の検証を行う。
【００６６】
具体的には、監査用コンピュータ１００に接続されたプリンタ１５３から出力されたタイムスタンプ２００ｈと、検証用コンピュータ４００に接続されたトークンモジュール２００から読み出されて検証用コンピュータ４００に表示されたタイムスタンプ２００ｈとを比較する。比較の結果、一致すれば、監査プログラム１２０ｆによる演算結果は正当なものであると認められる一方、一致しなければ、監査プログラム１２０ｆによる演算結果は正当なものであると認められず、不正が行われた可能性があると判断されることになる。
【００６７】
次に、本実施の形態のタイムスタンプについて説明する。
図４は、タイムスタンプのデータ構造を示す図である。タイムスタンプ２０１は、監査プログラム１２０ｆによる演算が終了してタイムスタンプ出力部１１０ｈで生成され、トークンモジュール２００に格納されたタイムスタンプ２００ｈの一例である。
【００６８】
タイムスタンプとは、電子データに対して正確な時刻情報を付与し、その時点でのデータの存在証明とその時点以後のデータの非改ざん証明を行う仕組みあるいは技術である。タイムスタンプには、通常、存在証明と非改ざん証明のために、データのハッシュ値および時刻情報などに施された電子署名が用いられる。このようにして、タイムスタンプを用いて文書内容の信頼性を確保することができる。
【００６９】
タイムスタンプ２０１は、案件番号２０１ａ、ＰＩＤ２０１ｂ、ＵＩＤ２０１ｃ、ＴＩＭＥ２０１ｄ、ＤＩｘ２０１ｅ、ＤＭｘ２０１ｆ、ＤＯｘ２０１ｇ、ＫＵ２０１ｈ、ＫＥＶＡ２０１ｋ、ＤＳＩＧＮ２０１ｍ、およびＰＳＩＧＮ２０１ｐの各欄の情報から構成されている。
【００７０】
案件番号２０１ａの欄には、監査プログラム１２０ｆによって演算処理される案件を特定するための案件ごとに設定された番号が格納される。
ＰＩＤ２０１ｂの欄には、監査プログラム１２０ｆを識別するための識別記号であるプログラムＩＤが格納される。
【００７１】
ＵＩＤ２０１ｃの欄には、改ざん防止プログラム１１０および監査プログラム１２０ｆを使用して当該タイムスタンプ２０１が生成された演算を行ったユーザを識別するための識別記号である利用者ＩＤが格納される。
【００７２】
ＴＩＭＥ２０１ｄの欄には、改ざん防止プログラム１１０および監査プログラム１２０ｆを使用した演算が終了し、当該タイムスタンプ２０１が生成された時刻が格納される。
ＤＩｘ２０１ｅの欄には、ユーザが入力した入力データ３００が格納される。ここで、「ＤＩｘ」の「ｘ」は、入力データ３００が複数個のデータから構成される場合に、各データを区別するために付与される番号が設定され、例えば、１以上の自然数が適宜割り当てられる。
【００７３】
例えば、入力データ３００が３個のデータから構成される場合には、３個の各データはそれぞれ「ＤＩ１」、「ＤＩ２」、「ＤＩ３」のように表される。
ＤＭｘ２０１ｆの欄には、必要に応じて、監査プログラム１２０ｆによる処理の中間結果のデータが格納される。ここで、「ＤＭｘ」の「ｘ」は、ＤＩｘ２０１ｅと同様に、監査プログラム１２０ｆによる処理の中間結果が複数個のデータから構成される場合に、各データを区別するために付与される番号が設定される。
【００７４】
ＤＯｘ２０１ｇの欄には、監査プログラム１２０ｆによる処理の最終結果である出力データ２００ｇが格納される。ここで、「ＤＭｘ」の「ｘ」は、ＤＩｘ２０１ｅと同様に、出力データ２００ｇが複数個のデータから構成される場合に、各データを区別するために付与される番号が設定される。
【００７５】
ＫＵ２０１ｈの欄には、ユーザの電子署名の非公開鍵が格納される。
ＫＥＶＡ２０１ｋの欄には、改ざん防止プログラムの作成ベンダーの電子署名の非公開鍵が格納される。
【００７６】
ＤＳＩＧＮ２０１ｍの欄には、監査プログラム１２０ｆによる演算処理結果に対する電子署名が格納される。例えば、改ざん防止プログラム１１０により、案件番号２０１ａ、ＰＩＤ２０１ｂ、ＵＩＤ２０１ｃ、ＴＩＭＥ２０１ｄ、ＤＩｘ２０１ｅ、ＤＯｘ２０１ｇがＭＡＣ処理され、ユーザの非公開鍵であるＫＵ２０１ｈで暗号化されることによって、ユーザによる電子署名が施されたものである。これにより、ユーザの電子署名の公開鍵によって、この演算結果はユーザによって生成されたものであり、改ざんされていないことが検証可能となる。
【００７７】
このＤＳＩＧＮ２０１ｍの演算処理結果に対する電子署名について説明すると、まず、改ざん防止プログラム１１０によって、本実施の形態の監査プログラム１２０ｆの演算に関するデータである、例えば、案件番号２０１ａ、ＰＩＤ２０１ｂ、ＵＩＤ２０１ｃ、ＴＩＭＥ２０１ｄ、ＤＩｘ２０１ｅ、ＤＯｘ２０１ｇなどが連結されて１つのメッセージ・データとされる。次に、改ざん防止プログラム１１０によって、メッセージ・データに対して予め用意した特定のハッシュ関数を用いてハッシュ値が算出される。算出されたハッシュ値が、監査プログラム１２０ｆの演算に関するデータのＭＡＣとなる。このハッシュ関数は、検証者によって予め用意され、トークンモジュール２００に格納されている。なお、ハッシュ関数は、例えば、予めインターネットでユーザや検証者が入手可能なように頒布するなど、トークンモジュール２００以外から取得するようにしてもよい。
【００７８】
そして、改ざん防止プログラム１１０によって、算出されたハッシュ値であるＭＡＣに、ユーザの電子署名の非公開鍵（ＫＵ２０１ｈ）が施されて、演算処理結果に対する電子署名であるＤＳＩＧＮ２０１ｍが生成される。生成されたＤＳＩＧＮ２０１ｍの電子署名は、改ざん防止プログラム１１０によって、タイムスタンプ２０１の一部として、耐タンパ機能によりセキュアなトークンモジュール２００に格納される。
【００７９】
このＤＳＩＧＮ２０１ｍの演算処理結果に対する電子署名により、検証者は、監査プログラム１２０ｆの演算結果の正当性を検証することができる。
具体的には、検証者は、検証用コンピュータ４００によって、トークンモジュール２００に格納されている各データのうち、改ざん防止プログラム１１０によってハッシュ値の算出に用いられたデータから、改ざん防止プログラム１１０がメッセージ・データに用いた、例えば、案件番号２０１ａ、ＰＩＤ２０１ｂ、ＵＩＤ２０１ｃ、ＴＩＭＥ２０１ｄ、ＤＩｘ２０１ｅ、ＤＯｘ２０１ｇなどを連結してメッセージ・データとする。そして、こうして得られたメッセージ・データから、改ざん防止プログラム１１０が用いたハッシュ関数と同一のハッシュ関数を用いてハッシュ値を算出する。改ざん防止プログラム１１０と同様に、算出されたハッシュ値が、監査プログラム１２０ｆの演算に関するデータのＭＡＣとなる。
【００８０】
次に、検証用コンピュータ４００は、改ざん防止プログラム１１０と同様に、算出されたハッシュ値であるＭＡＣに、トークンモジュール２００に格納されているユーザの電子署名の非公開鍵であるＫＵ２０１ｈを施して、演算処理結果に対する電子署名を生成する。
【００８１】
そして、検証用コンピュータ４００は、自らが生成した演算処理結果に対する電子署名と、改ざん防止プログラム１１０によって生成され、トークンモジュール２００に格納されている演算処理結果に対する電子署名であるＤＳＩＧＮ２０１ｍとを比較する。
【００８２】
ここで、もし、演算処理結果に関するデータが改ざんされていれば、演算処理結果から得られたハッシュ値が変化するため、電子署名が変化してしまうことになる。したがって、比較結果が一致していれば、演算処理結果は改ざんされておらず、正当なものであると認められる。
【００８３】
なお、これに限らず、検証者は、検証用コンピュータ４００によって、タイムスタンプ２０１に含まれるＤＳＩＧＮ２０１ｍの電子署名に対して、ユーザの電子証明の非公開鍵（ＫＵ２０１ｈ）に対応する、ユーザの電子署名の公開鍵を施して、ＤＳＩＧＮ２０１ｍの演算処理結果に対する電子署名を復号化することによって、演算処理結果を検証してもよい。この場合、検証用コンピュータ４００が、復号化によって得られた監査プログラム１２０ｆの演算結果に関するメッセージ・データのハッシュ値と、改ざん防止プログラム１１０によって算出されトークンモジュール２００に格納されているハッシュ値とを比較することによって、演算処理結果の正当性が検証される。
【００８４】
ＰＳＩＧＮ２０１ｐの欄には、監査プログラム１２０ｆ自体の電子署名が格納されている。このＰＳＩＧＮ２０１ｐは、例えば、改ざん防止プログラムの作成ベンダーが、前述したＰＩＤ２０１ｂ（プログラムＩＤ）、またはプログラムモジュールやソースコードのデータなどをＭＡＣ処理し、改ざん防止プログラムの作成ベンダーの電子署名の非公開鍵であるＫＥＶＡ２０１ｋで暗号化することによって、プログラム作成ベンダーによる電子署名が施されたものである。これにより、このＰＳＩＧＮ２０１ｐの、監査プログラム１２０ｆ自体の電子署名を、直接比較し、または、プログラム作成ベンダーの電子署名の公開鍵によって復号化することで、当該監査プログラム１２０ｆがプログラム作成ベンダーによって作成され、改ざんされていないことが検証可能となる。
【００８５】
このＰＳＩＧＮ２０１ｐの監査プログラム１２０ｆ自体の電子署名について説明すると、まず、監査プログラム１２０ｆを作成したプログラム作成ベンダーにおいて、監査プログラム１２０ｆに関するデータである、例えば、ＰＩＤ２０１ｂや監査プログラム１２０ｆのプログラムモジュールやソースコードなどに対して予め用意した特定のハッシュ関数を用いてハッシュ値を算出する。算出されたハッシュ値が、監査プログラム１２０ｆ自体のＭＡＣとなる。ここで、ハッシュ値の算出については、ＤＳＩＧＮ２０１ｍの演算処理結果に対する電子署名と同様に算出されるので、説明を省略する。
【００８６】
なお、本実施の形態では、監査プログラム１２０ｆ自体のＭＡＣとして、ＰＩＤ２０１ｂや監査プログラム１２０ｆのプログラムモジュールやソースコードなどのハッシュ値を用いるが、これに限らず、ハッシュ値の算出を行わずに、算出されたハッシュ値に代えて、ＰＩＤ２０１ｂをそのままＭＡＣとして用いてもよい。
【００８７】
次に、算出されたハッシュ値（またはＰＩＤ２０１ｂ）であるＭＡＣに、作成ベンダーの電子署名の非公開鍵（ＫＥＶＡ２０１ｋ）が施されて、監査プログラム１２０ｆ自体の電子署名であるＰＳＩＧＮ２０１ｐが生成される。
【００８８】
生成されたＰＳＩＧＮ２０１ｐの電子署名は、予め検証者によって、耐タンパ機能によりセキュアなトークンモジュール２００に格納されており、タイムスタンプ２０１の一部を構成する。
【００８９】
このＰＳＩＧＮ２０１ｐの監査プログラム１２０ｆ自体の電子署名により、改ざん防止プログラム１１０は、監査プログラム１２０ｆ自体の正当性を検証することができる。また、このＰＳＩＧＮ２０１ｐの監査プログラム１２０ｆ自体の電子署名により、検証者は、監査プログラム１２０ｆ自体の正当性を検証することができる。
【００９０】
なお、本実施の形態では、このＰＳＩＧＮ２０１ｐの監査プログラム１２０ｆ自体の電子署名を作成ベンダーが生成し、検証者がトークンモジュール２００に格納するが、これに限らず、改ざん防止プログラム１１０が、監査プログラム１２０ｆの実行の都度、別に監査プログラム１２０ｆ自体の電子署名を生成して、トークンモジュール２００に格納してもよい。
【００９１】
この場合、まず、改ざん防止プログラム１１０によって、監査プログラム１２０ｆに関するデータである、例えば、ＰＩＤ２０１ｂ、監査プログラム１２０ｆのプログラムモジュールやソースコードなどに対して予め用意した特定のハッシュ関数を用いてハッシュ値が算出される。なお、これに限らず、ハッシュ値の算出を行わず、算出されたハッシュ値に代えて、ＰＩＤ２０１ｂをそのまま用いてもよい。
【００９２】
そして、改ざん防止プログラム１１０によって、算出されたハッシュ値（またはＰＩＤ２０１ｂ）に、作成ベンダーの電子署名の非公開鍵（ＫＥＶＡ２０１ｋ）が施されて、ＰＳＩＧＮ２０１ｐの電子署名とは別に、監査プログラム１２０ｆ自体の電子署名が生成される。新たに生成された監査プログラム１２０ｆ自体の電子署名は、改ざん防止プログラム１１０によって、タイムスタンプ２０１の一部として、耐タンパ機能によりセキュアなトークンモジュール２００に格納される。
【００９３】
このＰＳＩＧＮ２０１ｐの電子署名とは別の、改ざん防止プログラム１１０によって生成された監査プログラム１２０ｆ自体の電子署名により、検証者は、実際に演算処理に用いられた監査プログラム１２０ｆの正当性を検証することができる。
【００９４】
なお、前述した案件番号２０１ａ、ＰＩＤ２０１ｂ、ＵＩＤ２０１ｃ、ＴＩＭＥ２０１ｄ、ＤＩｘ２０１ｅ、ＤＭｘ２０１ｆ、ＤＯｘ２０１ｇ、ＫＵ２０１ｈ、ＫＥＶＡ２０１ｋ、ＤＳＩＧＮ２０１ｍ、およびＰＳＩＧＮ２０１ｐの各情報は、トークンモジュール２００においては、トークンモジュール２００の耐タンパ機能により、不正なアクセスから保護される。
【００９５】
前述したように、監査プログラム１２０ｆによる演算が終了してタイムスタンプ出力部１１０ｈで生成されたタイムスタンプ２００ｈは、トークンモジュール２００に格納される。また、監査プログラム１２０ｆによる演算の完了時に、タイムスタンプ２００ｈのうちの一部であるＴＩＭＥ２０１ｄ（生成時刻）、ＤＩｘ２０１ｅ（入力データ）、ＤＯｘ２０１ｇ（出力データ）、ＤＳＩＧＮ２０１ｍ（演算処理結果に対する電子署名）が、監査用コンピュータ１００に接続されたプリンタ１５３から出力される。
【００９６】
監査プログラム１２０ｆの演算結果の検証を受ける、改ざん防止プログラムのユーザは、プリンタ１５３から出力されたこれらのデータのプリントアウト、およびさらに演算時に監査用コンピュータ１００に接続されていたトークンモジュール２００を構造計算書に添付して提出する。これを受理した検証者は、構造計算書に添付されていたプリントアウトに出力されたタイムスタンプ２００ｈのうちの一部であるＴＩＭＥ２０１ｄ、ＤＩｘ２０１ｅ、ＤＯｘ２０１ｇ、ＤＳＩＧＮ２０１ｍと、トークンモジュール２００に格納されているタイムスタンプ２００ｈの該当項目を比較し一致すれば、当該演算結果は正当なものであると認められる一方、比較して一致しなければ、当該演算結果は正当なものであると認められず、不正が行われた可能性があることになる。
【００９７】
なお、本実施の形態では、ＭＡＣ処理を実行した後に、公開鍵方式を用いた電子署名を施しているが、これに限らず、ＡＥＳ（Advanced Encryption Standard）を用いたＡＥＳ−ＭＡＣ処理などの共通鍵方式を用いて監査プログラム１２０ｆの演算処理結果の正当性を検証してもよい。この場合、予めトークンモジュール２００に格納された共通鍵が用いられる。
【００９８】
具体的には、まず、監査用コンピュータ１００によって、監査プログラム１２０ｆの演算処理結果に関するデータが、共通鍵で暗号化されてＭＡＣが生成される。生成されたＭＡＣはトークンモジュール２００に格納される。次に、検証用コンピュータ４００によって、トークンモジュール２００に格納されている監査プログラム１２０ｆの演算処理結果に関するデータが、共通鍵で暗号化されてＭＡＣが生成される。そして、検証用コンピュータ４００によって、監査用コンピュータ１００で生成されたＭＡＣと、検証用コンピュータ４００で生成されたＭＡＣとを比較することでメッセージ認証が行われる。
【００９９】
次に、改ざん防止処理の全体の手順を説明する。
図５および図６は、改ざん防止処理の手順を示すフローチャートである。以下、図５および図６に示す処理をステップ番号に沿って説明する。
【０１００】
監査プログラム１２０ｆの処理結果を検証する検証者は、申請を行う監査用コンピュータ１００のユーザに対して、監査プログラム１２０ｆが格納されたトークンモジュール２００を提供する。
【０１０１】
監査用コンピュータ１００のユーザは、申請ごとにそれらを受け取り、監査用コンピュータ１００によって、改ざん防止プログラム１１０および監査プログラム１２０ｆによる演算処理を実行する。
【０１０２】
ここで、検証者は、認証情報２００ａと、利用対象となる監査プログラム１２０ｆの電子署名を事前にトークンモジュール２００に格納しておく。これにより、トークンモジュール２００に対する不正アクセスを防止する。認証情報２００ａは、例えば、改ざん防止プログラム１１０の開発者、検証者などにより、ユーザや外部の者に知られないように決めておく必要がある。本実施の形態では、認証情報２００ａは、検証用コンピュータ４００により、検証用コンピュータ４００が表示する認証情報入力画面４０１（図９参照）で、予めトークンモジュール２００に格納される。
【０１０３】
本実施の形態では、トークンモジュール２００が監査用コンピュータ１００に接続されると、監査用コンピュータ１００は、改ざん防止処理を自動的に開始する。
［ステップＳ１１］  認証情報受付部１１０ａは、トークンモジュール２００に格納されている認証情報２００ａを取得する。この認証情報２００ａは、トークンモジュール２００を識別すると共に、トークンモジュール２００の正当性を担保するために、各トークンモジュール２００に固有に割り当てられた情報である。監査用コンピュータ１００は、この認証情報２００ａの正当性が確認されて始めて、監査プログラム１２０ｆの利用が許可されることになる。
【０１０４】
［ステップＳ１２］  認証情報受付部１１０ａは、ステップＳ１１で取得した認証情報２００ａによって、トークンモジュール２００が正当なものであるか否かを判断する。認証情報受付部１１０ａは、トークンモジュール２００が正当なものであると認証できれば、ステップＳ１３に処理を進める一方、トークンモジュール２００が正当なものであると認証できなければ、処理を終了する。
【０１０５】
［ステップＳ１３］  監査プログラム格納部１２０は、トークンモジュール２００から圧縮された監査プログラム２００ｆを読み出し、監査用コンピュータ１００によって実行できる監査プログラム１２０ｆに展開する。
【０１０６】
［ステップＳ１４］  プログラム確認部１１０ｃは、ステップＳ１３で展開された監査プログラム１２０ｆから監査プログラム１２０ｆの電子署名を作成する。
［ステップＳ１５］  プログラム署名受付部１１０ｂは、トークンモジュール２００に予め格納されている監査プログラム１２０ｆの署名情報であるプログラム署名情報２００ｂを読み出す。
【０１０７】
［ステップＳ１６］  プログラム確認部１１０ｃは、ステップＳ１４において作成された監査プログラム１２０ｆの電子署名と、ステップＳ１５において読み出されたプログラム署名情報２００ｂとを比較して、一致するか否かを判断する。プログラム確認部１１０ｃは、電子署名とプログラム署名情報２００ｂとが一致すれば、ステップＳ１７に処理を進める一方、一致しなければ、処理を終了する。
【０１０８】
［ステップＳ１７］  入力データ受付部１１０ｄは、モニタ１４０に入力データ３００の入力を行うためのデータ入力画面１４２（図１０参照）を表示し、改ざん防止プログラム１１０のユーザに対し、入力データ３００の入力を要求する。
【０１０９】
［ステップＳ１８］  入力データ受付部１１０ｄは、キーボード１５１などの入力装置により改ざん防止プログラム１１０のユーザによって入力された入力データ３００を受け付け、ステップＳ２１（図６）に処理を進める。
【０１１０】
［ステップＳ２１］  監査プログラム実行部１１０ｅは、監査プログラム実行処理を実行する。この監査プログラム実行処理は、監査プログラム格納部１２０に格納されている監査プログラム１２０ｆを実行する処理であり、詳しくは図７において後述する。
【０１１１】
［ステップＳ２２］  監査プログラム実行部１１０ｅは、ステップＳ２１における監査プログラム１２０ｆの実行の結果取得した出力データが、例えば、構造計算プログラムであれば強度が十分であるなどの、期待した条件を満たしているか否かを判断する。監査プログラム実行部１１０ｅは、出力データが、条件を満たしていれば、ステップＳ２３に処理を進める一方、条件を満たしていなければ、処理を終了する。
【０１１２】
［ステップＳ２３］  入力データ受付部１１０ｄは、ユーザによって入力された入力データ３００を、トークンモジュール２００に送信し、送信した入力データ３００を、入力データ２００ｄとしてトークンモジュール２００に格納する。
【０１１３】
［ステップＳ２４］  出力データ送信部１１０ｇは、監査プログラム１２０ｆの演算処理によって取得された出力データをトークンモジュール２００に送信し、送信した出力データを、トークンモジュール２００に、出力データ２００ｇとして格納する。
【０１１４】
［ステップＳ２５］  タイムスタンプ出力部１１０ｈは、タイムスタンプ２００ｈを作成する。
具体的には、改ざん防止プログラム１１０は、監査プログラム１２０ｆの演算に関するデータである、例えば、案件番号２０１ａ、ＰＩＤ２０１ｂ、ＵＩＤ２０１ｃ、ＴＩＭＥ２０１ｄ、ＤＩｘ２０１ｅ、ＤＯｘ２０１ｇなどを連結して１つのメッセージ・データとする。次に、改ざん防止プログラム１１０は、メッセージ・データに対して予め用意した特定のハッシュ関数を用いてハッシュ値を算出する。次に、改ざん防止プログラム１１０は、この算出したハッシュ値に、ユーザの電子署名の非公開鍵であるＫＵ２０１ｈを施して、演算処理結果に対する電子署名であるＤＳＩＧＮ２０１ｍを生成する。
【０１１５】
そして、改ざん防止プログラム１１０は、生成された電子署名であるＤＳＩＧＮ２０１ｍなどを含めてタイムスタンプ２０１（図４参照）を生成する。
［ステップＳ２６］  タイムスタンプ出力部１１０ｈは、ステップＳ２５において作成したタイムスタンプ２０１を、トークンモジュール２００に送信し、送信したタイムスタンプ２０１をトークンモジュール２００に、タイムスタンプ２００ｈとして格納する。
【０１１６】
［ステップＳ２７］  タイムスタンプ出力部１１０ｈは、ステップＳ２１によって取得された出力データ２００ｇおよびステップＳ２５において作成したタイムスタンプ２００ｈの所定の一部をプリンタ１５３に出力し、出力データ２００ｇおよびタイムスタンプ２００ｈ所定の一部をプリントアウトする。
【０１１７】
このような改ざん防止処理によって、監査プログラム１２０ｆの演算結果の正当性が担保され、演算結果の改ざんが防止できる。
次に、改ざん防止処理（図５および図６）のステップＳ２１で実行される監査プログラム実行処理について詳細に説明する。
【０１１８】
図７は、監査プログラム実行処理の手順を示すフローチャートである。以下、図７に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］  監査プログラム実行部１１０ｅは、監査プログラム格納部１２０に格納されている監査プログラム１２０ｆを起動する。
【０１１９】
［ステップＳ３２］  監査プログラム実行部１１０ｅは、入力データ３００を監査プログラム１２０ｆに入力して、演算を実行する。
［ステップＳ３３］  監査プログラム実行部１１０ｅは、ステップＳ３２において算出された監査プログラム１２０ｆの演算結果を取得し、出力データ２００ｇとする。
【０１２０】
このような監査プログラム実行処理によって、監査プログラム１２０ｆによる演算が行われ、監査プログラム１２０ｆの演算結果が取得される。
監査用コンピュータ１００のユーザは、この改ざん防止処理を行って取得したプリンタ１５３による出力結果、および取得したデータが格納されたトークンモジュール２００を検証者に提出する。
【０１２１】
次に、検証用コンピュータ４００で実行される検証処理について詳細に説明する。
図８は、検証処理の手順を示すフローチャートである。この検証処理は、改ざん防止処理（図５および図６）および監査プログラム実行処理（図７）によって取得された監査プログラム１２０ｆの演算結果を検証するために、検証用コンピュータ４００で演算結果を表示する処理である。本実施の形態では、トークンモジュール２００が検証用コンピュータ４００に接続されると、検証用コンピュータ４００は、検査処理を自動的に開始する。以下、図８に示す処理をステップ番号に沿って説明する。
【０１２２】
［ステップＳ４１］  検証用コンピュータ４００は、トークンモジュール２００に格納されている認証情報２００ａを取得する。
［ステップＳ４２］  検証用コンピュータ４００は、ステップＳ４１で取得した認証情報２００ａによってトークンモジュール２００が正当なものであるか否かを判断する。検証用コンピュータ４００は、トークンモジュール２００が正当なものであると認証できれば、ステップＳ４３に処理を進める一方、トークンモジュール２００が正当なものであると認証できなければ、処理を終了する。
【０１２３】
［ステップＳ４３］  検証用コンピュータ４００は、検証者による表示要求の入力を受け付けると共に、検証者によってタイムスタンプの表示要求が行われているか否かを判断する。検証用コンピュータ４００は、タイムスタンプの表示要求が行われていれば、ステップＳ４４に処理を進める一方、タイムスタンプの表示要求が行われていなければ、ステップＳ４５に処理を進める。
【０１２４】
［ステップＳ４４］  検証用コンピュータ４００は、ステップＳ４３における検証者によるタイムスタンプの表示要求に応じて、検証用コンピュータ４００の表示画面（図示省略）にタイムスタンプ表示画面４０３（図１１参照）を表示し、表示終了操作でステップＳ４９に進む。
【０１２５】
［ステップＳ４５］  検証用コンピュータ４００は、検証者による表示要求の入力を受け付けると共に、検証者によって入力データ２００ｄの表示要求が行われているか否かを判断する。検証用コンピュータ４００は、入力データ２００ｄの表示要求が行われていれば、ステップＳ４６に処理を進める一方、入力データ２００ｄの表示要求が行われていなければ、ステップＳ４７に処理を進める。
【０１２６】
［ステップＳ４６］  検証用コンピュータ４００は、ステップＳ４５における検証者による入力データ２００ｄの表示要求に応じて、検証用コンピュータ４００の表示画面（図示省略）に入力データ表示画面４０４（図１２参照）を表示し、表示終了操作でステップＳ４９に進む。
【０１２７】
［ステップＳ４７］  検証用コンピュータ４００は、検証者による表示要求の入力を受け付けると共に、検証者によって出力データ２００ｇの表示要求が行われているか否かを判断する。検証用コンピュータ４００は、出力データ２００ｇの表示要求が行われていれば、ステップＳ４８に処理を進める一方、出力データ２００ｇの表示要求が行われていなければ、ステップＳ４９に処理を進める。
【０１２８】
［ステップＳ４８］  検証用コンピュータ４００は、ステップＳ４７における検証者による出力データ２００ｇの表示要求に応じて、検証用コンピュータ４００の表示画面（図示省略）に出力データ表示画面４０５（図１３参照）を表示し、表示終了操作でステップＳ４９に進む。
【０１２９】
［ステップＳ４９］  検証用コンピュータ４００は、検証者による各表示画面の表示を続行するか否かの入力を受け付けると共に、この入力に基づいて検証処理を続行するか否かを判断する。検証用コンピュータ４００は、検証処理を続行する場合には、ステップＳ４３に処理を進める一方、検証処理を終了する場合には、処理を終了する。
【０１３０】
このような検証処理によって、検証用コンピュータ４００により、監査用コンピュータ１００で実行された監査プログラム１２０ｆによる入力データ、出力データ、タイムスタンプが表示される。これにより、検証用コンピュータ４００に表示される入力データ、出力データ、タイムスタンプなどの情報を確認して、または検証用コンピュータ４００に表示される各情報と、検証者に提出された構造計算書の記載事項や添付されたプリントアウトの内容と照らし合わせて、監査プログラム１２０ｆの演算結果の正当性の検証を行うことができる。
【０１３１】
次に、監査用コンピュータ１００および検証用コンピュータ４００に表示される画面の例を示す。
図９は、検証用コンピュータに表示された認証情報入力画面の例を示す図である。監査用コンピュータ１００に接続されるトークンモジュール２００に対して予めトークンモジュール２００を識別可能な認証情報２００ａを格納するために、検証者が検証用コンピュータ４００に認証情報２００ａを入力するとき、検証用コンピュータ４００の図示しないモニタには、図のような認証情報入力画面４０１が表示される。
【０１３２】
認証情報入力画面４０１には、トークンモジュール２００に格納される認証情報２００ａを入力するための認証情報入力欄４０１ａが設けられる。認証情報入力欄４０１ａによって、検証者は、認証情報２００ａを入力する。入力された認証情報２００ａは、格納されているトークンモジュール２００を認証可能にする。
【０１３３】
また、認証情報入力画面４０１には、認証情報２００ａの入力が完了した後に、認証情報入力画面４０１を終了すると共に、認証情報２００ａをトークンモジュール２００に格納する処理を開始するための認証情報入力確定ボタン４０１ｂが設けられる。認証情報入力確定ボタン４０１ｂによって、検証者は、認証情報２００ａの入力内容を確定させる。認証情報２００ａは、検証用コンピュータ４００によって、トークンモジュール２００に格納される。
【０１３４】
トークンモジュール２００に格納された認証情報２００ａは、トークンモジュール２００の耐タンパ機能により、不正な読み書きや改ざんから保護される。
図１０は、監査用コンピュータに表示されたデータ入力画面の例を示す図である。改ざん防止プログラム１１０のユーザが、監査プログラム１２０ｆによって演算処理される入力データ３００を監査用コンピュータ１００に入力するとき、監査用コンピュータ１００に接続されているモニタ１４０には、図のようなデータ入力画面１４２が表示される。
【０１３５】
データ入力画面１４２には、監査プログラム１２０ｆによって演算処理される入力データ３００を入力するためのデータ入力部１４２ａが設けられる。データ入力部１４２ａによって、改ざん防止プログラム１１０のユーザは、入力データ３００を入力する。入力された入力データ３００は、監査プログラム１２０ｆに入力される。そして、監査プログラム１２０ｆによる演算処理の結果、出力データ２００ｇが取得される。また、入力データ３００は、トークンモジュール２００に送信されて、入力データ２００ｄとして格納される。
【０１３６】
また、データ入力画面１４２には、入力データ３００の入力が完了した後に、入力データ３００を確定し、データ入力画面１４２を終了する入力データ確定ボタン１４２ｂが設けられる。入力データ確定ボタン１４２ｂによって、ユーザは、入力データ３００の入力内容を確定させる。入力データ３００は、監査用コンピュータ１００によって、監査プログラム１２０ｆに入力されると共に、トークンモジュール２００に格納される。
【０１３７】
トークンモジュール２００に格納された入力データ３００は、認証情報２００ａと同様、トークンモジュール２００の耐タンパ機能により、不正な読み書きや改ざんから保護される。
【０１３８】
図１１は、検証用コンピュータに表示されたタイムスタンプ表示画面の例を示す図である。監査用コンピュータ１００による演算の結果取得された出力データ２００ｇの正当性を保証するタイムスタンプ２００ｈについて、検証者が演算結果の検証のために検証用コンピュータ４００に、トークンモジュール２００に格納されているタイムスタンプ２００ｈを表示させる表示要求を行ったとき、検証用コンピュータ４００の図示しないモニタには、図のようなタイムスタンプ表示画面４０３が表示される。
【０１３９】
タイムスタンプ表示画面４０３には、トークンモジュール２００に格納されているタイムスタンプ２００ｈに含まれる時刻情報４０３ａが表示される。
また、タイムスタンプ表示画面４０３には、検証者が時刻情報４０３ａを確認した後に、タイムスタンプ表示画面４０３を終了するためのタイムスタンプ確認ボタン４０３ｂが設けられる。
【０１４０】
検証者は、この検証用コンピュータ４００に表示されている時刻情報４０３ａを確認し、さらに検証用コンピュータ４００に表示されている時刻情報４０３ａと、構造計算書に添付されている、監査用コンピュータ１００に接続されているプリンタ１５３によって出力されたタイムスタンプ２００ｈに含まれる時刻情報とを照らし合わせて、トークンモジュール２００に格納されている監査プログラム１２０ｆの演算結果に関するデータの正当性を検証することができる。
【０１４１】
図１２は、検証用コンピュータに表示された入力データ表示画面の例を示す図である。改ざん防止プログラム１１０のユーザによって入力された入力データ３００の正当性を検証するために、検証者が、検証用コンピュータ４００に、トークンモジュール２００に格納されている入力データ２００ｄを表示させる表示要求を行ったとき、検証用コンピュータ４００の図示しないモニタには、図のような入力データ表示画面４０４が表示される。
【０１４２】
入力データ表示画面４０４には、トークンモジュール２００に格納されている入力データ２００ｄが表示される入力データ表示部４０４ａが設けられる。
また、入力データ表示画面４０４には、検証者が入力データ２００ｄを確認した後に、入力データ表示画面４０４を終了するための入力データ確認ボタン４０４ｂが設けられる。
【０１４３】
検証者は、この検証用コンピュータ４００に表示されている入力データ２００ｄを確認し、さらに検証用コンピュータ４００に表示されている入力データ２００ｄと、構造計算書に添付されている、監査用コンピュータ１００に接続されているプリンタ１５３によって出力された入力データ２００ｄとを照らし合わせて、監査プログラム１２０ｆに入力された入力データ２００ｄの正当性を検証することができる。
【０１４４】
図１３は、検証用コンピュータに表示された出力データ表示画面の例を示す図である。ユーザによって入力された入力データ３００に基づいて、監査プログラム１２０ｆの演算処理によって出力された出力データ２００ｇの正当性を検証するために、検証者が、検証用コンピュータ４００に、トークンモジュール２００に格納されている出力データ２００ｇを表示させる表示要求を行ったとき、検証用コンピュータ４００の図示しないモニタには、図のような出力データ表示画面４０５が表示される。
【０１４５】
出力データ表示画面４０５には、トークンモジュール２００に格納されている出力データ２００ｇが表示される出力データ表示部４０５ａが設けられる。
また、出力データ表示画面４０５には、検証者が出力データ２００ｇを確認した後に、出力データ表示画面４０５を終了するための出力データ確認ボタン４０５ｂが設けられる。
【０１４６】
検証者は、この検証用コンピュータ４００に表示されている出力データ２００ｇを確認し、さらに検証用コンピュータ４００に表示されている出力データ２００ｇと、構造計算書に添付されている、監査用コンピュータ１００に接続されているプリンタ１５３によって出力された出力データ２００ｇとを照らし合わせて、監査プログラム１２０ｆから取得された出力データ２００ｇの正当性を検証することができる。
【０１４７】
以上のように、第１の実施の形態では、入力データ３００に関する情報、出力データ２００ｇに関する情報、認証情報２００ａに関する情報、プログラム署名情報２００ｂに関する情報、および監査プログラム１２０ｆの実行によって算出された出力データ２００ｇの算出時刻を示す情報（図４参照）に自動的に電子署名が施され、さらに、これが、耐タンパ機能を有するトークンモジュール２００に格納される。そして電子署名が施された当該データは、検証用コンピュータ４００で検証可能である。
【０１４８】
これにより、演算処理の後に自動的に電子署名が施されるので、入力データおよび出力データから監査署名を再作成し、トークンモジュール２００に予め格納されている監査署名とが照合可能になる。そのため、演算結果の捏造や、本来の入力データと異なる入力データに基づく出力データの付け替えを行うことが困難になる。また、入力データや出力データの改ざんを行っても、電子署名によって改ざんの発見が可能であるので、出力データに関するこれらの不正を防止することができる。また、トークンモジュール２００の耐タンパ機能により、トークンモジュール２００に格納されている演算結果の出力後の改ざんも困難になる。
【０１４９】
また、改ざん防止プログラム１１０自体に関する情報に電子署名が施されたものになることによってプログラム自体の正当性も担保されるので、監査プログラム１２０ｆは、認定を受けたプログラムであって、プログラムが改ざんされていない限り、正しいデータが入力されていれば、正しい出力データが得られることから、監査プログラム１２０ｆに対する電子署名によって、プログラムの改ざんによる不正も発見しやすくなると共に、このような不正を防止することができる。
【０１５０】
以上により、第１の実施の形態によれば、データの監査プログラム１２０ｆの演算結果の改ざんを防止することができる。
［第２の実施の形態］
次に、第２の実施の形態を、図面を参照して詳細に説明する。前述の第１の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
【０１５１】
第２の実施の形態の改ざん防止プログラムは、第１の実施の形態の改ざん防止プログラムと同様に、監査プログラムによる処理結果の改ざんを防止するものである。ここで、第２の実施の形態の改ざん防止プログラムは、第１の実施の形態のトークンモジュールに代えて、ネットワークに接続された監査用サーバを用いる点、ならびに監査用コンピュータ、検証用コンピュータ、および監査用サーバがネットワークで接続されている点が異なる。
【０１５２】
第２の実施の形態では、申請を行う監査プログラムのユーザは、監査用コンピュータに接続されたプリンタから出力された演算結果を構造計算書に添付して監督官庁に提出し、監督官庁は、その演算結果と監査用サーバに格納されたデータとを検証用コンピュータを用いて比較することにより、演算結果の正当性を判断できる。なお、ネットワーク上のデータは暗号化される。
【０１５３】
図１４は、第２の実施の形態のシステム構成例を示す図である。第２の実施の形態に係るネットワークシステムでは、ネットワーク５００を介して監査用コンピュータ１００、検証用コンピュータ４００、および監査用サーバ２２００が接続されている。
【０１５４】
監査用コンピュータ１００は、第１の実施の形態と同様に、改ざん防止プログラム１１０によって、監査プログラム１２０ｆによる処理結果の改ざんを防止するように機能するコンピュータである。
【０１５５】
検証用コンピュータ４００は、第１の実施の形態と同様に、検証者が、監査プログラム１２０ｆによる演算結果の正当性の検証を行うためのコンピュータである。
監査用サーバ２２００は、監査用コンピュータ１００で演算された監査プログラム１２０ｆによる演算結果および演算結果の正当性を検証するためのデータを格納するためのコンピュータである。監査用サーバ２２００は、監査用コンピュータ１００に送信するためのデータ、および監査用コンピュータ１００から送信されたデータを格納可能である。監査用サーバ２２００は、不正アクセス対策が採られており、内部に保持されているデータを、不正なアクセス（読み出しおよび書き込み）や改ざんから保護することができる。
【０１５６】
監査用サーバ２２００は、ネットワーク５００を介して接続された監査用コンピュータ１００からの正当な要求に応じて、監査用コンピュータ１００から送信されたデータを格納し、格納されているデータを監査用コンピュータ１００に送信する。また、監査用サーバ２２００は、ネットワーク５００を介して接続された検証用コンピュータ４００に、格納しているデータを検証用コンピュータ４００に送信する。
【０１５７】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、監査用サーバ２２００のハードウェア構成は省略したが、第１の実施の形態の図２において説明した監査用コンピュータ１００と同様のハードウェア構成で実現することができる。
【０１５８】
ここで、監査用コンピュータ１００と検証用コンピュータ４００の間は、両コンピュータの通信インタフェース（図２の通信インタフェース１０７参照）によって、ネットワーク５００を介して通信可能である。監査用コンピュータ１００と監査用サーバ２２００の間、および検証用コンピュータ４００と監査用サーバ２２００の間も同様である。
【０１５９】
次に、第２の実施の形態において、監査プログラム１２０ｆによる処理結果の改ざんを防止するために改ざん防止プログラム１１０が監査用コンピュータ１００に実現させる機能について説明する。
【０１６０】
図１５は、第２の実施の形態の監査用コンピュータの機能を示すブロック図である。監査用コンピュータ１００は、第１の実施の形態と同様に、改ざん防止プログラム１１０により、認証情報受付部１１０ａ、プログラム署名受付部１１０ｂ、プログラム確認部１１０ｃ、入力データ受付部１１０ｄ、監査プログラム実行部１１０ｅ、出力データ送信部１１０ｇ、およびタイムスタンプ出力部１１０ｈとして機能する。
【０１６１】
認証情報受付部１１０ａは、監査用サーバ２２００に格納されており、監査用サーバ２２００を認証するための認証情報２２００ａを監査用サーバ２２００から取得する。この認証情報２２００ａは、監査用サーバ２２００に、不正に書き換えることができないように格納されている情報である。なお、認証情報２２００ａは、第１の実施の形態と同様に、チャレンジ・レスポンス認証などのワンタイム・パスワードを用いて動的に変化させて、よりセキュアに構成してもよい。
【０１６２】
プログラム署名受付部１１０ｂは、監査用サーバ２２００に格納されており監査プログラム１２０ｆに関する情報に電子署名を施したプログラム署名情報２２００ｂを受け付ける。
【０１６３】
プログラム確認部１１０ｃは、第１の実施の形態と同様に、プログラム署名情報２２００ｂに基づいて、監査プログラム１２０ｆの正当性を確認する。監査プログラム１２０ｆの正当性の確認は、第１の実施の形態と同様に、改ざん防止処理（図５参照）のステップＳ１５において、監査用サーバ２２００から読み出されたプログラム署名情報２２００ｂと、改ざん防止処理（図５参照）のステップＳ１４において、監査プログラム１２０ｆに関する情報に対して、前述のプログラム署名情報２２００ｂを作成するときに用いられた電子署名の署名鍵と同一の署名鍵を施して作成された監査プログラム１２０ｆの電子署名とを比較することによって行われる。
【０１６４】
そして、第１の実施の形態と同様に、この比較の結果、一致していれば、監査プログラム１２０ｆは正当性が認められる一方、一致しなければ、監査プログラム１２０ｆの正当性は認められず、不正が行われている可能性があることになる。ここで、「プログラム署名情報２２００ｂを作成するときに用いられた署名鍵と同一の署名鍵」は、監査用サーバ２２００に格納されており、第１の実施の形態と同様に、プログラム作成ベンダーの署名鍵（ＫＥＶＡ２０１Ｋ：図４参照）である。
【０１６５】
なお、監査プログラム１２０ｆの正当性の確認は、監査用サーバ２２００から読み出されたプログラム署名情報２２００ｂを電子署名の公開鍵で復号化したものと、プログラム署名情報２２００ｂを生成するときに用いたハッシュ関数と同一のハッシュ関数で求めた監査プログラム１２０ｆに関する情報とを比較することによって行ってもよい。
【０１６６】
入力データ受付部１１０ｄは、第１の実施の形態と同様に、監査プログラム１２０ｆによって処理される入力データ３００の入力を受け付ける。そして、入力データ受付部１１０ｄは、受け付けた当該入力データ３００を監査用サーバ２２００に送信する。送信された入力データ３００は、監査用サーバ２２００において、入力データ２２００ｄとして格納される。この監査用サーバ２２００に格納された入力データ２２００ｄは、後述する出力データ２２００ｇおよびタイムスタンプ２２００ｈと共に、第１の実施の形態と同様に、検証用コンピュータ４００によって、監査プログラム１２０ｆの処理結果の改ざんがされていないことの検証に用いられる。
【０１６７】
ここで、前述したように、監査用サーバ２２００は、不正アクセス対策が採られており、内部に保持されているデータを、不正なアクセス（読み出しおよび書き込み）や改ざんから保護する。
【０１６８】
監査プログラム実行部１１０ｅは、第１の実施の形態と同様に、入力データ３００に基づく監査プログラム１２０ｆの実行を監査用コンピュータ１００に指示する。この監査プログラム１２０ｆは、監査プログラム格納部１２０に格納されている。
【０１６９】
監査プログラム格納部１２０は、監査用コンピュータ１００のユーザの指示により、監査用サーバ２２００が監査用コンピュータ１００に接続されると、第１の実施の形態と同様に、監査用サーバ２２００に圧縮されて格納されている監査プログラム２２００ｆを読み出して、読み出された監査プログラム２２００ｆを監査プログラム格納部１２０自身に展開して監査プログラム１２０ｆとして、監査用コンピュータ１００により実行可能に格納する。
【０１７０】
監査プログラム実行部１１０ｅは、第１の実施の形態と同様に、監査プログラム１２０ｆの実行を指示する。また、監査プログラム実行部１１０ｅは、監査プログラム１２０ｆの実行を指示する際には、監査プログラム格納部１２０に格納された監査プログラム１２０ｆを読み出して監査用コンピュータ１００に実行させる。この監査プログラム実行部１１０ｅによる実行の指示に基づいて、監査用コンピュータ１００は、監査プログラム１２０ｆによって、入力データ３００に対して演算処理を行う。
【０１７１】
そして、監査プログラム実行部１１０ｅは、第１の実施の形態と同様に、入力データ３００に基づく監査プログラム１２０ｆの演算結果を出力データとして取得する。この出力データは、改ざんがされていないことの検証の対象となるデータである。
【０１７２】
出力データ送信部１１０ｇは、監査プログラム実行部１１０ｅによって取得された出力データを、監査用サーバ２２００に送信する。送信された出力データは、監査用サーバ２２００に、出力データ２２００ｇとして格納される。
【０１７３】
タイムスタンプ出力部１１０ｈは、第１の実施の形態と同様に、入力データ３００に関する情報、出力データ２２００ｇに関する情報、認証情報２２００ａに関する情報、プログラム署名情報２２００ｂに関する情報、および監査プログラム１２０ｆの実行によって算出された出力データ２２００ｇの算出時刻を示す情報に電子署名を施すことによって、タイムスタンプを生成する。そして、タイムスタンプ出力部１１０ｈは、生成したタイムスタンプを、監査用サーバ２２００に送信する。送信されたタイムスタンプは、監査用サーバ２２００に、タイムスタンプ２２００ｈとして格納される。また、タイムスタンプ出力部１１０ｈは、タイムスタンプ２２００ｈをプリンタ１５３に出力可能である。
【０１７４】
検証用コンピュータ４００は、検証者が、監査プログラム１２０ｆによる演算結果の正当性の検証を行うためのコンピュータである。検証用コンピュータ４００は、不正アクセス対策が採られた監査用サーバ２２００に格納されているデータを正当に読み書き可能である。
【０１７５】
検証者は、監査プログラム１２０ｆによる演算結果が正当なものであるかの検証を行う際には、検証用コンピュータ４００を用いて、ネットワーク５００を介して検証用コンピュータ４００に接続された監査用サーバ２２００から、演算時に格納された入力データ２２００ｄ、出力データ２２００ｇ、およびタイムスタンプ２２００ｈを読み出して、第１の実施の形態と同様に、演算結果の検証を行う。
【０１７６】
ここで、本実施の形態の認証情報２２００ａ、プログラム署名情報２２００ｂ、入力データ２２００ｄ、監査プログラム２２００ｆ、出力データ２２００ｇ、およびタイムスタンプ２２００ｈは、それぞれ第１の実施の形態の認証情報２００ａ、プログラム署名情報２００ｂ、入力データ２００ｄ、監査プログラム２００ｆ、出力データ２００ｇ、およびタイムスタンプ２００ｈに相当する。
【０１７７】
なお、本実施の形態では、改ざん防止プログラム１１０を実行する監査用コンピュータ１００がタイムスタンプを生成するが、これに限らず、外部に設けられたタイムスタンプ認証センタに設置された図示しないタイムスタンプ認証コンピュータなどの、監査用コンピュータ１００以外のタイムスタンプ認証コンピュータが、タイムスタンプを生成してもよい。この場合、監査用コンピュータ１００、検証用コンピュータ４００、監査用サーバ２２００、およびタイムスタンプ認証コンピュータは、ネットワーク５００によって接続される。
【０１７８】
第２の実施の形態では、第１の実施の形態に加えて、監査用コンピュータ１００、検証用コンピュータ４００、および監査用サーバ２２００がネットワーク５００によって接続されているので、第１の実施の形態のように、トークンモジュール２００を監査用コンピュータ１００と検証用コンピュータ４００との間で接続し直したり、トークンモジュール２００を持ち運んだりする必要がない。さらに、監査から検証までを、ネットワーク５００を介することにより、短期間で処理することができる。
【０１７９】
［第３の実施の形態］
次に、第３の実施の形態を、図面を参照して詳細に説明する。前述の第１の実施の形態との相違点を中心に説明し、同様の事項については説明を省略する。
【０１８０】
第３の実施の形態の改ざん防止プログラムは、第１の実施の形態の改ざん防止プログラムと同様に、監査プログラムによる処理結果の改ざんを防止するものである。ここで、第３の実施の形態の改ざん防止プログラムは、第１の実施の形態のトークンモジュール２００を用いずに、不正アクセス対策を施した監査用ファイルによって第１の実施の形態のトークンモジュール２００と同様の機能を実現する点が異なる。
【０１８１】
第３の実施の形態では、監査プログラム１２０ｆおよび改ざん防止プログラム１１０のインストールや、入力データ、演算結果や第１の実施の形態でトークンモジュール２００に格納される情報を、監査用ファイルに書き込んだ監査用コンピュータ１００を貸し出し、演算処理が完了した後に、検証者に監査用コンピュータ１００を提出することとなる。
【０１８２】
監査用ファイルは、改ざん防止のために、例えば、パスワードによる暗号化など、データが暗号化処理や署名処理が施される。また、ユーザに貸し出される監査用コンピュータ１００は、ネットワーク閉塞や、アクセス制御などの強固なセキュリティ処理が施される。ここで、監査用コンピュータ１００は、ユーザと検証者との間の運搬に便利なように、ノート型パソコンにしてもよい。
【０１８３】
次に、第３の実施の形態において、監査プログラム１２０ｆによる処理結果の改ざんを防止するために改ざん防止プログラム１１０が監査用コンピュータ１００に実現させる機能について説明する。
【０１８４】
図１６は、第３の実施の形態の監査用コンピュータの機能を示すブロック図である。監査用コンピュータ１００は、第１の実施の形態と同様に、改ざん防止プログラム１１０により、認証情報受付部１１０ａ、プログラム署名受付部１１０ｂ、プログラム確認部１１０ｃ、入力データ受付部１１０ｄ、監査プログラム実行部１１０ｅ、出力データ送信部１１０ｇ、およびタイムスタンプ出力部１１０ｈとして機能する。
【０１８５】
認証情報受付部１１０ａは、監査用ファイル３２００に格納されており監査用ファイル３２００を認証するための認証情報３２００ａを、監査用ファイル３２００から取得する。この認証情報３２００ａは、監査用ファイル３２００に、不正に書き換えることができないように格納されている情報である。なお、認証情報３２００ａは、第１の実施の形態と同様に、チャレンジ・レスポンス認証などのワンタイム・パスワードを用いて動的に変化させて、よりセキュアに構成してもよい。
【０１８６】
プログラム署名受付部１１０ｂは、監査用ファイル３２００に格納されており監査プログラム１２０ｆに関する情報に電子署名を施したプログラム署名情報３２００ｂを受け付ける。
【０１８７】
プログラム確認部１１０ｃは、第１の実施の形態と同様に、プログラム署名情報３２００ｂに基づいて、監査プログラム１２０ｆの正当性を確認する。監査プログラム１２０ｆの正当性の確認は、第１の実施の形態と同様に、改ざん防止処理（図５参照）のステップＳ１５において、監査用ファイル３２００から読み出されたプログラム署名情報３２００ｂと、改ざん防止処理（図５参照）のステップＳ１４において、監査プログラム１２０ｆに関する情報に対して、前述のプログラム署名情報３２００ｂを作成するときに用いられた電子署名の署名鍵と同一の署名鍵を施して作成された監査プログラム１２０ｆの電子署名とを比較することによって行われる。
【０１８８】
そして、第１の実施の形態と同様に、この比較の結果、一致していれば、監査プログラム１２０ｆは正当性が認められる一方、一致しなければ、監査プログラム１２０ｆの正当性は認められず、不正が行われている可能性があることになる。ここで、「プログラム署名情報３２００ｂを作成するときに用いられた署名鍵と同一の署名鍵」は、監査用ファイル３２００に格納されており、第１の実施の形態と同様に、プログラム作成ベンダーの署名鍵（ＫＥＶＡ２０１Ｋ：図４参照）である。
【０１８９】
なお、監査プログラム１２０ｆの正当性の確認は、監査用ファイル３２００から読み出されたプログラム署名情報３２００ｂを電子署名の公開鍵で復号化したものと、プログラム署名情報３２００ｂを生成するときに用いたハッシュ関数と同一のハッシュ関数で求めた監査プログラム１２０ｆに関する情報とを比較することによって行ってもよい。
【０１９０】
入力データ受付部１１０ｄは、第１の実施の形態と同様に、監査プログラム１２０ｆによって処理される入力データ３００の入力を受け付ける。そして、入力データ受付部１１０ｄは、受け付けた当該入力データ３００を監査用ファイル３２００に送信する。送信された入力データ３００は、監査用ファイル３２００において、入力データ３２００ｄとして格納される。この監査用ファイル３２００に格納された入力データ３２００ｄは、後述する出力データ３２００ｇおよびタイムスタンプ３２００ｈと共に、第１の実施の形態と同様に、検証用コンピュータ４００によって、監査プログラム１２０ｆの処理結果の改ざんがされていないことの検証に用いられる。
【０１９１】
ここで、前述したように、監査用ファイル３２００は、不正アクセス対策が採られており、内部に保持されているデータを、不正なアクセス（読み出しおよび書き込み）や改ざんから保護する。
【０１９２】
監査プログラム実行部１１０ｅは、第１の実施の形態と同様に、入力データ３００に基づく監査プログラム１２０ｆの実行を監査用コンピュータ１００に指示する。この監査プログラム１２０ｆは、監査プログラム格納部１２０に格納されている。
【０１９３】
監査プログラム格納部１２０は、監査用コンピュータ１００のユーザの指示により、第１の実施の形態と同様に、監査用ファイル３２００に圧縮されて格納されている監査プログラム３２００ｆを読み出して、読み出された監査プログラム３２００ｆを監査プログラム格納部１２０自身に展開して監査プログラム１２０ｆとして、監査用コンピュータ１００により実行可能に格納する。
【０１９４】
監査プログラム実行部１１０ｅは、第１の実施の形態と同様に、監査プログラム１２０ｆの実行を指示する。また、監査プログラム実行部１１０ｅは、監査プログラム１２０ｆの実行を指示する際には、監査プログラム格納部１２０に格納された監査プログラム１２０ｆを読み出して監査用コンピュータ１００に実行させる。この監査プログラム実行部１１０ｅによる実行の指示に基づいて、監査用コンピュータ１００は、監査プログラム１２０ｆによって、入力データ３００に対して演算処理を行う。
【０１９５】
そして、監査プログラム実行部１１０ｅは、第１の実施の形態と同様に、入力データ３００に基づく監査プログラム１２０ｆの演算結果を出力データ３２００ｇとして取得する。この出力データ３２００ｇは、改ざんがされていないことの検証の対象となるデータである。
【０１９６】
出力データ送信部１１０ｇは、監査プログラム実行部１１０ｅによって取得された出力データを、監査用ファイル３２００に送信する。送信された出力データは、監査用ファイル３２００に、出力データ３２００ｇとして格納される。
【０１９７】
タイムスタンプ出力部１１０ｈは、第１の実施の形態と同様に、入力データ３００に関する情報、出力データ３２００ｇに関する情報、認証情報３２００ａに関する情報、プログラム署名情報３２００ｂに関する情報、および監査プログラム１２０ｆの実行によって算出された出力データ３２００ｇの算出時刻を示す情報に電子署名を施すことによって、タイムスタンプを生成する。そして、タイムスタンプ出力部１１０ｈは、生成したタイムスタンプを、監査用ファイル３２００に送信する。送信されたタイムスタンプは、監査用ファイル３２００に、タイムスタンプ３２００ｈとして格納される。また、タイムスタンプ出力部１１０ｈは、タイムスタンプ３２００ｈをプリンタ１５３に出力可能である。
【０１９８】
検証用コンピュータ４００は、検証者が、監査プログラム１２０ｆによる演算結果の正当性の検証を行うためのコンピュータである。検証用コンピュータ４００は、不正アクセス対策が採られた監査用ファイル３２００に格納されているデータを正当に読み書き可能である。
【０１９９】
検証者は、監査プログラム１２０ｆによる演算結果が正当なものであるかの検証を行う際には、検証用コンピュータ４００を用いて、ネットワーク５００を介して検証用コンピュータ４００に接続された監査用ファイル３２００から、演算時に格納された入力データ３２００ｄ、出力データ３２００ｇ、およびタイムスタンプ３２００ｈを読み出して、第１の実施の形態と同様に、演算結果の検証を行う。
【０２００】
ここで、本実施の形態の認証情報３２００ａ、プログラム署名情報３２００ｂ、入力データ３２００ｄ、監査プログラム３２００ｆ、出力データ３２００ｇ、およびタイムスタンプ３２００ｈは、それぞれ第１の実施の形態の認証情報２００ａ、プログラム署名情報２００ｂ、入力データ２００ｄ、監査プログラム２００ｆ、出力データ２００ｇ、およびタイムスタンプ２００ｈに相当する。
【０２０１】
第３の実施の形態では、第１の実施の形態と同等の機能を、トークンモジュール２００のようなハードウェア装置を用いずに、ソフトウェアのみで実現可能である。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、監査用コンピュータ、検証用コンピュータおよび監査用サーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０２０２】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０２０３】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０２０４】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
【図面の簡単な説明】
【０２０５】
【図１】発明の概要を示す図である。
【図２】監査用コンピュータのハードウェア構成例を示す図である。
【図３】第１の実施の形態の監査用コンピュータの機能を示すブロック図である。
【図４】タイムスタンプのデータ構造を示す図である。
【図５】改ざん防止処理の手順を示すフローチャート（前半）である。
【図６】改ざん防止処理の手順を示すフローチャート（後半）である。
【図７】監査プログラム実行処理の手順を示すフローチャートである。
【図８】検証処理の手順を示すフローチャートである。
【図９】検証用コンピュータに表示された認証情報入力画面の例を示す図である。
【図１０】監査用コンピュータに表示されたデータ入力画面の例を示す図である。
【図１１】検証用コンピュータに表示されたタイムスタンプ表示画面の例を示す図である。
【図１２】検証用コンピュータに表示された入力データ表示画面の例を示す図である。
【図１３】検証用コンピュータに表示された出力データ表示画面の例を示す図である。
【図１４】第２の実施の形態のシステム構成例を示す図である。
【図１５】第２の実施の形態の監査用コンピュータの機能を示すブロック図である。
【図１６】第３の実施の形態の監査用コンピュータの機能を示すブロック図である。
【符号の説明】
【０２０６】
１  コンピュータ
２  情報格納手段
２ａ  入力データ
２ｃ  出力データ
２ｄ  監査署名情報
３  入力データ
４  コンピュータ
４ａ  検証手段
１１  改ざん防止プログラム
１１ａ  入力データ受付手段
１１ｂ  演算プログラム実行手段
１１ｃ  出力データ送信手段
１１ｄ  監査署名情報出力手段
１２  演算プログラム
【図１】
2009048283.tif 000003
【図２】
2009048283.tif 000004
【図３】
2009048283.tif 000005
【図４】
2009048283.tif 000006
【図５】
2009048283.tif 000007
【図６】
2009048283.tif 000008
【図７】
2009048283.tif 000009
【図８】
2009048283.tif 000010
【図９】
2009048283.tif 000011
【図１０】
2009048283.tif 000012
【図１１】
2009048283.tif 000013
【図１２】
2009048283.tif 000014
【図１３】
2009048283.tif 000015
【図１４】
2009048283.tif 000016
【図１５】
2009048283.tif 000017
【図１６】
2009048283.tif 000018