(57)【要約】  【課題】クライアントに提供されたユーザデータを複製又は移動させて目的以外に利用できないようにし、監視するためのデータ管理プログラムを提供する。  【解決手段】クライアントコンピュータ１上に動作するアプリケーションプログラム１０が動作中に作成された一時ファイルを、ハードディスク２５上に作成されたフォルダ８に暗号化して保存する。デバイスドライバ３０へのアクセスを制御するためのドライバウェア５０は、アプリケーションプログラム１０からファイルシステムへのアクセスを監視して、一時ファイルを暗号化してフォルダ８に保存する。アプリケーションプログラム１０は、従来のフォルダ７へアクセスするように動作する。フォルダ８は、ネットワーク１３上のサーバ１００、クライアントコンピュータ１に接続されたＵＳＢメモリ５等に作成されることができる。  【選択図】図１
2010072885.tif 000002
【特許請求の範囲】
【請求項１】
ユーザデータ（４）を格納した記憶装置（５）が前記電子計算機（１）に接続され、前記ユーザデータ（４）が前記電子計算機（１）上に読み出されてアプリケーションプログラム（１０）によって閲覧又は編集され、かつ、前記電子計算機（１）の入力装置から入力された入力データによって、前記アプリケーションプログラム（１０）が操作されて前記閲覧、又は編集が行われているとき、前記ユーザデータ（４）が前記電子計算機（１）から外部へ漏洩されないように制御するための電子計算機のデータ管理方法であって、
前記電子計算機（１）を動作させているオペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機（１）に接続されているデバイスを直接制御するためのデバイスドライバ（３０）同士の通信、又は前記デバイスドライバ（３０）と前記電子計算機上で動作するアプリケーションプログラム（１０）との通信に共通のインターフェースを提供するためのドライバウェア（５０）を前記電子計算機（１）が有し、
前記ドライバウェア（５０）は、
前記アプリケーションプログラムから出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバ（３０）から受信した受信データを含む第２データを、前記アプリケーションプログラムに送信するためのアプリケーションプログラムインターフェース部（５１）と、
前記デバイスドライバ（３０）へ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバ（３０）から前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御部（４０）と、及び、
前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１ないし４データの制御を行うための制御部（５２）と
からなり、
前記アプリケーションプログラム（１０）が起動するとき、前記アプリケーションプログラム（１０）の動作時に一時使用される一時ファイルを作成するための一時ファイル作成命令を前記アプリケーションプログラム（１０）が出力し、
前記アプリケーションプログラムインターフェース部（５１）は、前記一時ファイル作成命令を取得し、
前記デバイスドライバ制御部（４０）は、前記アプリケーションプログラムインターフェース部（５１）から前記一時ファイル作成命令を受信して、前記デバイスドライバ制御部（４０）に前記一時ファイル作成命令を送信し、
前記デバイスドライバ制御部（４０）は、前記記憶装置（２５、５、１００）を制御するためのデバイスドライバであるファイルシステムドライバ（３４）に、前記一時ファイル作成命令を送信して、
前記ファイルシステムドライバ（３４）は、前記一時ファイル作成命令に従って、前記記憶装置（２５、５、１００）に前記一時ファイルを作成し、
前記アプリケーションプログラム（１０）から前記一時ファイルを要求するとき、前記ファイルシステムドライバ（３４）は、前記一時ファイルを取得して、前記デバイスドライバ制御部（４０）及び前記アプリケーションプログラムインターフェース部（５１）を経由して前記アプリケーションプログラム（１０）に渡し、
前記アプリケーションプログラム（１０）が終了するとき、前記ドライバウェア（５０）は、前記ファイルシステムドライバ（３４）に、前記一時ファイルを削除する命令を送信し、
前記ファイルシステムドライバ（３４）は、前記一時ファイルを削除する
ことを特徴とする電子計算機のデータ管理方法。
【請求項２】
請求項１に記載の電子計算機のデータ管理方法において、
前記ドライバウェア（５０）は、データを暗号化して暗号化データを作成するための暗号化部（５４）、及び、前記暗号化データを復号化し、元の前記データを作成するための復号化部（５５）を有し、
前記ドライバウェア（５０）は、前記一時ファイルを暗号化部（５４）によって暗号化して、暗号化一時ファイルを作成して、前記記憶装置（２５、５、１００）に保存し、
前記アプリケーションプログラム（１０）から前記一時ファイルを要求するとき、前記ドライバウェア（５０）は、前記記憶装置（２５、５、１００）から前記暗号化一時ファイルを取得して、前記復号化部（５５）によって復号化し、前記一時ファイルを作成して前記アプリケーションプログラム（１０）に渡し、
前記アプリケーションプログラム（１０）が終了するとき、前記ドライバウェア（５０）は、前記暗号化一時ファイルを削除する
ことを特徴とする電子計算機のデータ管理方法。
【請求項３】
請求項１又は２に記載の電子計算機のデータ管理方法において、
前記記憶装置（２５、５、１００）は、前記電子計算機（１）に内蔵又は接続された補助記憶装置（２５，５）である
ことを特徴とする電子計算機のデータ管理方法。
【請求項４】
請求項１又は２に記載の電子計算機のデータ管理方法において、
前記記憶装置（２５、５、１００）は、前記電子計算機（１）が接続されているネットワーク（１３）上の記憶装置（１００）である
ことを特徴とする電子計算機のデータ管理方法。
【請求項５】
ユーザデータ（４）を格納した記憶装置（５）が前記電子計算機（１２）に接続され、前記ユーザデータ（４）が前記電子計算機（１）上に読み出されてアプリケーションプログラム（１０）によって閲覧又は編集され、かつ、前記電子計算機（１）の入力装置から入力された入力データによって前記アプリケーションプログラム（１０）が操作されて前記閲覧又は編集が行われているとき、前記ユーザデータ（４）が前記電子計算機（１）から外部へ漏洩されないように制御する機能を電子計算機（１）に実現させるための電子計算機のデータ管理プログラムにおいて、
前記電子計算機（１）を動作させているオペレーティングシステム（１１）の全ての命令が実行できるカーネルモードで動作し、前記電子計算機（１）に接続されているデバイスを直接制御するためのデバイスドライバ（３０）同士の通信、又は前記デバイスドライバ（３０）と前記電子計算機（１）上で動作するアプリケーションプログラム（１０）との通信に共通のインターフェースを提供するための機能を有し、かつ、
前記アプリケーションプログラム（１０）から出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバ（３０）から受信した受信データを含む第２データを、前記アプリケーションプログラム（１０）に送信するためのアプリケーションプログラムインターフェース機能（５１）と、
前記デバイスドライバ（３０）へ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバ（３０）から前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御機能（４０）と、及び、
前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１ないし４データの制御を行うための制御機能（５２）とを前記電子計算機（１）に実現させるためのドライバウェアプログラム（５０）を有し、
前記アプリケーションプログラム（１０）が起動するとき、前記アプリケーションプログラム（１０）から出力された命令で、前記アプリケーションプログラム（１０）の動作時に一時使用される一時ファイルを作成するための一時ファイル作成命令を、前記アプリケーションプログラムインターフェース部（５１）が取得するステップと、
前記デバイスドライバ制御部（４０）は、前記アプリケーションプログラムインターフェース部（５１）から、前記一時ファイル作成命令を受信するステップと、
前記デバイスドライバ制御部（４０）は、前記デバイスドライバ制御部（４０）に、前記一時ファイル作成命令を送信するステップと、
前記デバイスドライバ制御部（４０）は、前記記憶装置（２５、５、１００）を制御するためのデバイスドライバであるファイルシステムドライバ（３４）に、前記一時ファイル作成命令を送信して、前記記憶装置（２５、５、１００）に前記一時ファイルを前記ファイルシステムドライバ（３４）によって作成させるステップと、
前記アプリケーションプログラム（１０）から前記一時ファイルを要求するとき、前記デバイスドライバ制御部（４０）は、前記記憶装置（２５、５、１００）から前記ファイルシステムドライバ（３４）によって取得された前記一時ファイルを、取得するステップと、
前記デバイスドライバ制御部（４０）は、前記アプリケーションプログラムインターフェース部（５１）に、前記一時ファイルを渡すステップと、
前記アプリケーションプログラムインターフェース部（５１）は、前記デバイスドライバ制御部（４０）から取得した前記一時ファイルを前記アプリケーションプログラム（１０）に渡すステップと、及び、
前記アプリケーションプログラム（１０）が終了するとき、前記ドライバウェアプログラム（５０）は、前記ファイルシステムドライバ（３４）に、前記一時ファイルを削除する命令を送信して、前記一時ファイルを削除するステップと
からなることを特徴とする電子計算機のデータ管理プログラム。
【請求項６】
請求項５に記載の電子計算機のデータ管理プログラムにおいて、
前記ドライバウェアプログラム（５０）は、データを暗号化して暗号化データを作成するための暗号化部（５４）、及び、前記暗号化データを復号化し、元の前記データを作成するための復号化部（５５）を有し、
前記ドライバウェアプログラム（５０）は、前記一時ファイルを暗号化部（５４）によって暗号化し、暗号化一時ファイルを作成するステップと、
前記暗号化一時ファイルを前記記憶装置（２５、５、１００）に保存するステップと、
前記アプリケーションプログラム（１０）から前記一時ファイルを要求するとき、前記記憶装置（２５、５、１００）から前記暗号化一時ファイルを取得するステップと、
取得された前記暗号化一時ファイルを前記復号化部（５５）によって復号化し、前記一時ファイルを作成するステップと、
前記暗号化された前記一時ファイルを前記アプリケーションプログラム（１０）に渡すステップと、及び、
前記アプリケーションプログラム（１０）が終了するとき、前記暗号化一時ファイルを削除するステップと
からなることを特徴とする電子計算機のデータ管理プログラム。
【請求項７】
請求項５又は６に記載の電子計算機のデータ管理プログラムにおいて、
前記ドライバウェアプログラム（５０）は、ログ取得機能（５３）を有する
ことを特徴とする電子計算機のデータ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子データの管理を行うためのデータ管理システムに関する。特に、電子データが格納されているファイルへのアクセスを追跡して、監視するデータトレーサビリティのための電子計算機のデータ管理方法、及びそのためのプログラムに関する。
【背景技術】
【０００２】
個人情報、ビジネスのノウハウは、電子データの形式でファイルとしてコンピュータの記憶装置、記録媒体に保存されていることが多い。このファイルにアクセスした履歴、特にファイルの閲覧、編集、複写、印刷、送信等の履歴を取得して緊密に管理することが大事である。例えば、保険会社は、災害時に復旧マニュアルを担当者に配布している。この復旧マニュアルはノウハウの集積であり、非常に高価な情報価値がある。オフラインで配布された復旧マニュアルを外部への流出やコピーをさせたくないことがある。また、メーカーは、製品の仕様書や設計書を関係者に配布している。
【０００３】
機密情報であるこの仕様書や設計書を関係者以外には参照されないようにし、外部へ流出するのを避けたいことがある。出版物等の校正時には、原本の電子データを変更するが、原本や校正された電子データが外部へ流出することを避けたい。写真等の画像データも、同様に、原本や編集された電子データが外部へ流出することを避けたい。このような要望に対応するためには、本発明の発明者等は、特許文献１に開示した内容のデータ管理用のシステム及びそのためのプログラムを開発して、クライアントに提供している。不揮発性メモリに格納されたクライアントのユーザデータを、それを処理している電子計算機から、目的以外ことに利用できないようにし、外部へ持ち出さないようにしている。
【０００４】
多くオペレーティングシステムでは、アプリケーションプログラムの動作時に作成された一時ファイルは、アプリケーションプログラムの終了後も存在し、情報漏洩の原因になっている。これを図１７を参照しながら説明する。図１７は、アプリケーションプログラムが一時ファイルを作成し、利用する従来の方法を示すフローチャートである。アプリケーションプログラムは、起動され、動作する（ステップ１）。クライアントは、アプリケーションプログラムを操作して、ユーザデータを開く。又は、クライアントは、アプリケーションプログラムを操作して、ユーザデータ用に新規ファイルを作成する（ステップ２）。
【０００５】
アプリケーションプログラムは、ユーザデータ用の一時ファイルを作成する（ステップ３）。アプリケーションプログラムは、クライアントに操作されて、ユーザデータの内容を表示装置に表示する（ステップ４）。又は、アプリケーションプログラムは、クライアントに操作されて、ユーザデータの内容を編集する（ステップ５）。言い換えると、クライアントは、ユーザデータの内容を表示装置上に閲覧しながら、クライアントコンピュータの入力装置を操作して、ユーザデータの内容を編集する。この作業中のユーザデータの内容は、一時ファイルに保存される。
【０００６】
アプリケーションプログラムは、一時ファイルの内容を、所定時間毎に、実際のユーザデータ用のファイルに保存する。アプリケーションプログラムは、ユーザデータを閉じるとき、一時ファイルの最新の内容を、ユーザデータに保存してから、ユーザデータを閉じる。アプリケーションプログラムは、ユーザデータを閉じても、一時ファイルは、削除されること無く、クライアントコンピュータの補助記憶装置上に格納され続ける。アプリケーションプログラム自身が終了しても、この一時ファイルは、削除されること無く、クライアントコンピュータ１の補助記憶装置上に格納され続ける。
【０００７】
このように、一時ファイルは、クライアントコンピュータの補助記憶装置から削除されることなく、情報漏洩の一因なっている。クライアントがユーザデータを削除したとでも、ユーザデータ用の一時ファイルは、削除されることなく、クライアントコンピュータ１の補助記憶装置上に格納され続ける。後で、この一時ファイルを作成したアプリケーションプログラムから、この一時ファイルを開き、その内容を閲覧できる。そして、アプリケーションプログラムの動作に制限がかかっていない場合は、この一時ファイルを自由に複製、編集することができる。このように、一時ファイルは、情報漏洩の一因なっている。
【特許文献１】ＷＯ２００７／０４９６２５  「電子計算機のデータ管理方法、プログラム、及び記録媒体」
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、一部のアプリケーションプログラムは、動作中に一時ファイルをハードディスク上に保存して利用している。この一時ファイルの作成は、アプリケーションプログラムによるが、アプリケーションプログラムの動作上、不可欠な設定になっていることもある。アプリケーションプログラムが終了するとき、又は、アプリケーションプログラムで開いているユーザファイルを閉じるとき、この一時ファイルをそのまま残すことがしばしばある。これは、クライアントに提供されたユーザデータを、目的以外のことに利用することができないように、ユーザデータの複製を防止するという趣旨からみて、致命的な問題であり、この改善が望まれている。特許文献１に開示したデータ管理方法及びプログラムにおいては、一時ファイルからの情報漏洩を防止することが求められている。
【０００９】
本発明は上述のような技術背景のもとになされたものであり、下記の目的を達成する。
本発明の目的は、クライアントに提供されたユーザデータへのアクセスを追跡し、監視するための電子計算機のデータ管理方法、及びそのためのプログラムを提供することにある。
本発明の他の目的は、クライアントに提供されたユーザデータを目的以外のことに利用することができないように、ユーザデータを管理するための電子計算機のデータ管理方法、及びそのためのプログラムを提供することにある。
【００１０】
本発明の更に他の目的は、クライアントコンピュータ上のアプリケーションプログラムの利用時に作成される一時ファイルを、目的以外のことに利用することができないように、ユーザデータを管理するための電子計算機のデータ管理方法、及びそのためのプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明は、前記目的を達成するため、次の手段を採る。
本発明は、電子計算機のデータ管理方法に関するものである。また、本発明は、電子データのデータ管理を電子計算機に実現させるための電子計算機のデータ管理プログラムに関する。具体的には、ユーザデータ（４）を格納した記憶装置（５）が前記電子計算機（１）に接続され、前記ユーザデータ（４）が前記電子計算機（１）上に読み出されてアプリケーションプログラム（１０）によって閲覧又は編集され、かつ、前記電子計算機（１）の入力装置から入力された入力データによって、前記アプリケーションプログラム（１０）が操作されて前記閲覧又は編集が行われているとき、前記ユーザデータ（４）が前記電子計算機（１）から外部へ漏洩されないように制御する。
【００１２】
本発明の電子計算機のデータ管理方法は、前記電子計算機（１）を動作させているオペレーティングシステムの全ての命令が実行できるカーネルモードで動作し、前記電子計算機（１）に接続されているデバイスを直接制御するためのデバイスドライバ（３０）同士の通信、又は前記デバイスドライバ（３０）と前記電子計算機上で動作するアプリケーションプログラム（１０）との通信に共通のインターフェースを提供するためのドライバウェア（５０）を前記電子計算機（１）が有し、
前記ドライバウェア（５０）は、
前記アプリケーションプログラム（１０）から出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバ（３０）から受信した受信データを含む第２データを、前記アプリケーションプログラム（１０）に送信するためのアプリケーションプログラムインターフェース部（５１）と、
前記デバイスドライバ（３０）へ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバ（３０）から前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御部（４０）と、及び、
前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１ないし４データの制御を行うための制御部（５２）と
からなり、
前記アプリケーションプログラム（１０）が起動するとき、前記アプリケーションプログラム（１０）の動作時に一時使用される一時ファイルを作成するための一時ファイル作成命令を前記アプリケーションプログラム（１０）が出力し、
前記アプリケーションプログラムインターフェース部（５１）は、前記一時ファイル作成命令を取得し、
前記デバイスドライバ制御部（４０）は、前記アプリケーションプログラムインターフェース部（５１）から前記一時ファイル作成命令を受信して、前記デバイスドライバ制御部（４０）に前記一時ファイル作成命令を送信し、
前記デバイスドライバ制御部（４０）は、前記記憶装置（２５、５、１００）を制御するためのデバイスドライバであるファイルシステムドライバ（３４）に、前記一時ファイル作成命令を送信して、
前記ファイルシステムドライバ（３４）は、前記一時ファイル作成命令に従って、前記記憶装置（２５、５、１００）に前記一時ファイルを作成し、
前記アプリケーションプログラム（１０）から前記一時ファイルを要求するとき、前記ファイルシステムドライバ（３４）は、前記一時ファイルを取得して、前記デバイスドライバ制御部（４０）及び前記アプリケーションプログラムインターフェース部（５１）を経由して前記アプリケーションプログラム（１０）に渡し、
前記アプリケーションプログラム（１０）が終了するとき、前記ドライバウェア（５０）は、前記ファイルシステムドライバ（３４）に、前記一時ファイルを削除する命令を送信し、
前記ファイルシステムドライバ（３４）は、前記一時ファイルを削除する
ことを特徴とする。
【００１３】
前記ドライバウェア（５０）は、データを暗号化して暗号化データを作成するための暗号化部（５４）、及び、前記暗号化データを復号化し、元の前記データを作成するための復号化部（５５）を有し、
前記ドライバウェア（５０）は、前記一時ファイルを暗号化部（５４）によって暗号化して、暗号化一時ファイルを作成して、前記記憶装置（２５、５、１００）に保存し、
前記アプリケーションプログラム（１０）から前記一時ファイルを要求するとき、前記ドライバウェア（５０）は、前記記憶装置（２５、５、１００）から前記暗号化一時ファイルを取得して、前記復号化部（５５）によって復号化し、前記一時ファイルを作成して前記アプリケーションプログラム（１０）に渡し、
前記アプリケーションプログラム（１０）が終了するとき、前記ドライバウェア（５０）は、前記暗号化一時ファイルを削除すると良い。
【００１４】
また、前記記憶装置（２５、５、１００）は、前記電子計算機（１）に内蔵又は接続された補助記憶装置（２５，５）であると良い。
更に、前記記憶装置（２５、５、１００）は、前記電子計算機（１）が接続されているネットワーク（１３）上の記憶装置（１００）であると良い。
【００１５】
〔本発明の電子計算機のデータ管理プログラム〕
本発明の電子計算機のデータ管理プログラムは、ユーザデータ（４）を格納した記憶装置（５）が前記電子計算機（１２）に接続され、前記ユーザデータ（４）が前記電子計算機（１）上に読み出されてアプリケーションプログラム（１０）によって閲覧又は編集され、かつ、前記電子計算機（１）の入力装置から入力された入力データによって前記アプリケーションプログラム（１０）が操作されて前記閲覧又は編集が行われているとき、前記ユーザデータ（４）が前記電子計算機（１）から外部へ漏洩されないように制御する機能を電子計算機（１）に実現させるためのプログラムである。
【００１６】
本発明の電子計算機のデータ管理プログラムは、次の特徴を有する。本発明の電子計算機のデータ管理プログラムは、
前記電子計算機（１）を動作させているオペレーティングシステム（１１）の全ての命令が実行できるカーネルモードで動作し、前記電子計算機（１）に接続されているデバイスを直接制御するためのデバイスドライバ（３０）同士の通信、又は前記デバイスドライバ（３０）と前記電子計算機（１）上で動作するアプリケーションプログラム（１０）との通信に共通のインターフェースを提供するための機能を有し、かつ、
前記アプリケーションプログラム（１０）から出力される命令及び／又はデータを含む第１データを受信し、前記命令の実行結果及び／又は前記デバイスドライバ（３０）から受信した受信データを含む第２データを、前記アプリケーションプログラム（１０）に送信するためのアプリケーションプログラムインターフェース機能（５１）と、
前記デバイスドライバ（３０）へ、前記命令及び／又は前記データを含む第３データを送信し、前記デバイスドライバ（３０）から前記命令の実行結果及び／又は前記受信データを含む第４データを受信するためのデバイスドライバ制御機能（４０）と、及び、
前記第１データ又は前記第４データを処理し、前記第２データ又は前記第３データを生成して、前記第１ないし４データの制御を行うための制御機能（５２）とを前記電子計算機（１）に実現させるためのドライバウェアプログラム（５０）を有し、
前記アプリケーションプログラム（１０）が起動するとき、前記アプリケーションプログラム（１０）から出力された命令で、前記アプリケーションプログラム（１０）の動作時に一時使用される一時ファイルを作成するための一時ファイル作成命令を、前記アプリケーションプログラムインターフェース部（５１）が取得するステップと、
前記デバイスドライバ制御部（４０）は、前記アプリケーションプログラムインターフェース部（５１）から前記一時ファイル作成命令を受信するステップと、
前記デバイスドライバ制御部（４０）は、前記デバイスドライバ制御部（４０）に前記一時ファイル作成命令を送信するステップと、
前記デバイスドライバ制御部（４０）は、前記記憶装置（２５、５、１００）を制御するためのデバイスドライバであるファイルシステムドライバ（３４）に、前記一時ファイル作成命令を送信して、前記記憶装置（２５、５、１００）に前記一時ファイルを前記ファイルシステムドライバ（３４）によって作成させるステップと、
前記アプリケーションプログラム（１０）から前記一時ファイルを要求するとき、前記デバイスドライバ制御部（４０）は、前記記憶装置（２５、５、１００）から前記ファイルシステムドライバ（３４）によって取得された前記一時ファイルを、取得するステップと、
前記デバイスドライバ制御部（４０）は、前記アプリケーションプログラムインターフェース部（５１）に、前記一時ファイルを渡すステップと、
前記アプリケーションプログラムインターフェース部（５１）は、前記デバイスドライバ制御部（４０）から取得した前記一時ファイルを、前記アプリケーションプログラム（１０）に渡すステップと、及び、
前記アプリケーションプログラム（１０）が終了するとき、前記ドライバウェアプログラム（５０）は、前記ファイルシステムドライバ（３４）に、前記一時ファイルを削除する命令を送信して、前記一時ファイルを削除するステップと
からなることを特徴とする。
【００１７】
また、前記ドライバウェアプログラム（５０）は、データを暗号化して暗号化データを作成するための暗号化部（５４）、及び、前記暗号化データを復号化し、元の前記データを作成するための復号化部（５５）を有し、
前記ドライバウェアプログラム（５０）は、前記一時ファイルを暗号化部（５４）によって暗号化し、暗号化一時ファイルを作成するステップと、
前記暗号化一時ファイルを前記記憶装置（２５、５、１００）に保存するステップと、
前記アプリケーションプログラム（１０）から前記一時ファイルを要求するとき、前記記憶装置（２５、５、１００）から前記暗号化一時ファイルを取得するステップと、
取得された前記暗号化一時ファイルを前記復号化部（５５）によって復号化し、前記一時ファイルを作成するステップと、
前記暗号化された前記一時ファイルを前記アプリケーションプログラム（１０）に渡すステップと、及び、
前記アプリケーションプログラム（１０）が終了するとき、前記暗号化一時ファイルを削除するステップと
からなると良い。
【００１８】
更に、前記ドライバウェアプログラム（５０）は、ログ取得機能（５３）を有すると良い。
〔その他〕
本発明の電子計算機のデータ管理プログラムは、記憶装置に格納されていると良い。記憶装置が電子計算機に接続されたときに、本発明の電子計算機のデータ管理プログラムは、電子計算機に自動的にインストールされて、動作すると良い。記憶装置は、ユーザデータを格納するための領域で、かつ、読み込みと書き込みすることができるユーザ領域と、プログラムを格納するための領域で、かつ、読み込み専用のプログラム領域とを有すると良い。
【００１９】
記憶装置が電子計算機に接続されたとき、プログラム領域に格納されている認証プログラムが自動起動し、ドライバウェアプログラムを確認した後、ドライバウェアプログラムの制御モードをオンにする命令をドライバウェアプログラムに送信する。制御モードがオンになったとき、ユーザ領域がオペレーティングシステムに認識され、電子計算機からユーザデータにアクセス可能になると良い。
【００２０】
〔データ管理プログラムの格納〕
記憶装置は、記憶装置を利用するクライアントを個人認証するための認証部を有すると良い。
本発明の電子計算機のデータ管理プログラムは、ネットワーク上のネットワークストレージに格納されていると良い。このネットワークは、ＬＡＮ、ＷＡＮ、又は、インターネットであると良い。このネットワークは、有線又は無線の公衆通信網によってアクセス可能なものであると良い。
【００２１】
本発明の電子計算機のデータ管理プログラムは、読み出しのみ、読み出し書き換え可能な各種ＣＤ、各種ＤＶＤ、そして、不揮発性メモリ等等の記録媒体に記録されていると良い。本発明の電子計算機のデータ管理プログラムは、この電子計算機にリモートでアクセスできる第２電子計算機上に格納され、この電子計算機にリモートで動作すると良い。
【発明の効果】
【００２２】
本発明によると、次の効果が奏される。クライアントに提供されたユーザデータへのアクセスを追跡し、監視し、クライアントコンピュータ上に作成される一時ファイルを原因で、情報漏洩を起こることがなくなった。アプリケーションプログラムが終了するとき、このアプリケーションプログラム用に作成された一時ファイルを削除するので、一時ファイルによる情報漏洩を防ぐことができるようになった。一時ファイルを暗号化して記憶装置に保存するため、アプリケーションプログラムの動作中でも、一時ファイルによる情報漏洩を防ぐことができた。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を図に基づいて説明する。
〔本発明の第１の実施の形態〕
図１には、本発明の第１の実施の形態の概要を図示している。クライアントコンピュータ１は、クライアント２によって操作される。クライアントコンピュータ１には、管理プログラム３（後述する。）がインストールされている。この管理プログラム３については、詳しく後述する。クライアントコンピュータ１のディスプレイ等の表示装置には、ユーザデータ４が表示される。クライアント２は、クライアントコンピュータ１の操作を行う。
【００２４】
クライアント２は、クライアントコンピュータ１操作をして、ユーザデータ４を閲覧し、編集する。管理プログラム３は、このユーザデータ４の利用状況を監視するためのものである。管理プログラム３は、クライアントコンピュータ１を利用する環境を提供するためのプログラムである。また、本実施の形態においては、ユーザデータ４は、ＵＳＢメモリ５等の記憶装置に格納されたものとする。本実施の形態では、ユーザデータ４は、ＵＳＢメモリ５に格納されてクライアント２に提供される方法を採用する。しかし、これは、ユーザデータ４と管理プログラム３の提供方法、それらを格納する記憶装置又は記録媒体を制限するものではなく、同様の機能を有するものであれは任意の形態のものでも良い。
【００２５】
本実施の形態において、記憶装置として使用しているＵＳＢメモリ５は、不揮発性メモリを内蔵した携帯可能な記憶装置である。ＵＳＢメモリ５は、ＵＳＢ規格に準拠する記憶装置である。ＵＳＢ規格は、電子計算機と周辺機器との間にデータ伝送を行うための規格であり、「USB Mass Storage Class」という、外部記憶装置をリムーバブルドライブとして認識するための仕様が入っている。ＵＳＢメモリ５は、このUSB Mass Storage Classに準拠する。オペレーティングシステム側が持っているMass Storage Class用のドライバを使って、クライアントコンピュータ１とＵＳＢメモリ５との電子データの送受信を行う。
【００２６】
ＵＳＢメモリ５は、クライアントコンピュータ１のＵＳＢポートに差し込みされると、オペレーティングシステムによってリムーバブルドライブとして認識される。クライアントコンピュータ１は、補助記憶装置としてハードディスクドライブ２５を内蔵する。ハードディスクドライブ２５には、オペレーティングシステムのシステムファイル、アプリケーションプログラムの実行ファイル等が保存される。従来は、クライアントコンピュータ１上でアプリケーションプログラムが実行されるとき、このアプリケーションプログラムは、ハードディスクドライブ２５上に、このアプリケーションプログラムが開いているファイルの一時ファイルを作る。
【００２７】
又は、従来は、クライアントコンピュータ１上にアプリケーションプログラムが実行されるとき、このアプリケーションプログラムは、ハードディスクドライブ２５上にフォルダ７を作り、このアプリケーションプログラムは、このフォルダ７の中に一時ファイルを保存する。本実施の形態では、管理プログラム３がハードディスクドライブ２５の中で独自のフォルダ８を作る。そして、アプリケーションプログラム用一時ファイルは、このフォルダ８の中に保存される。フォルダ８の中の一時ファイルは、暗号化されて、保存されることが好ましい。アプリケーションプログラムが終了するとき、管理プログラム３が、アプリケーションプログラム用に作成した一時ファイルを削除する。
【００２８】
よって、アプリケーションプログラムが終了するとき、ハードディスクドライブ２５の中に一時ファイルは、残らない。従って、ハードディスクドライブ２５の中に残った一時ファイルを原因とする情報漏洩を防ぐことができる。
【００２９】
図２には、クライアントコンピュータ１上で動作するソフトウェアの概要を機能ブロックで図示している。本実施の形態においては、オペレーティングシステム１１は、マイクロソフト社のWindows XP（登録商標）である。しかし、これは、オペレーティングシステム１１の種類を制限するものではなく、同様な機能を実現できるものであれば、オペレーティングシステムの種類は問わない。アプリケーションプログラム１０は、オペレーティングシステム１１の上で動作する。管理プログラム３は、図２に図示したアプリケーションプラットフォームプログラム５８と、ドライバウェア（登録商標）５０から構成される。
【００３０】
アプリケーションプラットフォームプログラム５８は、オペレーティングシステム１１のユーザモードで動作するアプリケーションソフトウェアである。ドライバウェア５０は、オペレーティングシステム１１のカーネルモードで動作するプログラムである。アプリケーションプラットフォームプログラム５８とドライバウェア５０の動作と機能については、後述する。クライアントコンピュータ１は、中央処理装置（ＣＰＵ）、ＲＡＭ、ＲＯＭ、入出力装置（例えば、ディスプレイ、キーボード、マウス等。）、補助記憶装置（例えば、ハードディスク２５。）、通信用の各種ポート（例えば、ＵＳＢポート。）等を備えた一般的な電子計算機である。
【００３１】
クライアントコンピュータ１は、キーボード１６やマウス１７等の入力装置を備えている。クライアントコンピュータ１は、図示していないが、ディスプレイ等の出力装置、ハードディスク等の補助記憶装置、メインメモリ等のメモリを備えている。クライアントコンピュータ１は、外付けハードディスク、スキャナ、プリンタ等の周辺機器を有することができる。これらの周辺機器は、図示していないが、以下、外部デバイスという。外部デバイスは、コネクタ２２に接続される。クライアントコンピュータ１は、オペレーティングシステム１１によって制御されて動作する。
【００３２】
クライアントコンピュータ１上で動作するアプリケーションプログラム１０は、オペレーティングシステム１１が提供する機能上で動作する。アプリケーションプログラム１０は、オペレーティングシステム１１のカーネルモード、又はユーザモードに動作する実行可能なファイル、又はソフトウェアである。例えば、アプリケーションプログラム１０は、ワードプロセッシングソフトウェア、テキストエディタ等の文書を作成、編集するためのソフトウェアである。図２に図示した例では、アプリケーションプログラム１０は、オペレーティングシステム１１のユーザモードに動作するアプリケーションソフトウェアである。このアプリケーションプログラム１０は、カーネルモードのモジュールを含むものである。
【００３３】
更に、アプリケーションプログラム１０は、例えば、pdf形式のファイル等のような特定の形式のファイルを閲覧、作成、編集するためのソフトウェアである。オペレーティングシステム１１は、キーボード１６からの入力、マウス１７を操作した入力等の入力装置からの入力機能、画面出力等のような出力装置からの出力機能、外部記憶装置やメモリの管理、等の基本的な機能を提供し、クライアントコンピュータ１全体を動作させ、管理するためのソフトウェアである。オペレーティングシステム１１は、その提供する機能を実現するために多数の実行可能なプログラムから構成されるものである。
【００３４】
また、本実施の形態を理解する上で、これを再現（実施）するには、オペレーティングシステム１１、デバイスドライバについて開示している技術情報が必要である。この技術情報は、オペレーティングシステム１１を開発し、提供しているベンダーが情報開示しているインターネット上のデータ、これらのベンダーから開発者向けに提供された情報が含まれる。例えば、オペレーティングシステム１１、特に本実施の形態に用いているWindows系のオペレーティングシステムについては、多数の書籍があり、その一部から紹介する。本発明を再現するためには、これらの書籍に記述されている技術知識、特に、デバイスドライバ開発に関する知識が必要である。
【００３５】
Windows系のオペレーティングシステムの内部構成、その動作についての書籍一覧：
−  Inside Windows NT by Helen Custer (Microsoft Press, 1992)
−  Inside the Windows NT File System by Helen Custer (Microsoft Press, 1994)
−  Inside Microsoft Windows 2000, Third Edition by David A. Solomon, Mark E. Russinovich (Microsoft Press, 2000)。
デバイスドライバの基礎知識からその開発に関する知識ついての書籍一覧：
−  Programming the Microsoft Windows Driver Model by Walter Oney (Microsoft Press, 1999)
−  Programming the Microsoft Windows Driver Model, Second Edition by Walter Oney (Microsoft Press, 2002)。
【００３６】
図３には、オペレーティングシステム１１を構成するプログラムの内の代表的なものを図示したブロック図であり、オペレーティングシステム１１と、本発明の管理プログラム３との関係を図示したものである。オペレーティングシステム１１は、サブシステム６１、エグゼキュティブ６３、マイクロカーネル６２、デバイスドライバ３０、ハードウェア抽象化層（ＨＡＬ）６４から構成される。サブシステム６１は、オペレーティングシステム１１のユーザモードで提供されるサービスである。
【００３７】
エグゼキュティブ６３は、メモリの管理、プロセスとスレッドの管理、セキュリティ、Ｉ／Ｏ、ネットワーク、及びプロセス間通信等のオペレーティングシステム１１の基本的なサービスを提供するものである。図３には、代表的なエグゼキュティブ６３を図示している。例えば、オブジェクトマネージャ６５、プロセスマネージャ６６、キャッシュマネージャ６７、メモリマネージャ６８、Ｉ／Ｏマネージャ６９等がある。
【００３８】
マイクロカーネル６２は、スレッドスケジューリング、割り込み、例外通知、マルチプロセッサの同期等の低レベルの関数を提供する。また、マイクロカーネル６２は、エグゼキュティブ６３の内部で使用するルーチンセットと基本オブジェクトを提供する。デバイスドライバ３０は、図２において、インターフェースドライバ３２、ネットワークドライバ３３、ファイルシステムドライバ３４、キーボードドライバ３５、マウスドライバ３６として図示されている。
【００３９】
デバイスドライバ３０は、通常は、クライアントコンピュータ１に接続されたハードウェアごとにプログラムされ、ＨＡＬ（ハードウェア抽象化層）６４を介して、そのハードウェア６０を直接制御するものである。デバイスドライバ３０は、アプリケーションプログラム１０やオペレーティングシステム１１からの入出力機能の要求（Ｉ／Ｏ呼び出し要求）を、特定のハードウェアデバイスに対する入出力機能の要求（Ｉ／Ｏ要求）に変換するサービスと、ファイルシステムやネットワークドライバ等のシステムサービスを提供する。
【００４０】
ＨＡＬ６４は、マイクロカーネル６２、デバイスドライバ３０、及びエグゼキュティブ６３を、プラットフォーム固有のハードウェア機能から分離し抽象化するためのコード層である。即ち、ＨＡＬ６４は、クライアントコンピュータ１の内蔵デバイス２２〜２７や、クライアントコンピュータ１に接続されている外部デバイス等のハードウェアの種類による違いを吸収し、オペレーティングシステム１１の各サービスに対して抽象化したサービスを提供する。ＨＡＬ６４によって、オペレーティングシステム１１を構成する各種のサービスは、ハードウェアの種類による違いを意識することなくハードウェアにアクセスすることが可能になる。
【００４１】
〔ドライバウェア５０〕
ドライバウェア５０は、デバイスドライバ間のデータの送受信をカーネルモードで実現するためのものである。ドライバウェア５０は、アプリケーションプログラム１０からデバイスドライバ３０へアクセスするとき、また、デバイスドライバ３０からアプリケーションプログラム１０へデータを送信するときに、共通のインターフェースを提供する。ドライバウェア５０は、オペレーティングシステム１１のカーネルモードで動作する。ドライバウェア５０は、デバイスドライバ３０間の共通のデータの送受信を提供し、仲介する機能を有する。
【００４２】
また、ドライバウェア５０は、オペレーティングシステム１１と複数のデバイスドライバ３０との共通のデータの送受信を提供し、仲介する機能を有する。ドライバウェア５０の例としては、「電子計算機のインターフェースドライバプログラム」としてＷＯ０２／０９１１９５号公報等に開示されている。ドライバウェア５０は、アプリケーションプログラム１０からの命令やデータ等を受信し、アプリケーションプログラム１０へのデータを送信するためのアプリケーションプログラムインターフェース部５１を有する。ドライバウェア５０は、ドライバウェア５０の全体の動作を制御するための制御部５２を有する。
【００４３】
また、ドライバウェア５０の動作の履歴を取得するためのログ取得部５３も有する。更に、ドライバウェア５０は、デバイスドライバ３０を制御するために、デバイスドライバ制御部４０を有する。ドライバウェア５０は、送受信するデータを暗号化するための暗号化部５４、暗号化されたデータを復号化するための復号化部５５を有する。制御部５２は、デバイスドライバ制御部４０、アプリケーションプログラムインターフェース部５１、ログ取得部５３、暗号化部５４、復号化部５５等のドライバウェア５０を構成している各部を制御し、監視するためのもので、ドライバウェア５０の中核部である。
【００４４】
〔アプリケーションプラットフォームプログラム５８〕
アプリケーションプラットフォームプログラム５８は、アプリケーションプログラム１０と、オペレーティングシステム１１との間に位置し、これらの間に命令やデータの送受信を仲介し制御するためのアプリケーションプログラムである。アプリケーションプラットフォームプログラム５８は、オペレーティングシステム１１のユーザモードで動作する。アプリケーションプラットフォームプログラム５８は、オペレーティングシステム１１のファイルシステムにアクセスするためのユーザインターフェースを提供するためのアプリケーションプログラムである。
【００４５】
アプリケーションプラットフォームプログラム５８は、アプリケーションプログラム１０の起動、これに伴うプロセスの起動を監視し、これらの属性情報を取得する機能を有する。アプリケーションプラットフォームプログラム５８は、Windowsエクスプローラと互換性があるアプリケーションプログラムであるものが特に好ましい。クライアントコンピュータ１は、ハードディスクドライブ２５等の補助記憶装置を備えている。クライアントコンピュータ１は、周辺機器と接続するためのコネクタ２２を有する。コネクタ２２は、ＲＳ―２３２Ｃ、ＩｒＤＡ、ＵＳＢ、ＩＥＥＥ１３９４等のシリアルポート、ＩＥＥＥ１２８４、ＳＣＳＩ、ＩＤＥ等のパラレルポートであることが好ましい。
【００４６】
このシリアル転送方式は、１本の信号線で１ビットずつデータを伝送するデータ伝送の方式である。パラレル転送方式は、複数の信号線で同時に複数のビットを転送するデータ伝送の方式である。このデータ伝送は、クライアントコンピュータ１に内蔵されたデバイス、クライアントコンピュータ１とその周辺機器間のデータ伝送に、用途ごとに最適なインターフェースを使用している。ここで、その代表的なものから例示する。記憶装置の場合は、パラレル転送方式が高速で、この伝送方式を採用することが多いが、ＵＳＢ規格の普及により、ＵＳＢポートを利用することが多くなっている。
【００４７】
クライアントコンピュータ１とプリンタとの通信には、ＩＥＥＥ１２８４ポート、ＵＳＢポートを利用することが多く、またネットワーク１３を介することもある。クライアントコンピュータ１は、ネットワーク７に接続するためのネットワークカード２３を備えている。更に、ＵＳＢメモリ５等のＵＳＢ規格準拠の機器を、接続するためのＵＳＢポート２４を備えている。これらのコネクタ２２、ネットワークカード２３を直接制御し、通信を行うためのプログラムは、それぞれのデバイスドライバであるインターフェースドライバ３２、ネットワークドライバ３３である。
【００４８】
本実施の形態においては、各デバイスドライバ３０は、オペレーティングシステム１１に付属するものとする。デバイスドライバ３０は、オペレーティングシステム１１が提供する標準的なデバイスドライバ、周辺機器、内蔵機器を製造するメーカーが作成するデバイスドライバがある。更に、デバイスドライバ３０は、デバイスドライバを専門にする会社が開発したデバイスドライバもある。このように数多くの種類のデバイスドライバがある中で、本実施の形態においては、全てのデバイスドライバ３０は、オペレーティングシステム１１に付属するものであると説明する。
【００４９】
インターフェースドライバ３２は、コネクタ２２を制御するためのデバイスドライバである。ネットワークドライバ３３は、ネットワークカード２３を制御するためのデバイスドライバである。ファイルシステムドライバ３４は、ハードディスクドライブ２５等の外部記憶装置に保存されているファイル、フォルダに関する情報を管理するもので、ハードディスクドライブ２５に保存されている、ファイルやフォルダへのアクセスをするためのプログラムである。ファイルシステムドライバ３４は、クライアントコンピュータ１に接続されたＵＳＢ規格準拠の記憶装置へアクセスするためのプログラムである。
【００５０】
このアクセスは、オペレーティングシステム１１のMass Storage Class用のドライバ（図示せず）を介して行われる。アプリケーションプログラム１０は、クライアントコンピュータ１にインストールされた又は、動作しているソフトウェアである。アプリケーションプログラム１０は、基本的に、オペレーティングシステム１１のユーザモード上で動作する。アプリケーションプログラム１０は、ハードディスクドライブ２５にアクセスして、必要なファイルを読み込んだり、書き込んだりする。また、本実施の形態では、アプリケーションプログラム１０は、Windows（登録商標）のカーネルモードで動作する一部のプログラムをも意味する。
【００５１】
ドライバウェア５０は、アプリケーションプログラム１０からデバイスドライバ３０へアクセスするとき、また、デバイスドライバ３０からアプリケーションプログラム１０へデータを送信するときに、共通のインターフェースの機能、役割を果たす。ドライバウェア５０は、前述したようにアプリケーションプログラムインターフェース部５１、制御部５２、ログ取得部５３等を有する。ドライバウェア５０は、通信するデータを暗号化するための暗号化部５４、暗号化されたデータを復号化するための復号化部５５を有する。また、ドライバウェア５０は、インターフェースドライバ３２を制御するためのインターフェース制御部４２を有する。
【００５２】
ドライバウェア５０は、ネットワークドライバ３３を制御するためのネットワーク制御部４３を有する。ドライバウェア５０は、ファイルシステムドライバ３４を制御するためのファイルシステム制御部４４を有する。制御部５２は、インターフェース制御部４２、ネットワーク制御部４３、ファイルシステム制御部４４等から成るドライバウェア５０の他の部を制御し、監視するためのものである。制御部５２は、ドライバウェア５０の中核部である。ＵＳＢメモリ５等の記憶装置は、クライアントコンピュータ１に接続されると、その装置のデバイスドライバによって認識された後、ファイルシステムドライバ３４によって制御される。
【００５３】
ドライバウェア５０のインターフェース制御部４２、ネットワーク制御部４３、ファイルシステム制御部４４等は、デバイスドライバ３０を制御することで、最終的には、クライアントコンピュータ１に、接続又は内蔵されているデバイスを制御するものと理解することができる。つまり、クライアントコンピュータ１に、接続又は内蔵されているデバイスを制御するためには、既存のデバイスドライバ３０を利用している。ドライバウェア５０は、デバイスドライバ３０がオペレーティングシステム１１の他の構成部分と通信しているインターフェースをカーネルモードで制御している。
【００５４】
図４は、ＵＳＢボード２４に接続されるＵＳＢメモリ５の内部構造を示すブロック図である。基板１０５の上には、ユーザ領域１０６、プログラム領域１０７等が搭載されて配置されている。ＵＳＢメモリ５は、電子データを格納するためのユーザ領域１０６と、コンピュータプログラム等を格納するためのプログラム領域１０７を備えている。ユーザ領域１０６は、ユーザデータ４を格納するためのメモリである。プログラム領域１０７は、認証プログラム１０８、管理プログラム３を格納するためのメモリである。ユーザデータ４は、ＵＳＢメモリ５のユーザ領域１０６に格納される。ユーザ領域１０６は、ＵＳＢメモリ５の初期設定では外部からアクセスすることができない。
【００５５】
ＵＳＢメモリ５は、プログラム領域１０７に管理プログラム３を格納している。プログラム領域１０７は、ＵＳＢメモリ５の初期設定では外部からアクセスすることができる。つまり、プログラム領域１０７は、ＵＳＢメモリ５がクライアントコンピュータ１等の電子計算機に接続され、認識されたら、電子計算機から直接アクセスすることができる。コネクタ１１４は、ＵＳＢメモリ５をクライアントコンピュータ１に接続するためのコネクタである。ＵＳＢメモリ５は、データ等を記憶する隠し領域を持っている。例えば、認証に利用する認証データ１１６を格納した認証領域１１５をＵＳＢメモリ５が有する。
【００５６】
この認証領域１１５に格納されている認証データ１１６は、ＵＳＢメモリ５の認証、ＵＳＢメモリ５を利用する利用者の個人認証等に使うものである。ユーザデータ４と、管理プログラム３は、ＵＳＢメモリ５の別々のメモリ領域であるユーザ領域１０６とプログラム領域１０７にそれぞれ格納されている。ＵＳＢメモリ５がクライアントコンピュータ１に接続されると、ユーザ領域１０６、プログラム領域１０７がリムーバブルドライブとしてオペレーティングシステム１１に認識される。ＵＳＢメモリ５の初期設定では、プログラム領域１０７がオペレーティングシステム１１からアクセス可能な状態になっている。
【００５７】
ユーザ領域１０６は、初期設定では、クライアントコンピュータ１からアクセスできない設定になっている。プログラム領域１０７に格納されている認証プログラム１０８は、自動起動してクライアントコンピュータ１上で動作する。認証プログラム１０８は、クライアントコンピュータ１上に管理プログラム３がインストールされて動作していることを確認して、ＵＳＢメモリ５の認証、ＵＳＢメモリ５を利用する利用者の個人認証等を行う。認証プログラム１０８により認証を行い成功すると、この管理プログラム３の命令で、ユーザ領域１０６がクライアントコンピュータ１からアクセスできるように設定される。
【００５８】
この設定は、ＵＳＢメモリ５内のスイッチ（図示せず）を切り替えすることで行われる。この設定は、ユーザ領域１０６とプログラム領域１０７の切り替えなので、ソフトウェア的に行われるものが好ましい。認証プログラム１０８は、管理プログラム３と通信することによって、管理プログラム３がクライアントコンピュータ１にインストールされていることを確認する。認証プログラム１０８は、管理プログラム３に指示して、管理プログラム３の制御モード（詳しくは、後述する。）をオンにする。クライアント２の個人認証方法は、パスワードによる認証、バイオメトリックス認証等である方法が好ましい。本実施の形態においては、クライアント２の個人認証は、パスワードによる認証として説明する。
【００５９】
管理プログラム３は、ＵＳＢメモリ５内のスイッチをソフトウェア的に切り替えして、クライアントコンピュータ１からＵＳＢメモリ５へアクセスを可能にする。この詳細については、図７のフローチャートの説明で後述する。ユーザデータ４は、ノウハウが蓄積されたデータであり、例えば、災害時に使用するための保険会社の復旧マニュアルである。また、メーカーが利用するための製品の仕様書や設計書等の機密資料、データである。更に、出版物や写真等の画像データの校正時に使うための原本の電子データである。また更には、個人情報や顧客情報等が格納されたデータファイルである。
【００６０】
個人情報としては、例えば、氏名、住所、連絡先等の情報を意味する。顧客情報としては、例えば、顧客の氏名、名称、住所、連絡先、取引の内容等の情報である。以後は、このような個人情報や顧客情報等のデータは、単にユーザデータ４と記載する。ユーザデータ４と管理プログラム３は、記録媒体又は記憶装置に記録されていると良い。記録媒体は、例えばフラッシュメモリ、フレキシブルディスク、コンパクトディスク、ＭＯ（Magneto-Optical Disk）、ＤＶＤ（Digital Versatile Disks）等の記録媒体である。
【００６１】
記憶装置は、ＵＳＢ（Universal Serial Bus）メモリ、メモリカード、ハードディスク等の電子データを記憶して持ち運びできる装置であることができる。クライアントが携帯する上では、ユーザデータ４と管理プログラム３は、同一の記録媒体又は記憶装置に記録されていると良い。また、ユーザデータ４と管理プログラム３は、ネットワークを介してクライアント２に提供することも可能である。ユーザデータ４は、ネットワーク共有フォルダやＮＡＳ等のネットワーク型記憶装置によって提供することができる。このように、クライアント側１０にユーザデータ４と管理プログラム３を提供する方法は問わない。
【００６２】
図５は、クライアントコンピュータ１の中の記録装置の概要を示すブロック図である。クライアントコンピュータ１の中では、アプリケーションプログラム１０が動作している。クライアントコンピュータ１の中では、ファイルシステムドライバ３４も動作し、ハードディスクドライブ２５とのデータ通信を行っている。ファイルシステムドライバ３４と、アプリケーションプログラム１０の中間に、ドライバウェア５０がある。ドライバウェア５０は、アプリケーションプログラム１０から出力される命令、要求を監視し、ファイルシステムドライバ３４の動作を制御する。
【００６３】
図５は、図１に図示した、ハードディスクドライブ２５の記憶内容を分かりやすく図示したものである。図５は、ハードディスクドライブ２５、ハードディスクドライブ２５の中のフォルダ７、フォルダ８、フォルダ９を図示している。フォルダ７は、アプリケーションプログラムが一時ファイル用に作成されるフォルダである。フォルダ８は、管理プログラム３が一時ファイル用に作成したフォルダである。管理プログラム３が、アプリケーションプログラムの一時ファイルをフォルダ８の中に、暗号化して保存する。
【００６４】
アプリケーションプログラムが終了するとき、管理プログラム３がアプリケーションプログラム用に作成した一時ファイルを、フォルダ８の中から削除する。よって、アプリケーションプログラムが終了するときに、ハードディスクドライブ２５の中で残っていた一時ファイルは、残らない。フォルダ９は、クライアントのデータである「Userdata」、「data」等のファイルを保存するフォルダである。
【００６５】
図６は、本発明の第１の実施の形態の動作を示すフローチャートである。まず、クライアントコンピュータ１上で動作している管理プログラム１０は、制御モードの状態になる（ステップ１０）。その後、アプリケーションプログラム１０は、起動され、動作する（ステップ１２）。クライアント２は、アプリケーションプログラム１０を操作して、ユーザデータ４のファイルを開く。又は、クライアント２は、アプリケーションプログラム１０を操作して、ユーザデータ４用に新規のファイルを作成する（ステップ１４）。アプリケーションプログラム１０は、ユーザデータ４用の一時ファイルを作成する。
【００６６】
このとき、アプリケーションプログラム１０から、ハードディスク２５上にユーザデータ用の一時ファイルを作成する指示を出す（ステップ１６）。この指示を、管理プログラム３が受信する（ステップ１８）。管理プログラム３は、この指示を受信して、独自のフォルダ（フォルダ８）に、ユーザデータ４用の一時ファイルを作成する（ステップ２０）。この一時ファイルは、暗号化される。アプリケーションプログラム１０は、クライアント２に操作されて、ユーザデータ４の内容を表示装置に表示する（ステップ２２）。又は、アプリケーションプログラム１０は、クライアント２に操作されて、ユーザデータ４の内容を編集する（ステップ２２）。
【００６７】
言い換えると、クライアント２は、ユーザデータ４の内容を表示装置上に閲覧しながら、クライアントコンピュータ１の入力装置を操作して、ユーザデータ４の内容を編集する。この作業中のユーザデータ４の内容は、一時ファイルに保存される。アプリケーションプログラム１０は、一時ファイルの内容を、所定時間毎に、実際のユーザデータ４に保存する（ステップ２４）。このとき、アプリケーションプログラム１０は、一時ファイルの内容を保存する旨の指示を出す。この指示を管理プログラム３が受信し、独自フォルダの一時ファイルの内容をユーザデータ４に更新する。
【００６８】
また、アプリケーションプログラム１０の要求によって、一時ファイルの内容を、実際のユーザデータ４に保存する（ステップ２５）。このとき、アプリケーションプログラム１０は、一時ファイルの内容を保存する旨の指示を出す。この指示を管理プログラム３が受信し、独自フォルダである一時ファイルの内容をユーザデータ４に更新する。アプリケーションプログラム１０は、ユーザデータ４のファイルを閉じるとき、一時ファイルの最新の内容を、ユーザデータ４に保存してから、ユーザデータ４を閉じる（ステップ２６）。
【００６９】
管理プログラム３は、ユーザデータ４を閉じるとき、一時ファイルの最新の内容を、ユーザデータ４に保存する。そして、管理プログラム３は、一時ファイルを削除する（ステップ２８）。このように、上漏洩の一因になっていた、一時ファイルは、削除される。更に、一時ファイルは、補助記憶装置上には、暗号化されて保存されるので、ユーザデータ４を開いているときに、情報漏洩されることはない。
【００７０】
図７は、クライアントコンピュータ１において、ユーザデータ４をＵＳＢメモリ５から読み出して閲覧するときの流れを示すフローチャートである。ＵＳＢメモリ５は、クライアントコンピュータ１に接続される（ステップ５０）。クライアントコンピュータ１は、ＵＳＢメモリ５を認識する（ステップ５２）。このとき、オペレーティングシステム１１は、ＰｎＰ機能を利用してＵＳＢメモリ５の接続を検知して、認識する。ＵＳＢメモリ５のプログラム領域１０７（図４を参照。）は、クライアントコンピュータ１に認識される。
【００７１】
ＵＳＢメモリ５が認識されると、プログラム領域１０７に格納されている認証プログラム１０８が自動起動する（ステップ５４）。認証プログラム１０８は、クライアントコンピュータ１に管理プログラム３がインストールされているか否かの認証を開始する（ステップ５４）。認証プログラム１０８は、クライアントコンピュータ１に管理プログラム３がインストールされているか否かを確認する（ステップ５６）。管理プログラム３がクライアントコンピュータ１にインストールされていない場合、クライアント２が管理プログラム３をインストールする必要がある旨のメッセージを出力する（ステップ５６、５８）。
【００７２】
認証プログラム１０８は、ＵＳＢメモリ５のプログラム領域１０７（図４を参照。）に格納されている管理プログラム３を呼び出してインストールを行う（ステップ５８）。又は、クライアント２は、管理プログラム３をインストールする（ステップ５８）。管理プログラム３がクライアントコンピュータ１にインストールされている場合、クライアント２の個人認証を行う（ステップ６０）。個人認証が成功すると管理プログラム３の制御モードを設定する（ステップ６２）。制御モードの設定の詳細については、図９のフローチャートに図示している。
【００７３】
管理プログラム３の制御モードの設定が終わると、管理プログラム３は、ＵＳＢメモリ５のユーザ領域１０６をクライアントコンピュータ１に認識させる。よって、ユーザ領域１０６は、クライアントコンピュータ１からアクセスできるようになり、利用可能になる（ステップ６６）。ユーザ領域１０６に格納されているユーザデータ４の読み出しが許可され、暗号化されたユーザデータ４の自動復号化も許可される。ユーザデータ４が、ＵＳＢメモリ５から読み出される（ステップ６８）。ＵＳＢメモリ５から読み出されたユーザデータ４は、復号化される（ステップ７０）。復号化されたユーザデータ４は、クライアントコンピュータ１のディスプレイ等の出力装置に表示される（ステップ７２）。
【００７４】
管理プログラム３は、制御モード（図９の説明を参照。）に入ると、ハードディスクドライブ２５、クライアントコンピュータ１に接続されている他の周辺機器にユーザデータ４を保存できないように各装置へのアクセスを制限している。このために、クライアント２は、ユーザデータ４をハードディスクドライブ２５、クライアントコンピュータ１に接続されている他の周辺機器等に保存することができない。更に、管理プログラム３は、制御モードに入ると、ネットワーク機能、各種の通信ポート等も使用禁止の設定にしている。
【００７５】
また、管理プログラム３は、制御モードに入ると、ユーザデータ４を閲覧編集しているアプリケーションプログラム１０の他のアプリケーションプログラムで、クリップボードの利用、スクリーンキャプチャ、コピー＆ペースト機能等も使用禁止の設定にしている。具体的には、ユーザデータ４を閲覧編集しているアプリケーションプログラム１０でクリップボードに入ったデータでは、他のアプリケーションプログラムで利用できない。よって、ユーザデータ４は、閲覧以外の操作ができなくなる。ユーザデータ４は、編集されても、ユーザデータ４が格納されている元のＵＳＢメモリ５のみに保存できる。
【００７６】
図８は、管理プログラム３の動作を示すフローチャートである。管理プログラム３は、ＵＳＢメモリ５等の記録媒体等に格納されて、クライアント２に渡される。管理プログラム３は、クライアント２によって、クライアントコンピュータ１にインストールされる（ステップ１００）。ただし、管理プログラム３は、認証プログラム１０８によって、クライアントコンピュータ１に自動的にインストールさせることもできる。管理プログラム３は、起動されて、動作を開始する（ステップ１０２）。ＵＳＢメモリ５がクライアントコンピュータ１に接続されると、オペレーティングシステム１１はＰｎＰ機能を利用してＵＳＢメモリ５の接続を検知して認識する。
【００７７】
ＵＳＢメモリ５が認識されると、ＵＳＢメモリ５のプログラム領域１０７に格納されている認証プログラム１０８が自動起動する（図７のステップ５４）。認証プログラム１０８は、クライアントコンピュータ１に管理プログラム３がインストールされているかを確認する（図７のステップ５６）。管理プログラム３がクライアントコンピュータ１にインストールされている場合、認証プログラム１０８から管理プログラム３に、制御モードになるように指示され、管理プログラム３が制御モードに設定される（ステップ１０６）。
【００７８】
管理プログラム３が制御モードに設定されると、管理プログラム３は、ＵＳＢメモリ５内のユーザ領域１０６をオペレーティングシステム１１に認識させて、利用可能な状態にする（図７のステップ６６）。管理プログラム３は、アプリケーションプログラムからＵＳＢメモリ５へのアクセスを監視する。ＵＳＢメモリ５へのアクセスがあると、それを管理プログラム３が受信する（ステップ１０８）。管理プログラム３は、アクセスの種類を確認する（ステップ１０８）。更に、このアクセスが、許可されているアクセスか否かを確認する（ステップ１１０）。
【００７９】
許可されているアクセスのときは、ユーザデータ４をＵＳＢメモリ５から読み出す（ステップ１１２）。管理プログラム３は、ＵＳＢメモリ５から読み出したユーザデータ４を復号化する（ステップ１１４）。復号化されたユーザデータ４は、クライアントコンピュータ１の出力装置に表示される（ステップ１１６）。許可されていないアクセスのときは、管理プログラム３はそのアクセスを破棄する（ステップ１１０、１２０）。このとき、不許可にされたアクセスである旨のメッセージをディスプレイに表示する際、クライアント２が閲覧できるように表示することも可能である（ステップ１２２）。
【００８０】
管理プログラム３は、表示されているユーザデータ４を継続して監視する（ステップ１１８）。ユーザデータ４は、データの種類によるが、適当なアプリケーションプログラム１０を起動させて表示される。例えば、ユーザデータ４は、テキストデータの場合は、テキスト編集用のアプリケーションプログラム１０に渡されて表示される。クライアント２は、キーボード１６やマウス１７等の入力装置を操作しながら、このアプリケーションプログラム１０を操作して、ユーザデータ４を閲覧する。しかし、このアプリケーションプログラム１０からユーザデータ４を保存することはできない。
【００８１】
また、ユーザデータ４を利用して新しく作成したファイルも保存することができない。即ち、クライアント２は、ユーザデータ４を閲覧することだけが可能である。制御モードの設定によるが、仮にユーザデータ４を編集すると、このアクセスが中断される。また、ユーザデータ４をハードディスクドライブ２５等の記憶装置、記録媒体に記録しょうとすると、それを中断する。ここで、管理プログラム３の制御モードのときの動作について説明する。制御モードは、管理プログラム３がクライアントコンピュータ１のどの機能を監視し、どのようなデータの流れを制御するかを定めたものである。
【００８２】
制御モードがオンとは、管理プログラム３が電子計算機を監視し、クライアントコンピュータ１の機能の一部を制限している状態をいう。制御モードがオフとは、管理プログラム３が電子計算機上に動作しているが、クライアントコンピュータ１の機能を特に制限していない状態をいう。図９は、管理プログラム３が制御モードをオンにするときの動作を示すフローチャートである。図７のステップ６２、図８のステップ１０６に示すように、管理プログラム３が制御モードをオンにする（ステップ１３０）。このとき、管理プログラム３は、クライアントコンピュータ１に内蔵されたハードディスクドライブ２５への書き込みを禁止にする（ステップ１３１）。
【００８３】
また、管理プログラム３は、リムーバブルドライブへの書き込みを禁止にする（ステップ１３２）。このリムーバブルドライブには、ＵＳＢメモリ５も含まれる。よって、アプリケーションプログラム１０又はオペレーティングシステム１１からは、ＵＳＢメモリ５にデータを書き込みしようとするとき、ドライバウェア５０がこれを検知して書き込みの動作を中止させる。ＵＳＢメモリ５、内蔵のハードディスクの他に記録装置があるときは、それらへの書き込みを禁止にする（ステップ１３４）。書き込みを禁止する記録装置は、例えば、リムーバブルドライブ、フレキシブルディスクドライブ、外付けハードディスク等である。更に、管理プログラム３は、ネットワーク通信の使用を禁止する（ステップ１３６）。
【００８４】
例えば、ネットワーク通信の使用としては、ネットワークカード２３を介してインターネット、ＬＡＮ等へのアクセス、コンピュータ同士の通信が含まれる。このＵＳＢメモリ５の他のインターフェースの使用を禁止する。例えば、ＵＳＢ、ＳＣＳＩ、ＩＤＥ、ＲＳ−２３２Ｃ規格のインターフェースの使用を禁止にする（ステップ１３８）。更に、管理プログラム３は、コピー＆ペースト、クリープボードの使用、ネットワーク機能を禁止にする（ステップ１３９）。また、管理プログラム３は、スクリーンキャプチャの使用も禁止にする（ステップ１３９）。
【００８５】
管理プログラム３は、オペレーティングシステム１１の正常な動作に必要なプロセスを指定し、例外設定をする（ステップ１４０）。例えば、オペレーティングシステム１１の動作に必要な「System」等を動作可能にする。管理プログラム３は、起動しているプロセスのプロセス名、プロセスＩＤを取得する（ステップ１４２）。管理プログラム３は、取得したプロセス名とプロセスＩＤを管理テーブルに保存する（ステップ１４４）。管理プログラム３が制御モードをオンにした後の、ステップ１３１〜１４０の各種の設定は、必ずしもこの順番で行う必要はなく、状況に応じて自由自在に組み合わせることができる。
【００８６】
ＵＳＢメモリ５をクライアントコンピュータ１から抜き取ると、オペレーティングシステム１１はこれを検知する。ＵＳＢメモリ５は、オペレーティングシステム１１にはリムーバブルドライブとして認識されているため、管理プログラム３はこれを管理プログラム３が格納されているＵＳＢメモリ５であるか否かの確認を行う。この確認では、ＵＳＢメモリ５が切断されたときは、管理プログラム３は、ステップ１３１〜１４０に設定した設定を全て解除する。また、ファイルの自動復号化の設定も解除にする。
【００８７】
図１０には、制御部５２の動作のフローチャートを示している。ドライバウェア５０が制御モードをオンにするように指示されると、制御部５２はこの指示を受信し、ファイルアクセスを全て禁止する命令を送信する（ステップ２００）。この命令は、インターフェース制御部４２、ネットワーク制御部４３、ファイルシステム制御部４４に送信される（図２を参照）。インターフェース制御部４２、ネットワーク制御部４３、ファイルシステム制御部４４は、この命令を受信して、ファイルアクセスを禁止にする。また、制御プロセスの設定、ネットワーク利用の禁止、クリップボードの利用禁止、スクリーンキャプチャの使用禁止、コピーアンドペースト機能の禁止等を行う。
【００８８】
エグゼキュティブのプロセスマネージャは、クライアントコンピュータ１上で実行されている全てのプロセスを管理している。ここに、コールバック関数を登録（カーネルのＡＰＩを利用）することで、プロセスの起動・終了のイベントを取得する。実行するプロセスの起動・終了イベントに対して、コールバック関数を設定し、アプリケーションプログラム１０の起動と終了を検出できるように設定する。アプリケーションプラットフォームプログラム５８が動作しているときに、アプリケーションプログラム１０が起動する（ステップ２０２）。アプリケーションプラットフォームプログラム５８は、アプリケーションプログラム１０の起動を検出する（ステップ２０４）。
【００８９】
“CreateProcess”の“SUSPEND”（サスペンド）モードで、アプリケーションプログラム１０のプロセスが起動され、アプリケーションプラットフォームプログラム５８は、このプロセスのハンドルとプロセスＩＤを取得する。プロセスが“CreateProcess”のサスペンドモードで起動されると、プロセスが一時休止した状態になり、再開されるまでに実行されない。ハンドルは、“CreateProcess”から戻されるプロセスハンドルである。アプリケーションプラットフォームプログラム５８は、取得したハンドルとプロセスＩＤを制御部５２に送信する。
【００９０】
プロセスが起動されると、ファイルシステム制御部４４内のコールバック関数を実行し、制御部５２へ制御開始を通知する。制御部５２は、ハンドルとプロセスＩＤを取得する（ステップ２０６）。この取得の詳細な動作について後述する。制御部５２は、ファイルシステム制御部４４へハンドルとプロセスＩＤを送信し、プロセスＩＤから出されるファイルアクセスを許可する設定を行う。ファイルアクセスを許可するように設定する項目はプロセスＩＤ、プロセス名、ファイル名、フォルダ名、ファイル操作である。
【００９１】
ファイル操作に指定される設定は、読み込み専用（Read Only）と、読み込み書き込み（Read/Write）とのいずれかを許可する設定である（ステップ２０８）。インターフェース制御部４２は、各種のインターフェースを使用禁止に設定する（ステップ２１０）。また、ネットワーク制御部４３は、ネットワーク通信を禁止するように設定する（ステップ２１０）。これらの一連の設定が終わると、取得したハンドルを使って、サスペンドプロセスを再開する（ステップ２１２）。そして、アプリケーションプログラム１０が動作される。
【００９２】
そして、制御部５２は、アプリケーションプログラム１０が終了するときにオペレーティングシステム１１から発される通知である終了イベントを待機する（ステップ２１４）。アプリケーションプログラム１０が終了すると、ファイルシステム制御部４４内のコールバック関数を実行し、制御部５２へ制御解除を通知する。ファイルシステム制御部４４は、プロセス制御リスト１５０（図１４を参照。）によって行われていた制御解除をし、それ以後は、このアプリケーションプログラム１０の制御を行わない。無論、このアプリケーションプログラム１０がユーザデータ４にアクセスしたときは、制御が再開される。
【００９３】
図１１は、アプリケーションプログラム１０が終了するとき、制御部５２の動作を示すフローチャートである。アプリケーションプログラム１０は動作し、終了するとき、終了イベントが発生される（ステップ２３０）。アプリケーションプラットフォームプログラム５８は、終了イベントのプロセスＩＤを取得する。アプリケーションプラットフォームプログラム５８は、終了イベントのプロセスＩＤを制御部５２に送信する。制御部５２は、終了イベントのプロセスＩＤを取得する（ステップ２３２）。
【００９４】
制御部５２は、ファイルシステム制御部４４へ、取得したプロセスＩＤからファイルアクセスを禁止するように設定する（ステップ２３４）。そして、インターフェース制御部４２へ禁止設定の解除を指示し、インターフェース制御部４２は使用禁止に設定したものを解除する（ステップ２３６）。ネットワーク制御部４３に禁止設定の解除を指示し、ネットワーク制御部４３には使用禁止に設定したものを解除する（ステップ２３８）。
【００９５】
図１２は、制御部５２が使用禁止の除外を設定するときの流れを示すフローチャートである。図７のステップ５４、及び５６に示す個人認証が成功する（ステップ２６０）。認証が成功すると、オペレーティングシステム１１の動作に不可欠なプロセスを指定、これらのプロセスに何らかの制限をしないようにする必要がある。例えば、オペレーティングシステム１１のシステムサービス関連の実行ファイル、その実行ファイルが動作するときのプロセスが使用禁止にされたり、起動できなくなったりするとき、オペレーティングシステム１１が提供するサービスに支障ができたり、オペレーティングシステム１１自体の動作が不安定になる。
【００９６】
そのためには、オペレーティングシステム１１の動作に必要な最低限の実行ファイルとプロセスを制限なしに動作させる必要がある。例えば、プロセスとしては、“System”、“Kernel.exe”、“explorer.exe”が例示できる。制御プロセス名、制御ディレクトリは、プロセス制御リスト１５０に登録される。プロセス制御リスト１５０は、図１４に例示している。制御部５２は、プロセス制御リスト１５０から制御プロセス名、制御ディレクトリを読み込む（ステップ２６２）。また、一時ファイルをローカルディスクに保存も動作もしないアプリケーションプログラム１０がある。
【００９７】
このためには、アプリケーションプログラム１０が、ローカルディスクに一時ファイルを作成するときに暗号化を行うことにより、一時ファイルが他のアプリケーションプログラムからアクセスできないようにするためにプロセス保護を行う。このプロセス保護は、ドライバウェア５０によって、制御中のこのアプリケーションプログラム１０以外のアプリケーションプログラムによるプロセスがファイルアクセスを禁止して行う。アプリケーションプログラム１０の動作が終了したとき、この一時ファイルは削除される。制御部５２は、制御プロセス名からプロセスＩＤを取得する（ステップ２６４）。プロセスＩＤから実際のプログラム（.exeなどのモジュール）名を判断する。
【００９８】
そして、制御部５２は、ファイルシステム制御部４４へ全て禁止の設定を指示し、ファイルシステム制御部４４は全てのプロセスの禁止を設定する（ステップ２６６）。次に、制御部５２は、ファイルシステム制御部４４へ制御プロセス名のプロセスＩＤと、制御ディレクトリの読み込み書き込み（Read／Write）の許可設定を指示する（ステップ２６８）。ファイルシステム制御部４４は、制御部５２から送信されてきたプロセスＩＤとファイルパスと制御モードを受信する（ステップ２７０）。ファイルシステム制御部４４は、プロセスＩＤとファイルパスと制御モードをプロセス制御リスト１５０に追加する（ステップ２７２）。
【００９９】
図１３は、ファイルシステム制御部３４の動作を示す処理フローチャートである。アプリケーションプログラム１０又は、オペレーティングシステム１１からファイルへアクセスするときにファイルアクセスイベントが発生する（ステップ３００）。ファイルシステム制御部４４は、制御部５２からプロセスＩＤとファイルパスとファイル操作（Read/Write）を取得する（ステップ３０２）。このプロセスＩＤとファイルパスが、プロセス制御リスト１５０に登録されたものと合致するか否かを確認する（ステップ３０４〜３１０）。
【０１００】
このプロセスＩＤとファイルパスが、プロセス制御リスト１５０に登録されたものと合致するとき、制御欄の値よりファイルの操作を許可、又は禁止に設定する（ステップ３０８）。このプロセスＩＤとファイルパスがプロセス制御リスト１５０に登録されたものと合致しないとき、制御の値よりファイルの操作を禁止に設定する（ステップ３１２）。図１４には、プロセス制御リスト１５０の例を図示している。プロセス制御リスト１５０は、管理プログラム３がインストールされたときに、初期値としてファイルに格納され、ハードディスクドライブ２５に保存されるものである。
【０１０１】
プロセス制御リスト１５０は、必要なとき、編集して変更することも可能である。プロセス制御リスト１５０には、登録されたものの順番を示す連番欄１５１、制御対象のプロセス名を示すプロセス名１５２、制御対象のプロセスＩＤを示すプロセスＩＤ１５３、ファイルパスを示すファイルパス１５４、制御の方法を示す制御１５５のデータ欄がある。制御対象のプロセス名は、上述の説明の一部では制御プロセスとして記述されている。
【０１０２】
〔プロセス名、プロセスＩＤ、及びファイル名の取得について〕
プロセスを検出するためには、次の前処理が実施される。ファイルシステム制御部４４において、ファイルアクセスに関する入出力機能の要求（以下、Ｉ／Ｏ要求とする。）のコールバックを制御部５２に来るように設定する。これは、ファイルアクセスに関するＩ／Ｏ要求が全てファイルシステム制御部４４を通るため、このＩ／Ｏ要求を制御部５２に転送して、制御部５２がこれを解析するためである。そして、プロセス制御リスト１５０をファイルシステム制御部４４へ転送し、ファイルシステム制御部４４がプロセス制御リスト１５０に登録されているアクセスが行われているか否かを監視する。
【０１０３】
プロセスを検出するためには、次の実行処理が行われる。アプリケーションプログラム１０が、ＵＳＢメモリ５に格納されているファイルをアクセスしようとする。このとき、アプリケーションプログラム１０が、ファイルアクセスに関するＩ／Ｏ要求を発する。このＩ／Ｏ要求は、上述の前処理時に設定された通り、コールバックされて制御部５２へ送信される。制御部５２では、このＩ／Ｏ要求のコールバックを受信したら、プロセスＩＤ、プロセス名、及びファイル名を取得する。プロセスに関連するプロセス名、プロセスＩＤ、及びファイル名は次のように取得される。
【０１０４】
プロセス名を取得するには、“ZwQueryInformationProcess”関数を使い、実行プロセスのイメージパスを取得し、これの実行ファイルexeのファイル名からプロセス名を取得する。プロセスＩＤを取得するには、PsGetCurrentProcessId()関数を使って現在のプロセスのＩＤを取得する。ファイル名を取得するには、ファイルのＩ／Ｏ要求に関する入出力（Ｉ／Ｏ）要求（ＩＲＰ）から、参照されるファイルオブジェクトよりファイル名を取得する。そして、ファイルシステム制御部４４は、Ｉ／Ｏ要求に関するプロセス名、プロセスＩＤ、及びファイル名を、制御部５２から受信して、プロセス制御リスト１５０と比較してファイルアクセスの制御を行う。ファイルシステム制御部４４は、プロセス制御リスト１５０に従ってＩ／Ｏ要求に対するファイルへのアクセスの許可、又は拒否をアプリケーションプログラム１０に戻す。
【０１０５】
〔イベントの検出〕
イベントの検出は、次のように行われる。オペレーティングシステム１１のカーネル内のＩ／Ｏ要求は、ＩＲＰ（IO Request Packet）の形式で行われる。ファイルアクセスに関しては、次の表１に示すＩＲＰが利用される。このＩＲＰを対象にコールバック関数を設定することで、イベント検出を行う。コールバック関数は、エグゼキュティブのプロセスマネージャに登録され、コールバック関数が実行されると参照先のドライバウェア５０に制御が移動される。
【表１】
2010072885.tif 000003
【０１０６】
管理プログラム３のプログラムによっては、ユーザデータ４を格納しているＵＳＢメモリ５にアクセスしようとするアプリケーションプログラム１０、プロセスだけに、ターゲットを絞って制御を行うことができる。このように、クライアントコンピュータ１上で動作する他のアプリケーションプログラム１０、オペレーティングシステム１１のサービスを無理に制限せずに、ユーザデータ４のみにアクセスする試みのみを監視し、そのアクセスを許可又は不許可して制御を行う。更に、ユーザデータ４にアクセスしているアプリケーションプログラム１０、そのプロセスのネットワーク機能、他の記録装置へのアクセスを遮断し、更にクリップボード等のユーザデータ４を複製しそうな機能の使用を禁止する。これによって、ユーザデータ４が外部へ流出されることなく使用することができる。
【０１０７】
〔第２の実施の形態〕
図１５には、本発明の第２の実施の形態を示す概念図である。本発明の第２の実施の形態は、上述の第１の実施の形態と基本的に同じであり、異なる部分だけを説明する。本発明の第２の実施の形態においては、一時ファイルは、クライアントコンピュータ１に接続されたＵＳＢメモリ等の補助記録装置に保存される。クライアントコンピュータ１の中では、アプリケーションプログラム１０が動作している。ファイルシステムドライバ３４も動作し、ハードディスクドライブ２５とのデータ通信を行っている。
【０１０８】
ファイルシステムドライバ３４とアプリケーションプログラム１０の中間にドライバウェア５０がある。ドライバウェア５０は、アプリケーションプログラム１０から出力される命令、要求を監視し、ファイルシステムドライバ３４の動作を制御する。図１５には、ハードディスクドライブ２５、ハードディスクドライブ２５の中のフォルダ７、フォルダ９を図示している。フォルダ７は、アプリケーションプログラムが一時ファイル用に作成されるフォルダである。
【０１０９】
フォルダ８は、管理プログラム３が一時ファイル用に作成したフォルダである。管理プログラム３がアプリケーションプログラムの一時ファイルを、ＵＳＢメモリ１４の中のフォルダ８ｂの中に、暗号化して保存する。アプリケーションプログラムが終了するとき、管理プログラム３がアプリケーションプログラム用に作成した一時ファイルを、フォルダ８ｂの中から削除する。よって、アプリケーションプログラムが終了するときに、ＵＳＢメモリ１４の中で一時ファイルは、残らない。
【０１１０】
〔第３の実施の形態〕
図１６には、本発明の第３の実施の形態を示す概念図である。本発明の第３の実施の形態は、上述の第１及び第２の実施の形態と基本的に同じであり、異なる部分だけを説明する。本発明の第３の実施の形態においては、クライアントコンピュータ１は、ネットワーク１３介して、サーバ１００に接続されている。従来、クライアントコンピュータ１に保存されていた一時ファイルは、サーバ１００に保存される。
【０１１１】
サーバ１００は、中央処理装置（ＣＰＵ）、ＲＡＭ、ＲＯＭ、ネットワークポートを含む各種通信ポート、入出力装置を備えた電子計算機である。クライアントコンピュータ１の中では、アプリケーションプログラム１０が動作している。ファイルシステムドライバ３４も動作し、ハードディスクドライブ２５とのデータ通信を行っている。ファイルシステムドライバ３４とアプリケーションプログラム１０の中間にドライバウェア５０がある。ドライバウェア５０は、アプリケーションプログラム１０から出力される命令、要求を監視し、ファイルシステムドライバ３４の動作を制御する。
【０１１２】
図１６には、ハードディスクドライブ２５、ハードディスクドライブ２５の中のフォルダ７、フォルダ９を図示している。フォルダ７は、アプリケーションプログラム１０が一時ファイル用に作成されるフォルダである。フォルダ８は、管理プログラム３が一時ファイル用に作成したフォルダである。管理プログラム３がアプリケーションプログラム１０の一時ファイルを、サーバ１００の中のフォルダ８ｃの中に、暗号化して保存する。アプリケーションプログラムが終了するとき、管理プログラム３がアプリケーションプログラム用に作成した一時ファイルを、フォルダ８ｃの中から削除する。よって、アプリケーションプログラムが終了するときに、サーバ１００の中で一時ファイルは、残らない。
【産業上の利用可能性】
【０１１３】
本発明は、ユーザのファイル、データやプログラム等を電子記録媒体に記録して、外部へ提供し、提供先でどのように利用されているかを把握すること可能であり、電子データの緊密な管理が必要な分野に利用すると良い。特に、営業または経理データ等でユーザのデータやファイル等の秘密情報、従業員のデータ管理が必要とされる印刷業界、保険会社、販売店で利用されることが望ましい。更に、電子データの緊密な管理が必要な金融機関、原子力関連の施設、や個人データを扱う端末等の分野に利用されても良い。
【図面の簡単な説明】
【０１１４】
【図１】図１は、本発明の第１の実施の形態の概要を図示している概念図である。
【図２】図２は、クライアントコンピュータ１上に動作するソフトウェアの概要を機能ブロックで図示している図である。
【図３】図３は、オペレーティングシステム１１を構成するプログラムの内の代表的なものを図示したブロック図であり、オペレーティングシステム１１と、管理プログラム３との関係を図示している図である。
【図４】図４は、ＵＳＢメモリ５の内部構造を示すブロック図である。
【図５】図５は、クライアントコンピュータ１の補助記録装置の概要を示すブロック図である。
【図６】図６は、本発明の第１の実施の形態の動作を示すフローチャートである。
【図７】図７は、クライアントコンピュータ１において、ユーザデータ４をＵＳＢメモリ５から読み出して閲覧するときの流れを示すフローチャートである。
【図８】図８は、管理プログラム３の動作を示すフローチャートである。
【図９】図９は、管理プログラム３が制御モードをオンにするときの動作を示すフローチャートである。
【図１０】図１０は、制御部５２の動作のフローチャートを示している。
【図１１】図１１は、アプリケーションプログラム１０が終了するとき、制御部５２の動作を示すフローチャートである。
【図１２】図１２は、制御部５２が使用禁止の除外を設定するときの流れを示すフローチャートである。
【図１３】図１３は、ファイルシステム制御部３４の動作を示す処理フローチャートである。
【図１４】図１４は、プロセス制御リスト１５０の例を図示している。
【図１５】図１５は、本発明の第２の実施の形態の概要を示す概念図である（ＵＳＢメモリ５に一時ファイルが保存される例。）。
【図１６】図１６は、本発明の第３の実施の形態の概要を示す概念図である（ネットワーク１３上のサーバ１００に一時ファイルが保存される例。）。
【図１７】図１７は、アプリケーションプログラムが一時ファイルを作成し、これを利用する従来の方法を説明するためのフローチャートである。
【符号の説明】
【０１１５】
１…クライアントコンピュータ
２…クライアント
３…管理プログラム
４…ユーザデータ
５…ＵＳＢメモリ
７…フォルダ（従来の）
８、８ａ、８ｂ…フォルダ（本発明の）
１０…アプリケーションプログラム
１１…オペレーティングシステム
１３…ネットワーク
１６…キーボード
１７…マウス
２２…コネクタ
２３…ネットワークカード
２４…ＵＳＢポート
２５…ハードディスク
２６…キーボードポート
２７マウスポート
３０…デバイスドライバ
３２…インターフェースドライバ
３３…ネットワークドライバ
３４…ファイルシステムドライバ
３５…キーボードドライバ
３６…マウスドライバ
４０…デバイスドライバ制御部
４２…インターフェース制御部
４３…ネットワーク制御部
４４…ファイルシステム制御部
４５…入力装置制御部
５０…ドライバウェア
５１…アプリケーションプログラムインターフェース部
５２…制御部
５３…ログ取得部
５４…暗号化部
５５…復号化部
１００…サーバ
１０５…基板
１０６…ユーザ領域
１０７…プログラム領域
１０８…認証プログラム
１１５…認証領域
１１６…認証データ
１５０…プロセス制御リスト
【図１】
2010072885.tif 000004
【図２】
2010072885.tif 000005
【図３】
2010072885.tif 000006
【図４】
2010072885.tif 000007
【図５】
2010072885.tif 000008
【図６】
2010072885.tif 000009
【図７】
2010072885.tif 000010
【図８】
2010072885.tif 000011
【図９】
2010072885.tif 000012
【図１０】
2010072885.tif 000013
【図１１】
2010072885.tif 000014
【図１２】
2010072885.tif 000015
【図１３】
2010072885.tif 000016
【図１４】
2010072885.tif 000017
【図１５】
2010072885.tif 000018
【図１６】
2010072885.tif 000019
【図１７】
2010072885.tif 000020