(57)【要約】      （修正有）【課題】電子計算機の記憶装置に記憶されているファイルへのアクセスをカーネルモードで制御する方法を提供する。【解決手段】電子計算機のファイルシステムドライバの制御方法は、電子計算機の記憶装置に記憶されているファイルへのアクセスをカーネルモードで制御する。アプリケーションプログラム４から電子計算機のファイルシステムの特定ファイルへアクセスするとき、ＯＳ３のカーネルモード８で、アクセスを受信し、ファイルシステムのファイル名、アクセス方法をからなるアクセス制御データベースを参照して、特定ファイルへのアクセスがアクセス制御データベースに予め規定された条件に合致しないとき、アクセスを破棄する。【選択図】図１
2008171433.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を含む複数のデバイスが接続されていて、ＯＳによって動作する電子計算機が存在し、
前記電子計算機の入力装置又はアプリケーションプログラムから前記電子計算機のファイルシステムの特定ファイルへアクセスするとき、前記アクセスを制御する方法において、
前記ＯＳの全ての命令が実行できる動作モードであるカーネルモードで、前記アクセスを受信し、
前記ファイルシステムのファイル名、アクセス方法からなるアクセス制御データベースを参照して、前記特定ファイルへの前記アクセスが前記アクセス制御データベースに予め規定された条件に合致しないとき、前記アクセスを破棄する
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項２】
請求項１において、
前記アクセスが前記条件に合致しているときは、前記ファイルシステムを制御するファイルシステムドライバに前記アクセスを送信し、
前記アクセス制御データベースの前記特定ファイルに対応する前記条件を変更する
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項３】
請求項１又は２において、
前記アクセス方法は、
ファイルを作成する、ファイルを開く、ファイルを閉じる、ファイルを読み出す、ファイルを書き込む動作の内少なくとも１つ以上の制御動作からなり、
前記制御動作が制御回数を含む
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項４】
請求項３において、
前記制御回数が予め設定された所定値より以下、又は以上になるとき、前記アクセスが破棄される
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項５】
請求項１又は２において、
前記アクセスは、前記入力装置であるキーボード又はマウスから入力される前記ファイルシステムへのアクセスであり、
前記条件によって前記入力装置の機能を停止又は一時停止させる
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項６】
請求項１又は２において、
前記入力装置であるキーボードのキーから入力する入力特徴を用いて個人認証を行ってユーザを特定し、
前記アクセス制御データベースを参照して、前記ユーザの前記アクセスできる範囲を示す前記条件を取得して、
前記ユーザの前記アクセスを制御する
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項７】
請求項７において、
前記個人認証は、前記電子計算機とネットワークによって接続されているサーバで行い、
前記サーバの記憶装置にユーザの前記アクセスできる範囲を示す前記条件を有する制御データベースが格納されていて、
前記制御データベースを参照して前記個人認証で識別した前記ユーザの前記条件を取得し、
前記サーバから、前記ユーザの前記アクセスを制御する命令を前記電子計算機へ送信し、
前記電子計算機では前記命令に従って、前記ユーザの前記アクセスを制限、中止、システムロックする動作の中から１以上の動作を行う
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項８】
請求項３において、
前記制御回数の値を確認し、前記値が所定値になった場合、前記値が所定値になった前記特定ファイルを削除するようにファイル削除命令を前記ファイルシステムドライバに送信して、前記値が所定値になった前記特定ファイルが削除される
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項９】
請求項１又は２において、
前記アクセス制御データベースを、前記電子計算機とネットワークによって接続されている記録装置、又は、前記電子計算機に内蔵又は接続された記録装置に送信して、バックアップを行なう
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項１０】
請求項１又は２において、
前記アクセスの制御の履歴を前記カーネルモードで取得して、
前記電子計算機とネットワークを介して接続されたログサーバ又は前記電子計算機に内蔵又は接続された記録装置に、前記履歴を送信する
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【請求項１１】
請求項７、９、及び１０の中から選択される１項において、
前記電子計算機は、カーネルモードで動作する、データを暗号化するための暗号化手段、暗号化されたデータを復号化するための復号化手段を有し、
前記ネットワークへ送信されるデータを暗号化して送信し、
前記ネットワークから受信した暗号化されたデータを復号化する
ことを特徴とする電子計算機のファイルシステムドライバの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明は、電子計算機の記録媒体に記憶されているファイルへのアクセスを制御する方法に関する。詳しくは、電子計算機のハードディスク等の記憶装置に記憶されているファイルへのアクセス処理を制御する方法に関する。
【背景技術】
【０００２】
電子計算機のファイルシステムは様々な種類があり、ファイルシステムは電子計算機のＯＳのファイルシステムドライバによって制御され管理されている。インターネットからダウンロードしたファイルなどは電子計算機のハードディスク等の補助記憶装置に保存して利用している。これらのファイルをユーザが意識して削除しないかぎり、削除されることはほとんどない。
【０００３】
（電子計算機の構成）
電子計算機は、中央演算処理装置（CPU）、記憶装置（メモリ、ハードディスク等）、入力装置（キーボード、マウス等）、出力装置（ディスプレイ等）、周辺機器（プリンタ、スキャナ等）へ接続するためのカードスロットなどの多くのハードウェア資源からなり、かつ記憶装置に記憶されているＯＳ（Operating System）によってこれらのハードウェアが制御されて動作する。
【０００４】
電子計算機で動作する各種アプリケーションプログラムはＯＳ上で動作する。ＯＳは電子計算機の全ての動作を制御し、異なるハードウェア仕様の違いを吸収し、アプリケーションプログラムに共通の環境を提供するものである。つまり、ＯＳは、キーボード入力や画面出力といった入出力機能、ディスクやメモリの管理など、多くのアプリケーションプログラムから共通して利用される基本的な機能を提供し、電子計算機のシステム全体を管理するソフトウェアで、「基本ソフトウェア」とも呼ばれることがある。
【０００５】
電子計算機のハードウェアは複数のメーカによって生産されて、メーカによってその仕様が異なることがある。電子計算機を利用するプログラム開発者にとっては、このハードウェアの仕様の違いを意識しないで、アプリケーションプログラムの開発を行うことが望ましい。ハードウェアのこの仕様の違いはＯＳが吸収しアプリケーションプログラムに対して共通の環境を提供する。
【０００６】
アプリケーションプログラムの開発者は、ＯＳの提供する機能を利用することによって、開発の手間を省くことができ、アプリケーションプログラムの操作性を統一することができる。あるＯＳ向けに開発されたアプリケーションプログラムは、基本的にはそのＯＳが動作するどのような電子計算機でも利用できる。
【０００７】
ＯＳには、MS-DOS（登録商標）、UNIX（登録商標）、Linux、FreeBSD（登録商標）などに代表される数多くの種類があり、企業や家庭の一般ユーザが利用するＯＳとして最もポピュラーなのはMicrosoft社のWindowsシリーズである。DTP業界やマルチメディア業界では、Apple社のMac OS（登録商標）が広く利用されている。企業のサーバや学術機関では各社のUNIX系のＯＳや、無償配布されているLinuxやFreeBSDなどのUNIX系のＯＳが使われることが多い。近年、サーバ用のＯＳとしてMicrosoft社のWindows NT/2000（登録商標）がシェアを伸ばしている。 
【０００８】
〔従来のアーキテクチャ〕
ここで、図１２にはＯＳの代表的なものとしてWindows NT/2000（登録商標）のアーキテクチャの概要を図示している。図１２からわかるように、Windows NT/2000は、全体的に概略するとハードウェア２、ＯＳ３、実際のユーザが要求する機能を実現するアプリケーションプログラム４という階層構造に成っている。マイクロカーネル５１はＯＳ３の全体的な管理を行うためのプログラムであり、マイクロカーネル５１の階層を中心にして、その層の上で動作する各種ソフトウェア（カーネルモードソフトウェア）がカーネルモード８を構成している（後述の説明を参照）。そして、一番上の階層にあるアプリケーションプログラム４がユーザモード９で動作している（後述の説明を参照）。
【０００９】
ＯＳ３は大きく分けて、エグゼクティブ５０、マイクロカーネル５１、ハードウェア抽象化層（ＨＡＬ）５２からなる階層構造を有する。ＨＡＬ５２は、ハードウェア２のすぐ上の層に位置したハードウェアの制御を重視したプログラムで、プロセッサなどの多種多様なハードウェアの仕様を吸収し、上位層のサービス（マイクロカーネル５１，エグゼクティブ５０等）に同じ環境（機種に依存しない）を提供するためのプログラムである。
【００１０】
マイクロカーネル５１は、システム全体の基本的な機能を提供するものである。エグゼクティブ５０は、マイクロカーネル５１、ＨＡＬ５２で提供されるサービス機能を利用してＯＳ３の主なサービスの提供を実現するためのプログラムの総体である。エグゼクティブ５０には、キャッシュマネージャ５３、オブジェクトマネージャ５４、プロセスマネージャ５５、メモリマネージャ５６、I/Oマネージャ５７等の代表的なエグゼクティブプログラムが含まれている。
【００１１】
オブジェクトマネージャ５４は、動作しているオブジェクト（ある目的の機能を実現するためのプログラム）を監視し制御・調整を行うためのプログラムである。プロセスマネージャ５５は、動作しているプロセス（ある機能だけを行うためのプログラム）を監視し調整を行うためのプログラムである。キャッシュマネージャ５３とメモリマネージャ５６は、メモリ・仮想メモリを制御・調整するためのプログラムである。I/Oマネージャ５７は、ＯＳ３の入出力機能を監視・制御するプログラムである。電子計算機がこのエグゼクティブ５０で動作するとき、カーネルモード８と呼ばれている。
【００１２】
カーネルモード８では、ＯＳ３を操作するためのすべての命令が実行可能であり、仮に間違った命令を実行するとシステム全体に悪影響を及ぼしかねない。また、ＯＳ３の機能には、アプリケーションプログラム等のユーザに対して完全に開放されているユーザモード９がある。このユーザモード９では、システムに悪影響を与えないように、ＯＳ３を操作する命令を制限している。システムに悪影響を与えるような命令をシステムが自動的にとらえてくれるため、ユーザにとっては使い易い環境になっている。
【００１３】
しかし、このような制限を設けることはＯＳ３の機能の制限と同じことなので、ユーザモード９で動作するアプリケーションプログラム４は、ハードウェア２に関わる部分には直接アクセスできなくなり、カーネルモード８を経由しなければならない。カーネルモード８はＯＳ３の機能をフルに使うことが可能であり、各入出力装置へも完全にアクセスできる。また、カーネルモード８で動作するプログラムはユーザモード９のプログラムより優先的に処理され、高いパフォーマンスを得ることができる。
【００１４】
デバイスドライバ５はＯＳ３に属し、電子計算機の外部ハードウェアを管理するためのソフトウェアであり、カーネルモード８で動作する。通常、デバイスドライバ５一つに対して同じ属性を持つデバイスが一つだけ存在する。ユーザモード９で動作するアプリケーションプログラム４は、各デバイスにアクセスするためにデバイスドライバ５を経由しなければならない。
【００１５】
例えば、図１３に示すようにデバイスＡからデバイスＢへデータを転送する場合には、データの流れは「デバイスＡ」→「デバイスドライバＡ」→（カーネルモード８からユーザモード９へと動作モードの切換）「アプリケーションプログラム４」（ユーザモード９からカーネルモード８へと動作モードの切換）→「デバイスドライバＢ」→「デバイスＢ」となり、システムはカーネルモード８からユーザモード９へ又はユーザモード９からカーネルモード８へと動作モードの切り替えを行いながら処理を進めている。
【００１６】
ユーザモード９とカーネルモード８の切り替えは時間がかかる処理で、画像データなどのような大量のデータを転送するとき、転送速度が遅くなり、転送時間がかかる。このため、アプリケーションレベルで転送速度の高速化を図ることが困難である。アプリケーションプログラム４の処理ごとにユーザモード９とカーネルモード８の切り替えを行わなければならないからである。
【００１７】
ここで、従来のデバイス間にデータ転送をするときの動作手順を説明する。図１３は、アプリケーションプログラム４及びデバイスドライバ５と動作モード８，９の関係の概要を図示している。図から分かるように、アプリケーションプログラム４はユーザモード９で動作している。
【００１８】
デバイスドライバ５は、ＯＳ３に組み込まれてカーネルモード８で動作している。電子計算機のハードウェア２を構成するデバイス６は、各種の内部デバイスと電子計算機に接続されている外部デバイスからなり、それぞれ固有のデバイスドライバ５からのみ制御される。つまり、デバイス６へのアクセスは全てデバイスドライバ５を介して行われる。デバイスドライバ５は、ＯＳ３を介して、アプリケーションプログラム４からの命令により動作する。
【００１９】
次にデータ伝送の流れを図１４のフローチャートを参照しながら説明する。ユーザモード９で動作するアプリケーションプログラム４が、デバイスＡからデバイスＢへとデータを転送するときのデータの流れをシステムの動作モード８，９を比較しながら説明する。まず、アプリケーションプログラム４がデータの転送要求（命令）を出す（Ｓ５０）。
【００２０】
このときは、デバイスＡに対してデータ送信の要求（Ｓ５１）、デバイスＢに対してデータ受信の要求を出す（Ｓ５２）。システムの動作モードはユーザモード９からカーネルモード８に切り替わる。デバイスドライバＡがデータ送信の要求を受け取り（Ｓ５３）、デバイスＡに送信する（Ｓ５４）。デバイスＡがデータ送信の要求を受け取り（Ｓ５５）、データを送信する（Ｓ５６）。送信されたデータをデバイスドライバＡが受信し（Ｓ５７）、このデータを内部処理して（Ｓ５８）、アプリケーションプログラム４へデータを送信する（Ｓ５９）。
【００２１】
システムの動作モードがカーネルモード８からユーザモード９に切り替わり、アプリケーションプログラム４がデータを受信して処理し（Ｓ６０、Ｓ６１）、処理結果をデバイスドライバＢへ送信する（Ｓ６２）。システムの動作モードは再びユーザモード９からカーネルモード８に切り替わる。デバイスドライバＢはデータを受信し（Ｓ６３）、このデータを内部処理し（Ｓ６４）、結果をデバイスＢへ送信する（Ｓ６５）。
【００２２】
デバイスＢはデータを受け取り（Ｓ６６）、データ受取済の情報をデバイスドライバＢへ送る（Ｓ６７）。デバイスドライバＢはそのデータ受取済の情報を受け取り（Ｓ６８）、アプリケーションプログラム４へデータ転送完了を通知する（Ｓ６９）。システムはユーザモード９に替わり、アプリケーションプログラム４がデータ転送完了を受け取り（Ｓ７０）、次の処理にかかり、一連のデータ転送の処理が終了する（Ｓ７１）。
【００２３】
このように、データは「デバイスＡ」→「デバイスドライバＡ」→（動作モードの切り替え）「アプリケーションプログラム４」（動作モードの切り替え）→「デバイスドライバＢ」→「デバイスＢ」と転送される。この間、システムの動作モードはカーネルモード８とユーザモード９とに繰り返し切り替わりながら動作している。大量のデータを取り扱うようになるとこの動作モードの切り替え処理の数が多くなる。
【００２４】
更に、システム上に他のアプリケーションプログラムが同時に動作しているとき、このアプリケーションプログラムのためにシステムが動作モードの切り替えをするため、システム全体として動作モードの切り替え回数が多くなり、アプリケーションプログラム同士の実行処理が遅くなる原因になる。これは、動作モードの切り替え回数の増大はデータの送受信処理の低速化、特に画像処理などのリアルタイム性が強く求められる場合は、画面上に表示される画像の乱れなどの原因になりかねない。
【００２５】
このようなシステムにおいて、システムのパフォーマンスを確保するためにはハードウェア開発・設計技術と共にそれらのハードウェア２を制御するデバイスドライバ５の開発技術が重要になる。特に画像データのような大量のデータの転送を行うとき、ユーザモード９とカーネルモード８の切り替えを少なくして、データ転送の高速化を図ることが望ましい。また、データの保全性が強く求められているときユーザが触れないカーネルモード８内で転送することが望ましい。特に、パスワードを利用してユーザ認証を行うときには秘密データであるそのパスワードデータの保全性がとても重要になる。
【００２６】
(ファイルシステムの説明)
記憶装置に格納されているデータの集合に名前をつけたものをファイルと定義される。記憶装置に格納されているファイルが多くなると、これらのファイルを機能的に管理することが求められる。複数のファイルをまとめてディレクトリを構成して管理するのが一般的である。ディレクトリはファイルだけを格納するのではなく、別ディレクトリも格納することができ、入れ子構造にすることができ、全体としてツリー構造の階層構造になることが多い。このようにファイルが集まって構成する全体の構造をファイルシステムと呼ぶ。
【００２７】
ファイルシステムは様々な種類があり、その代表的なものを掲げる。例えば、ＦＡＴファイルシステム、ＮＴＦＳログベースファイルシステム、ＨＰＦＳファイルシステム等がある。電子計算機のハードディスク等の記憶装置に格納されているファイルへのアクセスはファイルシステムドライバによって制御される。
【００２８】
図１５には、アプリケーションプログラム４、I/Oマネージャ５７、ファイルシステムドライバ５８、ディスクドライバ５９、ハードディスク６０とこれらの関係を図示している。アプリケーションプログラム４からの読み出し要求はカーネルモード８のI/Oマネージャ５７が提供するシステムサービスに向けられる。
【００２９】
WindowsNT（以下、ＮＴという。）の場合は、周辺装置を制御し、それらとのインターフェースを提供するフレームワークはI/Oサブシステムである。I/Oサブシステムは全てのカーネルモードドライバから構成される。このI/Oサブシステム全体を定義し、管理するのがI/Oマネージャ５７である。ファイルシステムドライバ５８はI/Oサブシステムのコンポーネントであり、I/Oマネージャ５７が定義するインターフェースに準拠しなければならない。
【００３０】
ファイルシステムドライバ５８は、ハードディスク６０等の補助記憶装置に情報を格納する手段、また、補助記憶装置に記憶されている情報を検索する機能をユーザに提供するものである。また、ファイルシステムドライバ５８は、補助記憶装置に格納されているこのファイルの作成、修正、削除を行い、ファイル間の情報転送を容易かつ確実に制御する機能を有する。ファイルシステムドライバ５８は、アプリケーションプログラム４にとって適切な方法でファイルの内容を構築する機能も整えている。
【００３１】
ファイル属性データは、補助記憶装置に格納されているファイルを読み出し専用か、書き込み可能かなどのファイルに関する情報からなるデータである。電子計算機のファイルシステムにはこのようなファイル属性データを細かく定めている。ここには、ファイルの作成日時、更新日時、種類、サイズ、読み出し専用（指定可能）、隠しファイル（指定可能）などをはじめとする情報がある。
【００３２】
ファイルにアクセスするとき、ファイルシステムドライバがファイルの属性を参照してアクセス方法を確認する。読み出し専用のファイルの場合は、書き込みできないため、書き込みアクセスしようとするとき、書き込みできない旨の通知を返す。ファイルへアクセスするときは、ファイル属性に決められたアクセスの仕方しかできないように設定されている。
【００３３】
ＮＴではファイルへのアクセス権限は設定されている。例えば、ＮＴでは、システム起動時にログインしたユーザは「管理者」、「ユーザ１」などのようにレベル又はグループに分けられており、ユーザごとにアクセスできるファイル、できないファイルを設定することができる。また、あるユーザに対しては読み出し専用のファイルが、他のユーザには書き込みもできるように設定できる。
【発明の開示】
【発明が解決しようとする課題】
【００３４】
従来のファイルシステムを使用していると、ユーザがファイルを所定回数しかアクセス（読み出す、書き込む、開くなどのアクセス）することできないように制限することが非常に困難である。ファイルごとに所定期間又は時間帯にしかアクセスできないようにすることも困難である。このためにはそれぞれの時間ごとにファイルの属性を一々変更して書き換えしなければならない。
【００３５】
また、ユーザ（利用者、アプリケーションプログラム）がファイルを所定回数アクセス（読み出す、書き込む、開くなどのアクセス）するとファイルが削除されるように設定するなどとユーザの特定のアクセスに対するファイル制御が難しい。
【００３６】
本発明は上述のような技術背景のもとになされたものであり、下記の目的を達成する。
本発明の目的は、電子計算機の記憶装置に記憶されているファイルへのアクセスをカーネルモードで制御する方法を提供する。
本発明の他の目的は、電子計算機のファイルシステムへアクセスしたアクセスログをカーネルモードで取得する方法を提供する。
【００３７】
本発明の更に他の目的は、電子計算機のファイルシステムへアクセスしたアクセスログを保存したファイルをネットワークへ転送する方法を提供する。
本発明の更に他の目的は、電子計算機のファイルシステムのファイルが特定のアクセスが所定回数行われた後に改め決められた条件で制御される方法を提供する。
本発明の更に他の目的は、電子計算機を利用するユーザの個人認証を行い、ユーザから電子計算機へのアクセスを制御する方法を提供する。
【課題を解決するための手段】
【００３８】
本発明は、前記目的を達成するため、次の手段を採る。
本発明の電子計算機のファイルシステムドライバの制御方法は、記憶装置を含む複数のデバイスが接続されていて、ＯＳによって動作する電子計算機の入力装置又はアプリケーションプログラムから前記電子計算機のファイルシステムの特定ファイルへアクセスするとき、前記アクセスを制御する方法である。
【００３９】
本発明の電子計算機のファイルシステムドライバの制御方法は、ＯＳの全ての命令が実行できる動作モードであるカーネルモードで、前記アクセスを受信し、前記ファイルシステムのファイル名、アクセス方法からなるアクセス制御データベースを参照して、前記特定ファイルへの前記アクセスが前記アクセス制御データベースに予め規定された条件に合致しないとき、前記アクセスを破棄することを特徴とする。
【００４０】
前記アクセスが前記条件に合致しているときは、前記ファイルシステムを制御するファイルシステムドライバに前記アクセスを送信し、前記アクセス制御データベースの前記特定ファイルに対応するアクセス方法に所定の変更をすると良い。
また、前記アクセス方法は、ファイルを作成する、ファイルを開く、ファイルを閉じる、ファイルを読み出す、ファイルを書き込む動作の内少なくとも１つ以上の制御からなり、制御回数を有すると良い。
【００４１】
また、前記制御回数が予め設定された所定値より以下、又は以上になるとき、前記アクセスが破棄されると良い。
更に、前記アクセスの履歴をログファイルとして保存し、ログファイルは前記電子計算機に直接、又はネットワークを介して接続されている他の電子計算機へ転送すると良い。
【００４２】
更に、前記電子計算機の入力装置から入力されるとき、入力データを分析して、前記入力装置の機能を停止させると良い。
更に、キーボードのキーから入力する入力特徴を用いて個人認証を行ってユーザを特定し、前記アクセス制御データベースを参照して前記ユーザのアクセスできる範囲を示す前記条件を取得し、前記条件にしたがって前記ユーザのアクセスを制御すると良い。
【００４３】
また更に、前記電子計算機とネットワークによって接続されているサーバの記憶装置にユーザのアクセスできる範囲を示す前記条件を有する制御データベースが格納されていて、前記サーバで前記個人認証を行い、前記個人認証で識別した前記ユーザの前記条件を前記制御データベースから検索して取得し、前記サーバから、前記ユーザのアクセスを制御する命令を前記電子計算機へ送信し、前記電子計算機では前記命令に従って前記ユーザの前記アクセスを制限、中止、システムロックの中から１以上をすると良い。
【００４４】
本発明の電子計算機のファイルシステムドライバの制御方法は、個人認証を前記ユーザが前記電子計算へログインするとき、又は連続的にオンライン認証すると良い。
また、前記サーバからの命令で前記電子計算機のシステムをロック、又は前記ロックの解除を行うと良い。更に、前記ロックされた状態の前記電子計算機の電源を切った後、電源を入れるとき前記電子計算機の動作環境が前記電源を切る直前の状態が保持されて復帰させると良い。
【００４５】
前記制御回数の値を確認し、前記値が所定値になった場合、前記値が所定値になった前記特定ファイルを削除するようにファイル削除命令を前記ファイルシステムドライバに送信して、前記値が所定値になった前記特定ファイルが削除されると良い。
前記アクセス制御データベースを、前記電子計算機とネットワークによって接続されている記録装置、又は、前記電子計算機に内蔵又は接続された記録装置に送信して、バックアップを行なうと良い。
【００４６】
前記アクセスの制御の履歴を前記カーネルモードで取得して、前記電子計算機とネットワークを介して接続されたログサーバ又は前記電子計算機に内蔵又は接続された記録装置に、前記履歴を送信すると良い。
前記電子計算機は、カーネルモードで動作する、データを暗号化するための暗号化手段、暗号化されたデータを復号化するための復号化手段を有し、前記ネットワークへ送信されるデータを暗号化して送信し、前記ネットワークから受信した暗号化されたデータを復号化すると良い。
【発明の効果】
【００４７】
本発明の電子計算機のファイルシステムドライバの制御方法は次の効果を有する。
本発明は、電子計算機のファイルシステムへのアクセスは、電子計算機のＯＳの動作モードであるカーネルモードで行うので、ファイルシステムドライバに支障なくアクセス制御できる。ファイルシステムへのアクセスを指定するデータベースを用いて制御するためファイルへのアクセスを制御することが自由になる。
【００４８】
本発明は、アプリケーションプログラムとデバイスドライバとの共通のインターフェースを用い、このインターフェースドライバのプログラムを利用してファイルシステムへのアクセスを制御するので、データの秘密性が保護され、かつデータの安全転送を図ることができる。
【００４９】
本発明は、ユーザごとにアクセス範囲、権限を設定し、電子計算機を利用するユーザの認証を行い、ユーザのアクセスできるアクセス範囲、権限に基づいてファイルシステムへのアクセスをカーネルモードで制御でき、不正アクセス、未登録のユーザのアクセスなどを防止できる。
【発明を実施するための最良の形態】
【００５０】
次に、本発明の実施の形態を説明する。
（共通インターフェースドライバの概念）
図１は、本発明の電子計算機のインターフェースドライバプログラムの実施の形態を示す概念図であり、共通インターフェースドライバを用いたＯＳの概念図である。図２は、データを転送するときのデータ及び命令の流れを示すフローチャートである。
【００５１】
電子計算機１はＣＰＵ、メモリ、周辺機器などのハードウェア２から構成され、これらのハードウェア２を記憶装置に記憶されているＯＳ３によって制御し動作させる。エンドユーザが使うアプリケーションプログラム４はＯＳ３が提供する環境で動作する。ＯＳ３には、周辺機器を制御するデバイスドライバ５が含まれており、アプリケーションプログラム４からの命令に従って、デバイス６を制御し、デバイス６からデータを受信したり、デバイス６へデータを送信したりする。
【００５２】
本実施の形態では、共通インターフェースドライバ７は、各デバイスドライバ５の共通の窓口となり、アプリケーションプログラム４とのやり取りをまとめて行っている。また、共通インターフェースドライバ７は、アプリケーションプログラム４からの命令によって、デバイス６間のデータの送受信も制御することができる。共通インターフェースドライバ７は、デバイスドライバＡ５とデバイスドライバＢ５間のインターフェースで、カーネルモード８で動作するものである。
【００５３】
デバイス６には、デバイスＡとデバイスＢがあり、それぞれをデバイスドライバＡとデバイスドライバＢにより制御される。デバイスＡからデバイスＢへデータを転送する場合のデータの流れを図２のフローチャートに示す。ユーザモード９で動作するアプリケーションプログラム４が、デバイスＡからデバイスＢへとデータを転送するとき（Ｓ１）、データ転送の要求（命令）を出す（Ｓ２）。このときは、システムの動作モードはユーザモード９である。
【００５４】
システムの動作モードはカーネルモード８に切り替わり、共通インターフェースドライバ７はアプリケーションプログラム４からのデータ転送の要求を受け取り（Ｓ３）、共通インターフェースドライバ７はこのデータ転送の要求を分析して（Ｓ４）、各処理部に指示を出す。デバイスドライバＡに対してデータ送信の要求を出す（Ｓ５）。デバイスドライバＢに対してデータ受信の要求を出す（Ｓ６）。
【００５５】
デバイスドライバＡが共通インターフェースドライバ７からのデータ送信の要求を受け取り（Ｓ７）、デバイスＡに送信する（Ｓ８）。デバイスＡがデータ送信の要求を受け取り（Ｓ９）、データをデバイスドライバＡへ送信する（Ｓ１０）。デバイスドライバＡがデータを受信し（Ｓ１１）、内部処理して（Ｓ１２）、共通インターフェースドライバ７に渡す（Ｓ１３）。共通インターフェースドライバ７は、データを受信し、圧縮・暗号化等の処理をして（Ｓ１４）から、結果をデバイスドライバＢへ送信する（Ｓ１５）。
【００５６】
デバイスドライバＢは共通インターフェースドライバ７からデータを受信し（Ｓ１６）、内部処理し（Ｓ１７）、この内部処理した処理結果をデバイスＢへ送信する（Ｓ１８）。デバイスＢはデータを受け取り（Ｓ１９）、データ受取済の情報をデバイスドライバＢへ送る（Ｓ２０）。デバイスドライバＢはそのデータ受取済の情報を受け取り（Ｓ２１）、データ転送完了の情報を共通インターフェースドライバ７へ返信する（Ｓ２２）。
【００５７】
共通インターフェースドライバ７はデータ転送完了の情報を受信し（Ｓ２３）、アプリケーションプログラム４へデータ転送完了の情報を送信して次の命令を待機する（Ｓ２４）。ここで、システムの動作モードはカーネルモード８からユーザモード９に替わり、アプリケーションプログラム４がデータ転送完了の情報を受け取り（Ｓ２５）、次の処理にかかる。
【００５８】
これで、データ伝送の一連の作業が終了する（Ｓ２６）。このように、データは「デバイスＡ」→「デバイスドライバＡ」→「共通インターフェースドライバ７」→「デバイスドライバＢ」→「デバイスＢ」と転送され、この間、システムの動作モードはカーネルモード８で動作し、モードの切り替えを行う必要がなくなる。
【００５９】
また、データはユーザモード９のアプリケーションプログラム４を経由せずに直接カーネルモード８でデバイス６間に転送され、大量のデータを高速に転送できるようになる。また、アプリケーションプログラム４から直接に取り扱いできないカーネルモード８で転送されているためデータの保全性も高まる。
【００６０】
デバイスＢは、キーボード、マウスなどの入力装置をはじめとする様々デバイスである場合は、各デバイスはそれぞれデバイスドライバを備えている。これらのデバイスドライバ５は並列に共通インターフェースドライバ７に接続され、共通インターフェースドライバ７を通って互いにまたはアプリケーションプログラム４とデータのやり取りを行う。
【００６１】
共通インターフェースドライバ７は、データ圧縮、暗号化、複合化等をはじめとする処理行う機能を備えてことによって、アプリケーションプログラム４から要求されたときにこれらの機能を使ってデバイス６間またはアプリケーションプログラム４とデバイス６との間のデータ送受信を高速に行う。
【００６２】
その他に、共通インターフェースドライバ７は受信したデータの時間を表すタイムスタンプ機能を備えることによって、デバイス６から受け取ったデータ等にタイムスタンプを押すことができる。このタイムスタンプ機能を使えば、デバイスから入力されるデータの入力時間に関する情報を正確把握することができる。特に、ユーザのキー入力等の入力特徴を用いて個人認証を行うなどの入力時間がとても重要になる場合は、より正確な時間を把握できるようになる。
【００６３】
（共通インターフェースドライバの実施の形態１）
カーネルモード８で動作する共通インターフェースドライバ７を用いたファイルへのアクセス制御の実施の形態１を説明する。図３には、電子計算機１１のハードディスク３４に記憶されているファイルへアクセスしたとき、このアクセスを制御する形態を図示している。図４には、このアクセス制御の流れを示すフローチャートを図示している。
【００６４】
電子計算機１１で動いているアプリケーションプログラム４からハードディスク３４に記憶されているファイルへアクセスしようとするときは、アプリケーションプログラム４はWindowsが標準で備えているインターフェースを通してファイルへのアクセス要求を出す。このとき、アプリケーションプログラム４は、共通インターフェースドライバ７を経由して、ハードディスク３４とのデータのやりとりを行われる。
【００６５】
共通インターフェースドライバ７は、アプリケーションインターフェース部１７、フロー制御部２５、データ処理部１９、ＴＤＩクライアントドライバ部（TDI Client Driver部）２０、アクセスデータ管理部３０、暗号化／復号化部３１、ファイルシステム監視ドライバ部３２等から構成され、各部分の概略の機能は次の通りである。
【００６６】
ファイルシステム監視ドライバ部３２は、フロー制御部２５又はデータ処理部１９からの要求によってファイルシステムドライバ３３とデータの送受信を行うためのものである。アプリケーションインターフェース部１７は、アプリケーションプログラム４と共通インターフェースドライバ７間のインターフェースを提供し、アプリケーションプログラム４からのファイルアクセス要求などのコマンドを受け取り、その実行結果、またはフロー制御部２５から受信したその他のデータをアプリケーションプログラム４に送信するためのものである。
【００６７】
データ処理部１９は、ファイルの属性データの作成と、アクセスデータ管理部３０、暗号化／復号化部３１、ＴＤＩクライアントドライバ部２０への入出力を行うためのものである。
【００６８】
ＴＤＩクライアントドライバ部２０は、ネットワークドライバ２１と共通インターフェースドライバ７とのインターフェースを提供する。ネットワークドライバ２１は、プロトコルドライバ２２と、NDIS（Network Driver Interface Specification）ドライバ２３から構成され、ネットワークカード１６を制御し、ネットワーク２６へデータを伝送するときの接続確立とプロトコルの制御を行う。
【００６９】
プロトコルドライバ２２は、ネットワーク２６にデータを転送する際の通信プロトコルを制御するものである。NDISドライバ２３は、プロトコルドライバ２２とネットワークカード１６とのインターフェースを提供するものである。ＴＤＩクライアントドライバ部２０は、パケット化されたデータをデータ処理部１９から受け取ってプロトコルドライバ２２に出力する。
【００７０】
フロー制御部２５は、アプリケーションインターフェース部１７を介して受け取ったアプリケーションプログラム４からの命令などを解析して、データ処理部１９、ファイルシステム監視ドライバ部３２などに指示を出して制御するためのものである。
【００７１】
アクセスデータ管理部３０は、ハードディスク３４などの補助記憶装置に格納されているファイルに関する情報が格納されているデータベース３５を参照・登録・制御し管理するためのものである。詳しくは、ファイルへのアクセスのログ、制御条件、ファイル属性などのデータをデータベース３５へ登録・削除し、参照する。
【００７２】
ファイルシステム監視ドライバ部３２は、ハードディスク３４等の補助記憶装置に格納されているファイルへのアクセスを提供するファイルシステムドライバ３３とのインターフェースを提供するためのものである。
【００７３】
次に共通インターフェースドライバ７のデータの流れを図４のフローチャートを参照しながら説明する。
アプリケーションプログラム４がファイルへアクセスするとき、ファイルアクセス要求をWindows標準のインターフェースを通して出力する（Ｓ１００、Ｓ１０１）。このアクセス要求を共通インターフェースドライバ７のアプリケーションインターフェース部１７が受信する（Ｓ１０２）。そして、ファイルアクセス要求をフロー制御部２５へ送信する（Ｓ１０３）。
【００７４】
フロー制御部２５はこのファイルアクセス要求を受信し（Ｓ１０４）、解析する（Ｓ１０５）。この解析結果はデータ処理部１９へ送信する（Ｓ１０６）。データ処理部１９は解析結果を受信し（１０７）、ファイルへのアクセス情報を参照するためにファイル属性情報を作成してアクセスデータ管理部３０に送信する（Ｓ１０８）。アクセスデータ管理部３０はファイル属性情報を受信し（Ｓ１０９）、データベース３５内の制御条件データベース３６及びファイル属性データベース３７を参照する（Ｓ１１０）。
【００７５】
そして、タイムコードをデータ情報に追加して（Ｓ１１１）、参照結果をデータ処理部１９へ送信する（Ｓ１１２）。データ処理部１９は参照結果を受信し（Ｓ１１３）、参照結果が正常であるかの判定を行う（Ｓ１１４）。判定が正常のときは（Ｙｅｓの場合）、ファイルアクセス要求をファイルシステム監視ドライバ部３２へ送信する（Ｓ１１５）。ファイルシステム監視ドライバ部３２は、ファイルアクセス要求を受信し（Ｓ１１６）、ファイルアクセス要求をファイルシステムドライバ３３へ送信し（Ｓ１１７）、ファイルシステムドライバ３３からの返事を待機する（Ｓ１１８）。
【００７６】
ファイルシステムドライバ３３は、ハードディスク３４にアクセスしてファイル操作を行ってアクセスした結果をファイルシステム監視ドライバ部３２に送信する。ファイルシステム監視ドライバ部３２はアクセス結果を受信し（Ｓ１１９）、フロー制御部２５へ送信する（Ｓ１２０）。
【００７７】
フロー制御部２５は、アクセス結果を受信し（Ｓ１２１）、アプリケーションインターフェース部１７へ送信する（Ｓ１２２）。アプリケーションインターフェース部１７はアクセス結果を受信し（Ｓ１２３）、このアクセス結果をアプリケーションプログラム４へ送信する（Ｓ１２４）。アプリケーションプログラム４は、ファイルアクセス要求に対する返事を受信し、次の処理にかかる（Ｓ１３３）。
【００７８】
データ処理部１９での判定結果が正常ではない場合は（ステップ１１４のＮｏの場合）、データ処理部１９はアクセス要求を破棄し（Ｓ１２５）、アクセス要求を破棄した旨のアクセス要求破棄の通知をフロー制御部２５に送信する（Ｓ１２６）。そして、データ処理部１９はアクセス要求破棄の通知をデータ情報に追加して（Ｓ１２７）、異常としてアクセスデータ管理部３０へ送信する（Ｓ１２８）。
【００７９】
フロー制御部２５は、アクセス要求破棄の通知を示す異常を受信して（Ｓ１２９）、これをアプリケーションインターフェース部１７に送信する（Ｓ１３０）。アプリケーションインターフェース部１７はこの異常を受信し（Ｓ１３１）、アプリケーションプログラム４へ送信する（Ｓ１３２）。アプリケーションプログラム４は、ファイルアクセス要求に対する返事を受信し、次の処理にかかる（Ｓ１３３）。
【００８０】
（アクセスログデータベース３８の転送フロー）
次に、図５に図示したデータベース３５のバックアップについて記述する。
フロー制御部２５はアクセスログデータベース３８の保存量を監視し、所定の値以上になるとそのバックアップ作業又はネットワーク２６上のサーバへの転送を指示する。フロー制御部２５から指示が出され、作業が開始し（Ｓ１５０）、アクセスログの保存量を確認する（Ｓ１５１）。アクセスログデータベース３８の保存量が所定の値以上かを判定する（Ｓ１５２）。所定の保存量になってない場合は（Ｎｏの場合）、作業を中断する（Ｓ１５３）し、終了する（Ｓ１６３）。
【００８１】
アクセスログ保存量が所定の値以上になっている場合は（Ｙｅｓの場合）、データ処理部１９にアクセスログデータベース３８のデータ転送の指示をする（Ｓ１５４）。データ処理部１９は、データ転送指示を受信し（Ｓ１５５）、アクセスデータ管理部３０にデータ転送を要求する（Ｓ１５６）。アクセスデータ管理部３０はデータ転送の要求を受信し（Ｓ１５７）、アクセスログデータベース３８からデータを取得し、データ処理部１９へこのデータを転送する（Ｓ１５８）。データ処理部１９は、転送されてきたデータを受信し（Ｓ１５９）、ネットワーク２６への送信データを作成する（Ｓ１６０）。
【００８２】
ネットワーク２６への送信データを作成するときは、データ機密保持のために暗号化処理を行う必要があり場合は、暗号化／復号化部３１で暗号化処理を行う。暗号化されたデータは、ネットワーク２６へ送信するためにパケット化し送信データを作成する（Ｓ１６１）。送信データはＴＤＩクライアントドライバ部２０へ送られて、ＴＤＩクライアントドライバ部２０がネットワーク２６へ送信データを送信する（Ｓ１６２）。よって一連の作業が終了する（Ｓ１６３）。  
【００８３】
（ファイル属性データの例）
図６には、ファイル属性データベース３７の構成例を図示している。ファイル属性データベース３７は、ファイル名１０１、作成日時１０２、更新日時１０３、アクセス日時１０４、隠しファイル１０５、読み出し専用１０６、サイズ１０７、アクセス権限者１０８などの項目からなっている。ファイル名１０１は、ファイルの名前、ファイルの種類を表す拡張子も含めている。ファイル名１０１はパス付きであっても良い。
【００８４】
作成日時１０２、更新日時１０３、アクセス日時１０４はそれぞれファイルを作成した日時、ファイルを最後に更新した日時、ファイルにアクセスした最終日時である。ファイルを通常見えないようにするには隠しファイル１０５の項目、読み出し専用にするには読み出し専用１０６の項目をそれぞれ「ｙｅｓ」にする。そうではないときは「ｎｏ」である。サイズ１０７の項目はファイルのサイズをバイトで表したものである。アクセス権限者１０８はファイルへアクセスできるユーザの属性を表す。
【００８５】
例えば、ｏｐｅｎ１０９は誰でもアクセスでき、ｏｗｎｅｒ １１０は該システムに「ｏｗｎｅｒ」としてログインしたユーザだけがアクセスでき、Ａｄｍｉｎｉｓｔｒａｔｏｒ １１１はシステムの管理者である。また、Ｔａｒｏ／ｐｓｗｄ １１２のように特定のユーザ（Ｔａｒｏ）をパスワード（ｐｓｗｄ０１）付きで指定することが出来る。
【００８６】
（制御条件データベースの例）
図７には、制御条件データベース３６の構成例を２つ図示している。図７の表(ａ)の例では、ファイル名１０１、作成１１３、開く１１４、閉じる１１５、読み出す１１６、書き込む１１７等の項目がある。ファイル名１０１は、ファイルの名前であり、拡張子まで含まれており、ファイルのパスも含まれていると良い。それに続く作成１１３、開く１１４、閉じる１１５、読み出す１１６、書き込む１１７等の項目は、ファイルへアクセスする方法であり、それぞれファイルを作成する、開く、閉じる、読み出す、書き込むことを意味する。
【００８７】
予め、各項目に「０」が入っていれば、該項目に対応するアクセスはできないと決めておくことが出来る。１以上の数字の場合は、アクセスできるとすると、ユーザがアクセスするごとにそれを減算して書きかえることが出来る。このような作業は、データ処理部１９、アクセスデータ管理部３０が行うことが出来、アクセスにカウンタをつけて管理することができる。
【００８８】
例えば、「Ｃ：￥ｆｏｌｄｅｒ１￥ｆａｉｌｅｎａｍｅ０１．ａｂｃ」の場合は「書き込む１１７」項目に「４」の値があり、書き込みアクセスするごとに１つずつ減算していけば４回まで書き込みのアクセスが可能である。４回アクセスした後は、値が「０」となり、書き込みが出来なくなる。その他の項目も同様である。このようにすると、ファイルへのアクセスをそのアクセスの種類・方法によってカウンタ付きの管理および制御が自由に出来る。
【００８９】
図７の表（ｂ）の２つ目の例では、ユーザ１１８の項目をさらに設けて、上述のカウンタ付きのアクセス制御をユーザごとに行っている。例えば、「Ｔａｒｏ」等のようにユーザごとにファイルのアクセス制御を行っている。また、アクセスできる期間を表す「期間１１９」、アクセスできる時間帯を表す「時間帯１２０」等のような項目も追加されて管理しても良い。期間１１９は年月日で始まりと終わりを、時間帯１２０は２４時間で始まりと終わり表示し互いに「：」で区切っている。
【００９０】
この場合は、あるユーザ１１８が登録されたファイル名１０１のファイルに、登録された特定の期間１１９の時間帯１２０にのみ決められた方法でのみアクセスできるようになる。  例えば、「Ｃ：￥ｆｏｌｄｅｒ１￥ｆａｉｌｅｎａｍｅ０１．ａｂｃ」には、Ｔａｒｏ、Ｈａｎａｋｏ、Ｅｖｅｒｙｏｎｅが読み出し出来るが（値が１以上である。）、アクセスできる時間帯１２０がとそれぞれ９時３０分から１７時３０分まで、１４時から１７時まで、８時から２２時までとなっている。
【００９１】
（アクセスログデータベース例）
図８には、ファイルにアクセスしたアクセスログを記録したアクセスログデータベース３８の構成例を図示している。アクセスログデータベース３８は、ユーザ１１８、ファイル名１０１、作成１１３、開く１１４、閉じる１１５、読み出す１１６、書き込む１１７、タイムコード１２１などの項目からなっている。各ユーザ１１８はアクセスしたユーザ名で、ファイル名１０１はユーザ１１８がアクセスしたファイルの名前である。ファイル名１０１は、ファイルの拡張子とファイルの保存先を示すパスがついている方が望ましい。
【００９２】
その他の作成１１３、開く１１４、閉じる１１５、読み出す１１６、書き込む１１７等の項目はアクセスの方法によるもので、値が「１」になったものはそのときのアクセスを示す。タイムコード１２１はアクセスした日時を表す。例えば、アクセスログデータベース３８を見て、２００１年１２月１０日の１８時６分０秒に「Ｃ：￥ｆｏｌｄｅｒ１￥ｆａｉｌｅｎａｍｅ０１.ａｂｃ」を作成（作成１１３の値が「１」である。）し、２００２年１月５日の１時６分３０秒に該ファイルを開いている（開く１１４の値が「１」である。）と分かる。そのときのユーザ１１８は「Ｔａｒｏ」である。
【００９３】
このアクセスログデータベース３８は、フロー制御部２５の指示でデータ処理部１９において作成されて、アクセスデータ管理部３０によってデータベース３５に書きこまれる。アクセスログデータベース３８のデータが所定の保存量以上になると、ネットワーク２６上のサーバ又は電子計算機に送られて保存される。また、ローカルのハードディスク３４等の補助記憶装置に格納してバックアップをとっても良い。
【００９４】
（実施の形態２）
図９には、実施の形態２の概念図を図示している。本実施の形態２は実施の形態１と基本的に同じものであり、この説明では実施の形態１と異なる部分だけを記述する。電子計算機１１がネットワーク２６を介してログサーバ２８と接続されている。ログサーバ２８は、ログデータベース（以下、ログデータベースとする。）２８を有し、電子計算機１１から送信されてくるアクセスログが保存されるものである。
【００９５】
本実施の形態２では、アプリケーションプログラム４からのアクセス命令はデータ処理部１９によって、ネットワークへの送信データが作成されてＴＤＩクライアントドライバ部２０によって直接ログサーバ２８へ送信される。よって、データベース３５には、制御条件データベース３６、ファイル属性データベース３７から構成される。アクセスデータ管理部は、制御条件データベース３６とファイル属性データベース３７の参照・変更・更新を行う。
【００９６】
データ処理部１９はステップＳ１１４の参照結果の判定を行い（図４のフローチャートを参照）、判定結果が正常である場合は、アクセス要求をファイルシステム監視ドライバ部３２へ送信し（Ｓ１１５）、アクセスログを作成して、ネットワーク２６上のログサーバ２８に送信する。この送信手順は、図１０のフローチャートを参照しながら説明する。
【００９７】
参照結果が正常であるとき（Ｓ１７０）、データ処理部１９はアクセスログを作成する（Ｓ１７１）。そして、ネットワーク２６への送信データを作成する（Ｓ１７２）。作成された送信データをＴＤＩクライアントドライバ部２０に送信し（Ｓ１７３）、ＴＤＩクライアントドライバ部２０は送信データを受け取り、ネットワークドライバ２１によってネットワークへ送信する（Ｓ１７４）。
【００９８】
ログサーバ２８は、この送信データを受け取り、送信データからアクセスログを取り出して記憶装置に格納されているログデータベース２９に追加する。よって、ログデータベース２９を参照することにより、電子計算機１１のハードディスク３４に格納されているファイルへのアクセスを把握することできる。
【００９９】
ログデータベース２９の構造は、実施の形態１に示したアクセスログデータベース３８と基本的に同じであるためその説明は省略する。しかし、制御条件データベース３６、ファイル属性データベース３７、ログデータベース２９はあくまで一つの例であり、業務用途、ファイルシステムの特徴などにより、又は、システムの設計上の特徴により構造は異なる。
【０１００】
また、電子計算機１１がキーボード・マウスなどの入力装置を備えていて、これらの入力装置からユーザが入力するときの癖を利用してユーザ認証を行い、このユーザ認証を本実施の形態２と組み合わせるシステム構築できる。この場合は、不正アクセス、特にハードディスクのファイルに対する不正アクセス、およびそれに対する制御ができる。
【０１０１】
（実施の形態３）
本実施の形態３は、前述の実施の形態１又は２と同様のものであり、詳細な説明は省略し、異なる部分の説明だけを記述する。本実施の形態３では、データ処理部１９は、ファイルシステムのファイルを削除するような命令を発する機能を有する。この機能を利用し、ハードディスク３４のファイルを削除する手順を図１１のフローチャートによって説明する。
【０１０２】
ファイルシステムのファイルへアクセス後、データ処理部１９の指示でアクセスデータ管理部３０は制御条件データベース３６の更新を行う（Ｓ１８０）。このとき、更新した項目の値を確認する（Ｓ１８１）。値が「０」になった場合は、データ処理部１９に通知する（Ｓ１８２）。データ処理部１９は値「０」の通知を受信して、値が「０」になったファイルを削除するようファイル削除命令を出力する（Ｓ１８３）。
【０１０３】
この命令はファイルシステム監視ドライバ部３２が受信し（Ｓ１８４）、ファイルシステムドライバ３３に送信する（１８５）。よって、ファイルシステムドライバ３３はファイルの削除を行う。このように、制御条件データベース３６の値を設定する特定の値に設定することによって、ファイルシステムのファイルを削除したりすることができる。
【０１０４】
制御条件データベース３６のファイルの値が「１」から「０」になり、この「０」の値によってデータ処理部１９がファイル削除の命令を出している。これは、ファイルを１回だけアクセスして削除することになり、さまざまな場面で応用できる。例えば、ネットワークからダウンロードしたファイルを一回だけ実行後に消滅するように設定できる。
【０１０５】
（実施の形態４）
図１６は、本発明の実施の形態４の概念図を図示している。実施の形態４は、実施の形態１から３と基本的に同様であり、その詳細な説明は省略し、異なる部分のみの説明を以下に記述する。
【０１０６】
実施の形態４では、共通インターフェースドライバ７が、電子計算機１１のマウス２７とキーボード１５などの入力装置を制限したり、この入力装置から入力される操作を制限・制御したりする機能を有する。これらの機能は、共通インターフェースドライバ７のマウス監視ドライバ部３９、キーボード監視ドライバ部４１によって行われる。
【０１０７】
マウス２７やキーボード１５が操作されるとその入力データは、それぞれマウスドライバ４０、キーボードドライバ２４によってマウス監視ドライバ部３９、キーボード監視ドライバ部４１に送信される。そして、入力データは、さらにマウス監視ドライバ部３９、キーボード監視ドライバ部４１からデータ処理部１９又はフロー制御部２５へ送信される。
【０１０８】
入力装置からの入力データは、マウス監視ドライバ部３９又はキーボード監視ドライバ部４１からデータ処理部１９に送られて、フロー制御部２５を通ってアプリケーションインターフェース部１７に送信される。そして、入力データはアプリケーションインターフェース部１７からアプリケーションプログラム４へ提供される。
【０１０９】
電子計算機１１を操作しているユーザは、特定のファイルを開いたり、コピー、プリントしたりすることがあり、特に、キーボード１５を操作してこれらの操作を行うことが出来る。システム管理者又は用途によって、コピーさせないように、又はプリントさせないようにするには、このキーボード１５等の入力装置から入力を制限する必要がある。
本実施の形態４の動作を図１７のフローチャートに示している。以下、フローチャートを説明する。
【０１１０】
データ処理部１９は、入力装置から入力データを受信し（Ｓ２００）、入力データを解析する（２０１）。ここで、キーボード１５からのデータかを判定し（Ｓ２０２）、キーボード１５からのデータの場合は、その入力データが入力禁止キーからのデータかを判定し（２０４）、入力禁止キーからのデータである場合は入力データを破棄する（Ｓ２０７）。
【０１１１】
入力禁止キーからのデータではない場合は、入力データをフロー制御部２５へ送信する（Ｓ２０８）。フロー制御部２５は、入力データを受信し（Ｓ２０９）、アプリケーションインターフェース部１７へ送信する（Ｓ２１０）。アプリケーションインターフェース部１７は、入力データを受信し（Ｓ２１１）、アプリケーションプログラム４へ送信する（Ｓ２１２）。そして、入力装置から入力データが入力されるまで待機する（Ｓ２１３）。入力データがある場合はステップＳ２００からの処理が繰り返して行われる。
【０１１２】
ステップＳ２０２の判定がキーボード１５からのデータではない判定の場合は（Ｎｏ判定）、入力データがマウス２７からのデータかを判定する（Ｓ２０３）。マウス２７からのデータの場合は、マウス２７の禁止操作のデータを確認する（Ｓ２０５）。禁止操作の場合はステップ２０７へと進む（上述のＳ２０７を参照）。
【０１１３】
マウス２７からの禁止操作ではないと判定された場合は（Ｓ２０５）は、ステップＳ２０８へと進む。ステップＳ２０３の判定で入力データはマウス２７からのデータではないと判定された場合は、入力データを破棄し（Ｓ２０６）。データ処理部１９は、ステップＳ２０６、Ｓ２０７で入力データを破棄した場合は次のデータ入力されるまで待機する（Ｓ２１３）。
【０１１４】
データ処理部１９は、入力装置から入力データを受け取ったときに、この入力データをどの入力装置から入力されているかの判定を行っている（Ｓ２０２、Ｓ２０３）。そして、図示してないが、入力データが入力された入力装置に対応する制御条件を引き出す。または、入力装置の制御条件は予めデータ処理部１９又はフロー制御部２５に設定されていても良い。
【０１１５】
又は、アプリケーションプログラム４から特定のファイルに対するアクセスがあった際に、そのファイルに対する制御条件の中にデータベース３５で設定しても良い。この場合は、データ処理部１９はデータベース３５を参照するときに、入力装置の制御条件があるときは、入力装置からの入力データをチェックする動作モードに入る。
このように設定すると、ユーザがあるファイルを開いたりするとき、そのファイルを読むだけで、コピー、印刷、編集などの作業ができないように設定することができる。
【０１１６】
（実施の形態５）
図１８には、実施の形態５の概要を図示している。実施の形態５のシステムは、少なくともクライアント２０１とサーバ２０２とから構成される。クライアント２０１とサーバ２０２はネットワーク２０３によって互いに接続され、データの送受信を行う。ネットワーク２０３はクライアント２０１とサーバ２０２がデータの送受信を行うことが可能なＬＡＮ又はインターネット等の、有線または無線のどのようなネットワークであっても良い。
【０１１７】
クライアント２０１は、少なくともキーボード１５とＬＡＮボード１６を有する電子計算機である。クライアント２０１には共通インターフェースドライバ７がインストールされている。また、データベース３５（図３を参照）を有しており、共通インターフェースドライバ７は実施の形態１から４の共通インターフェースドライバ７と同様の機能を有するためここでは詳記しない。共通インターフェースドライバ７はユーザがキーボード１５から入力するデータを取得してサーバ２０２へ送信する機能を有する。詳しくは、ユーザが押下又は離反したキーの識別データとその時間データを含む入力データを取得してサーバ２０２へ送信する。
【０１１８】
サーバ２０２には、ユーザ認証プログラム２０４がインストールされている。サーバ２０２は、ユーザがキーボード１５から入力するときの入力特徴を示すデータからなるユーザデータベース２０５を有する。ユーザ認証プログラム２０４は、クライアント２０１から送信されてくる入力データを受信し、その入力データをユーザデータベース２０５のデータと比較しながら解析を行ってユーザを特定する。
【０１１９】
また、サーバ２０２は、制御データベース２１１を有する。制御データベース２１１には、ユーザがアクセスできる範囲を指定したデータが格納されている。たとえば、制御データベース２１１は、図７に図示した制御条件データベースの制御条件であっても良い。
【０１２０】
ユーザ認証プログラム２０４はユーザの特定を行い、制御プログラム２１０はその結果を用いて制御データベース２１０を参照し、ユーザに関するアクセス範囲のデータを取得してクライアント２０１へ送信する。クライアント２０１がこのアクセス範囲のデータを受信し、制御条件データベース３６に格納し、ファイルシステムへのアクセス、入力装置からの入力を制御できる。このクライアントでの、上述した実施の形態１から４に詳細に説明している。そのため詳しい説明は省略し、サーバ２０２での動作を中心に説明する。
【０１２１】
〔ＬＶＱの概要〕
ユーザ認証プログラム２０４は、入力データを解析するとき、ニューラルネットワーク手法を用いてデータ解析を行う。例えば、学習ベクトル量子化アルゴリズム（Learning Vector Quantization、以下は略してＬＶＱという。）を用いている。ＬＶＱはT.Kohonenによって開発された手法であり、ＬＶＱ１からＬＶＱ３までと複数のバージョンがある。
【０１２２】
本実施の形態５ではＬＶＱ１を用いた。その他のＬＶＱアルゴリズムやニューラルネットワーク手法のアルゴリズムを用いても良い。ＬＶＱについての詳細な説明は、T.Kohonen著「“Self-Organizing Maps”(Springer Series in Information Sciences, 30, 2000; Springer Verlag)」などに記載されている公知技術であるのでここでは詳記しない。
【０１２３】
初期状態に与えられる標本データ（以下、教師データという。）を複数の特徴ベクトルで特徴付けられるクラスに分けて量子化し、入力ベクトルと各特徴ベクトルとの距離を計算する。この距離がもっとも近づいた特徴ベクトルが属するクラスを入力ベクトルが属するクラスと判定する方法である。
【０１２４】
ＬＶＱ１は次式によって表現され、学習は次のように行われる。初期状態では、クラスを特徴付ける複数の特徴ベクトルが与えられている。入力された教師データと全ての特徴ベクトルとの距離を計算し、距離が一番近い特徴ベクトルの属するクラスを教師データの属するクラスと推定することができる。
【０１２５】
指定個数の特徴ベクトルをクラスごとに生成して、乱数を用いてこれを初期化し学習を開始する。このときの乱数の値は各クラスのベクトルデータの最大・最小値の間である。下記の式１にしたがって特徴ベクトルを更新して学習を行う。この学習を所定回数行うことによって、教師データに対して最適な特徴ベクトルを得る。
【０１２６】
ｍｉ、ｍｊは教師データｘに対してもっとも近い距離にある特徴ベクトルである。ｍｉは教師データｘと異なるクラスに属する場合、ｍｊは教師データｘと同じクラスに属する場合である。σ（ｔ）は係数で、０から１の値を取る。
ｍｉ（ｔ＋１）＝ｍｉ（ｔ）−σ（ｔ）［ｘ（ｔ）−ｍｉ（ｔ）］
ｍｊ（ｔ＋１）＝ｍｊ（ｔ）＋σ（ｔ）［ｘ（ｔ）−ｍｊ（ｔ）］…（式１）
ｍｋ（ｔ＋１）＝ｍｋ（ｔ）  ｆｏｒ  ｋ≠ｉ，ｊ
【０１２７】
〔個人特徴〕
本実施の形態５で、ユーザの入力特徴はユーザが特定のキーを押下する時間、そのキーを離反する時間を用いて次のように表す。キーを押下するときの押下時間、押下したキーを離反するときの離反時間を用いる。ユーザがタイピングするキーはその前後にタイピングしたキーとの相対関係によってユーザの入力特徴になる。
【０１２８】
図１９には、その例を図示している。ユーザの入力特徴を示すデータとして次の種類の時間を用いている。図中の横軸は時間軸である。下向きの大きな矢印でキーを押下した動作の時間を示している。同様に、上向きの大きな矢印ではキーを離反した動作の時間を示している。この二つの矢印が一組になって一つのキーを押下し離反してタイピングする動作を表す。共通インターフェースドライバ７は、ユーザがキーボード１５から入力するとき各タイピングしたキーを識別するキーコード、キーの押下時間、離反時間を取得し、入力データとしてサーバ２０２へ送信する。
【０１２９】
図１９のグラフ（ａ）には、キー１からキー３までをタイピングする例を示している。t１、t２、ｔ３はキー１からキー２の時間的な相互関係を示している。t１はキー１の押下時間からキー２の押下時間までの時間、ｔ２はキー１の離反時間からキー２の押下時間までの時間、ｔ３はキー１の離反時間からキー２の離反時間までの時間をそれぞれ表している。
【０１３０】
ｔ１’、ｔ２’、ｔ３’はｔ１、ｔ２、ｔ３の場合と同様にキー２とキー３との時間的な相互関係をそれぞれ表している。ｔ２とｔ２’はキー1の離反時間、キー２の押下時間、又はキー２の離反時間、キー３の押下時間の相対関係によってマイナスの値をとることが可能である。
【０１３１】
図１９のグラフ（ｂ）には、キー１からキー３までをタイピングする他の例を示している。t４、t５、ｔ４’、ｔ５’、ｔ４’’はキー１からキー３の時間的な相互関係を示している。ｔ４はキー１の押下時間からキー１の離反時間までの時間、ｔ５はキー１の離反時間からキー２の押下時間までの時間である。ｔ４’はキー２の押下時間からキー２の離反時間までの時間、ｔ５’はキー２の離反時間からキー３の押下時間までの時間で、ｔ４’’はキー３の押下時間からキー３の離反時間までの時間である。
【０１３２】
ｔ５とｔ５’はキー1の離反時間、キー２の押下時間、又はキー２の離反時間、キー３の押下時間の相対関係によってマイナスの値をとることが可能である。
【０１３３】
〔クライアントでの処理〕
本実施の形態６では、クライアント２０１ではユーザがキーボード１５から入力するときの入力データをとってサーバ２０２へ送信する。クライアント２０１では、カーネルモードで動作する共通インターフェースドライバ７でキーに関するデータを取得している。共通インターフェースドライバ７の動作については前記の実施の形態１から５においてで詳細に説明しているため説明を省略する。
【０１３４】
図１９には、共通インターフェースドライバ７で取得しサーバ２０２へ送信する入力データの例を図示している。入力データは、「番号」２１０、「時間」２１１、「IP」２１２、「キーコード」２１３、「押／離」２１４の欄からなっている。「番号」２１０はキーのデータを取得した順番で、「時間」２１１はキーのデータを取得したときの時間である。「時間」２１１は実時間の１００ナノ秒単位で表示されている。
【０１３５】
「ＩＰ」２１２はクライアント２０１を識別するためのネットワーク上のアドレスである。「キーコード」２１３はキーのコード番号である。「キーコード」２１３は国又は国際機関で定まられたキーコード、又はキーボードの物理的なコード番号であっても良い。「押／離」２１４はキーを押下した又は離反したか示す欄で、「１」は押下、「０」は離反に対応する。
【０１３６】
共通インターフェースドライバ７は、データ取込部１８によってキーのデータを取得し、データ処理部１９でキーのデータに時間データを付け加えるなどとして入力データを作成する（図３を参照）。作成した入力データはＴＤＩクライアントドライバ部２０によって、ＬＡＮボードドライバ２１を経てサーバ２０２へ送信される。
【０１３７】
〔サーバでの処理〕
サーバ２０２では、クライアント２０１から送信されてくる入力データを受信して入力データファイル２０６としてハードディスクやメモリなどの記憶媒体に保存する。サーバ２０２では、予め特定ユーザの入力するデータを取得してユーザデータベース２０５を作成している。ユーザ認証プログラム２０４、入力データファイル２０６のデータをユーザデータベース２０５のデータと比較してユーザの識別を行う。
【０１３８】
ユーザ認証プログラム２０４は学習部２０８と識別部２０９とから構成される。学習部２０８はユーザデータベース２０５から特徴ベクトルを生成するためのプログラムである。識別部２０９は、入力データを特徴ベクトルと比較してユーザの識別を行うためのプログラムである。以下、各部の詳細な働きを示す。
【０１３９】
〔学習部２０８〕
学習部２０８では、教師データを読み込んで特徴ベクトルを求める。読み込みした教師データからは、例えば図１９に例示したような入力されたキー、その押下、離反の時間データ、そのキーの前後に入力されたキーと関連する時間データを求めて特徴データとする。図１９に例示したｔ１からｔ３又はｔ４、ｔ５はその一例である。読み込んだすべての教師データに対する特徴データを求めて、全特徴データの特徴を示す特徴ベクトルを求める。
【０１４０】
図２１のフローチャートに学習部２０８の動作手順を図示している。サーバ２０２のユーザ認証プログラム２０４を起動させると、学習部２０８が実行される（Ｓ４００）。保存されているユーザデータベース２０５から教師データを読み込む（Ｓ４０１）。ユーザデータベース２０５は、テキスト、バイナリ等の形式のファイルとして保存されている。指定された数の教師データを読み終わるまで次の教師データを読み込みする（Ｓ４０２→Ｓ４０１）。
【０１４１】
読込まれた教師データが正しく読み込まれたかを判定する（Ｓ４０３）。正確に読込むことができなかった場合は、学習部２０８のプログラムを強制終了する（Ｓ４０４）。正確に読込まれた場合は、特徴ベクトルを初期化する（４０５）。特徴ベクトルの初期化では指定された数の特徴ベクトルを生成し、乱数を用いて初期化する。乱数は各クラスのベクトルの最大値と最小値との間の値を取る。
【０１４２】
そして、学習を開始する。学習回数の初期化（Ｌ＝０）を行い（Ｓ４０６）、ＬＶＱ学習を所定回数ｎだけ行う（Ｓ４０７〜Ｓ４０９）。ＬＶＱ学習では式１で表されるように特徴ベクトルを更新する。σは０．１と固定し学習を行っている。
【０１４３】
学習を所定回数ｎだけ行った後、学習した結果である特徴ベクトルを書き出して（Ｓ４１０）、学習部２０８が終了する（Ｓ４１１）。特徴ベクトルはテキスト又はバイナリ形式で出力されてサーバ４０２の記憶装置に記憶される。
【０１４４】
〔識別部２０９〕
学習部２０８のプログラムが実行されて、特徴ベクトルを出力して終了すると、識別部２０９のプログラムが実行される。図２２のフローチャートには、識別部２０９のプログラムの手順を図示している。識別部２０９のプログラムが開始すると（Ｓ４２０）、学習部２０８で出力された特徴ベクトルを読み込む（Ｓ４２１）。特徴ベクトルを読み込んで、検証するユーザの入力データを読み込む（Ｓ４２２）。
【０１４５】
入力データはクライアント２０１から送信されてサーバ２０２に入力データファイル２０６として保存されている。入力データを読み終わると、識別処理を行う（Ｓ４２３）。識別処理が終了すると識別結果を出力して（Ｓ４２４）、次の入力データを読み込み識別する（Ｓ４２５→Ｓ４２２）。次の入力データが無い又は終了する指示がある場合はプログラムを終了する（Ｓ４２６）。
【０１４６】
〔識別結果〕
識別部２０９のプログラムで出力される識別結果はサーバ２０２の記憶装置にテキスト又はバイナリ形式のファイルとして記憶される。図２３には、識別結果の例を図示している。識別結果を「読み込みファイル」２２０の行と「識別結果」２２１の列とから成る表で図示している。「読み込みファイル」２２０の行と「識別結果」２２１列はそれぞれ「Ａ」、「Ｂ」…「Ｇ」の各行、各列から構成されている。
【０１４７】
「読み込みファイル」２２０の各行は入力データを示し、「識別結果」２２１の各列は教師データの各特徴ベクトルを示す。各行と各列に対する交差するセルは、入力データが各特徴ベクトルに属する割合をパーセントで示している。識別部２０９のプログラムは、入力データである「読み込みファイルＡ」２２２を読み込み、この入力データがどの特徴ベクトルに属するかを求めて、結果をパーセントで出力している。
【０１４８】
この表からは、クライアント２０１のキーボードから入力しているユーザが誰であるかを判断することができる。「読み込みファイルＡ」２２２のユーザは、「特徴ベクトルＡ」２２４を有するユーザである可能性は「７５％」、「特徴ベクトルＢ」２２５を有するユーザである可能性は「６％」である。「読み込みファイルＢ」２２３のユーザは、「特徴ベクトルＡ」２２４を有するユーザである可能性は「０％」、「特徴ベクトルＢ」２２５を有するユーザである可能性は「１００％」である。
【０１４９】
このように、各ユーザの個人特徴によって本人特定は「１００％」のものもあれば、他のユーザの特徴と似ているため「7０％」から「８０％」程度もある。
【０１５０】
〔制御プログラム〕
サーバ２０２は、制御プログラム２１０を有する。この制御プログラム２１０は、ユーザ認証プログラム２０４でユーザ認証した結果を用いてクライアント２０１を利用するユーザのアクセス権限、アクセスできる範囲などを制御データベース２１１から取得してクライアント２０１へ送信するためのプログラムである。
【０１５１】
制御プログラム２１０は、識別部２０９から出力される識別結果を受信して、この識別結果のユーザに関するデータを制御データベース２１１から取得する。制御プログラム２１０は、制御データベース２１１から取得したデータをクライアント２０１へ送信する。
【０１５２】
図２４には、制御データベース２１１の例を図示している。制御データベース２１１は図７の制御条件データベース３６と比べクライアント１２２が追加されている。その他の同一名前の項目である１０１、１１３から１２０は実施の形態１で説明したファイルへのアクセスの制御である。クライアント１２２はユーザが利用しているクライアント２０１を示すもので、ネットワーク上の識別アドレスで表している。
【０１５３】
制御データベース２１１のクライント１２２の列にはクライアント２０１の識別アドレスと、このクライアント２０１を利用できる正当なユーザの名前がユーザ１１８にあらかじめ格納されている。
【０１５４】
制御プログラム２１０は、識別部２０９の識別結果を受信して、制御データベース２１１を参照して識別結果のユーザが正当なユーザであるかを検索して結果データをクライアント２０１へ送信する。結果データには、ユーザの名前、そのアクセスできる範囲、ファイルへのアクセス権限などのデータが含まれる。正当なユーザではなかった場合は、クライアント２０１を利用しているユーザの操作を停止する命令を含む結果データをクライアント２０１へ送信する。
【０１５５】
クライアント２０１はサーバ２０２からのデータを受信してその制御条件データベース３６を更新する。よって、クライアント２０１をどのユーザが利用しているかを常時識別でき、そのユーザの利用状況に応じた制御、または不正アクセス者である場合はそのアクセスを停止することができるようになった。制御プログラム２１０とユーザ認証プログラム２０４は同一のプログラムを構成し、連動して動作するプログラムであっても良い。
【０１５６】
サーバ２０２での個人認証の結果不正アクセス者、又はユーザを認証できなかった場合、サーバ２０２からの命令でクライアント２０１のシステムをロックすることができる。このシステムロックの解除はサーバ２０２からの命令又は、クライアント２０１のシステム管理者によるアクセスで行うことができる。更に、ロックされた状態でクライアント２０１の電源を切り、再度電源を入れるとき、クライアント２０１の動作環境が電源を切る直前の状態が保持されて復帰させると良い。このとき、動作環境、動作環境の各種パラメータがクライアント２０１のハードディスク、メモリなどの記憶装置に保存される。
【産業上の利用可能性】
【０１５７】
本発明は、カーネルモードで入力装置からファイルシステムへのアクセスを制御し、ユーザごとにアクセス範囲、権限を設定している。また、電子計算機を利用するユーザの認証を行い、ユーザのアクセス範囲、権限に基づいてファイルシステムへのアクセスをカーネルモードで制御している。不正アクセス、未登録のユーザなどの場はシステムロックまで行う。ユーザの認証はユーザが電子計算機に最初にアクセスするときに、又は電子計算機を利用するときに連続的に行う。よって、セキュリティ保護関連の分野、例えば、個人情報、国家機密情報、企業秘密などの管理システムに組み込んで利用すればより安全が高めることが可能である。
【図面の簡単な説明】
【０１５８】
【図１】図１は、本発明の実施の形態を示す概念図である。
【図２】図２は、本発明の実施の形態の動作を示すフローチャートである。
【図３】図３は、共通インターフェースドライバの構成図である。
【図４】図４は、図３の動作を示すフローチャートである。
【図５】図５は、アクセスログデータベースの転送手順を示すフローチャートである。
【図６】図６は、ファイル属性データベースの例である。
【図７】図７は、制御条件データベースの例１（ａ）、例２（ｂ）である。
【図８】図８は、アクセスログデータベースの例である。
【図９】図９は、本発明の実施の形態２の概念図である。
【図１０】図１０は、本発明の実施の形態２動作を示すフローチャートである。
【図１１】図１１は、本発明の実施の形態２動作を示すフローチャートである。
【図１２】図１２は、Windowsのアーキテクチャを示す図である。
【図１３】図１３は、従来のＯＳとデバイスドライバの概念図である。
【図１４】図１４は、従来のデバイスドライバの動作手順を示すフローチャートである。
【図１５】図１５は、ファイルシステムドライバの概念を示すである。
【図１６】図１６は、本発明の実施の形態４を示す概念図である。
【図１７】図１７は、本発明の実施の形態４の動作を示すフローチャートである。
【図１８】図１８は、実施の形態５の概要を示す図である。
【図１９】図１９は、実施の形態５のキーの読み取りの時間間隔を示す図である。
【図２０】図２０は、実施の形態５の入力データの例を示す図である。
【図２１】図２１は、実施の形態５の学習部のプログラムの例を示すフローチャートである。
【図２２】図２２は、実施の形態５の識別部のプログラムの例を示すフローチャートである。
【図２３】図２３は、実施の形態５の識別結果を示す例である。
【図２４】図２４は、制御データベースの例を示す図である。
【図１】
2008171433.tif 000003
【図２】
2008171433.tif 000004
【図３】
2008171433.tif 000005
【図４】
2008171433.tif 000006
【図５】
2008171433.tif 000007
【図６】
2008171433.tif 000008
【図７】
2008171433.tif 000009
【図８】
2008171433.tif 000010
【図９】
2008171433.tif 000011
【図１０】
2008171433.tif 000012
【図１１】
2008171433.tif 000013
【図１２】
2008171433.tif 000014
【図１３】
2008171433.tif 000015
【図１４】
2008171433.tif 000016
【図１５】
2008171433.tif 000017
【図１６】
2008171433.tif 000018
【図１７】
2008171433.tif 000019
【図１８】
2008171433.tif 000020
【図１９】
2008171433.tif 000021
【図２０】
2008171433.tif 000022
【図２１】
2008171433.tif 000023
【図２２】
2008171433.tif 000024
【図２３】
2008171433.tif 000025
【図２４】
2008171433.tif 000026