(57)【特許請求の範囲】
【請求項１】
耐タンパ不揮発性記憶領域（ＮＶ領域）を持つセキュリティチップであるＴＰＭと、
ログファイルを保存するログファイル登録部と、
操作者の証拠となる操作情報をデジタルデータ化してログデータを作成するロガープログラムを実行するロガープログラム実行部と、
前記ロガープログラム実行部の作成したログデータに時刻情報を付加しフォーマット化し、該フォーマット化したログデータに対して前記ＴＰＭと連携してヒステリシス署名を施した上で前記ログファイル登録部にログファイルとして保存し、かつ、書き込み、最終署名履歴となる連鎖用データのみ前記ＴＰＭのＮＶ領域に保存するログストレージプログラムを実行するログストレージプログラム実行部と、
実行を許容するプログラム群の各々のプログラムのリストであるホワイトリストと前記各々のプログラムの電子署名であるハッシュ値を保持し、かつ個人特定用のＩＤならびにその個人特定用のＩＤの電子署名を保持する補助デバイスと、
（ｉ）ＡＰＩＨｏｏｋのようなアプリケーションとＯＳとの間の通信に割り込むフッキングプログラムを当該システムの起動時に起動し、（ｉｉ）前記補助デバイスから前記個人特定用のＩＤとその電子署名を読み込み、その電子署名を検証し、（ｉｉｉ）前記フッキングプログラムにより、当該システム内の他のプログラムが起動する前に当該他のプログラムのハッシュ値を計算し、前記ホワイトリストの電子署名と比較して一致していた場合にのみ当該他のプログラムを起動し、（ｉｖ）前記補助デバイスの装着時で、かつ、当該補助デバイス内の個人特定用のＩＤの電子署名の検証に成功したときにのみ操作者に当該システムの操作を可能にする監視プログラム実行部とを備えたことを特徴とするプログラムの不正起動防止システム。
【請求項２】
前記監視プログラム実行部は、前記フッキングプログラムにより、ヒューマンマシンインタフェースのプロセスを終了させる操作を制限することを特徴とする請求項１に記載のプログラムの不正起動防止システム。
【請求項３】
前記監視プログラム実行部は、前記フッキングプログラムにより、前記ロガープログラムとログストレージプログラムのプロセスを監視し、不正に終了された場合には再度これらのロガープログラムとログストレージプログラムを起動することを特徴とする請求項１又は２に記載のプログラムの不正起動防止システム。
【請求項４】
前記フォーマット化したログデータにヒステリシス署名を施す際に、前記ＴＰＭのＮＶ領域に保存されている暗号鍵を用いて当該ＴＰＭの内部で署名演算を行い、当該ＴＰＭのＮＶ領域に連鎖用データを格納することを特徴とする請求項１〜３のいずれかに記載のプログラムの不正起動防止システム。
【請求項５】
（１）コンピュータのＯＳが起動した直後に監視プログラムを起動し、
（２）前記監視プログラムにて、補助デバイスの装着を監視し、補助デバイスが装着されていない場合は当該コンピュータをロックし、前記補助デバイスが装着されている場合には、前記補助デバイスから個人特定用のＩＤとそのＩＤの電子署名を読み込み、検証を行い、当該検証が成功した場合にのみコンピュータの動作を許容し、
（３）前記監視プログラムにて、当該コンピュータに装着された前記補助デバイスからホワイトリスト及びホワイトリストの電子署名を読み込み、当該監視プログラムにセットされた公開鍵でホワイトリストの電子署名の検証を行い、
（４）前記監視プログラムにて、ロガープログラムとログストレージプログラムとのハッシュ値を計算し、前記補助デバイスに登録されているホワイトリストと比較して一致した場合には前記ロガープログラムとログストレージプログラムの起動を許容し、前記ホワイトリストと比較して一致しない場合には前記ロガープログラムとログストレージプログラムの起動を停止することを特徴とするプログラムの不正起動防止方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの不正起動を防止するためのシステム及び方法に関する。
【背景技術】
【０００２】
インターネット社会の進展に伴い、ほぼすべてのデータはデジタル化されて扱われるようになってきた。また、日本でも、従来は考えられなかったような場合にも訴訟が行われるようになってきている。このような状況から、デジタルデータの証拠性を確保し、訴訟などに備えるための技術や社会的仕組みが要求されるようになってきている。これが、デジタル・フォレンジック（Digital Forensics、以下「ＤＦ」と略称する。）と呼ばれているものである（非特許文献１）。
【０００３】
本願発明者らは、パーソナルコンピュータ（ＰＣ）の利用者自身が不正を行っていないことを示すために、下記に挙げている要件を満たすＤＦシステムの開発を行ってきた（非特許文献２）。
【０００４】
（１）ＰＣで作業を行なえば、必ず操作した記録が残る。
【０００５】
（２）ＰＣで作業を行なった操作者を特定することができる。
【０００６】
（３）検証を行うデータが証拠能力を損なわず、記録段階や保存中のデータが改竄された場合でも、第三者によって事後に改竄の検出が可能となる。
【０００７】
（４）管理されたネットワーク外でも利用できる。
【０００８】
このような機能を持つ、スタンドアロン環境下でのＤＦシステムの研究は本願発明者らの知る限りでは現在まで知られていない。
【０００９】
本願発明者らは、特開２００７−１５８４８９号公報（特許文献１）に記載された発明技術のように、スタンドアロン環境下でＰＣを操作した内容をログデータとして蓄積するだけでなく、操作した本人であってもログデータの改竄ができないようにするＤＦシステムの開発を進めてきた。
【００１０】
ところが、上記のＤＦシステムはプログラムの不正な改竄がないと仮定した上でのシステムであり、現実にはこの仮定が成立しない場合も少なくない。そのため、最近では、正しいプログラムのみがＰＣ上で稼動していることを確認できる方式が必要になっている。
【００１１】
このような従来の要望に鑑み、本願発明者らは次のＤｉｇ−Ｆｏｒｃｅと称するＤＦシステムを提案してきた。
【００１２】
［Ｄｉｇ−Ｆｏｒｃｅの機能］
Ｄｉｇ−Ｆｏｒｃｅは、ＰＣ操作に関する情報をログデータとして確実に収集する機能と、操作者が行うログデータの改竄であっても検知する機能を有する。
【００１３】
［Ｄｉｇ−Ｆｏｒｃｅの構成］
Ｄｉｇ−Ｆｏｒｃｅは、図７に示すように、セキュリティデバイス１、ロガープログラム２、ログストレージプログラム３の３つのサブシステムから構成されている。セキュリティデバイス１は耐タンパ領域１Ａを持ち、そこに、署名用の秘密鍵、そして最終署名履歴である連鎖用データを保存し、改竄を防止する。このために、後述するヒステリシス署名の署名演算を行う。ロガープログラム２は操作者の証拠となる操作情報をデジタルデータ化し、それをログデータとしてログストレージプログラムに転送する。セキュリティデバイス１と連携しＰＣロック機能を持つ。すなわち、セキュリティデバイス１の装着時のみＰＣが動作可能となっている。ログストレージプログラム３は、蓄積されたログデータにセキュリティデバイス１と通信してヒステリシス署名を行い、ログファイル４に書き込む。
【００１４】
［Ｄｉｇ−Ｆｏｒｃｅの処理フロー］
Ｄｉｇ−Ｆｏｒｃｅの処理フローには、導入フェーズ、運用フェーズ、検証フェーズの３つのフェーズが存在する。ここには、システムに関わる登場人物として初期設定を行う管理者、ＰＣの操作者、ＰＣに蓄積されたログの検証を行う検証者の３者が存在する。
【００１５】
導入フェーズでは、管理者はセキュリティデバイス１で秘密鍵、公開鍵ペアを生成し、セキュリティデバイス１内の耐タンパ領域１Ａに秘密鍵を格納する。また最初の連鎖用データとなる初期値を決定しセキュリティデバイス１内の耐タンパ領域１Ａに格納する。その後、検証者にセキュリティデバイス１で生成した公開鍵、初期値を送付する。また、管理者は操作者にロガープログラム２とログストレージプログラム３がインストールされたＰＣとセキュリティデバイス１とを渡す。
【００１６】
運用フェーズでは、操作者は管理者から渡されたＰＣで作業を行う。ロガープログラム２はセキュリティデバイス１の装着を監視し、装着を確認したら操作者の操作情報をログデータとして取得しログストレージプログラム３に転送する。
【００１７】
このログストレージプログラム３は次の処理を行う。（１）ログデータを蓄積する。（２）セキュリティデバイスと通信する。（３）ログデータにヒステリシス署名を施す。（４）連鎖用データ、署名データ、ログデータをログファイル４に書き込む。（５）連鎖用データのハッシュ値をセキュリティデバイス１内に格納する。
【００１８】
この作業が終了し、検証者に自身の操作を報告する際に、作業中に作成したドキュメントとログファイル４をメディアに書き込み、セキュリティデバイス１と共に検証者へ提出する。
【００１９】
検証フェーズでは、検証者は提出されたログファイル４内の最終連鎖用データのハッシュ値を計算し、セキュリティデバイス１のものと比較を行う。その後、導入フェーズで受け取った初期値、ログファイル４に保存されている連鎖用データ、署名データ、ログデータを基に署名検証を行う。
【００２０】
［ヒステリシス署名］
ヒステリシス署名は、非特許文献３に記載されているように、通常の電子署名に直前の署名データを引き継いで署名を行う、署名間に連鎖構造を持たせた電子署名である。このようなヒステリシス署名を用いることにより、署名履歴に依存関係が存在することになる。そこで、データを改竄するためにはそれに対応する署名だけでなく前後にある全ての署名データを改竄する必要があるが、そのような改竄は困難であり、そのため安全性が高い。
【００２１】
Ｄｉｇ−Ｆｏｒｃｅでは順次生成されるログデータごとに連鎖的に署名を行うため、ログデータの一部を削除する攻撃や、一部を変更するといった攻撃に対処可能である。またセキュリティデバイス１と併用することによりヒステリシス署名の課題であったログファイル４に蓄積されているログデータの末尾を消去し、新たに一連の操作を行い、ログファイルを更新するといった復元攻撃にも対処できる。
【００２２】
［Ｄｉｇ−Ｆｏｒｃｅの前提条件］
Ｄｉｇ−Ｆｏｒｃｅが目的とする機能を実現し、安全を確保するための前提条件は以下の通りである。
【００２３】
前提条件１：ＰＣ内の各プログラムは不正に変更されることはない。
【００２４】
前提条件２：操作者は不正を行う可能性はあるが、管理者、検証者は不正を行わない。
【００２５】
前提条件３：操作者はセキュリティデバイスを他人に渡さない。
【００２６】
以上の前提条件の下で、Ｄｉｇ−Ｆｏｒｃｅは目的とする機能を実現できることを確認している。
【００２７】
ところが、このＤｉｇ−Ｆｏｒｃｅにはさらに改良の必要性があった。上記の前提条件のうち前提条件１は現実に成立しない場合が少なくない。プログラミング能力のあるユーザなら、不正なプログラムを追加することが可能である。さらに能力のあるユーザならリバースエンジニアリングを行うことによるプログラムの改竄もあり得ないことではない。そしてこの前提条件１が成立しないならば、Ｄｉｇ−Ｆｏｒｃｅのプログラムを改竄するなどしてログデータの改竄を検知できなくするなどの不正が可能となる。このため、この問題点を解決する対応策が必要であった。
【特許文献１】特開２００７−１５８４８９号公報
【非特許文献１】佐々木良一、芦野佑樹、増渕孝延、「デジタル・フォレンジックの体系化の試みと必要技術の提案」、ＪＳＳＭ学会誌、第２０巻、２号、４９−６１ページ、２００６年
【非特許文献２】Yuki Ashino, Ryoichi Sasaki: "Proposal of Digital Forensic System Using Security Device and Hysteresis Signature", IIHMSP2007 Sponsored by IEEE, ２００７年１１月
【非特許文献３】岩村充、宮崎邦彦、松本勉、佐々木良一、松木武、「電子署名におけるアリバイ証明問題と経時証明問題−ヒステリシス署名とデジタル古文書の概念−」、コンピュータサイエンス誌ｂｉｔ、Ｖｏｌ．３２、Ｎｏ．１１、共立出版(２０００年)
【非特許文献４】TCG (Trusted Computing Group): https://www.trustedcomputinggroup. org/home/
【非特許文献５】Aladdin Knowledge Systems, Ltd.: http://www.aladdin.com/
【非特許文献６】Jeffrey Richter(著)、株式会社ロングテール、長尾隆弘(翻訳)、「Advanced Windows（登録商標） 改訂版第４版」、株式会社アスキー、２００１年
【非特許文献７】rohitab.com-API Monitor: "Spy on API Calls", http://www. rohitab.com/apimonitor/
【非特許文献８】KENJI'S HOMEPAGE: http://ruffnex.oc.to/kenji/
【非特許文献９】SignaCert,Inc.: http://japan.signacert.com/
【非特許文献１０】Windows（登録商標） Vista: "Features Explained: Windows（登録商標） BitLocker Drive Encryption", http://www.microsoft.com/windows（登録商標）/products/windows（登録商標）vista/ features/details/bitlocker.mspx
【発明の開示】
【発明が解決しようとする課題】
【００２８】
本発明は、上記従来の技術的課題に鑑みてなされたもので、ＰＣなどのマザーボード上に実装されているセキュリティチップであるＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）と、ＯＳと連携したより信頼性の高いプログラムによって、正しいプログラムのみが稼働しているように制御するプログラムの不正起動防止システム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００２９】
本発明の１つの特徴は、耐タンパ不揮発性記憶領域（ＮＶ領域）を持つセキュリティチップであるＴＰＭと、ログファイルを保存するログファイル登録部と、操作者の証拠となる操作情報をデジタルデータ化してログデータを作成するロガープログラムを実行するロガープログラム実行部と、前記ロガープログラム実行部の作成したログデータに時刻情報を付加しフォーマット化し、該フォーマット化したログデータに対して前記ＴＰＭと連携してヒステリシス署名を施した上で前記ログファイル登録部にログファイルとして保存し、かつ、書き込み、最終署名履歴となる連鎖用データのみ前記ＴＰＭのＮＶ領域に保存するログストレージプログラムを実行するログストレージプログラム実行部と、実行を許容するプログラム群の各々のプログラムのリストであるホワイトリストと前記各々のプログラムの電子署名であるハッシュ値を保持し、かつ個人特定用のＩＤならびにその個人特定用のＩＤの電子署名を保持する補助デバイスと、（ｉ）ＡＰＩＨｏｏｋのようなアプリケーションとＯＳとの間の通信に割り込むフッキングプログラムを当該システムの起動時に起動し、（ｉｉ）前記補助デバイスから前記個人特定用のＩＤとその電子署名を読み込み、その電子署名を検証し、（ｉｉｉ）前記フッキングプログラムにより、当該システム内の他のプログラムが起動する前に当該他のプログラムのハッシュ値を計算し、前記ホワイトリストの電子署名と比較して一致していた場合にのみ当該他のプログラムを起動し、（ｉｖ）前記補助デバイスの装着時で、かつ、当該補助デバイス内の個人特定用のＩＤの電子署名の検証に成功したときにのみ操作者に当該システムの操作を可能にする監視プログラム実行部とを備えたプログラムの不正起動防止システムである。
【００３０】
上記発明のプログラムの不正起動防止システムにおいて、前記監視プログラム実行部は、前記フッキングプログラムにより、ヒューマンマシンインタフェース（ＨＭＩ）のプロセスを終了させる操作を制限するものとすることができる。
【００３１】
また、上記発明のプログラムの不正起動防止システムにおいて、前記監視プログラム実行部は、前記フッキングプログラムにより、前記ロガープログラムとログストレージプログラムのプロセスを監視し、不正に終了された場合には再度これらのロガープログラムとログストレージプログラムを起動するものとすることができる。
【００３２】
また、上記発明のプログラムの不正起動防止システムにおいて、前記フォーマット化したログデータにヒステリシス署名を施す際に、前記ＴＰＭのＮＶ領域に保存されている暗号鍵を用いて当該ＴＰＭの内部で署名演算を行い、当該ＴＰＭのＮＶ領域に連鎖用データを格納するものとすることができる。
【００３３】
本発明の別の特徴は、（１）コンピュータのＯＳが起動した直後に監視プログラムを起動し、（２）前記監視プログラムにて、補助デバイスの装着を監視し、補助デバイスが装着されていない場合は当該コンピュータをロックし、前記補助デバイスが装着されている場合には、前記補助デバイスから個人特定用のＩＤとそのＩＤの電子署名を読み込み、検証を行い、当該検証が成功した場合にのみコンピュータの動作を許容し、（３）前記監視プログラムにて、当該コンピュータに装着された前記補助デバイスからホワイトリスト及びホワイトリストの電子署名を読み込み、当該監視プログラムにセットされた公開鍵でホワイトリストの電子署名の検証を行い、（４）前記監視プログラムにて、ロガープログラムとログストレージプログラムとのハッシュ値を計算し、前記補助デバイスに登録されているホワイトリストと比較して一致した場合には前記ロガープログラムとログストレージプログラムの起動を許容し、前記ホワイトリストと比較して一致しない場合には前記ロガープログラムとログストレージプログラムの起動を停止するプログラムの不正起動防止方法である。
【発明の効果】
【００３４】
本発明のプログラムの不正起動防止システム及び方法によれば、ホワイトリストに登録されているプログラムしか起動できないようにしているので、信頼性のあるプログラムのみが起動でき、文書の改竄を困難にすることができる。
【００３５】
また、監視プログラム自体を、コンピュータをシャットダウン直前にＴＰＭの鍵を用いて暗号化することにより、ホワイトリストを保持する補助デバイスを他のコンピュータにて利用できなくし、デジタル・フォレンジックの信頼性を高めることができる。
【発明を実施するための最良の形態】
【００３６】
以下、本発明の実施の形態を図に基づいて詳説する。
【００３７】
［不正プログラムに対する起動制御］
本実施の形態のプログラムの不正起動防止システムは、改竄が困難な、より信頼性のある監視プログラムにてプログラム起動を監視し、正しいプログラムのみを起動させるシステムである。ここで信頼性のある監視プログラムは、技術的に改竄が困難であり、かつ、他のプログラムよりも先に起動するプログラムである必要がある。そして、正しいプログラムのみが起動できる環境を構築するためには、この信頼性のある監視プログラムが、他のプログラムの起動を制御する必要がある。
【００３８】
この起動制御にはホワイトリスト方式を用いる。ホワイトリストは起動を許可するプログラムのハッシュ値一覧を持つものであり、信頼性のある監視プログラムはこのホワイトリストを参照し、ホワイトリストに登録されているプログラムのみ起動を許可する。
【００３９】
［信頼性のある監視プログラム］
信頼性のある監視プログラムは、ＰＣのオペレーションシステム（ＯＳ）であるＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）  ＸＰ（商品名）の環境下で実現している。図８に示すように、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）  ＸＰでは、ハードウェアからアプリケーションまで複数の階層が存在している。信頼性のある監視プログラムの実現方式として以下の３つがある。尚、同社のＷｉｎｄｏｗｓ（登録商標）    Ｖｉｓｔａ  （商品名）でも同様である。
【００４０】
（１）ＯＳの機能を利用する：アプリケーションの管理を行っているＯＳがプログラムの起動制御を行う。
【００４１】
（２）フィルタドライバを用いる：ＯＳのカーネルモードに位置するフィルタドライバにプログラムの監視機能を追加する。
【００４２】
（３）フッキングプログラムとしてＡＰＩＨｏｏｋプログラムを用いる：Ｗｉｎｄｏｗｓ（登録商標）  のＡＰＩをフックし、処理の変更を行うＡＰＩＨｏｏｋプログラムをＰＣ起動時に自動的に起動するサービスとして起動し、アプリケーションプログラムの起動命令（ＡＰＩ）を監視する。
【００４３】
ＯＳが不正なプログラムを監視する機能を持つことが望ましいと考えるが、その機能を現在のＯＳは持っていない。そこで、本実施の形態のプログラムの不正起動防止システムでは、（３）のＡＰＩＨｏｏｋプログラムを採用している。しかしながら、このＡＰＩＨｏｏｋプログラムにも改竄の可能性はある。なぜなら、ＡＰＩＨｏｏｋプログラムはアプリケーション層で稼動するサービスプログラムである。そのため、ＰＣのハードディスクドライブ（ＨＤＤ）を別のＰＣに移行すれば、その移行先のＰＣではＨＤＤから信頼性のある監視プログラムを読み込んでシステムとして起動することができないため、不正にＡＰＩＨｏｏｋプログラムを削除、または改竄することが可能となる。そこで、このＡＰＩＨｏｏｋプログラムが改竄されるという攻撃に対処するために、ＴＰＭを用いる。
【００４４】
［ＴＰＭを用いた対策］
ＴＰＭはソフトウェアからの不正が困難な耐タンパの記憶領域をハードウェア上に持つことができるＩＣチップである。ＰＣではマザーボード上に搭載されている。これは、ＴＣＧ（Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ）が技術仕様の策定を行っており、ＲＳＡ鍵の生成・保管、ＲＳＡ演算、ハッシュ演算、プラットフォーム状態情報（ソフトウェアの計測値）の保持、不揮発性メモリ（ＮＶメモリ）及び揮発性メモリなどの機能が搭載されている。
【００４５】
ＴＰＭを用いる利点は次の通りである。ＴＰＭは、個々のＰＣに固有のものとして搭載されている。すなわちＴＰＭ内の暗号鍵はそのＰＣ固有の暗号鍵であるといえる。よってＰＣ固有の暗号鍵で暗号化したＨＤＤ内のデータは、別のＰＣで復号することはできない。このＴＰＭの暗号鍵を用いての暗号化機能を利用することで該ＨＤＤを別のＰＣに移行して、不正に監視プログラムの改竄、または削除する攻撃を防止することが可能となる。
【００４６】
また、下記の挙げる点もＴＰＭを用いる利点である。１つの利点は、特別なデバイスを用いる必要がないことである。別の利点は、ＵＳＢデバイスなどに見られるように不注意でデバイスを引き抜くことにより演算処理中のデータが消失するといった問題を避けることができることである。
【００４７】
［本実施の形態のシステム］
本実施の形態のプログラムの不正起動防止システムであるＤｉｇ−Ｆｏｒｃｅ２のシステム構成について説明する。本実施の形態のシステムでは、セキュリティデバイスにＴＰＭ１４を用いている。このＴＰＭ１４を用いたＤｉｇ−Ｆｏｒｃｅ２のシステム１０は、図１に示すように、５つの構成要素を備えている。すなわち、ロガープログラムを実行するロガープログラム実行部１１、ログストレージプログラムを実行するログストレージプログラム実行部１２、補助デバイス１３、セキュリティデバイスとしてのＴＰＭ１４、そして監視プログラムとしてＡＩＰＨｏｏｋプログラムを実行する監視プログラム実行部１５を備えている。尚、これらはＰＣ１７上でソフトウェアの制御の下で実行されるものであるが、ここでは各プログラムによる処理ごとに実行部として示している。
【００４８】
ロガープログラム実行部１１は、ロガープログラムを実行することで、操作者の証拠となる操作情報をデジタルデータ化し、ログデータとしてログストレージプログラム実行部１２に転送する。ログストレージプログラム実行部１２は、ログストレージプログラムを実行することで、ロガープログラム実行部１１から転送されたログデータに時刻情報などを付加し、フォーマット化を行う。そしてその後、フォーマット化したデジタルデータに対して、ＴＰＭ１４と連携しヒステリシス署名を施した上で、ログファイル記録部１６にログファイルとして書き込み、最終署名履歴となる連鎖用データのみをＴＰＭ１４に内蔵されているメモリに保存する。尚、以下では、ロガープログラム実行部１１の実行するロガープログラムとログストレージプログラム実行部１２の実行するログストレージプログラムとをＤＦシステムプログラムと称する。
【００４９】
補助デバイス１３は監視プログラム実行部１５と連携し、補助デバイス１３がＰＣ１７に装着されている時のみこのＰＣ１７を動作可能とする。
【００５０】
補助デバイス１３内には、次のデータを格納している。（ａ）管理者が起動を許可した実行形式でのプログラムのハッシュ値リスト（以下、「ホワイトリスト」と称する）。（ｂ）個人特定用のＩＤ。（ｃ）管理者によって（ａ）、（ｂ）を署名した電子署名。
【００５１】
ＴＰＭ１４は、耐タンパ性の記憶領域を持ち、署名鍵、そして連鎖用データを保護する。また、ヒステリシス署名の署名演算を行う。
【００５２】
監視プログラム実行部１５は、次の処理を行う。
【００５３】
（ｉ）ＡＰＩＨｏｏｋプログラムを、ＰＣ１７の起動時に自動的に起動するサービスとして動作する。
【００５４】
（ｉｉ）補助デバイス１３内の電子署名を検証する。
【００５５】
（ｉｉｉ）ＡＰＩＨｏｏｋプログラムにより、ユーザないしプログラムが他のプログラムを起動する前に、実行ファイルのハッシュ値を計算し、ホワイトリストと比較する。そして一致していた場合にのみプログラムを起動する。
【００５６】
（ｉｖ）補助デバイス１３の装着時で、補助デバイス１３内のＩＤの検証に成功したときにのみ操作者にＰＣ１７の操作を可能にさせる。
【００５７】
（ｖ）ＡＰＩＨｏｏｋプログラムにより、操作者にプロセスを終了させる操作を制限する。
【００５８】
（ｖｉ）ＡＰＩＨｏｏｋプログラムにより、ＤＦシステムプログラムのプロセス監視を行い、不正に終了された場合は、再度プログラムを起動する処理を行う。
【００５９】
この監視プログラム実行部１５は、（ｉｉｉ）の機能により、他のプログラムが起動する前に実行ファイルの正当性をチェックする。よってＤＦシステムプログラムの改竄を検知するだけでなく、許可しないプログラムの起動を制限することができる。また、（ｉｖ）により、正当な補助デバイス１３を装着しているときにのみしかＰＣ１７を操作させないことにより、個人の特定を行うことができる。
【００６０】
［Ｄｉｇ−Ｆｏｒｃｅ２システムの前提条件］
本実施の形態のプログラムの不正起動防止システムであるＤｉｇ−Ｆｏｒｃｅ２システムは、下記の条件下で動作させるものとする。
【００６１】
前提条件１：サービスとして起動している監視プログラム実行部１５は、管理者権限で監視プログラムを実行しているため、その下の権限でＰＣ１７を操作する操作者は、不正に監視プログラムを停止することができない。
【００６２】
前提条件２：マザーボードのＢＩＯＳ、ＯＳを信頼できるソフトウェアとし、ＯＳの次に起動する監視プログラムも信頼できるプログラムとする。すなわち、ＡＰＩＨｏｏｋプログラムである監視プログラムを不正者が自分の都合の良いように修正するのは困難である。
【００６３】
［Ｄｉｇ−Ｆｏｒｃｅ２の処理フロー］
Ｄｉｇ−Ｆｏｒｃｅ２の処理フローは、導入フェーズＰＨ１１、運用フェーズＰＨ１２、検証フェーズＰＨ１３に分かれる。それらの処理を順に説明を行う。
【００６４】
導入フェーズＰＨ１１：管理者は、以下の処理を行い操作者にＴＰＭ搭載ＰＣ１７、補助デバイス１３を渡す。
【００６５】
（１）ＴＰＭ１４の内部にルートとなる鍵であり、他のＴＰＭ鍵の保護に使われるＳｔｏｒａｇｅ  Ｒｏｏｔ  Ｋｅｙ（以下、「ＳＲＫ」と略称する。）を生成する。
【００６６】
（２）ヒステリシス署名に用いる秘密鍵Ｓ、署名検証に用いる公開鍵ＰをＴＰＭ１４の内部で生成し、ＳＲＫで暗号化してＨＤＤにＳＲＫ（Ｓ）、ＳＲＫ（Ｐ）として保存する。
【００６７】
（３）連鎖用データの初期値Ｒ１に任意の値を指定し、ＴＰＭ１４の内部の不揮発性メモリＮＶに保存する。
【００６８】
（４）検証時に必要な初期値を、検証者に送付する。
【００６９】
（５）補助デバイス１３にホワイトリスト、個人特定用のＩＤならびにホワイトリスト、ＩＤの電子署名を格納する。
【００７０】
（６）監視プログラム実行部１５の実行する監視プログラムにホワイトリスト検証用の公開鍵、個人特定用のＩＤをセットし、ＤＦシステムプログラムと共にＰＣ１７にインストールする。
【００７１】
（７）操作者に初期設定が終了したＰＣ１７と補助デバイス１３を渡す。
【００７２】
運用フェーズＰＨ１２：運用フェーズでは、監視プログラムが起動している監視下で補助デバイス１３をＰＣ１７に装着し、操作者の操作情報をログデータとして取得する。取得した操作情報のログデータにＴＰＭ１４と通信を行ってヒステリシス署名を施し、ログファイル記憶部１６に書き込む。
【００７３】
図２は監視プログラムのフローを表す。この処理フローは次の通りである。
【００７４】
（１）監視プログラム実行部１５はＯＳが起動した直後に、サービスとして監視プログラムを起動する（ＳＴ１１，ＳＴ１２）。ここで、監視プログラム実行部１５は補助デバイス１３の装着を監視しており、装着されていない場合はＰＣ１７をロックする。
【００７５】
（２）操作者はＰＣを操作するために、補助デバイス１３をＰＣ１７に装着すると、監視プログラム実行部１５は補助デバイス１３から個人特定用のＩＤとそのＩＤの電子署名を読み込み、検証を行う。検証が成功した場合にのみＰＣが動作可能となる（ＳＴ１３）。
【００７６】
（３）監視プログラム実行部１５は装着された補助デバイス１３からホワイトリスト、及びホワイトリストの電子署名を読み込み、監視プログラムにセットされた公開鍵でホワイトリストの電子署名の検証を行う（ＳＴ１４）。
【００７７】
（４）監視プログラム実行部１５は、ＤＦシステムプログラムのハッシュ値を計算し、ホワイトリストと比較を行う（ＳＴ１５）。一致した場合は、ＤＦシステムプログラムの起動を行い、図３に示すようにログデータにヒステリシス署名を施していく（ＳＴ１６）。一致しない場合にはＤＦシステムプログラムの起動を停止する（ＳＴ１７）。
【００７８】
図３に示したログデータにヒステリシス署名を施す方式は、従来方式に対して、ＴＰＭ１４の鍵（ＳＲＫ（Ｓ））を用いてＴＰＭ１４の内部で署名演算を行い、ＴＰＭ１４のＮＶに連鎖用データを格納するフロー以外は同一である。
【００７９】
図３を用いて詳しく説明すると、次の通りである。
【００８０】
（ａ）ロガープログラムはログデータをログストレージプログラムに送付する。
【００８１】
（ｂ）ログストレージプログラムは受け取ったデータに日付などの情報を付加し、Ｄｉとする。
【００８２】
（ｃ）ログストレージプログラムはＴＰＭ上の連鎖用データＲｉを読み込み、Ｄｉのハッシュ値Ｈ（Ｄｉ）とＴＰＭ上の連鎖用データＲｉとのハッシュ値を計算し、Ｈ（Ｈ（Ｄｉ），Ｒｉ）とする。
【００８３】
（ｄ）ログストレージプログラムはこのハッシュ値Ｈ（Ｈ（Ｄｉ）・Ｒｉ）をＴＰＭに送付し、親鍵ＳＲＫを用いてデジタル署名を行い、その値をＹｉ（＝Ｓｉｇｎ（Ｈ（Ｄｉ），Ｒｉ））とする。
【００８４】
（ｅ）ログストレージプログラムはさらに、Ｈ（Ｄｉ），Ｙｉ，Ｒｉのハッシュ値Ｈ（Ｈ（Ｄｉ），Ｙｉ，Ｒｉ）を新しい連鎖用データＲｉ＋１として、ＴＰＭに上書きを行う。
【００８５】
（ｆ）これらの後、ログストレージプログラムは、上記で得られたＤｉ，Ｈ（Ｄｉ），Ｙｉ，Ｒｉをログファイルに追記する。
【００８６】
（５）監視プログラム実行部１５はヒステリシス署名の署名データを書き換えるなどの攻撃を行う不正なプログラムが起動しないように他のプログラム（実行ファイル）の監視も行っている（ＳＴ１８）。そして、操作者が他のプログラムを起動しようとした際に、監視プログラムが起動のＡＰＩをフックし、（４）と同様にプログラムのハッシュ値を計算し、ホワイトリストと比較を行い一致した場合にのみ起動を許可する（ＳＴ１９，ＳＴ２０，ＳＴ２１）。不一致であればそのプログラムの起動を停止する（ＳＴ２２）。
【００８７】
検証フェーズＰＨ１３：検証者は、操作者からＴＰＭ１４搭載のＰＣ１７、補助デバイス１３を受け取りログファイルの検証を行う。検証フローは従来の方式とＴＰＭ１４の鍵（ＳＲＫ（Ｐ））を用いてＴＰＭ１４の内部で署名データの検証を行うこと、及び検証時にＴＰＭ１４のＮＶに格納されている連鎖用データを用いること以外は同一である。
【００８８】
これにより、正しいプログラムのみがＰＣ１７上で稼働していることの確認が可能になる。
【実施例】
【００８９】
本発明のシステムの実用性を検証するために、監視プログラムに関する機能実験と、ＴＰＭに関する機能実験・性能実験の２つを行った。
【００９０】
（１）監視プログラムに関する機能実験
監視プログラムに用いているＡＰＩＨｏｏｋプログラムで他のプログラムの起動を制御する機能について実験を行った。ＡＰＩＨｏｏｋプログラムは、オリジナルのＡＰＩを、新たに作成した別のＡＰＩに置き換える技術である。この技術を応用し、オリジナルＡＰＩの処理を変更することで、プログラムの動作を変更させることができる（非特許文献６）。
【００９１】
プログラム起動時に、どのＡＰＩが呼ばれているかの調査を、呼ばれたＡＰＩのログを取得するＡＰＩＭｏｎｉｔｏｒ（非特許文献７）を用いて行った。出力された１０種類以上のＡＰＩの中から関連しそうなＡＰＩをフックし、オリジナルのＡＰＩの呼び出しを制御する実験を行った。
【００９２】
実験の結果、ｎｔｄｌｌ．ｄｌｌに定義されているＡＰＩであるＲｔｌＣｒｅａｔｅＰｒｏｃｅｓｓＰａｒａｍｅｔｅｒｓがプログラムの起動に関係していることが分かった。
【００９３】
このＡＰＩをフックし、起動制御を行う処理フローを図４に示してある。この処理フローのプログラムにて起動制御実験を行った結果、許可したプログラム以外は起動ができない状況を実現することができた。
【００９４】
ＤＯＳプログラムの動作はＡＰＩＨｏｏｋプログラムにより監視することができないが、ＤＯＳプログラムの起動は監視することができる。よってＤＯＳプログラムについてはその起動を許可しないことで対処している。
【００９５】
（２）ＴＰＭに関する機能・性能実験
ＴＰＭを用いる方式の有用性を確認するために、ａ）ＴＰＭの署名演算パフォーマンス、ｂ）ＴＰＭのＮＶ利用について、実験を行った。
【００９６】
まずａ）については、ヒステリシス署名に必要な署名演算処理、署名検証処理を実装し、要した時間を計測した。評価は図５の表１で示す環境で行った。
【００９７】
処理時間の計測を１０回繰り返して行い、その平均値を計測結果とした。計測結果は、署名演算時間が０．０７６秒であり、署名検証処理時間が０．０２９秒であった。
【００９８】
本発明のシステムでは、従来方式と同様に１秒ごとにＴＰＭにデータを署名演算のために転送している。よってこの結果は実用的な値であると判断できる。
【００９９】
ｂ）のＴＰＭのＮＶ利用については、ヒステリシス署名の連鎖用データを格納するために必要な機能である。上記の表１の環境で、ＮＶを利用できるか実験を行ったところ、ＴＰＭのユーザ用に２０ＢＹＴＥ確保されていることが確認できた。
【０１００】
Ｄｉｇ−Ｆｏｒｃｅ２システムを運用していく上で、考えられる攻撃を示し、その攻撃方法に対するＤｉｇ−Ｆｏｒｃｅ２システムの安全性も検討した。図６の表２に考えられる攻撃方法を列挙している。
【０１０１】
攻撃Ａは、改竄されたＤＦシステムプログラムが起動され、証拠となる操作情報と署名履歴の正当性を保持できない問題である。またＤＦシステムプログラムを停止させるなどの、上記の影響を及ぼす不正なプログラムが起動するという問題である。この攻撃Ａには、監視プログラムによって起動時にチェックを行い、正しいプログラムのみ起動することで対処可能となる。
【０１０２】
攻撃Ｂは、プログラムの起動制御を行なう監視プログラムがＨＤＤ（ハードディスクドライブ）を別のＰＣに移すことで、不正に削除、改竄されるという攻撃である。この攻撃により監視プログラムが稼動していないＰＣ環境になり、不正プログラムの起動を防ぐことができないという問題である。この攻撃Ｂには、ＴＰＭ固有の暗号鍵で監視プログラムを暗号化することで対処可能となる。ＴＰＭ固有の暗号鍵でＨＤＤの暗号化を行なえば、別のＰＣにＨＤＤを移行しても暗号化に用いたＴＰＭの鍵を持つことができないため、復号ができない。よって不正に監視プログラムを削除、または改竄することが不可能となる。
【０１０３】
攻撃Ｃは、ＤＦシステムプログラムを停止することによって、証拠となる操作情報、署名履歴を取得できないようにさせる攻撃である。この攻撃Ｃには、監視プログラムによってＤＦシステムプログラムのプロセス状態の監視を行い、停止された場合は、自動的に再度起動することで対処可能となる。
【０１０４】
攻撃Ｄは、ホワイトリストが改竄され、監視プログラムが不正なプログラムの起動を許可してしまう攻撃である。この攻撃Ｄには、管理者の秘密鍵を用いた電子署名を付加しておき、監視プログラムで署名検証を行うことで改竄の検知が可能となる。
【０１０５】
攻撃Ｅは、ＴＰＭのＮＶに格納されている署名履歴となる連鎖用データが改竄され、証拠性を保持できなくさせる攻撃である。この攻撃Ｅには、監視プログラムでＮＶに不正にアクセスを行うプログラムを起動制御することで対処可能となる。
【０１０６】
このように、ＡＰＩＨｏｏｋプログラムを監視プログラムとし、この監視プログラムとＴＰＭと補助デバイスを用いることで高い信頼性を確保できることが確認できた。
【０１０７】
尚、本発明は、ＤＦシステムに留まらず、コンピュータ、特にＰＣの所有者が不正なプログラムを立ち上げようとしてもそれを抑止し、正しいプログラムだけがコンピュータ上で稼働しているように制御することが必要なコンピュータ活用分野にて広く利用できるものである。
【図面の簡単な説明】
【０１０８】
【図１】本発明の１つの実施の形態のプログラムの不正起動防止システムのブロック図。
【図２】上記実施の形態のプログラムの不正起動防止システムにおいて、監視プログラム実行部のＡＰＩＨｏｏｋプログラムのブロック図。
【図３】上記実施の形態のプログラムの不正起動防止システムにおいて、ＴＰＭの実行するヒステリシス署名の処理フロー図。
【図４】本発明の実施例の起動制御の処理フロー図。
【図５】本発明の実施例における署名演算の測定環境の表１。
【図６】本発明の実施例において考えられる攻撃方法の表２。
【図７】従来のプログラムの不正起動防止システムのブロック図。
【図８】Ｍｉｃｒｏｓｏｆｔ社のＯＳの階層図。
【符号の説明】
【０１０９】
１０  不正起動防止システム
１１  ロガープログラム実行部
１２  ログストレージプログラム実行部
１３  補助デバイス
１４  ＴＰＭ
１５  監視プログラム実行部
１６  ログファイル
１７  パーソナルコンピュータ（ＰＣ）
【図１】
0005191043.tif 000002
【図２】
0005191043.tif 000003
【図３】
0005191043.tif 000004
【図４】
0005191043.tif 000005
【図５】
0005191043.tif 000006
【図６】
0005191043.tif 000007
【図７】
0005191043.tif 000008
【図８】
0005191043.tif 000009