(57)【要約】【課題】スパイウェアなどによる個人情報や機密情報の漏洩を防止する。【解決手段】入力デバイスと、通信デバイスと、入力デバイスが受けた操作を検出する操作検出部と、中央処理装置によって実行されるタスクから通信デバイスに対する通信要求を検出する要求検出部と、検出された操作と検出された通信要求との関連を判断する関連判断部と、検出された操作と検出された通信要求との関連が無いことを条件に、通信要求に応じた通信デバイスによる通信を禁止する制御部とを備える情報処理装置を提供する。【選択図】図３
2007280013.tif 000002
【特許請求の範囲】
【請求項１】
入力デバイスと、
通信デバイスと、
前記入力デバイスが受けた操作を検出する操作検出部と、
中央処理装置によって実行されるタスクから前記通信デバイスに対する通信要求を検出する要求検出部と、
検出された前記操作と検出された前記通信要求との関連を判断する関連判断部と、
検出された前記操作と検出された前記通信要求との関連が無いことを条件に、前記通信要求に応じた前記通信デバイスによる通信を禁止する制御部と
を備える情報処理装置。
【請求項２】
他の装置との間でデータの授受が可能に設定された記憶装置を更に備え、
前記要求検出部は、中央処理装置によって実行されるタスクから前記記憶装置に対するアクセス要求を更に検出し、
前記関連判断部は、検出された前記操作と検出された前記アクセス要求との関連を更に判断し、
前記制御部は、検出された前記操作と検出された前記アクセス要求との関連が無いことを条件に、前記アクセス要求に応じた前記記憶装置に対するアクセスを禁止する
請求項１に記載の情報処理装置。
【請求項３】
前記関連判断部は、前記入力デバイスが前記操作を受けてから前記通信デバイスが前記通信要求を受けるまでの期間が、予め定められた基準期間よりも短いことを条件に、検出された前記操作と検出された前記通信要求とが関連すると判断する
請求項１に記載の情報処理装置。
【請求項４】
前記中央処理装置は、前記入力デバイスが受けた前記操作の内容をオペレーティングシステムから受信する第１のタスクと、オペレーティングシステムを介して前記通信要求を前記通信デバイスに送信する第２のタスクとを実行し、
前記関連判断部は、前記第１のタスクと前記第２のタスクとの関係に基づいて、検出された前記操作と検出された前記通信要求との関連を判断する
請求項１に記載の情報処理装置。
【請求項５】
前記関連判断部は、前記第１のタスクと前記第２のタスクとが同一であることを条件に、検出された前記操作と検出された前記通信要求とが関連すると判断する
請求項４に記載の情報処理装置。
【請求項６】
前記関連判断部は、前記第１のタスクが、直接にまたは間接に、前記第２のタスクと通信していることを条件に、検出された前記操作と検出された前記通信要求とが関連すると判断する
請求項４に記載の情報処理装置。
【請求項７】
前記関連判断部は、前記第１のタスクを直接にまたは間接に生成した祖先タスクと、前記第２のタスクを直接にまたは間接に生成した祖先タスクとが共通することを条件に、検出された前記操作と検出された前記通信要求とが関連すると判断する
請求項４に記載の情報処理装置。
【請求項８】
処理結果を表示し、または、操作の入力を受け付けるウィンドウを表示する表示部を更に備え、
前記関連判断部は、前記第１のタスクが何れかの前記ウィンドウを保持し、かつ、前記操作を受け付けた時点で当該ウィンドウがフォアグラウンドに設定されていることを更に条件として、検出された前記操作と検出された前記通信要求とが関連すると判断する
請求項４に記載の情報処理装置。
【請求項９】
前記操作検出部は、前記入力デバイスであるマウスのドラッグ操作を検出し、
前記関連判断部は、前記入力デバイスが受けた前記操作の内容を取得するタスクが保持するウィンドウが、前記ドラッグ操作のドラッグ先のウィンドウであることを更に条件として、検出された前記操作と検出された前記通信要求とが関連すると判断する
請求項４に記載の情報処理装置。
【請求項１０】
前記操作との関連に関わらず前記通信デバイスを用いた通信を許可するタスクの識別情報を記録した許可情報記録部を更に備え、
前記制御部は、前記許可情報記録部に記録された識別情報のタスクが発生させた通信要求に応じた通信を許可する
請求項１に記載の情報処理装置。
【請求項１１】
前記関連判断部によって、前記操作が前記通信要求に関連すると判断されたことに応じ、当該通信要求を発生させたタスクの識別情報を前記許可情報記録部に追加する許可情報追加部を更に備える請求項１０に記載の情報処理装置。
【請求項１２】
前記操作検出部は、前記入力デバイスが操作を受けることなく何れかのタスクに操作の内容が入力された場合には、前記入力デバイスが操作を受けたと判断しない
請求項１に記載の情報処理装置。
【請求項１３】
前記操作検出部は、前記入力デバイスが操作を受けていない場合であっても、当該情報処理装置の遠隔操作を制御する予め定められたタスクの処理に基づき他のタスクに当該操作の内容が入力された場合には、前記入力デバイスが操作を受けたと判断する
請求項１２に記載の情報処理装置。
【請求項１４】
前記操作検出部は、前記入力デバイスが操作を受けてから、当該操作の内容が何れかのタスクに入力されるまでに経過した時間が予め定められた基準期間以下であることを条件に、前記入力デバイスが操作を受けたと判断する
請求項１に記載の情報処理装置。
【請求項１５】
前記操作検出部は、タスクに対し入力に基づく処理の開始を指示する予め定められた操作を検出し、
前記関連判断部は、当該予め定められた操作と前記通信要求との関連を判断し、
前記制御部は、当該予め定められた操作と検出された前記通信要求との関連が無いことを条件に、前記通信要求に応じた前記通信デバイスによる通信を禁止する
請求項１に記載の情報処理装置。
【請求項１６】
入力デバイスと、通信デバイスとを有する情報処理装置において前記通信デバイスによる通信を制御する方法であって、
前記入力デバイスが受けた操作を検出するステップと、
中央処理装置によって実行されるタスクから前記通信デバイスに対する通信要求を検出するステップと、
検出された前記操作と検出された前記通信要求との関連を判断するステップと、
検出された前記操作と検出された前記通信要求との関連が無いことを条件に、前記通信要求に応じた前記通信デバイスによる通信を禁止するステップと
を備える方法。
【請求項１７】
情報処理装置を、
入力デバイスと、
通信デバイスと、
前記入力デバイスが受けた操作を検出する操作検出部と、
中央処理装置によって実行されるタスクから前記通信デバイスに対する通信要求を検出する要求検出部と、
検出された前記操作と検出された前記通信要求との関連を判断する関連判断部と、
検出された前記操作と検出された前記通信要求との関連が無いことを条件に、前記通信要求に応じた前記通信デバイスによる通信を禁止する制御部と
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置による通信を制御する方法に関する。特に、本発明は、通信による情報漏洩を防止する方法に関する。
【背景技術】
【０００２】
近年、利用者の意に反して情報処理装置に侵入し、利用者の望まない活動を行うマルウェアの存在が知られている。マルウェアの１種であるスパイウェアは、情報処理装置に進入して記憶装置から情報を読み出して外部に送信する。情報処理装置がスパイウェアに侵入されると、記憶装置に記憶された個人情報や機密情報が第三者に盗み出されて悪用されたり、不特定の利用者に公開されてしまう恐れがある。
【０００３】
従来、このようなマルウェアの活動を防止するセキュリティソフトウェアが開発されている（非特許文献１から３を参照。）。セキュリティソフトウェアは、マルウェアの実行ファイルを識別するためのシグネチャのリストを有している。シグネチャとは、例えば、実行ファイルから生成されたハッシュ値である。セキュリティソフトウェアは、疑わしい実行ファイルをシグネチャのリストと比較し、一致すればその実行ファイルをマルウェアと判断する。次々と開発されるマルウェアに対応するために、シグネチャのリストを定期的に更新することも行われている。
【０００４】
また、インターネットバンキングでは、予め顧客に配布した専用のソフトウェアによってのみサーバに対するアクセスを許可することが試みられている（非特許文献４を参照。）。これにより、ウェブブラウザなどの汎用のソフトウェアから情報を収集するマルウェアの活動を防止できる。また、近年では、個人情報漏洩防止のため、パーソナルファイアウォールが用いられている。パーソナルファイアウォールによれば、利用者は、通信を許可するアプリケーションプログラム、通信プロトコル、ポート番号、および、通信先のウェブサイトを設定できる。
【０００５】
【非特許文献１】Spybot. http://spybot.eon.net.au/
【非特許文献２】AD-AWARE. Lavesoft. http://www.lavasoftusa.com/
【非特許文献３】ノートン・パーソナル・セキュリティ 2005  . Symantec. http://www.symantec.com/region/jp/products/npf/features.html
【非特許文献４】ソフトウェアキーボードによるスパイウェア対策.ソニーバンク. http://www.sonybank.net/img/PR050801_sb.pdf
【非特許文献５】Information about W32/Antinny.K, Symantec.http://www.symantec.com/region/jp/sarcj/data/w/w32.antinny.k.html
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、セキュリティソフトウェアのシグネチャのリストを定期的に更新した場合であっても、全てのマルウェアについてのシグネチャを予め完全に準備するのは難しい。例えば、シグネチャのリストを更新する前に最新のマルウェアに侵入されても、それを適切に検出できない場合がある。更に、マルウェアがその実行コードを自ら変更する場合もある。このような場合には、シグネチャのリストを最新に保つだけでは適切にマルウェアを検出できない。
【０００７】
なお、最近では、Ｐ２Ｐ（ピア・ツー・ピア）システムの利用者から個人情報を盗み出して第三者に公開するマルウェアが問題となっている（非特許文献５を参照。）。Ｐ２Ｐシステムにおいて、利用者は、第三者に公開する公開フォルダを設定する。この公開フォルダに含まれるファイルは、他の利用者の要求に応じて自由に読み出されることとなる。ある種のマルウェアは、利用者の個人情報を情報処理装置全体から探し出し、探し出したこの個人情報をこの公開フォルダに記録してしまう。
【０００８】
このようなマルウェアは、それ自体で通信を行わない。このため、パーソナルファイアウォールや専用ソフトウェアを用いても、通信するソフトウェアがマルウェアではないので、情報漏洩を効果的に防止できない場合があった。
【０００９】
そこで本発明は、上記の課題を解決することのできる情報処理装置、方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の第１の形態においては、入力デバイスと、通信デバイスと、入力デバイスが受けた操作を検出する操作検出部と、中央処理装置によって実行されるタスクから通信デバイスに対する通信要求を検出する要求検出部と、検出された操作と検出された通信要求との関連を判断する関連判断部と、検出された操作と検出された通信要求との関連が無いことを条件に、通信要求に応じた通信デバイスによる通信を禁止する制御部とを備える情報処理装置を提供する。また、当該情報処理装置を制御する方法およびプログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【００１１】
本発明によれば、スパイウェアなどによる個人情報や機密情報の漏洩を防止できる。
【発明を実施するための最良の形態】
【００１２】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１３】
図１は、情報処理装置１０の全体構成を示す。情報処理装置１０は、ＣＰＵ周辺部と、入出力部と、レガシー入出力部とを備える。ＣＰＵ周辺部は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、及びグラフィックコントローラ１０７５を有する。入出力部は、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信デバイス１０３０、入力デバイス１０４５、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する。レガシー入出力部は、入出力コントローラ１０８４に接続されるＢＩＯＳ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有する。
【００１４】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＢＩＯＳ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。表示装置１０８０は、本発明に係る表示部の一例であり、ＣＰＵ１０００による処理結果を表示する。具体的には、表示装置１０８０は、マルチ・ウィンドウシステムを実現するべく、それぞれが処理結果を表示すると共に操作の入力を受け付ける複数のウィンドウを表示してもよい。
【００１５】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信デバイス１０３０、ハードディスクドライブ１０４０、入力デバイス１０４５、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信デバイス１０３０は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ１０４０は、本発明に係る記憶装置の一例であり、情報処理装置１０が使用するプログラム及びデータを格納する。入力デバイス１０４５は、利用者から受けた操作に応じて操作内容を入出力チップ１０７０に通知する。例えば入力デバイス１０４５はキーボードやマウスであり、押下されたキーのＩＤやクリックされたマウスのボタンのＩＤなどを入出力チップ１０７０に通知してもよい。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０又はハードディスクドライブ１０４０に提供する。
【００１６】
入出力コントローラ１０８４には、ＢＩＯＳ１０１０と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。ＢＩＯＳ１０１０は、情報処理装置１０の起動時にＣＰＵ１０００が実行するブートプログラムや、情報処理装置１０のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、入出力チップ１０７０を介してＲＡＭ１０２０またはハードディスクドライブ１０４０に提供する。
【００１７】
情報処理装置１０に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１０７０及び/又は入出力コントローラ１０８４を介して、記録媒体から読み出され情報処理装置１０にインストールされて実行される。プログラムが情報処理装置１０等に働きかけて行わせる動作は、以降の図２から図６を参照して説明する。
【００１８】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置１０に提供してもよい。
【００１９】
図２は、ハードディスクドライブ１０４０の構成例を示す。ハードディスクドライブ１０４０は、共有領域２００と、許可情報記録領域２１０とを有する。共有領域２００は、他の情報処理装置との間でデータの授受が可能に設定されている。例えば、共有領域２００は、ＣＰＵ１０００上で動作するプロセスからアクセスを受ける。また、共有領域２００は、通信デバイス１０３０を経由して外部に設けられた他の情報処理装置からアクセスを受ける。一例として、共有領域２００は、ウィンドウズ（登録商標）の共有フォルダ機能によって他の情報処理装置からのアクセスを可能とした領域であってもよい。他の例として、共有領域２００は、Ｐ２Ｐソフトウェア（例えばウィニー）などによって、不特定多数の情報処理装置からのアクセスを可能とした領域であってもよい。即ち、共有領域２００に記録されたデータは、情報処理装置１０の利用者による明示的な通信の指示が無くても、他の利用者に管理された他の情報処理装置に送信され得る。
【００２０】
許可情報記録領域２１０は、本発明に係る許可情報記録部として機能する。許可情報記録領域２１０は、入力デバイス１０４５が受けた操作との関連に関わらず通信デバイス１０３０を用いた通信を許可するプロセスの識別情報を記録する。また、許可情報記録領域２１０は、入力デバイス１０４５が受けた操作との関連に関わらずハードディスクドライブ１０４０に対するアクセスを許可するプロセスの識別情報を記録する。即ち後述する制御部３５０は、入力デバイス１０４５が操作を受けていないとしても、許可情報記録領域２１０に記録された識別情報のプロセスが発生させた通信要求に応じた通信を許可する。同様に、制御部３５０は、許可情報記録領域２１０に記録された識別情報のプロセスが発生させたアクセス要求に応じたアクセスを許可する。ここでプロセスの識別情報とは、例えば、そのプロセスによって実行させるプログラムを格納した実行ファイルをバイナリデータとみなした場合のハッシュ値であることが望ましい。これに代えて、プロセスの識別情報とは、例えばプロセス番号であってもよいし、そのプロセスを実行するための実行ファイルのパスであってもよいし、その実行ファイルを実行させるためのコマンド（コマンドに与えるオプションを含む）であってもよい。利用者は、例えば、自己の信頼できるプロセスの識別情報を予め許可情報記録領域２１０に記録しておくことで、そのプロセスを不正アクセス判断の対象から除外することができる。
【００２１】
図３は、ＣＰＵ１０００の機能構成を示す。ＣＰＵ１０００は、予めハードディスクドライブ１０４０などにインストールされたプログラムによって、プロセス３０−１と、プロセス３０−２と、オペレーティングシステム３５と、第１操作検出部３００と、第２操作検出部３２０と、第３操作検出部３２５−１〜２と、要求検出部３３０と、関連判断部３４０と、制御部３５０と、許可情報追加部３６０として機能する。プロセス３０−１は、本発明に係る第１のタスクの一例であり、入力デバイス１０４５が受けた操作の内容を示すメッセージをオペレーティングシステム３５から受信する。一方で、プロセス３０−２は、本発明に係る第２のタスクの一例であり、オペレーティングシステム３５を経由して通信要求を通信デバイス１０３０に送信する。また、プロセス３０−１〜２は互いにプロセス間通信を行ってもよい。また、本発明に係るそれぞれのタスクはプロセスではなくスレッドであってもよい。なお、図３においてプロセス３０−１およびプロセス３０−２は別個のプロセスであるが、プロセス３０−１およびプロセス３０−２は同一であってもよい。
【００２２】
第１操作検出部３００、第２操作検出部３２０、および、第３操作検出部３２５−１〜２は、本発明に係る操作検出部として機能し、入力デバイス１０４５が受けた操作、例えばキーボードのキー入力操作、または、マウスのクリックやドラッグ操作を検出する。具体的には、第１操作検出部３００は、プロセス３０−１が動作するメモリ空間内で動作し、入力デバイス１０４５が受けた操作の内容を示すメッセージをオペレーティングシステム３５からプロセス３０−１に転送される入力デバイス１０４５が受けた操作の内容を示すメッセージをフックすることにより実現される。操作の内容を示すメッセージとは、例えばウィンドウズ（登録商標）においては、入力デバイス１０４５であるキーボードのキーが押下されたことを示すＷＭ＿ＫＥＹＤＯＷＮ、または、入力デバイス１０４５であるマウスの左ボタンが押下されたことを示すＷＭ＿ＬＢＵＴＴＯＮＤＯＷＮなどである。
【００２３】
第１操作検出部３００は、これらのメッセージがオペレーティングシステム３５からプロセス３０−１に送信される場合に動作を開始する。動作を開始すると、第１操作検出部３００は、第２操作検出部３２０に対し入力デバイス１０４５が実際に利用者から操作を受けたことを検証させる。第２操作検出部３２０は、カーネル空間で動作するデバイスドライバによって実現される。第２操作検出部３２０は、入力デバイス１０４５が受けた操作の内容を示すメッセージがオペレーティングシステム３５からプロセス３０−１に送信される場合に、入力デバイス１０４５が実際に操作を受けたかを検出する。例えば第２操作検出部３２０は、擬似キーボードデバイスドライバによるキー操作エミュレーションによるキー操作は、入力デバイス１０４５が操作を受けたと判断しない。これを実現するために、例えば、第２操作検出部３２０は、キーボードやマウスなどの入力デバイス１０４５のデバイスドライバと同一階層に属する他のデバイスドライバを検出する。そして、第２操作検出部３２０は、検出されたデバイスドライバが予め定められた正規のデバイスドライバで無い場合には、入力デバイス１０４５が操作を受けたと判断しない。このように、デバイスドライバの階層を検査することで操作検出の精度を高めてもよい。
【００２４】
他の例として、第１操作検出部３１０および第２操作検出部３２０は、入力デバイス１０４５が操作を受けてから、当該操作の内容が何れかのプロセスに入力されるまでに経過した時間が予め定められた基準期間以下であることを条件に、入力デバイス１０４５が操作を受けたと判断してもよい。具体的には、第２操作検出部３２０は、まず、入力デバイス１０４５が実際に操作を受けた時刻を記憶装置に記憶する。そして、第１操作検出部３１０は、その操作内容を示すメッセージがプロセス３０−１に入力された時刻と、記憶装置に記憶していた時刻との差分を計算することで、これらの時刻の間に経過した時間を計測する。そして、第１操作検出部３１０および第２操作検出部３２０は、計測したこの時間が予め定められた基準以下であることを条件に、入力デバイス１０４５が操作を受けたと判断する。これにより、メッセージの偽造などに関わらず、実際に受けた可能性の高い操作の内容のみをメッセージとしてプロセスに対し送信することができ、通信やアクセスが利用者の操作と関連あるかを精度良く判断できる。
【００２５】
第２操作検出部３２０は、入力デバイス１０４５が操作を受けることなくプロセス３０−１に対して操作の内容を示すメッセージが入力されている場合には、入力デバイス１０４５が操作を受けたとは判断しない。例えば、キーボード操作をソフトウェアによってエミュレートする擬似キーボードデバイスドライバがプロセス３０−１に対しメッセージを送信しようとしている場合には、第２操作検出部３２０は、入力デバイス１０４５が操作を受けたとは判断しない。入力デバイス１０４５が操作を受けたと判断された場合には、第１操作検出部３００は、その操作の内容を示すメッセージをそのままプロセス３０−１に送信する。また、第１操作検出部３００は、そのメッセージを受信した時刻などの情報を関連判断部３４０に通知する。
【００２６】
第３操作検出部３２５−１は、プロセス３０−１に対応して設けられ、第３操作検出部３２５−２は、プロセス３０−２に対応して設けられる。第３操作検出部３２５−１〜２のそれぞれは、対応するプロセスからオペレーティングシステム３５に対してキー操作をエミュレートする要求が発生した場合に動作する。第３操作検出部３２５−１〜２のそれぞれは、対応するプロセスからオペレーティングシステム３５に対してキー操作のエミュレートを要求するAPI（Application Programming Interface）をフックすることにより実現される。これは、例えば、ウィンドウズ（登録商標）におけるSendInput関数のようなキー操作をエミュレートする関数をフックし、呼び出されていないことを確認することで実現できる。第３操作検出部３２５−１〜２のそれぞれは、オペレーティングシステム３５に対するキー操作エミュレート要求を検出した場合、当該キー操作エミュレート要求を破棄する（API呼び出しを失敗させる）。ただし、遠隔操作を実現する予め定められたプロセスなどに限って当該要求を許可してもよい。即ち、第３操作検出部３２５−１〜２のそれぞれは、入力デバイス１０４５が操作を受けていない場合であっても、情報処理装置１０の遠隔操作を制御する予め定められたプロセスの処理に基づき他のプロセスに当該操作の内容が入力された場合には、入力デバイス１０４５が操作を受けたと判断してよい。
【００２７】
要求検出部３３０、関連判断部３４０、制御部３５０および許可情報追加部３６０は、プロセス３０−２が動作するメモリ空間で動作する。要求検出部３３０は、ＣＰＵ１０００によって実行される何れかのプロセス（たとえばプロセス３０−２）から通信デバイス１０３０に対する通信要求を検出する。また、要求検出部３３０は、ＣＰＵ１０００によって実行される何れかのプロセス（たとえばプロセス３０−２）からハードディスクドライブ１０４０に対するアクセス要求を検出する。具体的には、要求検出部３３０は、プロセス３０−２が通信要求を送信するためのAPIおよびプロセス３０−１がアクセス要求を送信するためのAPIをフックすることにより実現される。通信要求を送信するためのAPIとは、例えばウィンドウズ（登録商標）においては、UDPによるデータ送信を要求するsendto、TCPによるデータ送信を要求するsend、TCPによるデータ受信を要求するrecv、UDPによるデータ受信を要求するrecvfromなどである。また、アクセス要求を送信するためのAPIとは、例えばウィンドウズ（登録商標）においては、ファイルからのデータ読出を要求するReadFileまたはファイルの新規作成を要求するCreateFileなどである。
【００２８】
関連判断部３４０は、第１操作検出部３００によって検出された操作と、要求検出部３３０によって検出された通信要求との関連を判断する。また、関連判断部３４０は、第１操作検出部３００によって検出された操作と、要求検出部３３０によって検出されたアクセス要求との関連を判断する。例えば、関連判断部３４０は、入力デバイス１０４５が操作を受けてから通信デバイス１０３０が通信要求を受けるまでの期間が、予め定められた基準期間よりも短いことを条件に、検出されたその操作と検出されたその通信要求とが関連すると判断してもよい。同様に、関連判断部３４０は、入力デバイス１０４５が操作を受けてからハードディスクドライブ１０４０がアクセス要求を受けるまでの期間がこの基準期間よりも短いことを条件に、検出されたその操作と検出されたそのアクセス要求とが関連すると判断してもよい。
【００２９】
好ましくは、関連判断部３４０は、プロセス３０−１とプロセス３０−２との関係に更に基づいて、検出されたその操作と検出されたその通信要求またはアクセス要求との関連を判断する。具体的には、関連判断部３４０は、プロセス３０−１とプロセス３０−２とが同一であることを更に条件として、検出されたこの操作と検出されたこの通信要求またはアクセス要求とが関連すると判断してもよい。更に、関連判断部３４０は、プロセス３０−１が、直接または間接に、プロセス３０−２と通信していることを条件に、検出されたこの操作と検出されたこの通信要求とが関連すると判断してもよい。ここで、「プロセス３０−１が間接にプロセス３０−２と通信している」とは、プロセス３０−１が他の仲介プロセスと通信し、当該他の仲介プロセスがプロセス３０−２と通信している場合をいう。仲介プロセスは複数であってもよい。他の例として、関連判断部３４０は、プロセス３０−１を直接にまたは間接に生成した祖先プロセスと、プロセス３０−２を直接にまたは間接に生成した祖先プロセスとが共通することを条件に、検出された当該操作と検出された当該通信要求またはアクセス要求とが関連すると判断してもよい。ここで、「あるプロセスを直接または間接に生成する」とは、そのプロセスを子プロセスとして生成すること、または、そのプロセスを子孫プロセスとし、その子孫プロセスを直接または間接に生成する子プロセスを生成することをいう。例えば、関連判断部３４０は、プロセス３０−１およびプロセス３０−２の何れもが共通の親プロセスから生成されたことを更に条件として、検出された当該操作と検出された当該通信要求またはアクセス要求とが関連すると判断してもよい。
【００３０】
制御部３５０は、第１操作検出部３００および第２操作検出部３２０によって検出された操作と、要求検出部３３０によって検出された通信要求との関連が無いことを条件に、その通信要求に応じた通信デバイス１０３０による通信を禁止し、関連があることを条件に、その通信要求に応じた通信を許可する。同様に、制御部３５０は、第１操作検出部３００および第２操作検出部３２０によって検出された操作と、要求検出部３３０によって検出されたアクセス要求との関連が無いことを条件に、そのアクセス要求に応じたハードディスクドライブ１０４０に対するアクセスを禁止し、関連があることを条件に、そのアクセス要求に応じたアクセスを許可する。具体的には、関連があると判断されれば、制御部３５０は、要求検出部３３０においてフックしたAPIをそのまま実行させる。
【００３１】
但し、制御部３５０は、許可情報記録領域２１０に記録された識別情報のプロセスが発生させた通信要求またはアクセス要求については、操作との関連に関わらず、当該通信要求またはアクセス要求に基づく通信またはアクセスを許可する。また、制御部３５０は、操作との関連がないとして通信またはアクセスを禁止した場合には、情報処理装置１０の利用者に対しその通信またはアクセスを許可してよいかを問合せてもよい。問い合わせは、例えば表示装置１０８０の画面上にダイアログボックスを表示することにより行われる。ダイアログボックスには、「プロセスＸＸから不正の恐れが高い通信が要求されました。この通信を許可してもよろしいですか？」といった注意を喚起するメッセージとともに、通信を許可すべきまたは禁止すべき旨を示すボタンが表示される。これにより、不正の恐れが高い通信については利用者の判断を仰ぐことができ、機密情報や個人情報の漏洩を未然に防止できる。
【００３２】
許可情報追加部３６０は、関連判断部３４０によって、操作が通信要求またはアクセス要求に関連すると判断されたことに応じ、当該通信要求またはアクセス要求を発生させたプロセスの識別情報を許可情報記録領域２１０に記録する。この結果、操作と関連するアクセスを行っていると一旦判断されたプロセスはその後の通信またはアクセスを自由に行うことができる。これにより、不正な処理を行う可能性の低いプロセスについてはその後の処理を省略してＣＰＵ１０００の負荷を低減でき、また、ダイアログボックスを通じた利用者の操作負担を軽減できる。
【００３３】
以上、図３を参照してプロセス３０−１が受けた操作とプロセス３０−２が発した通信要求との関連を判断する例について説明したが、プロセス３０−１およびプロセス３０−２の一方は他方の役割を兼ねてもよい。即ち、プロセス３０−１は操作を受けるのみならず通信要求を発し、プロセス３０−２は通信要求を発するのみならず操作を受けてもよい。この場合には、第１操作検出部３００とは別個にプロセス３０−２に対応して第１操作検出部が設けられる。また、要求検出部３３０、関連判断部３４０、制御部３５０および許可情報追加部３６０とは別個にプロセス３０−１に対応して要求検出部、関連判断部、制御部および許可情報追加部が設けられる。このような形態も本発明の特許請求の範囲に含まれることは明らかである。
【００３４】
図４は、入力デバイス１０４５に対する操作が検出される処理のフローチャートを示す。第１操作検出部３００は、入力デバイス１０４５が受けた操作を検出する（Ｓ４００）。好ましくは、第１操作検出部３００は、入力デバイス１０４５に対するあらゆる操作を検出するのではなく、予め定められた操作のみを検出してもよい。この予め定められた操作とは、プロセス３０−１などのプロセスに対し入力に基づく処理の開始を指示する操作である。例えば、この予め定められた操作は、表示装置１０８０が表示した文字入力欄に対するエンター（Enter）キーの入力操作である。他の例として、予め定められた操作は、表示装置１０８０が表示したアイコンに対するマウスのダブルクリック操作であってもよいし、予め定められたショートカットキーの操作であってもよい。このように特定の操作のみを検出することで、操作の検出に応じたその後の処理の回数を減少でき、ＣＰＵ１０００の処理負荷を低下させることができる。
【００３５】
第１操作検出部３００、第２操作検出部３２０および第３操作検出部３２５−１〜２のそれぞれは、検出した操作が、単に操作内容を示すメッセージがプロセス３０−１に入力されたのではなく入力デバイス１０４５が直接に操作されたかを判断する（Ｓ４１０）。直接に操作されていない場合には（Ｓ４１０：ＮＯ）、第１操作検出部３００、第２操作検出部３２０および第３操作検出部３２５−１〜２は、情報処理装置１０の遠隔操作を制御する予め定められたプロセスに当該メッセージが入力されたか否かを判断する（Ｓ４２０）。遠隔操作を制御する予め定められたプロセスとは、例えば、他の情報処理装置に対し情報処理装置１０の表示画面のイメージを送信し、当該他の情報処理装置が受けた操作内容を示すメッセージを情報処理装置１０内のプロセスに送信するプロセスである。一例としてこのプロセスはウィンドウズ（登録商標）においてターミナルサーバ機能を実現するためのプロセスであり、そのプロセスの実行ファイル名はsvchost.exeである。
【００３６】
入力デバイス１０４５が直接操作されておらず（Ｓ４１０：ＮＯ）、かつ、操作内容を示すメッセージが当該予め定められたプロセスから入力されたものでなければ（Ｓ４２０：ＮＯ）、第１操作検出部３００、第２操作検出部３２０および第３操作検出部３２５−１〜２は本図の処理を終了する。このとき、第３操作検出部３２５−１〜２は、キー操作エミュレートなどの要求を破棄し、そのような要求を実現するAPI呼び出しを失敗させてもよい。一方、入力デバイス１０４５が直接操作され（Ｓ４１０：ＹＥＳ）、または、操作内容を示すメッセージが当該予め定められたプロセスから入力されたものであれば（Ｓ４２０：ＹＥＳ）、第１操作検出部３００、第２操作検出部３２０および第３操作検出部３２５−１〜２は引き続き以下の処理を行う。まず、第１操作検出部３００は、メッセージを受信するプロセス（即ちプロセス３０−１）が表示装置１０８０の画面上に表示した何れかのウィンドウを保持しているかを判断する（Ｓ４３０）。このウィンドウは、プロセス３０−１がその処理結果を表示し、または、プロセス３０−１に対する入力を受け付けるためのものである。
【００３７】
ウィンドウを保持している場合には（Ｓ４３０：ＹＥＳ）、第１操作検出部３００は、入力デバイス１０４５が操作を受け付けた時点でそのウィンドウがフォアグラウンドに設定されているかを判断する（Ｓ４４０）。フォアグラウンドのウィンドウとは、例えば、表示装置１０８０の画面上に表示された他のウィンドウを隠蔽するように最も手前側に表示されたウィンドウをいう。フォアグラウンドに設定されていない場合には、第１操作検出部３００は、そのウィンドウが、入力デバイス１０４５であるマウスのドラッグ操作のドラッグ先のウィンドウであるか否かを判断する（Ｓ４５０）。このウィンドウがフォアグラウンドに設定されておらず（Ｓ４４０：ＮＯ））、かつ、ドラッグ先でもないことを条件に（Ｓ４５０：ＮＯ）、第１操作検出部３００は、本図の処理を終了する。
【００３８】
一方、このウィンドウがフォアグラウンドに設定されており（Ｓ４４０：ＹＥＳ）、または、このウィンドウがドラッグ操作のドラッグ先であることを条件に（Ｓ４５０：ＹＥＳ）、第１操作検出部３００は、入力デバイス１０４５が受けた操作を検出するべく次の処理を行う。まず、第１操作検出部３００は、操作内容を示すメッセージを入力した当該プロセス（例えばプロセス３０−１）の識別情報を一時的な記憶領域に記憶する（Ｓ４６０）。この識別情報はＳ６５０において後述するプロセス間の関係判断に用いられる。そして、第１操作検出部３００は、入力デバイス１０４５が受けた操作を検出した検出時刻を一時的な記憶領域に記憶する（Ｓ４７０）。この検出時刻はＳ６３０において後述する経過時間の計算に用いられる。
【００３９】
図５は、プロセスから要求された通信またはアクセスが制御される処理のフローチャートを示す。要求検出部３３０は、ＣＰＵ１０００によって実行される何れかのプロセス（たとえばプロセス３０−２）から通信デバイス１０３０に対する通信要求、または、プロセス３０−２からハードディスクドライブ１０４０に対するアクセス要求を検出する（Ｓ５００）。通信要求またはアクセス要求を検出したことに応じ（Ｓ５００：ＹＥＳ）、制御部３５０は、これらの要求を発生させたプロセスが、通信またはアクセスの予め許可されたプロセスであるかを判断する（Ｓ５１０）。この判断は、このプロセスの識別情報が許可情報記録領域２１０に記録されているか否かによって行われる。許可されたプロセスであれば、制御部３５０はＳ５５０に処理を移して通信またはアクセスを許可する（Ｓ５５０）。
【００４０】
通信またはアクセスの許可されていないプロセスである場合には、関連判断部３４０は以下の処理を行う。まず、関連判断部３４０は、Ｓ４００において検出された操作と、Ｓ５００において検出された通信またはアクセスの要求との関連を判断する（Ｓ５２０）。関連が無いことを条件に（Ｓ５３０：ＮＯ）、制御部３５０は、通信要求に応じた通信、または、アクセス要求に応じたハードディスクドライブ１０４０に対するアクセスを禁止する（Ｓ５６０）。これに先立ち、制御部３５０は、通信またはアクセスを禁止するべきかを利用者に問い合わせ、利用者の同意を条件に通信またはアクセスを禁止してもよい。通信またはアクセスを禁止する場合には、更に、制御部３５０は、利用者に対し警告を発してもよいし、通信要求を送信するAPIを失敗状態で終了させてもよいし、通信要求を発生させたプロセスを強制的に停止させてもよい。これに加えて制御部３５０は、当該プロセスの実行ファイルをハードディスクドライブ１０４０から削除してもよい。
【００４１】
一方で、関連があることを条件に（Ｓ５３０：ＹＥＳ）、許可情報追加部３６０は、当該通信要求またはアクセス要求を発生させたプロセスの識別情報を許可情報記録領域２１０に記録する（Ｓ５４０）。そして、制御部３５０は、当該プロセスによる通信またはアクセスを許可する（Ｓ５５０）。
【００４２】
図６は、図５のＳ５２０における処理の詳細を示す。関連判断部３４０は、Ｓ４００において操作が検出されてからＳ５００において要求が検出されるまでに経過した期間を算出する（Ｓ６３０）。そして、関連判断部３４０は、算出されたこの期間が予め定められた基準期間内であるかを判断する（Ｓ６４０）。算出されたこの期間が基準期間内でなければ（Ｓ６４０：ＮＯ）、関連判断部３４０は、検出された操作と検出された要求とが関連しないと判断する（Ｓ６７０）。一方で、算出されたこの期間が基準期間内であれば（Ｓ６４０：ＹＥＳ）、関連判断部３４０は、操作内容を示すメッセージを受信するプロセス３０−１と要求を発したプロセス３０−２とが関連するかを判断する（Ｓ６５０）。
【００４３】
例えば、関連判断部３４０は、プロセス３０−１とプロセス３０−２とが同一であるかを判断してもよいし、プロセス３０−１が、直接または間接に、プロセス３０−２と通信しているかを判断してもよい。更に、関連判断部３４０は、プロセス３０−１およびプロセス３０−２の何れもが共通の親プロセスから生成されたかを判断してもよい。プロセス３０−１とプロセス３０−２とが関連することを条件に（Ｓ６５０：ＹＥＳ）、関連判断部３４０は、検出した操作と検出した要求とが関連すると判断する（Ｓ６６０）。一方、プロセス３０−１とプロセス３０−２とが関連しないことを条件に（Ｓ６５０：ＮＯ）、関連判断部３４０は、検出した操作と検出した要求とが関連しないと判断する（Ｓ６７０）。
【００４４】
以上、図１から図６を参照して説明したように、本実施形態に係る情報処理装置１０によれば、利用者による操作と関連がある通信やディスクアクセスのみを許可することにより、データの不正な持ち出しなどを行うマルウェアの活動を効果的に防止できる。関連の判断には操作と通信要求との間の経過時間やプロセス間の関係を重畳的に用いることで、判断の精度を高めることができる。このような機能は従来のウィルス対策ソフトウェアの代替手段として、または、従来のウィルス対策ソフトウェアと組み合わせて利用でき、スパイウェアなどの活動を効果的に防止できる。また、不正な活動を行う恐れの低いソフトウェアは予め登録できるので、ディスクアクセスの毎に利用者の手を煩わせるようなことは無く、利用者の利便性と情報の安全性とを共に確保することができる。
【００４５】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００４６】
【図１】図１は、情報処理装置１０の全体構成を示す。
【図２】図２は、ハードディスクドライブ１０４０の構成例を示す。
【図３】図３は、ＣＰＵ１０００の機能構成を示す。
【図４】図４は、入力デバイス１０４５に対する操作が検出される処理のフローチャートを示す。
【図５】図５は、プロセスから要求された通信またはアクセスが制御される処理のフローチャートを示す。
【図６】図６は、図５のＳ５２０における処理の詳細を示す。
【符号の説明】
【００４７】
１０  情報処理装置
３０−１〜２  プロセス
３５  オペレーティングシステム
２００  共有領域
２１０  許可情報記録領域
３００  第１操作検出部
３２０  第２操作検出部
３２５−１〜２  第３操作検出部
３３０  要求検出部
３４０  関連判断部
３５０  制御部
３６０  許可情報追加部
１０３０  通信デバイス
１０４０  ハードディスクドライブ
１０４５  入力デバイス
【図１】
2007280013.tif 000003
【図２】
2007280013.tif 000004
【図３】
2007280013.tif 000005
【図４】
2007280013.tif 000006
【図５】
2007280013.tif 000007
【図６】
2007280013.tif 000008