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