説明

プログラムの不正起動防止システム及び方法

【課題】PCのマザーボード上に実装されているTPMと連携したより信頼性の高いプログラムによって、正しいプログラムのみが稼働しているように制御するプログラムの不正起動防止システムを提供する。
【解決手段】本発明の特徴は、APIHookプログラムを監視プログラムとして実行する監視プログラム実行部にて、当該システム10の起動時に補助デバイス13内の電子署名を検証し、APIHookプログラムにより、当該システム内の他のプログラムが起動する前に他のプログラムのハッシュ値を計算し、補助デバイス内に保持されているホワイトリストと比較して一致していた場合にのみ当該他のプログラムを起動し、補助デバイスの装着時で、かつ、当該補助デバイス内のIDの検証に成功したときにのみ操作者に当該システムの操作を可能にするプログラムの不正起動防止システムである。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムの不正起動を防止するためのシステム及び方法に関する。
【背景技術】
【0002】
インターネット社会の進展に伴い、ほぼすべてのデータはデジタル化されて扱われるようになってきた。また、日本でも、従来は考えられなかったような場合にも訴訟が行われるようになってきている。このような状況から、デジタルデータの証拠性を確保し、訴訟などに備えるための技術や社会的仕組みが要求されるようになってきている。これが、デジタル・フォレンジック(Digital Forensics、以下「DF」と略称する。)と呼ばれているものである(非特許文献1)。
【0003】
本願発明者らは、パーソナルコンピュータ(PC)の利用者自身が不正を行っていないことを示すために、下記に挙げている要件を満たすDFシステムの開発を行ってきた(非特許文献2)。
【0004】
(1)PCで作業を行なえば、必ず操作した記録が残る。
【0005】
(2)PCで作業を行なった操作者を特定することができる。
【0006】
(3)検証を行うデータが証拠能力を損なわず、記録段階や保存中のデータが改竄された場合でも、第三者によって事後に改竄の検出が可能となる。
【0007】
(4)管理されたネットワーク外でも利用できる。
【0008】
このような機能を持つ、スタンドアロン環境下でのDFシステムの研究は本願発明者らの知る限りでは現在まで知られていない。
【0009】
本願発明者らは、特開2007−158489号公報(特許文献1)に記載された発明技術のように、スタンドアロン環境下でPCを操作した内容をログデータとして蓄積するだけでなく、操作した本人であってもログデータの改竄ができないようにするDFシステムの開発を進めてきた。
【0010】
ところが、上記のDFシステムはプログラムの不正な改竄がないと仮定した上でのシステムであり、現実にはこの仮定が成立しない場合も少なくない。そのため、最近では、正しいプログラムのみがPC上で稼動していることを確認できる方式が必要になっている。
【0011】
このような従来の要望に鑑み、本願発明者らは次のDig−Forceと称するDFシステムを提案してきた。
【0012】
[Dig−Forceの機能]
Dig−Forceは、PC操作に関する情報をログデータとして確実に収集する機能と、操作者が行うログデータの改竄であっても検知する機能を有する。
【0013】
[Dig−Forceの構成]
Dig−Forceは、図7に示すように、セキュリティデバイス1、ロガープログラム2、ログストレージプログラム3の3つのサブシステムから構成されている。セキュリティデバイス1は耐タンパ領域1Aを持ち、そこに、署名用の秘密鍵、そして最終署名履歴である連鎖用データを保存し、改竄を防止する。このために、後述するヒステリシス署名の署名演算を行う。ロガープログラム2は操作者の証拠となる操作情報をデジタルデータ化し、それをログデータとしてログストレージプログラムに転送する。セキュリティデバイス1と連携しPCロック機能を持つ。すなわち、セキュリティデバイス1の装着時のみPCが動作可能となっている。ログストレージプログラム3は、蓄積されたログデータにセキュリティデバイス1と通信してヒステリシス署名を行い、ログファイル4に書き込む。
【0014】
[Dig−Forceの処理フロー]
Dig−Forceの処理フローには、導入フェーズ、運用フェーズ、検証フェーズの3つのフェーズが存在する。ここには、システムに関わる登場人物として初期設定を行う管理者、PCの操作者、PCに蓄積されたログの検証を行う検証者の3者が存在する。
【0015】
導入フェーズでは、管理者はセキュリティデバイス1で秘密鍵、公開鍵ペアを生成し、セキュリティデバイス1内の耐タンパ領域1Aに秘密鍵を格納する。また最初の連鎖用データとなる初期値を決定しセキュリティデバイス1内の耐タンパ領域1Aに格納する。その後、検証者にセキュリティデバイス1で生成した公開鍵、初期値を送付する。また、管理者は操作者にロガープログラム2とログストレージプログラム3がインストールされたPCとセキュリティデバイス1とを渡す。
【0016】
運用フェーズでは、操作者は管理者から渡されたPCで作業を行う。ロガープログラム2はセキュリティデバイス1の装着を監視し、装着を確認したら操作者の操作情報をログデータとして取得しログストレージプログラム3に転送する。
【0017】
このログストレージプログラム3は次の処理を行う。(1)ログデータを蓄積する。(2)セキュリティデバイスと通信する。(3)ログデータにヒステリシス署名を施す。(4)連鎖用データ、署名データ、ログデータをログファイル4に書き込む。(5)連鎖用データのハッシュ値をセキュリティデバイス1内に格納する。
【0018】
この作業が終了し、検証者に自身の操作を報告する際に、作業中に作成したドキュメントとログファイル4をメディアに書き込み、セキュリティデバイス1と共に検証者へ提出する。
【0019】
検証フェーズでは、検証者は提出されたログファイル4内の最終連鎖用データのハッシュ値を計算し、セキュリティデバイス1のものと比較を行う。その後、導入フェーズで受け取った初期値、ログファイル4に保存されている連鎖用データ、署名データ、ログデータを基に署名検証を行う。
【0020】
[ヒステリシス署名]
ヒステリシス署名は、非特許文献3に記載されているように、通常の電子署名に直前の署名データを引き継いで署名を行う、署名間に連鎖構造を持たせた電子署名である。このようなヒステリシス署名を用いることにより、署名履歴に依存関係が存在することになる。そこで、データを改竄するためにはそれに対応する署名だけでなく前後にある全ての署名データを改竄する必要があるが、そのような改竄は困難であり、そのため安全性が高い。
【0021】
Dig−Forceでは順次生成されるログデータごとに連鎖的に署名を行うため、ログデータの一部を削除する攻撃や、一部を変更するといった攻撃に対処可能である。またセキュリティデバイス1と併用することによりヒステリシス署名の課題であったログファイル4に蓄積されているログデータの末尾を消去し、新たに一連の操作を行い、ログファイルを更新するといった復元攻撃にも対処できる。
【0022】
[Dig−Forceの前提条件]
Dig−Forceが目的とする機能を実現し、安全を確保するための前提条件は以下の通りである。
【0023】
前提条件1:PC内の各プログラムは不正に変更されることはない。
【0024】
前提条件2:操作者は不正を行う可能性はあるが、管理者、検証者は不正を行わない。
【0025】
前提条件3:操作者はセキュリティデバイスを他人に渡さない。
【0026】
以上の前提条件の下で、Dig−Forceは目的とする機能を実現できることを確認している。
【0027】
ところが、このDig−Forceにはさらに改良の必要性があった。上記の前提条件のうち前提条件1は現実に成立しない場合が少なくない。プログラミング能力のあるユーザなら、不正なプログラムを追加することが可能である。さらに能力のあるユーザならリバースエンジニアリングを行うことによるプログラムの改竄もあり得ないことではない。そしてこの前提条件1が成立しないならば、Dig−Forceのプログラムを改竄するなどしてログデータの改竄を検知できなくするなどの不正が可能となる。このため、この問題点を解決する対応策が必要であった。
【特許文献1】特開2007−158489号公報
【非特許文献1】佐々木良一、芦野佑樹、増渕孝延、「デジタル・フォレンジックの体系化の試みと必要技術の提案」、JSSM学会誌、第20巻、2号、49−61ページ、2006年
【非特許文献2】Yuki Ashino, Ryoichi Sasaki: "Proposal of Digital Forensic System Using Security Device and Hysteresis Signature", IIHMSP2007 Sponsored by IEEE, 2007年11月
【非特許文献3】岩村充、宮崎邦彦、松本勉、佐々木良一、松木武、「電子署名におけるアリバイ証明問題と経時証明問題−ヒステリシス署名とデジタル古文書の概念−」、コンピュータサイエンス誌bit、Vol.32、No.11、共立出版(2000年)
【非特許文献4】TCG (Trusted Computing Group): https://www.trustedcomputinggroup. org/home/
【非特許文献5】Aladdin Knowledge Systems, Ltd.: http://www.aladdin.com/
【非特許文献6】Jeffrey Richter(著)、株式会社ロングテール、長尾隆弘(翻訳)、「Advanced Windows(登録商標) 改訂版第4版」、株式会社アスキー、2001年
【非特許文献7】rohitab.com-API Monitor: "Spy on API Calls", http://www. rohitab.com/apimonitor/
【非特許文献8】KENJI'S HOMEPAGE: http://ruffnex.oc.to/kenji/
【非特許文献9】SignaCert,Inc.: http://japan.signacert.com/
【非特許文献10】Windows(登録商標) Vista: "Features Explained: Windows(登録商標) BitLocker Drive Encryption", http://www.microsoft.com/windows(登録商標)/products/windows(登録商標)vista/ features/details/bitlocker.mspx
【発明の開示】
【発明が解決しようとする課題】
【0028】
本発明は、上記従来の技術的課題に鑑みてなされたもので、PCなどのマザーボード上に実装されているセキュリティチップであるTPM(Trusted Platform Module)と、OSと連携したより信頼性の高いプログラムによって、正しいプログラムのみが稼働しているように制御するプログラムの不正起動防止システム及び方法を提供することを目的とする。
【課題を解決するための手段】
【0029】
本発明の1つの特徴は、耐タンパ不揮発性記憶領域(NV領域)を持つセキュリティチップであるTPMと、ログファイルを保存するログファイル登録部と、操作者の証拠となる操作情報をデジタルデータ化してログデータを作成するロガープログラムを実行するロガープログラム実行部と、前記ロガープログラム実行部の作成したログデータに時刻情報を付加しフォーマット化し、該フォーマット化したログデータに対して前記TPMと連携してヒステリシス署名を施した上で前記ログファイル登録部にログファイルとして保存し、かつ、書き込み、最終署名履歴となる連鎖用データのみ前記TPMのNV領域に保存するログストレージプログラムを実行するログストレージプログラム実行部と、実行を許容するプログラム群の各々のプログラムのハッシュ値をホワイトリストとして保持する補助デバイスと、(i)APIHookのようなアプリケーションとOSとの間の通信に割り込むフッキングプログラムを当該システムの起動時に起動し、(ii)前記補助デバイス内の電子署名を検証し、(iii)前記フッキングプログラムにより、当該システム内の他のプログラムが起動する前に当該他のプログラムのハッシュ値を計算し、前記ホワイトリストと比較して一致していた場合にのみ当該他のプログラムを起動し、(iv)前記補助デバイスの装着時で、かつ、当該補助デバイス内のIDの検証に成功したときにのみ操作者に当該システムの操作を可能にする監視プログラム実行部とを備えたプログラムの不正起動防止システムである。
【0030】
上記発明のプログラムの不正起動防止システムにおいて、前記監視プログラム実行部は、前記フッキングプログラムにより、ヒューマンマシンインタフェース(HMI)のプロセスを終了させる操作を制限するものとすることができる。
【0031】
また、上記発明のプログラムの不正起動防止システムにおいて、前記監視プログラム実行部は、前記フッキングプログラムにより、前記ロガープログラムとログストレージプログラムのプロセスを監視し、不正に終了された場合には再度該プログラムを起動するものとすることができる。
【0032】
また、上記発明のプログラムの不正起動防止システムにおいて、前記フォーマット化したログデータにヒシテリシス署名を施す際に、前記TPMのNV領域に保存されている暗号鍵を用いて当該TPMの内部で署名演算を行い、当該TPMのNV領域に連鎖用データを格納するものとすることができる。
【0033】
本発明の別の特徴は、(1)コンピュータのOSが起動した直後に監視プログラムを起動し、(2)前記監視プログラムにて、補助デバイスの装着を監視し、補助デバイスが装着されていない場合は当該コンピュータをロックし、前記補助デバイスが装着されている場合には、前記補助デバイスから個人特定用のIDとそのIDの電子署名を読み込み、検証を行い、当該検証が成功した場合にのみコンピュータの動作を許容し、(3)前記監視プログラムにて、当該コンピュータに装着された前記補助デバイスからホワイトリスト及びホワイトリストの電子署名を読み込み、当該監視プログラムにセットされた公開鍵でホワイトリストの電子署名の検証を行い、(4)前記監視プログラムにて、ロガープログラムとログストレージプログラムとのハッシュ値を計算し、前記補助デバイスに登録されているホワイトリストと比較して一致した場合には前記ロガープログラムとログストレージプログラムの起動を許容し、前記ホワイトリストと比較して一致しない場合には前記ロガープログラムとログストレージプログラムの起動を停止するプログラムの不正起動防止方法である。
【発明の効果】
【0034】
本発明のプログラムの不正起動防止システム及び方法によれば、ホワイトリストに登録されているプログラムしか起動できないようにしているので、信頼性のあるプログラムのみが起動でき、文書の改竄を困難にすることができる。
【0035】
また、監視プログラム自体を、コンピュータをシャットダウン直前にTPMの鍵を用いて暗号化することにより、ホワイトリストを保持する補助デバイスを他のコンピュータにて利用できなくし、デジタル・フォレンジックの信頼性を高めることができる。
【発明を実施するための最良の形態】
【0036】
以下、本発明の実施の形態を図に基づいて詳説する。
【0037】
[不正プログラムに対する起動制御]
本実施の形態のプログラムの不正起動防止システムは、改竄が困難な、より信頼性のある監視プログラムにてプログラム起動を監視し、正しいプログラムのみを起動させるシステムである。ここで信頼性のある監視プログラムは、技術的に改竄が困難であり、かつ、他のプログラムよりも先に起動するプログラムである必要がある。そして、正しいプログラムのみが起動できる環境を構築するためには、この信頼性のある監視プログラムが、他のプログラムの起動を制御する必要がある。
【0038】
この起動制御にはホワイトリスト方式を用いる。ホワイトリストは起動を許可するプログラムのハッシュ値一覧を持つものであり、信頼性のある監視プログラムはこのホワイトリストを参照し、ホワイトリストに登録されているプログラムのみ起動を許可する。
【0039】
[信頼性のある監視プログラム]
信頼性のある監視プログラムは、PCのオペレーションシステム(OS)であるMicrosoft Windows(登録商標) XP(商品名)の環境下で実現している。図8に示すように、Microsoft Windows(登録商標) XPでは、ハードウェアからアプリケーションまで複数の階層が存在している。信頼性のある監視プログラムの実現方式として以下の3つがある。尚、同社のWindows(登録商標) Vista (商品名)でも同様である。
【0040】
(1)OSの機能を利用する:アプリケーションの管理を行っているOSがプログラムの起動制御を行う。
【0041】
(2)フィルタドライバを用いる:OSのカーネルモードに位置するフィルタドライバにプログラムの監視機能を追加する。
【0042】
(3)フッキングプログラムとしてAPIHookプログラムを用いる:Windows(登録商標) のAPIをフックし、処理の変更を行うAPIHookプログラムをPC起動時に自動的に起動するサービスとして起動し、アプリケーションプログラムの起動命令(API)を監視する。
【0043】
OSが不正なプログラムを監視する機能を持つことが望ましいと考えるが、その機能を現在のOSは持っていない。そこで、本実施の形態のプログラムの不正起動防止システムでは、(3)のAPIHookプログラムを採用している。しかしながら、このAPIHookプログラムにも改竄の可能性はある。なぜなら、APIHookプログラムはアプリケーション層で稼動するサービスプログラムである。そのため、PCのハードディスクドライブ(HDD)を別のPCに移行すれば、その移行先のPCではHDDから信頼性のある監視プログラムを読み込んでシステムとして起動することができないため、不正にAPIHookプログラムを削除、または改竄することが可能となる。そこで、このAPIHookプログラムが改竄されるという攻撃に対処するために、TPMを用いる。
【0044】
[TPMを用いた対策]
TPMはソフトウェアからの不正が困難な耐タンパの記憶領域をハードウェア上に持つことができるICチップである。PCではマザーボード上に搭載されている。これは、TCG(Trusted Computing Group)が技術仕様の策定を行っており、RSA鍵の生成・保管、RSA演算、ハッシュ演算、プラットフォーム状態情報(ソフトウェアの計測値)の保持、不揮発性メモリ(NVメモリ)及び揮発性メモリなどの機能が搭載されている。
【0045】
TPMを用いる利点は次の通りである。TPMは、個々のPCに固有のものとして搭載されている。すなわちTPM内の暗号鍵はそのPC固有の暗号鍵であるといえる。よってPC固有の暗号鍵で暗号化したHDD内のデータは、別のPCで復号することはできない。このTPMの暗号鍵を用いての暗号化機能を利用することで該HDDを別のPCに移行して、不正に監視プログラムの改竄、または削除する攻撃を防止することが可能となる。
【0046】
また、下記の挙げる点もTPMを用いる利点である。1つの利点は、特別なデバイスを用いる必要がないことである。別の利点は、USBデバイスなどに見られるように不注意でデバイスを引き抜くことにより演算処理中のデータが消失するといった問題を避けることができることである。
【0047】
[本実施の形態のシステム]
本実施の形態のプログラムの不正起動防止システムであるDig−Force2のシステム構成について説明する。本実施の形態のシステムでは、セキュリティデバイスにTPM14を用いている。このTPM14を用いたDig−Force2のシステム10は、図1に示すように、5つの構成要素を備えている。すなわち、ロガープログラムを実行するロガープログラム実行部11、ログストレージプログラムを実行するログストレージプログラム実行部12、補助デバイス13、セキュリティデバイスとしてのTPM14、そして監視プログラムとしてAIPHookプログラムを実行する監視プログラム実行部15を備えている。尚、これらはPC17上でソフトウェアの制御の下で実行されるものであるが、ここでは各プログラムによる処理ごとに実行部として示している。
【0048】
ロガープログラム実行部11は、ロガープログラムを実行することで、操作者の証拠となる操作情報をデジタルデータ化し、ログデータとしてログストレージプログラム実行部12に転送する。ログストレージプログラム実行部12は、ログストレージプログラムを実行することで、ロガープログラム実行部11から転送されたログデータに時刻情報などを付加し、フォーマット化を行う。そしてその後、フォーマット化したデジタルデータに対して、TPM14と連携しヒステリシス署名を施した上で、ログファイル記録部16にログファイルとして書き込み、最終署名履歴となる連鎖用データのみをTPM14に内蔵されているメモリに保存する。尚、以下では、ロガープログラム実行部11の実行するロガープログラムとログストレージプログラム実行部12の実行するログストレージプログラムとをDFシステムプログラムと称する。
【0049】
補助デバイス13は監視プログラム実行部15と連携し、補助デバイス13がPC17に装着されている時のみこのPC17を動作可能とする。
【0050】
補助デバイス13内には、次のデータを格納している。(a)管理者が起動を許可した実行形式でのプログラムのハッシュ値リスト(以下、「ホワイトリスト」と称する)。(b)個人特定用のID。(c)管理者によって(a)、(b)を署名した電子署名。
【0051】
TPM14は、耐タンパ性の記憶領域を持ち、署名鍵、そして連鎖用データを保護する。また、ヒステリシス署名の署名演算を行う。
【0052】
監視プログラム実行部15は、次の処理を行う。
【0053】
(i)APIHookプログラムを、PC17の起動時に自動的に起動するサービスとして動作する。
【0054】
(ii)補助デバイス13内の電子署名を検証する。
【0055】
(iii)APIHookプログラムにより、ユーザないしプログラムが他のプログラムを起動する前に、実行ファイルのハッシュ値を計算し、ホワイトリストと比較する。そして一致していた場合にのみプログラムを起動する。
【0056】
(iv)補助デバイス13の装着時で、補助デバイス13内のIDの検証に成功したときにのみ操作者にPC17の操作を可能にさせる。
【0057】
(v)APIHookプログラムにより、操作者にプロセスを終了させる操作を制限する。
【0058】
(vi)APIHookプログラムにより、DFシステムプログラムのプロセス監視を行い、不正に終了された場合は、再度プログラムを起動する処理を行う。
【0059】
この監視プログラム実行部15は、(iii)の機能により、他のプログラムが起動する前に実行ファイルの正当性をチェックする。よってDFシステムプログラムの改竄を検知するだけでなく、許可しないプログラムの起動を制限することができる。また、(iv)により、正当な補助デバイス13を装着しているときにのみしかPC17を操作させないことにより、個人の特定を行うことができる。
【0060】
[Dig−Force2システムの前提条件]
本実施の形態のプログラムの不正起動防止システムであるDig−Force2システムは、下記の条件下で動作させるものとする。
【0061】
前提条件1:サービスとして起動している監視プログラム実行部15は、管理者権限で監視プログラムを実行しているため、その下の権限でPC17を操作する操作者は、不正に監視プログラムを停止することができない。
【0062】
前提条件2:マザーボードのBIOS、OSを信頼できるソフトウェアとし、OSの次に起動する監視プログラムも信頼できるプログラムとする。すなわち、APIHookプログラムである監視プログラムを不正者が自分の都合の良いように修正するのは困難である。
【0063】
[Dig−Force2の処理フロー]
Dig−Force2の処理フローは、導入フェーズPH11、運用フェーズPH12、検証フェーズPH13に分かれる。それらの処理を順に説明を行う。
【0064】
導入フェーズPH11:管理者は、以下の処理を行い操作者にTPM搭載PC17、補助デバイス13を渡す。
【0065】
(1)TPM14の内部にルートとなる鍵であり、他のTPM鍵の保護に使われるStorage Root Key(以下、「SRK」と略称する。)を生成する。
【0066】
(2)ヒステリシス署名に用いる秘密鍵S、署名検証に用いる公開鍵PをTPM14の内部で生成し、SRKで暗号化してHDDにSRK(S)、SRK(P)として保存する。
【0067】
(3)連鎖用データの初期値R1に任意の値を指定し、TPM14の内部の不揮発性メモリNVに保存する。
【0068】
(4)検証時に必要な初期値を、検証者に送付する。
【0069】
(5)補助デバイス13にホワイトリスト、個人特定用のIDならびにホワイトリスト、IDの電子署名を格納する。
【0070】
(6)監視プログラム実行部15の実行する監視プログラムにホワイトリスト検証用の公開鍵、個人特定用のIDをセットし、DFシステムプログラムと共にPC17にインストールする。
【0071】
(7)操作者に初期設定が終了したPC17と補助デバイス13を渡す。
【0072】
運用フェーズPH12:運用フェーズでは、監視プログラムが起動している監視下で補助デバイス13をPC17に装着し、操作者の操作情報をログデータとして取得する。取得した操作情報のログデータにTPM14と通信を行ってヒステリシス署名を施し、ログファイル記憶部16に書き込む。
【0073】
図2は監視プログラムのフローを表す。この処理フローは次の通りである。
【0074】
(1)監視プログラム実行部15はOSが起動した直後に、サービスとして監視プログラムを起動する(ST11,ST12)。ここで、監視プログラム実行部15は補助デバイス13の装着を監視しており、装着されていない場合はPC17をロックする。
【0075】
(2)操作者はPCを操作するために、補助デバイス13をPC17に装着すると、監視プログラム実行部15は補助デバイス13から個人特定用のIDとそのIDの電子署名を読み込み、検証を行う。検証が成功した場合にのみPCが動作可能となる(ST13)。
【0076】
(3)監視プログラム実行部15は装着された補助デバイス13からホワイトリスト、及びホワイトリストの電子署名を読み込み、監視プログラムにセットされた公開鍵でホワイトリストの電子署名の検証を行う(ST14)。
【0077】
(4)監視プログラム実行部15は、DFシステムプログラムのハッシュ値を計算し、ホワイトリストと比較を行う(ST15)。一致した場合は、DFシステムプログラムの起動を行い、図3に示すようにログデータにヒステリシス署名を施していく(ST16)。一致しない場合にはDFシステムプログラムの起動を停止する(ST17)。
【0078】
図3に示したログデータにヒシテリシス署名を施す方式は、従来方式に対して、TPM14の鍵(SRK(S))を用いてTPM14の内部で署名演算を行い、TPM14のNVに連鎖用データを格納するフロー以外は同一である。
【0079】
図3を用いて詳しく説明すると、次の通りである。
【0080】
(a)ロガープログラムはログデータをログストレージプログラムに送付する。
【0081】
(b)ログストレージプログラムは受け取ったデータに日付などの情報を付加し、Diとする。
【0082】
(c)ログストレージプログラムはTPM上の連鎖用データRiを読み込み、Diのハッシュ値H(Di)とTPM上の連鎖用データRiとのハッシュ値を計算し、H(H(Di),Ri)とする。
【0083】
(d)ログストレージプログラムはこのハッシュ値H(H(Di)・Ri)をTPMに送付し、親鍵SRKを用いてデジタル署名を行い、その値をYi(=Sign(H(Di),Ri))とする。
【0084】
(e)ログストレージプログラムはさらに、H(Di),Yi,Riのハッシュ値H(H(Di),Yi,Ri)を新しい連鎖用データRi+1として、TPMに上書きを行う。
【0085】
(f)これらの後、ログストレージプログラムは、上記で得られたDi,H(Di),Yi,Riをログファイルに追記する。
【0086】
(5)監視プログラム実行部15はヒステリシス署名の署名データを書き換えるなどの攻撃を行う不正なプログラムが起動しないように他のプログラム(実行ファイル)の監視も行っている(ST18)。そして、操作者が他のプログラムを起動しようとした際に、監視プログラムが起動のAPIをフックし、(4)と同様にプログラムのハッシュ値を計算し、ホワイトリストと比較を行い一致した場合にのみ起動を許可する(ST19,ST20,ST21)。不一致であればそのプログラムの起動を停止する(ST22)。
【0087】
検証フェーズPH13:検証者は、操作者からTPM14搭載のPC17、補助デバイス13を受け取りログファイルの検証を行う。検証フローは従来の方式とTPM14の鍵(SRK(P))を用いてTPM14の内部で署名データの検証を行うこと、及び検証時にTPM14のNVに格納されている連鎖用データを用いること以外は同一である。
【0088】
これにより、正しいプログラムのみがPC17上で稼働していることの確認が可能になる。
【実施例】
【0089】
本発明のシステムの実用性を検証するために、監視プログラムに関する機能実験と、TPMに関する機能実験・性能実験の2つを行った。
【0090】
(1)監視プログラムに関する機能実験
監視プログラムに用いているAPIHookプログラムで他のプログラムの起動を制御する機能について実験を行った。APIHookプログラムは、オリジナルのAPIを、新たに作成した別のAPIに置き換える技術である。この技術を応用し、オリジナルAPIの処理を変更することで、プログラムの動作を変更させることができる(非特許文献6)。
【0091】
プログラム起動時に、どのAPIが呼ばれているかの調査を、呼ばれたAPIのログを取得するAPIMonitor(非特許文献7)を用いて行った。出力された10種類以上のAPIの中から関連しそうなAPIをフックし、オリジナルのAPIの呼び出しを制御する実験を行った。
【0092】
実験の結果、ntdll.dllに定義されているAPIであるRtlCreateProcessParametersがプログラムの起動に関係していることが分かった。
【0093】
このAPIをフックし、起動制御を行う処理フローを図4に示してある。この処理フローのプログラムにて起動制御実験を行った結果、許可したプログラム以外は起動ができない状況を実現することができた。
【0094】
DOSプログラムの動作はAPIHookプログラムにより監視することができないが、DOSプログラムの起動は監視することができる。よってDOSプログラムについてはその起動を許可しないことで対処している。
【0095】
(2)TPMに関する機能・性能実験
TPMを用いる方式の有用性を確認するために、a)TPMの署名演算パフォーマンス、b)TPMのNV利用について、実験を行った。
【0096】
まずa)については、ヒステリシス署名に必要な署名演算処理、署名検証処理を実装し、要した時間を計測した。評価は図5の表1で示す環境で行った。
【0097】
処理時間の計測を10回繰り返して行い、その平均値を計測結果とした。計測結果は、署名演算時間が0.076秒であり、署名検証処理時間が0.029秒であった。
【0098】
本発明のシステムでは、従来方式と同様に1秒ごとにTPMにデータを署名演算のために転送している。よってこの結果は実用的な値であると判断できる。
【0099】
b)のTPMのNV利用については、ヒステリシス署名の連鎖用データを格納するために必要な機能である。上記の表1の環境で、NVを利用できるか実験を行ったところ、TPMのユーザ用に20BYTE確保されていることが確認できた。
【0100】
Dig−Force2システムを運用していく上で、考えられる攻撃を示し、その攻撃方法に対するDig−Force2システムの安全性も検討した。図6の表2に考えられる攻撃方法を列挙している。
【0101】
攻撃Aは、改竄されたDFシステムプログラムが起動され、証拠となる操作情報と署名履歴の正当性を保持できない問題である。またDFシステムプログラムを停止させるなどの、上記の影響を及ぼす不正なプログラムが起動するという問題である。この攻撃Aには、監視プログラムによって起動時にチェックを行い、正しいプログラムのみ起動することで対処可能となる。
【0102】
攻撃Bは、プログラムの起動制御を行なう監視プログラムがHDD(ハードディスクドライブ)を別のPCに移すことで、不正に削除、改竄されるという攻撃である。この攻撃により監視プログラムが稼動していないPC環境になり、不正プログラムの起動を防ぐことができないという問題である。この攻撃Bには、TPM固有の暗号鍵で監視プログラムを暗号化することで対処可能となる。TPM固有の暗号鍵でHDDの暗号化を行なえば、別のPCにHDDを移行しても暗号化に用いたTPMの鍵を持つことができないため、復号ができない。よって不正に監視プログラムを削除、または改竄することが不可能となる。
【0103】
攻撃Cは、DFシステムプログラムを停止することによって、証拠となる操作情報、署名履歴を取得できないようにさせる攻撃である。この攻撃Cには、監視プログラムによってDFシステムプログラムのプロセス状態の監視を行い、停止された場合は、自動的に再度起動することで対処可能となる。
【0104】
攻撃Dは、ホワイトリストが改竄され、監視プログラムが不正なプログラムの起動を許可してしまう攻撃である。この攻撃Dには、管理者の秘密鍵を用いた電子署名を付加しておき、監視プログラムで署名検証を行うことで改竄の検知が可能となる。
【0105】
攻撃Eは、TPMのNVに格納されている署名履歴となる連鎖用データが改竄され、証拠性を保持できなくさせる攻撃である。この攻撃Eには、監視プログラムでNVに不正にアクセスを行うプログラムを起動制御することで対処可能となる。
【0106】
このように、APIHookプログラムを監視プログラムとし、この監視プログラムとTPMと補助デバイスを用いることで高い信頼性を確保できることが確認できた。
【0107】
尚、本発明は、DFシステムに留まらず、コンピュータ、特にPCの所有者が不正なプログラムを立ち上げようとしてもそれを抑止し、正しいプログラムだけがコンピュータ上で稼働しているように制御することが必要なコンピュータ活用分野にて広く利用できるものである。
【図面の簡単な説明】
【0108】
【図1】本発明の1つの実施の形態のプログラムの不正起動防止システムのブロック図。
【図2】上記実施の形態のプログラムの不正起動防止システムにおいて、監視プログラム実行部のAPIHookプログラムのブロック図。
【図3】上記実施の形態のプログラムの不正起動防止システムにおいて、TPMの実行するヒシテリシス署名の処理フロー図。
【図4】本発明の実施例の起動制御の処理フロー図。
【図5】本発明の実施例における署名演算の測定環境の表1。
【図6】本発明の実施例において考えられる攻撃方法の表2.
【図7】従来のプログラムの不正起動防止システムのブロック図。
【図8】Microsoft社のOSの階層図。
【符号の説明】
【0109】
10 不正起動防止システム
11 ロガープログラム実行部
12 ログストレージプログラム実行部
13 補助デバイス
14 TPM
15 監視プログラム実行部
16 ログファイル
17 パーソナルコンピュータ(PC)

