(57)【要約】【課題】処理順を保証した信頼性の高い時刻情報を付与できるようにする。【解決手段】署名対象データ１ａを指定した署名要求が入力されると、時刻検証手段２ｃにより、内部時計で示されるモジュール内時刻が、最新の署名済ファイル１ｂに対して電子署名作成時に付与された時刻情報で示される時刻よりも後の時刻であるか否かを判断する。時刻検証手段２ｃにおいてモジュール内時刻の方が後の時刻であると判断された場合、電子署名手段２ｅにより、署名対象データ１ａに対してモジュール内時刻を示す時刻情報が付与され、モジュール内時刻を示す時刻情報と署名対象データ１ａとに対する電子署名が生成される。そして、署名済ファイル送信手段２ｆにより、モジュール内時刻を示す時刻情報、署名対象データ、および電子署名を含む署名済ファイル１ｃがコンピュータ１に送信される。【選択図】図１
2009049554.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに接続して使用され、前記コンピュータ内のデータに電子署名を施すための時計ハードモジュールにおいて、
モジュール内時刻を示す内部時計と、
署名対象データを指定した署名要求が入力されると、接続した前記コンピュータが保持する最新の署名済ファイルを取得し、前記内部時計で示される前記モジュール内時刻が、前記最新の署名済ファイルに対して電子署名作成時に付与された時刻情報で示される時刻よりも後の時刻であるか否かを判断する時刻検証手段と、
前記時刻検証手段において前記モジュール内時刻の方が後の時刻であると判断された場合、前記モジュール内時刻を示す時刻情報と前記署名対象データとに対する電子署名を生成する電子署名手段と、
前記モジュール内時刻を示す時刻情報、前記署名対象データ、および電子署名を含む署名済ファイルを前記コンピュータに送信する署名済ファイル送信手段と、
を有することを特徴とする時計ハードモジュール。
【請求項２】
前記時刻検証手段は、取得した前記最新の署名済ファイルに対して付与された電子署名の正当性を検証し、電子署名が正当な場合にのみ前記モジュール内時刻と前記最新の署名済ファイルに対して付与された時刻情報で示される時刻との比較を行うことを特徴とする請求項１記載の時計ハードモジュール。
【請求項３】
前記最新の署名済ファイルには、前記コンピュータ内のデータへの電子署名に使用された時計ハードモジュールのハードモジュール番号が時系列で記録された履歴情報が含まれており、
前記時計ハードモジュールを一意に識別するための自己のハードモジュール番号を記憶するハードモジュール番号記憶手段と、
前記履歴情報において直前以外の過去の使用履歴として前記ハードモジュール番号記憶手段に記憶されている前記自己のハードモジュール番号が登録されている場合、旧時計ハードモジュールの再使用行為であると判断する履歴検証手段と、を更に有し、
前記電子署名手段は、前記履歴検証手段において旧時計ハードモジュールの再使用行為では無いと判断された場合にのみ、時系列上の最後に前記自己のハードモジュール番号を記録した前記履歴情報を含めた電子署名を作成し、
前記署名済ファイル送信手段は、前記署名済ファイルに前記履歴情報を含めることを特徴とする請求項１記載の時計ハードモジュール。
【請求項４】
前記署名要求には、前記署名要求を指示したユーザを一意に識別するための現在作業ユーザ識別番号が含まれており、
前記最新の署名済ファイルには、前記最新の署名済ファイルに対して電子署名を指示したユーザを一意に識別するための前回作業ユーザ識別番号が含まれており、
前記現在作業ユーザ識別番号と前記前回作業ユーザ識別番号を比較し、一致する場合、同一ユーザであると判断するユーザ検証手段を更に有し、
前記電子署名手段は、前記ユーザ検証手段において同一ユーザであると判断された場合にのみ、前記現在作業ユーザ識別番号を含めた電子署名を作成し、
前記署名済ファイル送信手段は、前記署名済ファイルに前記現在作業ユーザ識別番号を含めることを特徴とする請求項１記載の時計ハードモジュール。
【請求項５】
前記最新の署名済ファイルには、前記最新の署名済ファイルに付与された前記時刻情報を含む暗号化対象情報を暗号化した暗号データが含まれており、
入力された暗号化対象情報を暗号化すると共に、入力された前記暗号データを復号する暗号化／復号手段と、
前記最新の署名済ファイルに含まれる前記暗号データを前記暗号化／復号手段に入力して復号を依頼し、正しく復号できたか否かを判断する暗号検証手段と、を更に有し、
前記電子署名手段は、前記暗号検証手段において前記暗号データが正しく復号できたと判断された場合にのみ、前記モジュール内時刻を示す時刻情報を含む暗号化対象情報を前記暗号化／復号手段に対して入力して暗号化を依頼し、暗号化された暗号データを含めた電子署名を作成し、
前記署名済ファイル送信手段は、前記署名済ファイルに前記暗号データを含めることを特徴とする請求項１記載の時計ハードモジュール。
【請求項６】
前記暗号化／復号手段は、前記時計ハードモジュールの使用が許可されたユーザに固有の情報を用いて鍵を生成し、生成した前記鍵によって暗号化および復号を行うことを特徴とする請求項５記載の時計ハードモジュール。
【請求項７】
データに電子署名を施すための電子署名システムにおいて、
時計ハードモジュールを接続可能なコンピュータ側インタフェースと、
未署名ファイルと署名済ファイルとを記憶するファイル記憶手段と、
前記未署名ファイルに対する署名を指示する操作入力に応答して、前記未署名ファイル内のデータを署名対象データとして使用した署名要求を、前記コンピュータ側インタフェースに接続された時計ハードモジュールに対して入力する署名要求手段と、
を具備するコンピュータと、
前記コンピュータに接続可能なモジュール側インタフェースと、
モジュール内時刻を示す内部時計と、
前記署名要求が入力されると、接続した前記コンピュータが保持する最新の署名済ファイルを取得し、前記内部時計で示される前記モジュール内時刻が、前記最新の署名済ファイルに対して電子署名作成時に付与された時刻情報で示される時刻よりも後の時刻であるか否かを判断する時刻検証手段と、
前記時刻検証手段において前記モジュール内時刻の方が後の時刻であると判断された場合、前記モジュール内時刻を示す時刻情報と前記署名対象データとに対する電子署名を生成する電子署名手段と、
前記モジュール内時刻を示す時刻情報、前記署名対象データ、および電子署名を含む署名済ファイルを前記コンピュータに送信する署名済ファイル送信手段と、
を具備する前記時計ハードモジュールと、
を有することを特徴とする電子署名システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ内のデータに電子署名を施すための時計ハードモジュールおよび時計ハードモジュールを用いて電子署名を行う電子署名システムに関し、特に時刻管理を行う時計ハードモジュールおよび電子署名システムに関する。
【背景技術】
【０００２】
コンピュータを用いた業務において、ファイルに時刻情報を設定する場合がある。たとえば、ファイル作成時に時刻付きの電子署名をファイルに付与することで、そのファイルの作成日時を、改ざんできない情報で記録できる。このとき、電子署名に含める時刻としてコンピュータの内部時計を利用してしまうと、設定した時刻の信頼性が得られない。すなわち、コンピュータの内部時計は正確でないため、その内部時計の時刻をファイルに設定したとしても、その時刻が正しいかどうかが分からない。そこで、コンピュータの内部時計を、外部の時計を用いて正確に合わせる技術が考えられている（特許文献１参照）。
【０００３】
ただし、コンピュータの内部時計は、ユーザによって自由に設定変更が可能である。そのため、コンピュータの内部時計を使用している以上、ファイルに設定した時刻が正確であるという保証は無い。
【０００４】
そこで、ユーザが自由に時刻を変更できない外部時計を用い、その外部時計の時刻を直接ファイルに設定することもできる。この場合、外部時計として、耐タンパ性の高いハードモジュール型時計（以下、時計ハードモジュールと称する）を用いる。なお、耐タンパ性とは、外部からの攻撃に耐える能力の高さである。耐タンパ機能は、特に、内部のデータや機能が外部に漏れることに対する防護力を備えている。たとえば、無理にケースをこじ開けようとすると内部の情報が消滅するような構造とすることで、耐タンパ性を高めることができる。このような耐タンパ性の高い時計ハードモジュールを用いて時刻付署名を重要な電子文書に付加することで、電子署名に付与する時刻情報の信頼性を高めることができる。
【特許文献１】特開平５−１６５５４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、時計ハードモジュールによる時刻管理を行う場合、原則として、同時期に使用できる時計ハードモジュールは１つだけであることが望まれる。すなわち、時刻管理を行う場合、設定される時刻を管理する時計が複数存在すると、時刻情報に基づく処理順を保証できなくなってしまう。ここで、時刻情報に基づく処理順の保証とは、電子文書に付与された時刻情報に基づいて複数の電子文書を時系列に並べれば、各電子文書に対して時刻付署名を施した順番となっていることを保証することである。
【０００６】
そこで、時計ハードモジュールの再発行は、既存の時計ハードモジュール（旧時計ハードモジュール）が使用できなくなった場合に限定される。たとえば、時計ハードモジュールを紛失した場合や時計ハードモジュールが故障した場合などである。このような場合には、時計ハードモジュール管理者から新しい時計ハードモジュール（新時計ハードモジュール）が再発行される。その際、旧時計ハードモジュールと同じ初期設定が新時計ハードモジュールに対しても行われる。これにより、旧時計ハードモジュールに代えて新時計ハードモジュールが使用できる。
【０００７】
しかし、時計ハードモジュールの再発行を行うと、使用可能な時計ハードモジュールが複数存在する事態が生じかねない。たとえば、紛失していた旧時計ハードモジュールが、新時計ハードモジュール発行後に発見された場合などである。この場合、新旧どちらの時計ハードモジュールを使ってもシステム上問題なく使用できてしまう。
【０００８】
このとき、新旧の時計ハードモジュールの時刻が一致していない場合に問題が生じる。たとえば、旧時計ハードモジュールの時計が遅延していたり、あるいは実際の時刻より進んでしまっていた場合であっても、旧時計ハードモジュールをそのまま使えてしまう。すると、後に設定した電子署名の時刻の方が、先に設定した電子署名の時刻よりも過去の時刻となるといったことも有り得る。このような時刻の順序の逆転が生じると、時刻情報に基づく処理順の保証ができなくなってしまう。
【０００９】
さらに、このような時刻のずれた複数の時計ハードモジュールの存在を許してしまうと、不正行為が行い易くなってしまう。たとえば、都合のよい時間だけ内部時計が狂っている時計ハードモジュールを複数準備し、必要に応じて時計ハードモジュールを使い分けることができる。このような使用方法が許されると、悪意のあるユーザによって、電子署名の処理順の記録が恣意的に操作されてしまう。
【００１０】
本発明はこのような点に鑑みてなされたものであり、処理順を保証した信頼性の高い時刻情報を付与できる時計ハードモジュールおよび電子署名システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明では上記課題を解決するために、図１に示すような時計ハードモジュール２が提供される。時計ハードモジュール２は、コンピュータ１に接続して使用され、コンピュータ１内のデータに電子署名を施すために以下の機能を有する。内部時計２ａは、モジュール内時刻を示す。時刻検証手段２ｃは、署名対象データ１ａを指定した署名要求が入力されると、接続したコンピュータ１が保持する最新の署名済ファイル１ｂを取得し、内部時計２ａで示されるモジュール内時刻が、最新の署名済ファイル１ｂに対して電子署名作成時に付与された時刻情報で示される時刻よりも後の時刻であるか否かを判断する。電子署名手段２ｅは、時刻検証手段２ｃにおいてモジュール内時刻の方が後の時刻であると判断された場合、モジュール内時刻を示す時刻情報と署名対象データとに対する電子署名を生成する。署名済ファイル送信手段２ｆは、モジュール内時刻を示す時刻情報、署名対象データ、および電子署名を含む署名済ファイル１ｃをコンピュータ１に送信する。
【００１２】
このような時計ハードモジュールによれば、署名対象データ１ａを指定した署名要求が入力されると、時刻検証手段２ｃにより、内部時計で示されるモジュール内時刻が、最新の署名済ファイル１ｂに対して電子署名作成時に付与された時刻情報で示される時刻よりも後の時刻であるか否かを判断する。時刻検証手段２ｃにおいてモジュール内時刻の方が後の時刻であると判断された場合、電子署名手段２ｅにより、署名対象データ１ａに対してモジュール内時刻を示す時刻情報が付与され、モジュール内時刻を示す時刻情報と署名対象データ１ａとに対する電子署名が生成される。そして、署名済ファイル送信手段２ｆにより、モジュール内時刻を示す時刻情報、署名対象データ、および電子署名を含む署名済ファイル１ｃがコンピュータ１に送信される。
【発明の効果】
【００１３】
本発明では、最新の署名済ファイルに設定された時刻情報よりも、内部時計で示されるモジュール内時刻の方が後の時刻の場合にのみ電子署名を実施するようにした。そのため、複数の署名済ファイルを生成した場合、各署名済ファイルに付与される時刻情報の連続性が保証される。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、発明の概要を示す図である。時計ハードモジュール２は、コンピュータ１に接続して使用される。コンピュータ１には、予め署名対象データ１ａと最新の署名済ファイル１ｂが格納されている。最新の署名済ファイル１ｂには、時刻情報、データ、履歴情報、および電子署名が含まれている。
【００１５】
時刻情報は、最新の署名済ファイル１ｂに対して電子署名作成時に付与されたタイムスタンプであり、電子署名を施した時刻を示している。データは、電子署名による改ざん防止の対象となるデータである。履歴情報は、コンピュータ１内のデータへの電子署名に使用された時計ハードモジュールのハードモジュール番号が時系列で記録されたものである。電子署名は、最新の署名済ファイル１ｂが改ざんされていないことを検証するためのデータである。たとえば、電子署名は、時刻情報、データ、および履歴情報に基づいて算出されたハッシュ値である。
【００１６】
時計ハードモジュール２は、内部時計２ａ、ハードモジュール番号記憶手段２ｂ、時刻検証手段２ｃ、履歴検証手段２ｄ、電子署名手段２ｅ、および署名済ファイル送信手段２ｆを有している。
【００１７】
内部時計２ａは、モジュール内時刻を示している。なお、内部時計２ａによって示されるモジュール内時刻は、時計ハードモジュール２がユーザに配布される際に、正確な時刻に設定される。その後は、内部時計２ａの機能によって、モジュール内時刻が逐次更新される。
【００１８】
ハードモジュール番号記憶手段２ｂは、時計ハードモジュール２を一意に識別するための自己のハードモジュール番号を記憶する。すなわち、時計ハードモジュール２が故障した場合には、代替の時計ハードモジュールがユーザに提供されるが、代替の時計ハードモジュールのハードモジュール番号は、図示した時計ハードモジュール２のハードモジュール番号とは異なる値となる。
【００１９】
時刻検証手段２ｃは、署名対象データを指定した署名要求が入力されると、接続したコンピュータ１が保持する最新の署名済ファイル１ｂを取得する。たとえば、コンピュータ１に格納された複数の署名済ファイルの中から最近の時刻情報が付与された署名済ファイルを、最新の署名済ファイル１ｂとすることができる。そして、時刻検証手段２ｃは、内部時計２ａで示されるモジュール内時刻が、最新の署名済ファイル１ｂに対して付与された時刻情報で示される時刻よりも後の時刻であるか否かを判断する。
【００２０】
履歴検証手段２ｄは、最新の署名済ファイル１ｂに付与された履歴情報を参照する。そして、履歴検証手段２ｄは、参照した履歴情報において、直前以外の過去の使用履歴としてハードモジュール番号記憶手段２ｂに記憶されている自己のハードモジュール番号が登録されている場合、旧時計ハードモジュールの再使用行為であると判断する。
【００２１】
電子署名手段２ｅは、時刻検証手段２ｃと履歴検証手段２ｄとの判断結果に応じて、電子署名を実施するか否かを判断する。すなわち、電子署名手段２ｅは、時刻検証手段２ｃにおいてモジュール内時刻の方が後の時刻であると判断され、かつ履歴検証手段２ｄにおいて旧時計ハードモジュールの再使用行為では無いと判断された場合に、署名対象データ１ａに対して電子署名を施す。具体的には、電子署名手段２ｅは、最新の署名済ファイル１ｂの履歴情報に基づいて、時系列上の最後に自己のハードモジュール番号を記録した履歴情報を生成する。そして、電子署名手段２ｅは、モジュール内時刻を示す時刻情報、署名対象データ、および作成した履歴情報に対する電子署名（たとえば、ハッシュ値）を生成する。
【００２２】
署名済ファイル送信手段２ｆは、モジュール内時刻を示す時刻情報、署名対象データ、履歴情報、および電子署名を含む署名済ファイル１ｃをコンピュータに送信する。
このようにして、複数の署名済ファイルを生成した場合、各署名済ファイルに付与される時刻情報の連続性が保証される。すなわち、電子署名を施す前に、時刻検証手段２ｃによって、最新の署名済ファイル１ｂの時刻情報よりも内部時計２ａで示されるモジュール内時刻の方が後であることを確認している。署名済ファイルに付与された時刻情報は、必ず電子署名を行った時系列に沿った順番の情報となる。これにより、署名済ファイルに設定される時刻の一貫性（電子署名の処理順が後であるほど、時刻情報で示される時刻も後となる）を保つことができる。
【００２３】
たとえば、旧時計ハードモジュールが電池切れによって時計が止まっていた場合を想定する。この場合、新時計ハードモジュールが発行される。そして、新時計ハードモジュールを用いた電子署名実施後に旧時計ハードモジュールを使おうとすると、モジュール内時刻が、最新の署名済ファイルの時刻情報で示される時刻よりも前の時刻となる。その結果、電子署名は実行されない。
【００２４】
また、図１の時計ハードモジュール２では、履歴検証手段２ｄによって旧時計ハードモジュールの再使用では無いと判断された場合にのみ電子署名を施す様にしている。そのため、使用できる時計ハードモジュールが同時に複数存在する事態を防止できる。すなわち、モジュール内時刻が正確か否かに拘わらず、新時計ハードモジュールの使用後は、旧時計ハードモジュールの使用が禁止される。これにより、新旧の複数の時計ハードモジュールが同時に使用可能となることを防止することができ、ユーザによる不正使用等を適切に禁止できる。
【００２５】
たとえば、時計ハードモジュールの動作不良によって、内部時計が狂った（遅れるか、あるいは進みすぎ）場合を想定する。ユーザは、時計ハードモジュールの内部時計が不正確であることが分かると、時計ハードモジュールの管理者に新時計ハードモジュールの発行を依頼する。そして、新時計ハードモジュールが発行された後は、新時計ハードモジュールのみが使用可能である。ユーザが、内部時計が不正確な時計ハードモジュール（旧時計ハードモジュール）の使用を試みた場合、履歴検証手段２ｄによって旧時計ハードモジュールの再使用であると判断され、電子署名は実施されない。その結果、不正確な時刻情報に基づいてタイムスタンプが付与されるのを防止できる。すなわち、時刻の異なる複数の時計ハードモジュールを任意に選択して使用し、タイムスタンプの時刻を恣意的に選択するといった不正行為が防止される。
【００２６】
なお、時刻情報による処理順の保証（後に電子署名が施された署名済ファイル程、後の時刻情報が付与される）だけでよい場合、ハードモジュール番号記憶手段２ｂと履歴検証手段２ｄとは不要である。その場合、電子署名手段２ｅは、時刻検証手段２ｃにおいてモジュール内時刻の方が後の時刻であると判断されれば、電子署名の生成処理を実行する。
【００２７】
ところで、内部時計は、悪意のあるユーザによって改ざんできないように、耐タンパ機能を備えていることが望まれる。また、所定の情報を暗号化して署名済ファイルに付与することで、データの改ざん防止効果をさらに高めることができる。そこで、様々な改ざん防止機能を組み合わせた時計ハードモジュールを使用して、電署名処理を行う場合を例に採り、本実施の形態を詳細に説明する。
【００２８】
図２は、本実施の形態に用いるコンピュータのハードウェア構成例を示す図である。本実施の形態では、コンピュータ１００に対して、タンパフリー（内部の構造や情報を外部から改ざんできない）な時計を内蔵した時計ハードモジュール２００が接続される。なお、時計ハードモジュール２００は内部に電池を有しており、コンピュータ１００に接続されていない状態でも、電池から供給した電源によって内部時計を動作させる。時計ハードモジュール２００は、コンピュータ１００に接続された状態であればコンピュータ１００から電源が供給される。
【００２９】
コンピュータ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０８を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、ＰＣカードインタフェース１０６、および通信インタフェース１０７が接続されている。
【００３０】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００３１】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０８を介してＣＰＵ１０１に送信する。
【００３２】
ＰＣカードインタフェース１０６は、各種ＰＣカードを接続可能な通信インタフェースである。時計ハードモジュール２００はＰＣカードの通信規格に適合しており、ＰＣカードインタフェース１０６に接続される。時計ハードモジュール２００は、ＰＣカードインタフェース１０６を介してＣＰＵ１０１とデータの受け渡しを行い、ＣＰＵ１０１から指示されたファイルの電子署名を行う。
【００３３】
通信インタフェース１０７は、ネットワーク１０に接続されている。通信インタフェース１０７は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００３４】
図３は、時計ハードモジュールのハードウェア構成を示す図である。時計ハードモジュール２００は、ＣＰＵ２０１、メモリ２０２、入出力インタフェース２０３、タンパフリー時計２２０、および暗号化／復号回路２３０を有している。
【００３５】
ＣＰＵ２０１は、時計ハードモジュール２００全体を制御する。メモリ２０２は、様々なデータを記憶する。入出力インタフェース２０３は、コンピュータ１００とデータの送受信を行うための通信インタフェースである。入出力インタフェース２０３は、コンピュータ１００のＰＣカードインタフェース１０６に接続可能であり、コンピュータ１００から送られる情報をＣＰＵ２０１に渡すと共に、ＣＰＵ２０１から送られる情報をコンピュータ１００に渡す。
【００３６】
タンパフリー時計２２０は、耐タンパ性の高い時計回路である。暗号化／復号回路２３０は、所定の暗号化／復号アルゴリズムにより、ＣＰＵ２０１から渡されたデータの暗号化または復号を行う回路である。
【００３７】
なお、時計ハードモジュール２００は図示しない充電式のバッテリを有しており、コンピュータ１００に接続されていない状態では、そのバッテリから各要素に電源が供給される。また、時計ハードモジュール２００がコンピュータ１００に接続されているときは、入出力インタフェース２０３経由で、コンピュータ１００から時計ハードモジュール２００内の各要素に電源が供給される。その間は、コンピュータ１００から供給される電源によって、バッテリの充電が行われる。
【００３８】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図４は、電子署名機能を示すブロック図である。コンピュータ１００は、ファイル記憶部１１０、クライアントアプリケーション１２０、および時計ハードモジュール制御部１３０を有している。
【００３９】
ファイル記憶部１１０は、クライアントアプリケーション１２０で作成されたファイルを記憶する。たとえば、ＨＤＤ１０３の記憶領域の一部がファイル記憶部１１０として使用される。
【００４０】
クライアントアプリケーション１２０は、ユーザの操作入力等に基づいて、ファイルの作成、編集等を行う。また、クライアントアプリケーション１２０は、作成したファイルの電子署名を時計ハードモジュール２００に対して要求し、電子署名付きのファイルを時計ハードモジュール２００から受け取ることができる。クライアントアプリケーション１２０は、未承認のファイルや電子承認済みのファイルをファイル記憶部１１０に格納する。
【００４１】
時計ハードモジュール制御部１３０は、時計ハードモジュール２００との間でデータの受け渡しを行うためのインタフェースである。時計ハードモジュール制御部１３０は、クライアントアプリケーション１２０からの処理要求やデータを時計ハードモジュール２００に渡す。また、時計ハードモジュール制御部１３０は、時計ハードモジュール２００から送られたデータをクライアントアプリケーション１２０に渡したり、時計ハードモジュール２００からの要求に従ってファイル記憶部１１０からファイルを取得する。
【００４２】
時計ハードモジュール２００は、鍵情報記憶部２１０、タンパフリー時計２２０、暗号化／復号回路２３０、署名部２４０、署名検証部２５０、ハードモジュール番号記憶部２６０、およびファイル番号カウンタ２７０を有している。なお、図１に示した時刻検証手段２ｃ、履歴検証手段２ｄ、電子署名手段２ｅ、および署名済ファイル送信手段２ｆの機能は、署名部２４０に含まれている。また、図１に示した内部時計２ａの機能は、タンパフリー時計２２０に含まれている。さらに、図１に示したハードモジュール番号記憶手段２ｄの機能は、ハードモジュール番号記憶部２６０に含まれている。
【００４３】
鍵情報記憶部２１０は、鍵情報を記憶する。メモリ２０２内の記憶領域の一部が鍵情報記憶部２１０として使用される。鍵情報としては、たとえば、時計ハードモジュール２００を使用するユーザの公開情報と、任意に設定したパスワードとが使用される。公開情報とパスワードとは、時計ハードモジュール２００をユーザに発行する際に、発行者が鍵情報記憶部２１０に予め格納する。
【００４４】
ユーザの公開情報は、ユーザに一意に設定された識別情報が出る。たとえば、金融機関で使用されるのであれば、ユーザの口座番号が公開情報として鍵情報に使用される。また、個人確認をしてサービス（たとえば、ＤＶＤ（Digital Versatile Disc）レンタル店）を提供する店舗では、本人確認のためにユーザが提出した証明書の番号（運転免許証番号、健康保険証番号など）を公開情報として、鍵情報に使用できる。さらに、企業内で社員によって使用されるのであれば、社員番号が公開情報として鍵情報に使用される。
【００４５】
暗号化／復号回路２３０は、ファイルに対して電子署名を施す際に、時刻情報を含む所定の情報の暗号化を行う。また、暗号化／復号回路２３０は、ファイルに対して電子署名を施す際に、直前に電子署名を施したファイル内の暗号情報を復号する。暗号化／復号回路２３０は、暗号化または復号を行う場合、鍵情報記憶部２１０から鍵情報を取得する。暗号化／復号回路２３０は、鍵情報に対して所定のハッシュ関数による演算を行いハッシュ値を得る。暗号化／復号回路２３０は、得られたハッシュ値を鍵として、暗号化または復号を行う。
【００４６】
署名部２４０は、コンピュータ１００のクライアントアプリケーション１２０からの要求に応答して、ファイルに対する電子署名を行う。この際、署名部２４０は、タンパフリー時計２２０で示されるモジュール内時刻が、直前に電子署名を施したファイルに設定されている時刻以後の時刻である場合に限り、電子署名を実施する。なお、署名部２４０は、ＣＰＵ２０１がメモリ２０２内のプログラムを実行することで実現する機能である。
【００４７】
署名検証部２５０は、署名済ファイルの電子署名が正しいか否かを検証する。具体的には、署名検証部２５０は、指定された署名済ファイルの電子署名以外の情報からハッシュ値を計算し、電子署名を再生成する。そして、署名検証部２５０は、生成した電子署名と、署名済ファイルに付与されていた電子署名とが一致すれば、電子署名が正しいと判断する。なお、署名検証部２５０は、ＣＰＵ２０１がメモリ２０２内のプログラムを実行することで実現する機能である。
【００４８】
ハードモジュール番号記憶部２６０は、時計ハードモジュール２００を一意に識別するためのハードモジュール番号を記憶する。時計ハードモジュールの再発行が行われた場合、新時計ハードモジュールにおける鍵情報記憶部２１０には旧時計ハードモジュールと同一の情報が格納されるが、ハードモジュール番号記憶部２６０に対しては新時計ハードモジュールに固有のハードモジュール番号が格納される。
【００４９】
ファイル番号カウンタ２７０は、電子署名を施したファイルに対して付与するファイル番号を管理するカウンタである。ファイル番号カウンタ２７０は、電子署名が施される毎に、ファイル番号の値を１ずつカウントアップする。
【００５０】
次に、ファイル記憶部１１０に格納されたファイルのデータ構造について説明する。
図５は、ファイル記憶部の記憶内容を示す図である。ファイル記憶部１１０には、複数の未署名ファイル１１１，１１１ａ，１１１ｂ，・・・と、複数の電子署名済ファイル１１２，１１２ａ，１１２ｂ，・・・とが格納されている。未署名ファイル１１１，１１１ａ，１１１ｂ，・・・はクライアントアプリケーション１２０で作成されたものであり、クライアントアプリケーション１２０に定義されたデータ構造のデータが含まれている。
【００５１】
電子署名済ファイル１１２，１１２ａ，１１２ｂ，・・・は、ユーザ識別番号、ファイル作成時刻、ハードモジュール番号、暗号情報、ファイル番号、データ、ハードモジュール使用履歴、およびチェックサムのフィールドで構成されている。
【００５２】
ユーザ識別番号のフィールドには、時計ハードモジュール２００のユーザを一意に識別するためのユーザ識別番号（ＵＩＤ）が登録される。
ファイル作成時刻のフィールドには、ファイルを作成した最後の時刻（Ｔ）が登録される。この時刻は、電子署名を行った時計ハードモジュールから取得した時刻である。
【００５３】
ハードモジュール番号のフィールドには、電子署名を行った時計ハードモジュールを識別するためのハードモジュール番号（ＣＩＤ）が登録される。
暗号情報のフィールドには、時刻情報を含む所定の情報を暗号化した暗号情報（Ｅｋ）が登録される。具体的には、ユーザ識別情報、ファイル作成時刻、およびハードモジュール番号が暗号化されている。
【００５４】
ファイル番号のフィールドには、署名済ファイル１１２を一意に識別するためのファイル番号（ＤＩＤ）が登録される。ファイル番号は、署名済ファイルが作成される毎に、昇順の数値がシーケンシャルに設定される。従って、ファイル番号の数値が最も大きい署名済ファイルが最新の（直前に生成された）署名済ファイルである。
【００５５】
データのフィールドには、ファイルの本来のデータ（Ｄ）が登録される。
ハードモジュール使用履歴のフィールドには、ハードモジュール使用履歴（Ｈ）が登録される。ハードモジュール使用履歴は、過去にコンピュータ１００において使用された全ての時計ハードモジュールのハードモジュール番号が、使用期間の時系列に沿った配列で登録されている。
【００５６】
チェックサムのフィールドには、時計ハードモジュールによって付与された電子署名（ＣＳ）が登録される。電子署名は、ユーザ識別番号、ファイル作成時刻、ハードモジュール番号、暗号情報、ファイル番号、データ、およびハードモジュール使用履歴の各フィールドに登録された全ての情報（署名対象情報群）を用いて計算されたハッシュ値である。すなわち、チェックサムに電子署名を登録後、チェックサム以外のフィールドに登録された情報の少なくとも一部が改ざんされると、同じハッシュ関数を用いても異なるハッシュ値となる。その結果、改ざんが行われたことを検出可能となる。
【００５７】
次に、上記の構成により行われる電子署名処理について説明する。
図６は、電子署名の際の情報の流れを示す概略図である。時計ハードモジュール２００には、予めパスワード（ＰＷ）２１１、ユーザ公開情報（ＵＩ）２１２、ハードモジュール番号（ＣＩＤN）２６１、および最新ファイル番号（Ｆmax）２７１が格納されている。なお、パスワード２１１とユーザ公開情報２１２とは、時計ハードモジュール２００の発行者によって鍵情報記憶部２１０に格納されている。ハードモジュール番号（ＣＩＤN）２６１は、時計ハードモジュール２００発行者によってハードモジュール番号記憶部２６０に格納されている。また、時計ハードモジュール２００では、タンパフリー時計２２０によって、時計ハードモジュール２００によって認識される現在時刻（ＴN）２２１（モジュール内時刻）が生成される。最新ファイル番号（Ｆmax）２７１は、ファイル番号カウンタ２７０で示される値である。
【００５８】
また、図６の例では、未署名ファイル１１１に電子署名を施すものとする。また、署名済ファイル１１２ｂが、最新の署名済ファイルであるものとする。ここで、署名済ファイル１１２ｂのユーザ識別番号を「ＵＩＤO」、ファイル作成時刻を「ＴO」、ハードモジュール番号を「ＣＩＤO」、暗号情報を「ＥｋO」、ファイル番号を「ＤＩＤO」、データを「ＤO」、ハードモジュール使用履歴を「ＨO」、チェックサムを「ＣＳO」とする。
【００５９】
このようなデータが格納されている状況で、署名要求２０に応答して、未署名ファイル１１１から署名済ファイル１１２ｃを生成する。なお、署名要求２０は、クライアントアプリケーション１２０から出力され、時計ハードモジュール制御部１３０を介して時計ハードモジュール２００に渡される。
【００６０】
署名要求２０には、署名対象ファイル名（ＦN）２１とユーザ識別番号（ＵＩＤIN）２２とが含まれる。署名対象ファイル名２１は、未署名ファイル１１１の識別情報（ファイルの格納場所を示すパス、およびファイル名）を示している。ユーザ識別情報２２は、クライアントアプリケーション１２０を使用しているユーザの識別情報である。たとえば、クライアントアプリケーション１２０を使用しているユーザのログインアカウントに付与されているユーザＩＤが、ユーザ識別情報２２として使用される。
【００６１】
署名要求２０が時計ハードモジュール２００に入力されると、時計ハードモジュール２００は、時計ハードモジュール制御部１３０を介して未署名ファイル１１１をファイル記憶部１１０から読み出す。そして、時計ハードモジュール２００は、未署名ファイル１１１に対して時刻情報（タイムスタンプ）付の電子署名を施し、署名済ファイル１１２ｃを生成する。生成された署名済ファイル１１２ｃは、時計ハードモジュール２００からコンピュータ１００に入力される。すると、署名済ファイル１１２ｃは、時計ハードモジュール制御部１３０によってファイル記憶部１１０に格納される。
【００６２】
ここで、署名済ファイル１１２ｃのユーザ識別番号を「ＵＩＤN」、ファイル作成時刻を「ＴN」、ハードモジュール番号を「ＣＩＤN」、暗号情報を「ＥｋN」、ファイル番号を「ＤＩＤN」、データを「ＤN」、ハードモジュール使用履歴を「ＨN」、チェックサムを「ＣＳN」とする。
【００６３】
このように、署名要求２０に応答して未署名ファイル１１１に対して電子署名が施され、署名済ファイル１１２ｃが生成される。その際、最新の署名済ファイル１１２ｂを参照して、電子署名を実施可能であるか否かが判断される。
【００６４】
次に、時計ハードモジュール２００において実行される電子署名処理の手順を詳細に説明する。
図７は、電子署名処理の手順を示すフローチャートの前半である。以下、図７に示す処理をステップ番号に沿って説明する。なお、電子署名処理は、コンピュータ１００から署名要求２０が入力された際に実行が開始される。
【００６５】
［ステップＳ１１］署名部２４０は、署名要求２０を受け取ると、ファイル記憶部１１０から最新の署名済ファイルを検索する。具体的には、署名部２４０は、ファイル番号カウンタ２７０から最新ファイル番号（Ｆmax）を取得する。そして、署名部２４０は、ファイル記憶部１１０から最新ファイル番号（Ｆmax）と一致するファイル番号が設定された署名済ファイルを検索する。
【００６６】
［ステップＳ１２］署名部２４０は、ステップＳ１１の処理において、最新の署名済ファイルが検出できたか否かを判断する。最新の署名済ファイルを検出できた場合、処理がステップＳ１４に進められる。最新の署名済ファイルを検出できなかった場合、処理がステップＳ１３に進められる。
【００６７】
［ステップＳ１３］署名部２４０は、未署名ファイルに対して署名を施し、１つめの署名対象情報群を作成する。具体的には、署名部２４０は、図５に示したデータ構造（チェックサムは除く）の情報を生成する。その際、作成した署名済ファイルのユーザ識別番号のフィールドには、署名要求２０に含まれていたユーザ識別番号（ＵＩＤIN）が、署名済ファイルの作成者を示すユーザ識別番号（ＵＩＤN）として設定される。ファイル作成時刻のフィールドには、モジュール内時刻（ＴN）が設定される。ハードモジュール番号のフィールドには、時計ハードモジュール２００のハードモジュール番号（ＣＩＤN）が設定される。
【００６８】
暗号情報のフィールドには、ユーザ識別番号、最終ファイル作成時計ハードモジュール番号それぞれのフィールドに設定されている値（“ＵＩＤN”、“ＴN”、“ＣＩＤN”を暗号化した暗号データが設定される。なお、暗号データは、暗号化／復号回路２３０によって生成される。暗号化／復号回路２３０は、時計ハードモジュール２００内のパスワード（ＰＷ）２１１とユーザ公開情報（ＵＩ）２１２をキーレスハッシュ処理（キー情報が不要のハッシュ関数によってハッシュ値を生成する処理）を行う。暗号化／復号回路２３０は、このハッシュ処理によって生成した値を暗号鍵として、暗号化処理を行う。暗号化された暗号情報は、署名部２４０に渡される。すると、署名部２４０によって、新たに生成した署名済ファイルの暗号情報のフィールドに、暗号化／復号回路２３０から渡された暗号情報を設定する。
【００６９】
ファイル番号のフィールドには、ファイル番号の最小値（たとえば「０」）が設定される。データのフィールドには、未署名ファイル１１１内のデータが設定される。ハードモジュール使用履歴のフィールドには、時計ハードモジュール２００のハードモジュール番号（ＣＩＤN）が、ハードモジュール使用履歴（Ｈ）として新規登録される。
【００７０】
１つめの署名対象情報群が生成されると、処理がステップＳ２８（図８に示す）に進められる。
［ステップＳ１４］最新の署名済ファイル１１２ｂが検出できた場合、署名部２４０は、最新の署名済ファイル１１２ｂの暗号情報フィールドから暗号情報（Ｅｋ）を読み込む。署名部２４０は、読み込んだ暗号情報（Ｅｋ）を暗号化／復号回路２３０に渡す。
【００７１】
［ステップＳ１５］暗号化／復号回路２３０は、鍵を生成する。具体的には、暗号化／復号回路２３０は、鍵情報記憶部２１０からパスワード（ＰＷ）２１１とユーザ公開情報（ＵＩ）２１２とを読み込む。そして、暗号化／復号回路２３０は、パスワード（ＰＷ）２１１とユーザ公開情報（ＵＩ）２１２とに対してキーレスハッシュ処理を施し、得られたハッシュ値を鍵とする。
【００７２】
［ステップＳ１６］暗号化／復号回路２３０は、ステップＳ１４で読み込んだ暗号情報を、ステップＳ１５で生成した鍵で復号する。暗号化／復号回路２３０は、復号処理の結果を、署名部２４０に渡す。正しく復号できた場合、復号された情報が署名部２４０に渡される。復号に失敗した場合、失敗した旨の情報が署名部２４０に渡される。
【００７３】
正しく復号できたか否かは、具体的には、復号処理の結果として得られた値から、ユーザ識別番号（ＵＩＤ）、時刻（Ｔ）、ハードモジュール番号（ＣＩＤ）を読み取ることができるか否かで判断できる。たとえば、ユーザ識別番号（ＵＩＤ）、時刻（Ｔ）、ハードモジュール番号（ＣＩＤ）が全て数字で示されるのであれば、復号された結果、所定のキャラクタコード体系における数字列となっているはずである。復号結果として有効な数字列が得られないとき（時刻（Ｔ）の値が、あり得ない時刻となった場合など）は、復号に失敗したと判断される。
【００７４】
［ステップＳ１７］署名部２４０は、復号できたか否かを判断する。たとえば、時計ハードモジュール２００が他人（最新の署名済ファイル１１２ｂに証明したユーザと別人）のものであれば、復号に失敗することとなる。復号に失敗した場合、電子署名処理が終了する。復号が成功すれば、処理がステップＳ１８に進められる。
【００７５】
［ステップＳ１８］署名部２４０は、復号された情報内のチェックサム（ＣＳO）と、最新の署名済ファイル１１２ｂの内容から生成されるチェックサムとを比較し、一致するか否かを判断する。署名済ファイル１１２ｂが改ざんされていなければ、チェックサムは一致する。チェックサムが一致したら処理がステップＳ１９に進められる。チェックサムが一致しなければ、処理が終了する。
【００７６】
［ステップＳ１９］署名部２４０は、復号された情報内のユーザ識別番号（ＵＩＤO）と、署名要求２０に含まれるユーザ識別番号（ＵＩＤIN）とが一致するか否かを判断する。ユーザ識別番号が一致すれば、処理がステップＳ２１（図８に示す）に進められる。ユーザ識別番号が一致しなければ、処理が終了する。
【００７７】
図８は、電子署名処理の手順を示すフローチャートの後半である。以下、図８に示す処理をステップ番号に沿って説明する。
［ステップＳ２１］署名部２４０は、最新の署名済ファイル１１２ｂに対して、過去の時刻が設定されているか否かを判断する。具体的には、署名部２４０は、最新の署名済ファイル１１２ｂのファイル作成時刻（ＴO）と、タンパフリー時計２２０から得られるモジュール内時刻（ＴN）とを比較し、モジュール内時刻（ＴN）の方が大きければ過去の時刻が設定されていると判断する。最新の署名済ファイル１１２ｂに過去の時刻が設定されていれば、処理がステップＳ２２に進められる。最新の署名済ファイル１１２ａに設定されている時刻の方が後の時刻の場合、処理が終了する。
【００７８】
［ステップＳ２２］署名部２４０は、挿入した時計ハードモジュール２００が、旧時計ハードモジュールに該当するか否かを判断する。具体的には、署名部２４０は、最新の署名済ファイル１１２ａのハードモジュール使用履歴（ＨO）を取得する。そして、署名部２４０は、ハードモジュール番号記憶部２６０に登録された自己のハードモジュール番号（ＣＩＤN）が、ハードモジュール使用履歴（ＨO）に含まれているか否かを判断する。含まれている場合、自己のハードモジュール番号（ＣＩＤN）が、ハードモジュール使用履歴（ＨO）内の配列上、最後に登録されているか否かを判断する。自己のハードモジュール番号（ＣＩＤN）が、ハードモジュール使用履歴（ＨO）内の配列における最後以外の場所に登録されていれば、時計ハードモジュール２００が旧時計ハードモジュールであると判断される。そうでなければ、時計ハードモジュール２００は最新のモジュールであると判断される。
【００７９】
時計ハードモジュール２００が旧時計ハードモジュールでなければ、処理がステップＳ２３に進められる。時計ハードモジュール２００が旧時計ハードモジュールであれば、処理が終了する。
【００８０】
［ステップＳ２３］署名部２４０は、挿入した時計ハードモジュール２００の最初の使用か否かを判断する。具体的には、署名部２４０は、暗号情報（ＥｋO）を復号して得られたハードモジュール番号（ＣＩＤO）と、ハードモジュール番号記憶部２６０に格納されているハードモジュール番号（ＣＩＤN）とが一致するか否かを判断する。一致した場合、前回の電子署名処理において時計ハードモジュール２００が使用されていることが分かる。この場合、今回の電子署名処理は、挿入した時計ハードモジュール２００の２回目以降の使用である。
【００８１】
一方、ハードモジュール番号の比較の結果一致しない場合、前回の電子署名処理において別の時計ハードモジュールが使用されていたことが分かる。また、ステップＳ２２の判断結果から時計ハードモジュール２００が旧時計ハードモジュールでは無いことが判明している。すると、今回の電子署名処理が、挿入した時計ハードモジュール２００の最初の使用であることが分かる。
【００８２】
挿入した時計ハードモジュール２００の最初の使用であれば、処理がステップＳ２４に進められる。挿入した時計ハードモジュール２００の２回目以降の使用であれば、処理がステップＳ２６に進められる。
【００８３】
［ステップＳ２４］署名部２４０は、ハードモジュール番号記憶部２６０から取得したハードモジュール番号（ＣＩＤN）を、署名済ファイル１１２ｂのハードモジュール使用履歴（ＨO）に追加登録し、新たに作成する署名済ファイル１１２ｃ用のハードモジュール使用履歴（ＨN）を作成する。この際、ハードモジュール番号（ＣＩＤN）は、既にハードモジュール使用履歴（ＨO）に登録されているハードモジュール番号の配列において、最後の順番となる位置に追加登録される。
【００８４】
［ステップＳ２５］署名部２４０は、ファイル番号カウンタ２７０に、最新の署名済ファイルのファイル番号を設定する。これにより、時計ハードモジュールの切り換えがあっても、ファイル番号の継続性を保つことができる。
【００８５】
［ステップＳ２６］署名部２４０は、ファイル番号カウンタ２７０のファイル番号を更新する。すなわち、ファイル番号カウンタ２７０の値を１だけインクリメントする。
［ステップＳ２７］署名部２４０は、署名対象情報群を生成する。具体的には、署名部２４０は、図５に示したデータ構造のファイルを生成する。その際、作成した署名済ファイルのユーザ識別番号のフィールドには、署名要求２０に含まれていたユーザ識別番号（ＵＩＤIN）が、署名済ファイルの作成者を示すユーザ識別番号（ＵＩＤN）として設定される。ファイル作成時刻のフィールドには、モジュール内時刻（ＴN）が設定される。ハードモジュール番号のフィールドには、時計ハードモジュール２００のハードモジュール番号（ＣＩＤN）が設定される。
【００８６】
暗号情報のフィールドには、ユーザ識別番号、最終ファイル作成時計ハードモジュール番号それぞれのフィールドに設定されている値（“ＵＩＤN”、“ＴN”、“ＣＩＤN”を暗号化した暗号データが設定される。なお、暗号データは、暗号化／復号回路２３０によって生成される。暗号化／復号回路２３０は、時計ハードモジュール２００内のパスワード（ＰＷ）２１１とユーザ公開情報（ＵＩ）２１２をキーレスハッシュ処理（キー情報が不要のハッシュ関数によってハッシュ値を生成する処理）を行う。暗号化／復号回路２３０は、このハッシュ処理によって生成した値を暗号鍵として、暗号化処理を行う。暗号化された暗号情報は、署名部２４０に渡される。すると、署名部２４０によって、新たに生成した署名済ファイルの暗号情報のフィールドに、暗号化／復号回路２３０から渡された暗号情報を設定する。
【００８７】
ファイル番号のフィールドには、ファイル番号カウンタ２７０で示されるファイル番号が設定される。データのフィールドには、未署名ファイル１１１内のデータが設定される。ハードモジュール使用履歴のフィールドには、ステップＳ２４で作成したハードモジュール使用履歴（Ｈ）が設定される。
【００８８】
［ステップＳ２８］署名部２４０は、ステップＳ１３またはステップＳ２７で作成した署名対象情報群に対して電子署名を施す。具体的には、署名部２４０は、ユーザ識別番号、ファイル作成時刻、ハードモジュール番号、暗号情報、ファイル番号、データ、ハードモジュールの各フェイールドに設定された情報に対するハッシュ値を計算する。たとえば、署名部２４０は、トリプルＤＥＳ（Data Encryption Standard）によるＭＡＣ（Message Authentication Code）処理を２回行うことで６４bit署名を生成する。ここで、ＭＡＣ処理では、ＭＤ−５やＳＨＡ−１といったハッシュ関数が使用される。生成されたハッシュ値が署名対象の未署名ファイル１１１に対するチェックサム（ＣＳN）として、チェックサムのフィールドに格納される。チェックサム（ＣＳN）が格納されることにより、未署名ファイル１１１に対する署名済ファイル１１２ｃが生成される。
【００８９】
［ステップＳ２８］署名部２４０は、署名済ファイル１１２ｃをファイル記憶部１１０に格納する。
このようにして、新時計ハードモジュールが発行されその新時計ハードモジュールを使用開始後は、旧時計ハードモジュールによる電子署名はできなくなる。
【００９０】
以下、新旧時計ハードモジュール切り換え時の電子署名実施例を、図９〜図１１を参照して説明する。なお、図９〜図１１では、未署名ファイル、新旧時計ハードモジュール、および署名済ファイルそれぞれに含まれる情報のうち、主な情報のみを図示している。また、図９〜図１１の例では、同一ユーザに対して正式に発行された新旧時計ハードモジュールが使用されるものとし（ユーザ識別番号は一致する）、署名済ファイルに対する改ざんは行われていないものとする。すなわち、図９〜図１１の例は、問題発生の原因となるのは、新時計ハードモジュール使用後の旧時計ハードモジュールの再使用である。
【００９１】
図９は、切り換え前における旧時計ハードモジュールを用いた電子署名処理状況を示す図である。
第１の状態（ＳＴ１）は、旧時計ハードモジュール２００ａを用いた最初の電子署名実施状況を示している。この例では、未署名ファイル３１に対して電子署名を施し、署名済ファイル４１を生成している。なお、旧時計ハードモジュール２００ａは、図４に示す時計ハードモジュール２００と同じ機能を有している。
【００９２】
未署名ファイル３１には、内容が「ＤＡＴＡ＃１」のデータが含まれている。この未署名ファイル３１に対する署名要求を受け取った旧時計ハードモジュール２００ａは、自己のハードモジュール番号（ＣＩＤO）、モジュール内時刻（Ｔ１１）、および未署名ファイル３１に含まれるデータ（ＤＡＴＡ＃１）を含む中間データを生成する。また、最初の電子署名処理であるため、ファイル番号カウンタの初期値（この例では「００１」）がファイル番号（００１）として、中間データに追加される。さらに、その中間データには、ハードモジュール使用履歴（ＨO）が追加される。ハードモジュール使用履歴（ＨO）には、旧時計ハードモジュール２００ａのハードモジュール番号（ＣＩＤO）が含められる。その他、図示していないユーザ識別番号、暗号情報等も中間データに含められる。
【００９３】
そして、旧時計ハードモジュール２００ａは、中間データに含められた全ての情報に対するハッシュ値を計算し、チェックサム（ＣＳ1）を生成する。旧時計ハードモジュール２００ａが、既に作成されている中間データにチェックサム（ＣＳ1）を追加したものを署名済ファイル４１とする。署名済ファイル４１は、ファイル記憶部１１０に格納される。
【００９４】
第２の状態（ＳＴ２）は、旧時計ハードモジュール２００ａを用いた２回目の電子署名実施状況を示している。これは、署名済ファイル４１作成後に、旧時計ハードモジュール２００ａを用いた未署名ファイル３２に対する署名要求が出された場合の処理である。なお、この署名要求が出されたときの旧時計ハードモジュール２００ａのタンパフリー時計で示されるモジュール内時刻（Ｔ１２）は、署名済ファイル４１のファイル作成時刻（Ｔ１１）より後の時刻である（Ｔ１１＜Ｔ１２）。旧時計ハードモジュール２００ａでは、この時刻情報の比較により、時刻の整合性が保たれていることを認識できる。
【００９５】
また、ファイル記憶部１１０に格納されている最新の署名済ファイルは署名済ファイル４１である。署名済ファイル４１のハードモジュール使用履歴には、旧時計ハードモジュール２００ａ自身のハードモジュール番号（ＣＩＤO）しか登録されていない。このことから、旧時計ハードモジュール２００ａでは、前回の電子署名処理においても旧時計ハードモジュール２００ａが使用されたこと（旧時計ハードモジュール２００ａの継続使用であること）を認識できる。
【００９６】
そこで、旧時計ハードモジュール２００ａは、電子署名を実行する条件が整っていると判断する。そして、旧時計ハードモジュール２００ａは、データ３２に対して電子署名処理を施し、署名済ファイル４２を生成する。具体的には、以下の通りである。
【００９７】
図９の例では、未署名ファイル３２には、内容が「ＤＡＴＡ＃２」のデータが含まれている。この未署名ファイル３２に対する署名要求を受け取った旧時計ハードモジュール２００ａは、自己のハードモジュール番号（ＣＩＤO）、モジュール内時刻（Ｔ１２）、および未署名ファイル３２に含まれるデータ（ＤＡＴＡ＃２）を含む中間データを生成する。また、旧時計ハードモジュール２００ａを用いた２回目の電子署名処理であるため、ファイル番号カウンタをカウントアップした後の値（この例では「００２」）がファイル番号（００２）として中間データに追加される。
【００９８】
さらに、その中間データには、ハードモジュール使用履歴（ＨO）が追加される。このとき、旧時計ハードモジュール２００ａは、最新の署名済ファイル４１からハードモジュール使用履歴（ＨO）を取り出し、取り出したハードモジュール使用履歴（ＨO）を中間データに追加する。その他、図示していないユーザ識別番号、暗号情報等も中間データに含められる。
【００９９】
そして、旧時計ハードモジュール２００ａは、中間データに含められた全ての情報に対するハッシュ値を計算し、チェックサム（ＣＳ2）を生成する。旧時計ハードモジュール２００ａが、既に作成されている中間データにチェックサム（ＣＳ2）を追加したものを署名済ファイル４２とする。署名済ファイル４２は、ファイル記憶部１１０に格納される。
【０１００】
その後、旧時計ハードモジュール２００ａを紛失し、新時計ハードモジュールが発行されたものとする。以下、新時計ハードモジュールによる電子署名処理を説明する。
図１０は、新時計ハードモジュールを用いた電子署名処理を示す図である。
【０１０１】
第３の状態（ＳＴ３）は、新時計ハードモジュール２００ｂを用いた１回目の電子署名実施状況を示している。これは、署名済ファイル４２作成後に、新時計ハードモジュール２００ｂを用いた未署名ファイル３３に対する署名要求が出された場合の処理である。
【０１０２】
なお、新時計ハードモジュール２００ｂは、図４に示す時計ハードモジュール２００と同じ機能を有している。また、この署名要求が出されたときの新時計ハードモジュール２００ｂのタンパフリー時計で示されるモジュール内時刻（Ｔ２１）は、署名済ファイル４２のファイル作成時刻（Ｔ１２）より後の時刻である（Ｔ１２＜Ｔ２１）。新時計ハードモジュール２００ｂでは、この時刻情報の比較により、時刻の整合性が保たれていることを認識できる。
【０１０３】
さらに、ファイル記憶部１１０に格納されている最新の署名済ファイルは署名済ファイル４１，４２であり、署名済ファイル４２の方がファイル番号の値が大きいことから、署名済ファイル４２が最新の署名済ファイルであることが分かる。署名済ファイル４２のハードモジュール使用履歴には、旧時計ハードモジュール２００ａのハードモジュール番号（ＣＩＤO）しか登録されていない。このことから、新時計ハードモジュール２００ｂでは、前回の電子署名処理においても旧時計ハードモジュール２００ａが使用されたこと（旧時計ハードモジュール２００ａの継続使用であること）、および新時計ハードモジュール２００ｂが過去に使用されていないことを認識できる。
【０１０４】
そこで、新時計ハードモジュール２００ｂは、電子署名を実行する条件が整っていると判断する。そして、新時計ハードモジュール２００ｂは、データ３３に対して電子署名処理を施し、署名済ファイル４３を生成する。具体的には以下の通りである。
【０１０５】
図１０の例では、未署名ファイル３３には、内容が「ＤＡＴＡ＃３」のデータが含まれている。この未署名ファイル３３に対する署名要求を受け取った新時計ハードモジュール２００ｂは、自己のハードモジュール番号（ＣＩＤN）、モジュール内時刻（Ｔ２１）、および未署名ファイル３３に含まれるデータ（ＤＡＴＡ＃３）を含む中間データを生成する。
【０１０６】
また、新時計ハードモジュール２００ｂを用いた１回目の電子署名処理であるため、ファイル番号カウンタに署名済ファイル４２のファイル番号（この例では「００２」）を設定後、そのファイル番号カウンタの値がカウントアップされる。カウントアップされたファイル番号カウンタの値（この例では「００３」）がファイル番号（００３）として中間データに追加される。
【０１０７】
さらに、その中間データには、ハードモジュール使用履歴（ＨN）が追加される。このとき、新時計ハードモジュール２００ｂは、最新の署名済ファイル４２からハードモジュール使用履歴（ＨO）を取り出し、取り出したハードモジュール使用履歴（ＨO）に新時計ハードモジュール２００ｂのハードモジュール番号（ＣＩＤN）を追加登録する。そして、新時計ハードモジュール２００ｂは、ハードモジュール番号（ＣＩＤN）追加登録後のハードモジュール使用履歴、（ＨN）を中間データに追加する。その他、図示していないユーザ識別番号、暗号情報等も中間データに含められる。
【０１０８】
そして、新時計ハードモジュール２００ｂは、中間データに含められた全ての情報に対するハッシュ値を計算し、チェックサム（ＣＳ3）を生成する。新時計ハードモジュール２００ｂは、既に作成されている中間データにチェックサム（ＣＳ3）を追加したものを署名済ファイル４３とする。署名済ファイル４３は、ファイル記憶部１１０に格納される。
【０１０９】
第４の状態（ＳＴ４）は、新時計ハードモジュール２００ｂを用いた２回目の電子署名実施状況を示している。これは、署名済ファイル４３作成後に、新時計ハードモジュール２００ｂを用いた未署名ファイル３４に対する署名要求が出された場合の処理である。なお、この署名要求が出されたときの新時計ハードモジュール２００ｂのタンパフリー時計で示されるモジュール内時刻（Ｔ２２）は、署名済ファイル４３のファイル作成時刻（Ｔ２１）より後の時刻である（Ｔ２１＜Ｔ２２）。新時計ハードモジュール２００ｂでは、この時刻情報の比較により、時刻の整合性が保たれていることを認識できる。
【０１１０】
また、ファイル記憶部１１０に格納されている最新の署名済ファイルは署名済ファイル４３である。署名済ファイル４３のハードモジュール使用履歴には、新時計ハードモジュール２００ｂ自身のハードモジュール番号（ＣＩＤN）が最後に登録されている。また、署名済ファイル４３に登録されているハードモジュール番号（ＣＩＤN）は、新時計ハードモジュール２００ｂのものである。このことから、新時計ハードモジュール２００ｂでは、前回の電子署名処理においても新時計ハードモジュール２００ｂが使用されたこと（新時計ハードモジュール２００ｂの継続使用であること）を認識できる。
【０１１１】
そこで、新時計ハードモジュール２００ｂは、電子署名を実行する条件が整っていると判断する。そして、新時計ハードモジュール２００ｂは、データ３４に対して電子署名処理を施し、署名済ファイル４４を生成する。具体的には、以下の通りである。
【０１１２】
図１０の例では、未署名ファイル３４には、内容が「ＤＡＴＡ＃４」のデータが含まれている。この未署名ファイル３４に対する署名要求を受け取った新時計ハードモジュール２００ｂは、自己のハードモジュール番号（ＣＩＤN）、モジュール内時刻（Ｔ２２）、および未署名ファイル３４に含まれるデータ（ＤＡＴＡ＃４）を含む中間データを生成する。また、新時計ハードモジュール２００ｂを用いた２回目の電子署名処理であるため、ファイル番号カウンタをカウントアップした後の値（この例では「００４」）がファイル番号（００４）として中間データに追加される。
【０１１３】
さらに、その中間データには、ハードモジュール使用履歴（ＨN）が追加される。このとき、新時計ハードモジュール２００ｂは、最新の署名済ファイル４４からハードモジュール使用履歴（ＨN）を取り出し、取り出したハードモジュール使用履歴（ＨN）を中間データに追加する。その他、図示していないユーザ識別番号、暗号情報等も中間データに含められる。
【０１１４】
そして、新時計ハードモジュール２００ｂは、中間データに含められた全ての情報に対するハッシュ値を計算し、チェックサム（ＣＳ4）を生成する。新時計ハードモジュール２００ｂは、既に作成されている中間データにチェックサム（ＣＳ4）を追加したものを署名済ファイル４４とする。署名済ファイル４４は、ファイル記憶部１１０に格納される。
【０１１５】
その後、紛失していた旧時計ハードモジュール２００ａが発見されたものとする。この時、旧時計ハードモジュール２００ａのタンパフリー時計が故障しており、現実の時刻よりも遅れた時刻を示しているものとする（たとえば、現実の時刻が１２時００分であるにも拘わらず、旧時計ハードモジュール２００ａのタンパフリー時計は１１時００分を示している場合）。以下、新旧それぞれの時計ハードモジュールによる電子署名処理を説明する。
【０１１６】
図１１は、新旧２つの時計ハードモジュールが同時に存在した場合の電子署名処理の例を示す図である。
第５の状態（ＳＴ５）は、旧時計ハードモジュール２００ａを用いた３回目の電子署名実施状況を示している。これは、新時計ハードモジュール２００ｂを用いた署名済ファイル４４作成後に、旧時計ハードモジュール２００ａを用いた未署名ファイル３５に対する署名要求が出された場合の処理である。このとき、この署名要求が出されたときの旧時計ハードモジュール２００ａのタンパフリー時計で示されるモジュール内時刻（Ｔ１３）は、署名済ファイル４１のファイル作成時刻（Ｔ２２）より前の時刻であるものとする（Ｔ１３＜Ｔ２２）。旧時計ハードモジュール２００ａでは、この時刻情報の比較により、時刻の整合性が保たれていないことを認識できる。
【０１１７】
また、ファイル記憶部１１０に格納されている最新の署名済ファイルは署名済ファイル４４である。署名済ファイル４４のハードモジュール使用履歴には、旧時計ハードモジュール２００ａ自身のハードモジュール番号（ＣＩＤO）と、新時計ハードモジュール２００ｂのハードモジュール番号（ＣＩＤN）とが登録されている。しかも、配列上、新時計ハードモジュール２００ｂのハードモジュール番号（ＣＩＤN）の方が後である。このことから、旧時計ハードモジュール２００ａでは、過去に旧時計ハードモジュール２００ａが使用されており、その後少なくとも一度、新時計ハードモジュール２００ｂが使用されていることを認識できる。すなわち、旧時計ハードモジュール２００ａの再使用であることが認識できる。
【０１１８】
すると、時刻の整合性が保たれないこと、および過去に使用した旧時計ハードモジュール２００ａの再使用であることの２つの要件違反によって、旧時計ハードモジュール２００ａは、電子署名の条件が整わないと判断する。なお、この例では、２つの問題点が検出されているが、実際には、旧時計ハードモジュール２００ａは、少なくとも一方の問題点を検出すれば、電子署名を行わない旨の判断を下す。
【０１１９】
第６の状態（ＳＴ６）は、新時計ハードモジュール２００ｂを用いた３回目の電子署名実施状況を示している。これは、署名済ファイル４４作成後に、新時計ハードモジュール２００ｂを用いた未署名ファイル３５に対する署名要求が出された場合の処理である。なお、この署名要求が出されたときの新時計ハードモジュール２００ｂのタンパフリー時計で示されるモジュール内時刻（Ｔ２３）は、署名済ファイル４４のファイル作成時刻（Ｔ２２）より後の時刻である（Ｔ２２＜Ｔ２３）。新時計ハードモジュール２００ｂでは、この時刻情報の比較により、時刻の整合性が保たれていることを認識できる。
【０１２０】
また、ファイル記憶部１１０に格納されている最新の署名済ファイルは署名済ファイル４４である。署名済ファイル４４のハードモジュール使用履歴には、新時計ハードモジュール２００ｂ自身のハードモジュール番号（ＣＩＤN）が最後に登録されている。また、署名済ファイル４４に登録されているハードモジュール番号（ＣＩＤN）は、新時計ハードモジュール２００ｂのものである。このことから、新時計ハードモジュール２００ｂでは、前回の電子署名処理においても新時計ハードモジュール２００ｂが使用されたこと（新時計ハードモジュール２００ｂの継続使用であること）を認識できる。
【０１２１】
そこで、新時計ハードモジュール２００ｂは、電子署名を実行する条件が整っていると判断する。そして、新時計ハードモジュール２００ｂは、データ３５に対して電子署名処理を施し、署名済ファイル４５を生成する。具体的には、以下の通りである。
【０１２２】
図１１の例では、未署名ファイル３５には、内容が「ＤＡＴＡ＃５」のデータが含まれている。この未署名ファイル３５に対する署名要求を受け取った新時計ハードモジュール２００ｂは、自己のハードモジュール番号（ＣＩＤN）、モジュール内時刻（Ｔ２３）、および未署名ファイル３５に含まれるデータ（ＤＡＴＡ＃５）を含む中間データを生成する。また、新時計ハードモジュール２００ｂを用いた３回目の電子署名処理であるため、ファイル番号カウンタをカウントアップした後の値（この例では「００５」）がファイル番号（００５）として中間データに追加される。
【０１２３】
さらに、その中間データには、ハードモジュール使用履歴（ＨN）が追加される。このとき、新時計ハードモジュール２００ｂは、最新の署名済ファイル４５からハードモジュール使用履歴（ＨN）を取り出し、取り出したハードモジュール使用履歴（ＨN）を中間データに追加する。その他、図示していないユーザ識別番号、暗号情報等も中間データに含められる。
【０１２４】
そして、新時計ハードモジュール２００ｂは、中間データに含められた全ての情報に対するハッシュ値を計算し、チェックサム（ＣＳ5）を生成する。新時計ハードモジュール２００ｂは、既に作成されている中間データにチェックサム（ＣＳ5）を追加したものを署名済ファイル４５とする。署名済ファイル４５は、ファイル記憶部１１０に格納される。
【０１２５】
このように、電子署名に使用する時計ハードモジュールを旧時計ハードモジュール２００ａから新時計ハードモジュール２００ｂへ切り換えた後は、再度旧時計ハードモジュール２００ａを使用することはできない。その結果、署名済ファイルに設定されたファイル作成時刻は、電子署名処理の順番が後である程最近の時刻を示すことが保証される。すなわち、ファイル作成時刻によって電子署名ファイルの作成順が保証される。
【０１２６】
なお、署名済ファイルを参照する場合、チェックサムを用いて改ざんの有無を検証することができる。以下、署名済ファイルの検証処理について説明する。
図１２は、検証処理の手順を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。なお、以下の説明は、図４に示す時計ハードモジュール２００がコンピュータ１００に接続され、クライアントアプリケーション１２０から時計ハードモジュール２００へ、検証対象となる署名済ファイルのファイル名（ファイルの位置を含む）を含む検証要求が出されたときに実行される。
【０１２７】
［ステップＳ３１］署名検証部２５０は、検証要求で指定された署名済ファイルをファイル記憶部１１０から取得する。
［ステップＳ３２］署名検証部２５０は、ステップＳ３１で取得した署名済ファイルのチェックサムのフィールドからチェックサムを取得する。
【０１２８】
［ステップＳ３３］署名検証部２５０は、ステップＳ３１で取得した署名済ファイルのチェックサム以外のフィールドの情報に基づいてハッシュ値を計算し、チェックサムを生成する。
【０１２９】
［ステップＳ３４］署名検証部２５０は、ステップＳ３２で取得したチェックサムとステップＳ３３で生成したチェックサムとを比較し、一致するか否かを判断する。一致した場合、処理がステップＳ３５に進められる。一致しない場合、処理がステップＳ３６に進められる。
【０１３０】
［ステップＳ３５］署名検証部２５０は、ステップＳ３１で取得した署名済ファイルのデータのフィールドからデータを取得し、クライアントアプリケーション１２０に渡す。すると、クライアントアプリケーション１２０においてデータの内容がモニタ１１に表示される。その後、処理が終了する。
【０１３１】
［ステップＳ３６］署名検証部２５０は、ファイルが改ざんされている旨のメッセージをクライアントアプリケーション１２０に渡す。すると、クライアントアプリケーション１２０において、改ざんされている旨のメッセージがモニタ１１に表示される。
【０１３２】
このようにして、時計ハードモジュール２００を用いて、署名済ファイルの改ざんの有無を検証できる。
図１３は、検証状況を示す図である。図１３の例では、新時計ハードモジュール２００ｂを用いて署名済ファイル４５の署名を検証する。新時計ハードモジュール２００ｂは、署名が正しい（改ざんされていない）場合に署名済ファイル４５の内のデータを含む未署名ファイル３５を出力する。
【０１３３】
なお、検証処理では、時計ハードモジュールの使用履歴については検証しない。そのため、新時計ハードモジュール２００ｂを用いて電子署名が施された署名済ファイル４５を、旧時計ハードモジュール２００ａで検証することもできる。また、旧時計ハードモジュール２００ａを用いて電子署名が施された署名済ファイル４１を、新時計ハードモジュール２００ｂで検証することもできる。
【０１３４】
ところで、上記署名済ファイルは、ユーザが任意に操作できない記憶媒体に格納されていることが望まれる。たとえば、ＣＤ−Ｒ（Recordable）、ＤＶＤ−Ｒのように、同一領域に一度しか書き込みができず、かつ書き込んだデータを削除することができない記録媒体に署名済ファイルを記録する。また、コンピュータ１００にネットワーク１０経由で接続されたサーバに署名済ファイルを記録するようにしてもよい。その場合、サーバの管理者は、コンピュータ１００からサーバ内のディスク装置への署名済ファイルの書き込みは許可するが、書き込まれた署名済ファイルの削除や上書きの更新は不許可とする。
【０１３５】
このように、署名済ファイルの格納先を予め決めておき、その格納先の記録媒体において署名済ファイルの削除を禁止することで、署名済ファイルの改ざんの防止効果を高めることができる。
【０１３６】
なお、上記の処理機能は、処理手順が記述されたプログラムをＣＰＵで実行させることによって実現することができる。その場合、コンピュータや時計ハードモジュールが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１３７】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３８】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１３９】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
【図面の簡単な説明】
【０１４０】
【図１】発明の概要を示す図である。
【図２】本実施の形態に用いるコンピュータのハードウェア構成例を示す図である。
【図３】時計ハードモジュールのハードウェア構成を示す図である。
【図４】電子署名機能を示すブロック図である。
【図５】ファイル記憶部の記憶内容を示す図である。
【図６】電子署名の際の情報の流れを示す概略図である。
【図７】電子署名処理の手順を示すフローチャートの前半である。
【図８】電子署名処理の手順を示すフローチャートの後半である。
【図９】切り換え前における旧時計ハードモジュールを用いた電子署名処理状況を示す図である。
【図１０】新時計ハードモジュールを用いた電子署名処理を示す図である。
【図１１】新旧２つの時計ハードモジュールが同時に存在した場合の電子署名処理の例を示す図である。
【図１２】検証処理の手順を示すフローチャートである。
【図１３】検証状況を示す図である。
【符号の説明】
【０１４１】
１  コンピュータ
１ａ  署名対象データ
１ｂ  最新の署名済ファイル
１ｃ  署名済ファイル
２  時計ハードモジュール
２ａ  内部時計
２ｂ  ハードモジュール番号記憶手段
２ｃ  時刻検証手段
２ｄ  履歴検証手段
２ｅ  電子署名手段
２ｆ  署名済ファイル送信手段
【図１】
2009049554.tif 000003
【図２】
2009049554.tif 000004
【図３】
2009049554.tif 000005
【図４】
2009049554.tif 000006
【図５】
2009049554.tif 000007
【図６】
2009049554.tif 000008
【図７】
2009049554.tif 000009
【図８】
2009049554.tif 000010
【図９】
2009049554.tif 000011
【図１０】
2009049554.tif 000012
【図１１】
2009049554.tif 000013
【図１２】
2009049554.tif 000014
【図１３】
2009049554.tif 000015