【特許請求の範囲】
【請求項1】
耐タンパ不揮発性記憶領域(NV領域)を持つセキュリティチップであるTPMと、
ログファイルを保存するログファイル登録部と、
操作者の証拠となる操作情報をデジタルデータ化してログデータを作成するロガープログラムを実行するロガープログラム実行部と、
前記ロガープログラム実行部の作成したログデータに時刻情報を付加しフォーマット化し、該フォーマット化したログデータに対して前記TPMと連携してヒステリシス署名を施した上で前記ログファイル登録部にログファイルとして保存し、かつ、書き込み、最終署名履歴となる連鎖用データのみ前記TPMのNV領域に保存するログストレージプログラムを実行するログストレージプログラム実行部と、
実行を許容するプログラム群の各々のプログラムのハッシュ値をホワイトリストとして保持する補助デバイスと、
(i)APIHookのようなアプリケーションとOSとの間の通信に割り込むフッキングプログラムを当該システムの起動時に起動し、(ii)前記補助デバイス内の電子署名を検証し、(iii)前記フッキングプログラムにより、当該システム内の他のプログラムが起動する前に当該他のプログラムのハッシュ値を計算し、前記ホワイトリストと比較して一致していた場合にのみ当該他のプログラムを起動し、(iv)前記補助デバイスの装着時で、かつ、当該補助デバイス内のIDの検証に成功したときにのみ操作者に当該システムの操作を可能にする監視プログラム実行部とを備えたことを特徴とするプログラムの不正起動防止システム。
【請求項2】
前記監視プログラム実行部は、前記フッキングプログラムにより、ヒューマンマシンインタフェースのプロセスを終了させる操作を制限することを特徴とする請求項1に記載のプログラムの不正起動防止システム。
【請求項3】
前記監視プログラム実行部は、前記フッキングプログラムにより、前記ロガープログラムとログストレージプログラムのプロセスを監視し、不正に終了された場合には再度該プログラムを起動することを特徴とする請求項1又は2に記載のプログラムの不正起動防止システム。
【請求項4】
前記フォーマット化したログデータにヒシテリシス署名を施す際に、前記TPMのNV領域に保存されている暗号鍵を用いて当該TPMの内部で署名演算を行い、当該TPMのNV領域に連鎖用データを格納することを特徴とする請求項1〜3のいずれかに記載のプログラムの不正起動防止システム。
【請求項5】
(1)コンピュータのOSが起動した直後に監視プログラムを起動し、
(2)前記監視プログラムにて、補助デバイスの装着を監視し、補助デバイスが装着されていない場合は当該コンピュータをロックし、前記補助デバイスが装着されている場合には、前記補助デバイスから個人特定用のIDとそのIDの電子署名を読み込み、検証を行い、当該検証が成功した場合にのみコンピュータの動作を許容し、
(3)前記監視プログラムにて、当該コンピュータに装着された前記補助デバイスからホワイトリスト及びホワイトリストの電子署名を読み込み、当該監視プログラムにセットされた公開鍵でホワイトリストの電子署名の検証を行い、
(4)前記監視プログラムにて、ロガープログラムとログストレージプログラムとのハッシュ値を計算し、前記補助デバイスに登録されているホワイトリストと比較して一致した場合には前記ロガープログラムとログストレージプログラムの起動を許容し、前記ホワイトリストと比較して一致しない場合には前記ロガープログラムとログストレージプログラムの起動を停止することを特徴とするプログラムの不正起動防止方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2009−259160(P2009−259160A)
【公開日】平成21年11月5日(2009.11.5)
【国際特許分類】
【出願番号】特願2008−110270(P2008−110270)
【出願日】平成20年4月21日(2008.4.21)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 2007年10月31日、社団法人情報処理学会発行の「コンピュータセキュリティシンポジウム2007 Computer Security Symposium 2007(CSS2007)論文集」に発表
【出願人】(800000068)学校法人東京電機大学 (112)
【出願人】(504132272)国立大学法人京都大学 (1,269)
【Fターム(参考)】