(57)【要約】本発明のネットワークによる電子計算機の入力装置の入力特徴を用いた個人認証方法、そのプログラム及びプログラムの記録媒体は、電子計算機利用者のキーボート等の入力装置の操作時間を正確なタイミングで抽出する。電子計算機（１）は、キーボード（１５）によってユーザが入力するとき、キーボード（１５）をユーザが操作する操作時間をＯＳ（３）の全ての命令を実行できる動作モードであるカーネルーモード（８）で取得し、ネットワーク（２６）によって個人認証サーバ（２８）へ伝送し、個人認証サーバ（２８）では、操作時間を分析して操作特徴を求め、操作特徴を個人認証サーバ（２８）のデータベース（２９）の個人情報と比較してユーザの個人認証を行う。
2003069492.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク網へ接続される第１のネットワークカード、及び入力装置を含む複数のデバイスが接続されていてＯＳによって動作する電子計算機と、
前記ネットワーク網へ接続されるための第２のネットワークカード、及び前記電子計算機のユーザの個人情報からなるデータベースを記憶した記憶手段を有するサーバと
からなるネットワークシステムにおいて、
前記電子計算機は、前記入力装置によってユーザが入力するとき、前記入力装置を前記ユーザが操作する操作時間を前記ＯＳの全ての命令を実行できる動作モードであるカーネルモードで取得し、
前記操作時間を含む入力情報を前記第１のネットワークカードによってサーバへ伝送し、
前記サーバは、入力情報を前記第２のネットワークカードによって受信し、分析して操作特徴を求め、
前記操作特徴を前記個人情報と比較して前記ユーザの個人認証を行う
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証方法。
【請求項２】
請求項１において、
前記入力装置はキーボードであり、
前記操作時間は、前記キーボードのあるキーを押下するときの第１時間情報、又は前記キー若しくは他のキーを押下後に離すときの第２時間情報を用いた時間情報である
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証方法。
【請求項３】
請求項１又は２において、
前記操作時間は、
前記キーボードのあるキーが押下されてからそのキーを離すまでの間隔である第１タイム、
前記キーボードのあるキーが押下されてから次のキーが押下されるまでの間隔である第２タイム、
前記キーボードのあるキーを離してから次のキーが押下されるまでの間隔である第３タイム、及び
前記キーボードのあるキーを離してから次のキーを離すまでの間隔である第４タイムの内少なくとも１つのタイムである
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証方法。
【請求項４】
請求項１において、
前記個人認証は、ニューラルネットワーク手法である学習ベクトル量子化法を用いる
ことを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証方法。
【請求項５】
請求項４において、
前記学習ベクトル量子化法は、
前記個人情報からなる教師データの特徴を示す特徴ベクトルを学習して求め、
前記学習は、
前記特徴ベクトルｍｉ、ｍｊが教師データｘに対してもっとも近い距離にあるとき、ｔは前記学習の回数、ｍｉは教師データｘと異なるクラスに属する場合、ｍｊは教師データｘと同じクラスに属する場合において、
2003069492.tif 000007
2003069492.tif 000008
式で前記特徴ベクトルを更新して行われ、
前記操作時間を含む入力データと前記特徴ベクトルとの距離を求め前記ユーザを識別する
ことを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証方法。
【請求項６】
請求項５において、
前記入力装置はキーボードであり、
前記操作時間は、
前記キーボードのあるキーが押下されてからそのキーを離すまでの時間である第１タイム、
前記キーボードのあるキーが押下されてから次のキーが押下されるまでの時間である第２タイム、
前記キーボードのあるキーを離してから次のキーが押下されるまでの時間である第３タイム、及び
前記キーボードのあるキーを離してから次のキーを離すまでの時間である第４タイムから選択される何れかの１以上のタイムである
ことを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証方法。
【請求項７】
ネットワーク網へ接続される第１のネットワークカード、及び入力装置を含む複数のデバイスが接続されていてＯＳによって動作する電子計算機と、
前記ネットワーク網へ接続されるための第２のネットワークカード、及び前記電子計算機を利用するユーザの個人情報からなるデータベースを記憶した記憶手段を有するサーバと
からなるネットワークシステムに前記ユーザの個人認証を実現させるための個人認証プログラムにおいて、
前記個人認証プログラムは、電子計算機用プログラムとサーバ用プログラムから構成され、
前記電子計算機用プログラムは、
前記電子計算機に、前記ユーザが前記入力装置によって入力するとき、前記入力装置を前記ユーザが操作する操作時間を前記ＯＳの全ての命令が実行できる動作モードであるカーネルモードで取得し、前記操作時間を含む入力データを用いて前記サーバへの送信データを作成し、前記第１のネットワークカードによって前記ネットワーク網へ前記送信データを送信するための取得機能、
を実現させるためのプログラムであり、
前記サーバ用プログラムは、
前記サーバに、前記第２のネットワークカードによって前記送信データを受信し、前記入力データを分析して前記ユーザの前記入力装置を操作する操作特徴を求めるための分析機能、及び
前記操作特徴を前記個人情報と比較して前記ユーザの個人認証を行うための認証機能を実現させるためのプログラムである
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラム。
【請求項８】
請求項７において、
前記取得機能は、
前記電子計算機で動作しているアプリケーションプログラムからの命令を受信し、この命令による命令実行結果を前記アプリケーションプログラムに通知するためのアプリケーションインターフェース機能と、
前記電子計算機が前記デバイスを制御するデバイスドライバを備えていて、前記デバイスドライバへアクセスして入力情報を取得するためのインターフェース機能と、
前記入力情報に前記アクセスした時間に関する情報を追加して前記操作時間を把握し、前記送信データを作成するためのデータ処理機能、
前記第１のネットワークカードへの前記送信データの送受信を行うためのネットワーク送受信機能、
前記サーバから受信データを受理して分析し、前記アプリケーションインターフェースへ送信又は前記サーバの命令を実行するためのフロー制御機能と
からなることを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラム。
【請求項９】
請求項８において、
前記データ処理機能は、
前記送信データを暗号化するための暗号化機能、及び
前記受信データを復号化するための復号化機能
を有する
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラム。
【請求項１０】
請求項８において、
前記フロー制御機能は、
前記受信データに前記ユーザが個人認証されなかったことを示す不認証データがある場合、前記取得機能を停止、一時停止、又は不認証の情報を前記電子計算機の管理者に通知する
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラム。
【請求項１１】
請求項７又は８において、
前記入力装置はキーボードであり、
前記分析機能は、
前記キーボードのあるキーが押下されてからそのキーを離すまでの間隔である第１タイム、
前記キーボードのあるキーが押下されてから次のキーが押下されるまでの間隔である第２タイム、
前記キーボードのあるキーを離してから次のキーが押下されるまでの間隔である第３タイム、及び
前記キーボードのあるキーを離してから次のキーを離すまでの間隔である第４タイムの内少なくとも１つのタイムを計算する
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラム。
【請求項１２】
請求項１１において、
前記操作時間は前記キーボードの機能キーを操作する操作時間である
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラム。
【請求項１３】
請求項７において、
前記個人認証機能はニューラルンネットワーク手法である学習ベクトル量子化法を用い、学習ステップと識別ステップとからなる
ことを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証プログラム。
【請求項１４】
請求項１３において、
前記学習ステップは、
前記個人情報を読み込む第１ステップと、
前記個人情報の特徴を表す特徴ベクトルを作成する第２ステップと、
前記特徴ベクトルを学習して最適な特徴ベクトルである最適特徴ベクトルを求める第３ステップと、
前記最適特徴ベクトルを出力する第４ステップと
からなることを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証プログラム。
【請求項１５】
請求項１３において、
前記第３ステップは、
前記個人情報ｘと前記特徴ベクトルとの距離を計算、最短距離の前記特徴ベクトルｍｉを計算する第５ステップと、
前記特徴ベクトルｍｉのクラスを求める第６ステップと、
前記第６ステップで求めたクラスが前記個人情報ｘのクラスと比較する第７ステップと
前記第７ステップの結果が同じクラスであるとき、前記特徴ベクトルを式
2003069492.tif 000009
で更新する第８ステップと、
前記第７ステップの結果が違うクラスであるとき、前記特徴ベクトルを式
2003069492.tif 000010
で更新する第９ステップと
前記ステップ５から９を所定回数繰り返して、結果を前記最適特徴ベクトルとして出力する第１０ステップと
からなることを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証プログラム。
【請求項１６】
請求項１３又は１４において、
前記識別ステップは、
前記学習ステップで作成された最適特徴ベクトルを読み込む第１１ステップと、
前記入力データを読み込みする第１２ステップと、
前記入力データと前記特徴ベクトルとの距離を計算する第１３ステップと、
前記第１３ステップの計算結果から最短距離の特徴ベクトルを特定する第１４ステップと、
前記第１４ステップの前記最短距離の特徴ベクトルのクラスを前記ユーザの識別としで出力する第１５ステップと
からなることを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証プログラム。
【請求項１７】
請求項７ないし１０の内から選択される１項において、
前記ネットワーク網はインターネットである
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラム。
【請求項１８】
ネットワーク網へ接続される第１のネットワークカード、及び入力装置を含む複数のデバイスが接続されていてＯＳによって動作する電子計算機と、
前記ネットワーク網へ接続されるための第２のネットワークカード、及び前記電子計算機を利用するユーザの個人情報からなるデータベースを記憶した記憶手段を有するサーバと
からなるネットワークシステムに前記ユーザの個人認証を実現させるための個人認証プログラムの記録媒体において、
前記個人認証プログラムは、電子計算機用プログラムとサーバ用プログラムから構成され、
前記電子計算機用プログラムは、
前記電子計算機に、前記ユーザが前記入力装置によって入力するとき、前記入力装置を前記ユーザが操作する操作時間を前記ＯＳの全ての命令が実行できる動作モードであるカーネルモードで取得し、前記操作時間を含む入力データを用いて前記サーバへの送信データを作成し、前記第１のネットワークカードによって前記ネットワーク網へ前記送信データを送信するための取得機能、
を実現させるためのプログラムであり、
前記サーバ用プログラムは、
前記サーバに、
前記第２のネットワークカードによって前記送信データを受信し、前記入力データを分析して前記ユーザの前記入力装置を操作する操作特徴を求めるための分析機能、及び
前記操作特徴を前記個人情報と比較して前記ユーザの個人認証を行うための認証機能を実現させるためのプログラムである
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項１９】
請求項１８において、
前記取得機能は、
前記電子計算機で動作しているアプリケーションプログラムからの命令を受信し、この命令による命令実行結果を前記アプリケーションプログラムに通知するためのアプリケーションインターフェース機能と、
前記電子計算機が前記デバイスを制御するデバイスドライバを備えていて、前記デバイスドライバへアクセスして入力情報を取得するためのインターフェース機能と、
前記入力情報に前記アクセスした時間に関する情報を追加して前記操作時間を把握し、前記送信データを作成するためのデータ処理機能、
前記第１のネットワークカードへの前記送信データの送受信を行うためのネットワーク送受信機能、
前記サーバから受信データを受理して分析し、前記アプリケーションインターフェースへ送信又は前記サーバの命令を実行するためのフロー制御機能と
からなることを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２０】
請求項１９において、
前記データ処理機能は、
前記送信データを暗号化するための暗号化機能、及び
前記受信データを復号化するための復号化機能
を有する
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２１】
請求項１９において、
前記フロー制御機能は、
前記受信データに前記ユーザが個人認証されなかったことを示す不認証データがある場合、前記取得機能を停止、一時停止、又は不認証の情報を前記電子計算機の管理者に通知する
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２２】
請求項１８又は１９において、
前記入力装置はキーボードであり、前記操作時間は、前記キーボードのキーを押下した時間の情報である押下データ、又は前記キーを離した時間の情報である離反データであり、
前記分析機能は、
前記キーボードのあるキーが押下されてからそのキーを離すまでの間隔である第１タイム、
前記キーボードのあるキーが押下されてから次のキーが押下されるまでの間隔である第２タイム、
前記キーボードのあるキーを離してから次のキーが押下されるまでの間隔である第３タイム、及び
前記キーボードのあるキーを離してから次のキーを離すまでの間隔である第４タイムの内少なくとも１つのタイムを計算する
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２３】
請求項２２において、
前記操作時間は前記キーボードの機能キーを操作する操作時間である
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２４】
請求項１８において、
前記個人認証機能はニューラルンネットワーク手法である学習ベクトル量子化法を用い、学習ステップと識別ステップとからなる
ことを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２５】
請求項２４において、
前記学習ステップは、
前記個人情報を読み込む第１ステップと、
前記個人情報の特徴を表す特徴ベクトルを作成する第２ステップと、
前記特徴ベクトルを学習して最適な特徴ベクトルである最適特徴ベクトルを求める第３ステップと、
前記最適特徴ベクトルを出力する第４ステップと
からなることを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２６】
請求項２４において、
前記第３ステップは、
前記個人情報ｘと前記特徴ベクトルとの距離を計算、最短距離の前記特徴ベクトルｍｉを計算する第５ステップと、
前記特徴ベクトルｍｉのクラスを求める第６ステップと、
前記第６ステップで求めたクラスが前記個人情報ｘのクラスと比較する第７ステップと
前記第７ステップの結果が同じクラスであるとき、前記特徴ベクトルを式
2003069492.tif 000011
で更新する第８ステップと、
前記第７ステップの結果が違うクラスであるとき、前記特徴ベクトルを式
2003069492.tif 000012
で更新する第９ステップと
前記ステップ５から９を所定回数繰り返して、結果を前記最適特徴ベクトルとして出力する第１０ステップと
からなることを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２７】
請求項２４又は２５において、
前記識別ステップは、
前記学習ステップで作成された最適特徴ベクトルを読み込む第１１ステップと、
前記入力データを読み込みする第１２ステップと、
前記入力データと前記特徴ベクトルとの距離を計算する第１３ステップと、
前記第１３ステップの計算結果から最短距離の特徴ベクトルを特定する第１４ステップと、
前記第１４ステップの前記最短距離の特徴ベクトルのクラスを前記ユーザの識別として出力する第１５ステップと
からなることを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２８】
請求項１８ないし２０の内から選択される１項において、
前記ネットワーク網はインターネットである
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【請求項２９】
請求項１８において、
前記データベースは、前記キーを識別するコード、前記キーを押下する又は離反するタイム、前記押下又は前記離反を示す識別を有し、
前記識別結果は、前記ユーザごとに結果ファイルを作成して、又は前記結果ファイルに追加されて記憶媒体に保存される
ことを特徴とする電子計算機の入力装置の入力特徴を用いた個人認証プログラムの記録媒体。
【発明の詳細な説明】
技術分野
本発明は、電子計算機のキーボード等の入力装置の入力特徴を用いたネットワークによる個人認証方法、そのプログラム及びプログラムの記録媒体に関する。更に詳しくは、例えば個人認証用のパスワード等を入力する際に、個人がキーボードのキーを操作する特徴・癖などを利用して個人認証を行うことができる、ネットワークによる入力装置の入力特徴を用いた個人認証方法、そのプログラム及びプログラムの記録媒体に関する。
背景技術
従来から、電子計算機などにアクセスするためには、予め決めたパスワードを入力して個人認証を行うパスワード認証方法（以下、方法１という。）がある。パスワードは、電子計算機に接続されているキーボードなどのデバイスから入力することが多い。このとき、パスワードはそれを構成する記号（文字、数字、記号）ごとに対応するキーボタンを押下して入力を行う。間違って入力しても、バックスペースなどの機能キーを利用して再度書き直しすることが可能である。
また、キーボードのキーを打つときの時間を認証要素の一つに取り入れたキーボードの入力特徴を用いたパスワード認証方法（以下、方法２という。）が知られている。この方法２では、キーボードのキーを押下し始める時間（タイム１）、キーを押下し終わる時間（タイム２）などを取り入れている。あるキーを押してから次のキーを押すまでの時間をユーザごとに事前に登録して、認証要素の一つにする。さらに、キーを押下しつづける時間（タイム３）、キーから指を離してから次のキーから離すまでの時間（タイム４）などを認証要素に加えているものも提案されている。
上記のようなパスワード認証は専用のプログラムを用意して行っている。この専用プログラムは、ユーザモード（後述の説明を参考）で動作し、ユーザがキーボードからアクセスしたタイムを取得している。正確には、ユーザがアクセスした入力デバイスを制御するデバイスドライバから、上記のタイム１、タイム２などの入力タイムに関する情報を取得している。次に、従来の電子計算機のデバイスドライバ、動作モード等について説明する。
電子計算機は、中央演算処理装置（ＣＰＵ）、記憶装置（メモリ、ハードディスク等）、入力装置（キーボード、マウス等）、出力装置（ディスプレイ等）、周辺機器（プリンタ、スキャナ等）へ接続するためのカードスロットなどの多くのハードウェア資源からなり、かつ記憶装置に記憶されているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）によってこれらのハードウェアが制御されて動作する。
電子計算機で動作する各種アプリケーションプログラムはＯＳ上で動作する。ＯＳは電子計算機の全ての動作を制御し、異なるハードウェア仕様の違いを吸収し、アプリケーションプログラムに共通の環境を提供するものである。つまり、ＯＳは、キーボード入力や画面出力といった入出力機能、ディスクやメモリの管理など、多くのアプリケーションプログラムから共通して利用される基本的な機能を提供し、電子計算機のシステム全体を管理するソフトウェアで、「基本ソフトウェア」とも呼ばれることがある。
電子計算機のハードウェアは複数のメーカによって生産されて、メーカによってその仕様が異なることがある。電子計算機を利用するプログラム開発者にとっては、このハードウェアの仕様の違いを意識しないで、アプリケーションプログラムの開発を行うことが望ましい。ハードウェアのこの仕様の違いはＯＳが吸収しアプリケーションプログラムに対して共通の環境を提供する。
アプリケーションプログラムの開発者は、ＯＳの提供する機能を利用することによって、開発の手間を省くことができ、アプリケーションプログラムの操作性を統一することができる。あるＯＳ向けに開発されたアプリケーションプログラムは、基本的にはそのＯＳが動作するどのような電子計算機でも利用できる。
ＯＳには、ＭＳ−ＤＯＳ（登録商標）、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ、ＦｒｅｅＢＳＤ（登録商標）などに代表される数多くの種類があり、企業や家庭の一般ユーザが利用するＯＳとして最もポピュラーなのはＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓシリーズである。ＤＴＰ業界やマルチメディア業界では、Ａｐｐｌｅ社のＭａｃ  ＯＳ（登録商標）が広く利用されている。企業のサーバや学術機関では各社のＵＮＩＸ系のＯＳや、無償配布されているＬｉｎｕｘやＦｒｅｅＢＳＤなどのＵＮＩＸ系のＯＳが使われることが多い。近年、サーバ用のＯＳとしてＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ  ＮＴ／２０００（登録商標）がシェアを伸ばしている。
〔従来のアーキテクチャ〕
ここで、図１３にはＯＳの代表的なものとしてＷｉｎｄｏｗｓ  ＮＴ／２０００（登録商標）のアーキテクチャの概要を図示している。図１３からわかるように、Ｗｉｎｄｏｗｓ  ＮＴ／２０００は、全体的に概略するとハードウェア２、ＯＳ３、実際のユーザが要求する機能を実現するアプリケーションプログラム４という階層構造に成っている。マイクロカーネル５１はＯＳ３の全体的な管理を行うためのプログラムであり、マイクロカーネル５１の階層を中心にして、その層の上で動作する各種ソフトウェア（カーネルモードソフトウェア）がカーネルモード８を構成している（後述の説明を参照）。そして、一番上の階層にあるアプリケーションプログラム４がユーザモード９で動作している（後述の説明を参照）。
ＯＳ３は大きく分けて、エグゼクティブ５０、マイクロカーネル５１、ハードウェア抽象化層（ＨＡＬ）５２からなる階層構造を有する。ＨＡＬ５２は、ハードウェア２のすぐ上の層に位置したハードウェアの制御を重視したプログラムで、プロセッサなどの多種多様なハードウェアの仕様を吸収し、上位層のサービス（マイクロカーネル５１，エグゼクティブ５０等）に同じ環境（機種に依存しない）を提供するためのプログラムである。
マイクロカーネル５１は、システム全体の基本的な機能を提供するものである。エグゼクティブ５０は、マイクロカーネル５１、ＨＡＬ５２で提供されるサービス機能を利用してＯＳ３の主なサービスの提供を実現するためのプログラムの総体である。エグゼクティブ５０には、キャッシュマネージャ５３、オブジェクトマネージャ５４、プロセスマネージャ５５、メモリマネージャ５６、Ｉ／Ｏマネージャ５７等の代表的なエグゼクティブプログラムが含まれている。
オブジェクトマネージャ５４は、動作しているオブジェクト（ある目的の機能を実現するためのプログラム）を監視し制御・調整を行うためのプログラムである。プロセスマネージャ５５は、動作しているプロセス（ある機能だけを行うためのプログラム）を監視し調整を行うためのプログラムである。キャッシュマネージャ５３とメモリマネージャ５６は、メモリ・仮想メモリを制御・調整するためのプログラムである。Ｉ／Ｏマネージャ５７は、ＯＳ３の入出力機能を監視・制御するプログラムである。電子計算機がこのエグゼクティブ５０で動作するとき、カーネルモード８と呼ばれている。
カーネルモード８では、ＯＳ３を操作するためのすべての命令が実行可能であり、仮に間違った命令を実行するとシステム全体に悪影響を及ぼしかねない。また、ＯＳ３の機能には、アプリケーションプログラム等のユーザに対して完全に開放されているユーザモード９がある。このユーザモード９では、システムに悪影響を与えないように、ＯＳ３を操作する命令を制限している。システムに悪影響を与えるような命令をシステムが自動的にとらえてくれるため、ユーザにとっては使い易い環境になっている。
しかし、このような制限を設けることはＯＳ３の機能の制限と同じことなので、ユーザモード９で動作するアプリケーションプログラム４は、ハードウェア２に関わる部分には直接アクセスできなくなり、カーネルモード８を経由しなければならない。カーネルモード８はＯＳ３の機能をフルに使うことが可能であり、各入出力装置へも完全にアクセスできる。また、カーネルモード８で動作するプログラムはユーザモード９のプログラムより優先的に処理され、高いパフォーマンスを得ることができる。
デバイスドライバ５はＯＳ３に属し、電子計算機の外部ハードウェアを管理するためのソフトウェアであり、カーネルモード８で動作する。通常、デバイスドライバ５一つに対して同じ属性を持つデバイスが一つだけ存在する。ユーザモード９で動作するアプリケーションプログラム４は、各デバイスにアクセスするためにデバイスドライバ５を経由しなければならない。
例えば、図１４に示すようにデバイスＡからデバイスＢへデータを転送する場合には、データの流れは「デバイスＡ」→「デバイスドライバＡ」→（カーネルモード８からユーザモード９へと動作モードの切換）「アプリケーションプログラム４」（ユーザモード９からカーネルモード８へと動作モードの切換）→「デバイスドライバＢ」→「デバイスＢ」となり、システムはカーネルモード８からユーザモード９へ又はユーザモード９からカーネルモード８へと動作モードの切り替えを行いながら処理を進めている。
ユーザモード９とカーネルモード８の切り替えは時間がかかる処理で、画像データなどのような大量のデータを転送するとき、転送速度が遅くなり、転送時間がかかる。このため、アプリケーションレベルで転送速度の高速化を図ることが困難である。アプリケーションプログラム４の処理ごとにユーザモード９とカーネルモード８の切り替えを行わなければならないからである。
ここで、従来のデバイス間にデータ転送をするときの動作手順を説明する。図１４は、アプリケーションプログラム４及びデバイスドライバ５と動作モード８，９の関係の概要を図示している。図から分かるように、アプリケーションプログラム４はユーザモード９で動作している。
デバイスドライバ５は、ＯＳ３に組み込まれてカーネルモード８で動作している。電子計算機のハードウェア２を構成するデバイス６は、各種の内部デバイスと電子計算機に接続されている外部デバイスからなり、それぞれ固有のデバイスドライバ５からのみ制御される。つまり、デバイス６へのアクセスは全てデバイスドライバ５を介して行われる。デバイスドライバ５は、ＯＳ３を介して、アプリケーションプログラム４からの命令により動作する。
次にデータ伝送の流れを図１５のフローチャートを参照しながら説明する。ユーザモード９で動作するアプリケーションプログラム４が、デバイスＡからデバイスＢへとデータを転送するときのデータの流れをシステムの動作モード８，９を比較しながら説明する。まず、アプリケーションプログラム４がデータの転送要求（命令）を出す（Ｓ５０）。
このときは、デバイスＡに対してデータ送信の要求（Ｓ５１）、デバイスＢに対してデータ受信の要求を出す（Ｓ５２）。システムの動作モードはユーザモード９からカーネルモード８に切り替わる。デバイスドライバＡがデータ送信の要求を受け取り（Ｓ５３）、デバイスＡに送信する（Ｓ５４）。デバイスＡがデータ送信の要求を受け取り（Ｓ５５）、データを送信する（Ｓ５６）。送信されたデータをデバイスドライバＡが受信し（Ｓ５７）、このデータを内部処理して（Ｓ５８）、アプリケーションプログラム４へデータを送信する（Ｓ５９）。
システムの動作モードがカーネルモード８からユーザモード９に切り替わり、アプリケーションプログラム４がデータを受信して処理し（Ｓ６０、Ｓ６１）、処理結果をデバイスドライバＢへ送信する（Ｓ６２）。システムの動作モードは再びユーザモード９からカーネルモード８に切り替わる。デバイスドライバＢはデータを受信し（Ｓ６３）、このデータを内部処理し（Ｓ６４）、結果をデバイスＢへ送信する（Ｓ６５）。
デバイスＢはデータを受け取り（Ｓ６６）、データ受取済の情報をデバイスドライバＢへ送る（Ｓ６７）。デバイスドライバＢはそのデータ受取済の情報を受け取り（Ｓ６８）、アプリケーションプログラム４へデータ転送完了を通知する（Ｓ６９）。システムはユーザモード９に替わり、アプリケーションプログラム４がデータ転送完了を受け取り（Ｓ７０）、次の処理にかかり、一連のデータ転送の処理が終了する（Ｓ７１）。
このように、データは「デバイスＡ」→「デバイスドライバＡ」→（動作モードの切り替え）「アプリケーションプログラム４」（動作モードの切り替え）→「デバイスドライバＢ」→「デバイスＢ」と転送される。この間、システムの動作モードはカーネルモード８とユーザモード９とに繰り返し切り替わりながら動作している。大量のデータを取り扱うようになるとこの動作モードの切り替え処理の数が多くなる。
更に、システム上に他のアプリケーションプログラムが同時に動作しているとき、このアプリケーションプログラムのためにシステムが動作モードの切り替えをするため、システム全体として動作モードの切り替え回数が多くなり、アプリケーションプログラム同士の実行処理が遅くなる原因になる。これは、動作モードの切り替え回数の増大はデータの送受信処理の低速化、特に画像処理などのリアルタイム性が強く求められる場合は、画面上に表示される画像の乱れなどの原因になりかねない。
このようなシステムにおいて、システムのパフォーマンスを確保するためにはハードウェア開発・設計技術と共にそれらのハードウェア２を制御するデバイスドライバ５の開発技術が重要になる。特に画像データのような大量のデータの転送を行うとき、ユーザモード９とカーネルモード８の切り替えを少なくして、データ転送の高速化を図ることが望ましい。また、データの保全性が強く求められているときユーザが触れないカーネルモード８内で転送することが望ましい。特に、パスワードを利用してユーザ認証を行うときには秘密データであるそのパスワードデータの保全性がとても重要になる。
ＷＯ９８／４７０７４には、カーネルモードにおいて、階層構造のドライバ間で制御権を示すデータの転送技術が開示されているが、本発明の個人認証技術に関しては開示されてない。
次に個人認証を行う手順について述べる。
次に、ユーザが電子計算機に接続されているキーボードからパスワード（例えば、「ＰＩＡＮＯ」というパスワードとする。）を入力し、パスワード認証専用のアプリケーションプログラムが認証を行っている場合を考える。この場合は、キーボードはデバイス６に、パスワード認証専用のアプリケーションプログラムはアプリケーションプログラム４に対応する。また、キーボードのキーボードドライバはデバイスドライバ５に対応する。
アプリケーションプログラム４が、キーボードから入力されているキー操作の情報を取得する手順を、図１６のフローチャートを用いて説明する。キー操作の情報としては、どのキーを押下したか又は離したかなどの情報がある。
まずは、アプリケーションプログラム４が起動される（ユーザモード、Ｓ８０）。そして、アプリケーションプログラム４がキーボードドライバに対してキーボードから入力されるデータを送信するように指示を出す（ユーザモード、Ｓ８１）。キーボードドライバがこの指示を受けて（モードが切り替えてカーネルモード、Ｓ８２）、キーボードに対してキー操作データの送信要求を送信する（カーネルモード、Ｓ８３）。
キーボードは、キー操作データの送信要求を受信し（Ｓ８４）、キー操作データを送信する（Ｓ８５）。キーボードドライバはこのデータを受け取り（カーネルモード、Ｓ８６）、このデータを内部処理して（Ｓ８７）、アプリケーションプログラム４へ送信する（カーネルモード、Ｓ８８）。アプリケーションプログラム４は、キーボードドライバからのキー操作データを受け取り（モードが切り替えてユーザモード、Ｓ８９）、システム時計のデータを受け取り、キー操作の時間を把握する（Ｓ９０）。
そして、次の処理に移る（Ｓ９１）。このように一連の操作が終わる（Ｓ９２）。もう一度、キーボード操作のデータが必要な場合は、Ｓ８０〜Ｓ９２を繰り返して行う。このように、キーで一文字を入力する一連の操作は、ユーザモード、カーネルモード、ユーザモードを切り替えながら行われている。次のキー操作については同様な作業を繰り返して行う。このようにユーザモード、カーネルモードを切り替えながらパスワードの全ての文字を受け取ってから、暗号化し、認証を行う。
前述した方法１の場合は、パスワードを他人に知られやすいため、他人が不正アクセスしやすいという欠点がある。個人のキーボードを打つ癖などの個人の入力特徴を用いた前述した方法２の方がこのような問題点を克服している。しかし、いったん電子計算機にログインした後はだれでも使える状態になる。ユーザがログインした後、電子計算機を少し離れるなどの場合、他人がきてアクセスしたり、ユーザになりすましていたりすることが可能である。
また、電子計算機で他のアプリケーションプログラムが動作しているときに、パスワード専用のアプリケーションプログラムがデバイスドライバから入力に関する情報を受け取る。この受け取りの動作は、ユーザモード、カーネルモードの切り替えを行いながら行うために、正確な入力タイムを取得できなくなり、入力タイムの誤差が大きくなる。これが正規のユーザの認証率が下がる原因になりかねない。正規のユーザの認証率を上げるためには、認証精度を下げるしか方法がなくなってしまう。
図９は、横軸にユーザがキーボードから文字を入力するときのキーを押下する時間をとり、縦軸にはキーを押下しつづける時間をとってグラフ化したものである。図９のグラフ（ａ）のは、ユーザが入力するときの真のグラフとする。入力特徴を有するあるユーザが個人の入力するときの時間誤差を取り入れると、ユーザがあるキーを入力したのは四角６０で大体グラフ化できる。
アプリケーションプログラムでキーを押下するときの時間を取得するときは、図９のグラフ（ｂ）に示すように、そのユーザが入力する時の時間の誤差範囲が楕円６１で示されるように拡大してしまう。また、他のアプリケーションなど電子計算機の中央演算処理装置などの負荷がかかる処理をしているときは、線６２と線６３のように時間ずれが大きくなってくる。これが大きくなると、本来のユーザの入力特徴が現れなくなってしまう。
また、上記のような認証を実現しているアプリケーションプログラムは、ユーザモードで動作するアプリケーションプログラムであり、個人のキーを打つときのタイミング抽出には時間差ができてしまう。例えば、ユーザモードにおいてほとんどのアプリケーションプログラムが動作しない場合と大量処理を行っているアプリケーションプログラムが動作している場合とのタイミング抽出に差があることは上記の説明から明白である。このためには、ユーザの認証をするときに、予め誤差範囲を大きくとっておく必要があり、認証精度の低下につながりかねない。
特開２０００−３０５６５４にはキーボードの入力特徴を用いて個人認証を行う方式が提案されている。しかしながらこの方式は、前述したカーネルモードの切換数が多くて正確なタイミング抽出がこの方式では困難である。
本発明は上述のような技術背景のもとになされたものであり、下記の目的を達成する。
本発明の目的は、電子計算機利用者の個人認証を電子計算機のＯＳの動作モードであるカーネルモードで行うことができる、ネットワークによる電子計算機の入力装置の入力特徴を用いた個人認証方法、そのプログラム及びプログラムの記録媒体を提供する。
本発明の他の目的は、電子計算機利用者のキーボート等の入力装置の操作時間を正確なタイミングで抽出することができる、ネットワークによる電子計算機の入力装置の入力特徴を用いた個人認証方法、そのプログラム及びプログラムの記録媒体を提供する。
本発明の更に他の目的は、アプリケーションプログラムとデバイスドライバとの共通のインターフェースを用いて、データの秘密性を保護することができ、しかもデータの安全転送を図ることができる、ネットワークによる電子計算機の入力装置の入力特徴を用いた個人認証方法、そのプログラム及びプログラムの記録媒体を提供する。
本発明の更に他の目的は、ネットワークを経由して電子計算機利用者をオンライン監視し、不正アクセスを防止することができる、ネットワークによる電子計算機の入力装置の入力特徴を用いた個人認証方法、そのプログラム及びプログラムの記録媒体を提供する。
本発明のネットワークによる電子計算機の入力装置の入力特徴を用いた個人認証方法、そのプログラム及びプログラムの記録媒体は次の利点を有する。
本発明は、電子計算機利用者の個人認証のためのキーボート等の操作時間のデータの収集を、ネットワークを経由して、電子計算機のＯＳの動作モードであるカーネルモードで行うので、正確なタイミングを抽出でき個人認証の信頼性が高くなる。
本発明は、ネットワークを経由して、アプリケーションプログラムとデバイスドライバとの共通のインターフェースを用い、このインターフェースドライバのプログラムを利用した個人認証を行うので、データの秘密性が保護され、かつデータの安全転送を図ることができる。
本発明は、ネットワークを経由して電子計算機の利用者を個人認証およびオンライン監視できるので、不正アクセスを防止することができる。
発明の開示
本発明のネットワークによる個人認証方法、そのプログラム及びプログラムの記録媒体は、
ネットワーク網へ接続されている電子計算機と、ユーザの個人情報からなるデータベースを記憶したサーバとからなるネットワークシステムにおいて、
前記電子計算機は、前記入力装置によってユーザが入力するとき、前記ユーザの操作時間をカーネルモードで取得し、
前記操作時間を含む入力情報をサーバへ伝送し、
前記サーバは、入力情報を受信し、分析して操作特徴を求め、
前記操作特徴を前記個人情報と比較して前記ユーザの個人認証を行うことを特徴とする。
更に、前記個人認証はニューラルネットワーク手法を用いると良い。
前記ニューラルネットワーク手法は、学習ベクトル量子化法であると良い。
前記学習ベクトル量子化法は、
前記個人情報からなる教師データの特徴を示す特徴ベクトルを学習して求め、
前記学習は、
前記特徴ベクトルｍｉ、ｍｊが教師データｘに対してもっとも近い距離にあるとき、ｔは前記学習の回数、ｍｉは教師データｘと異なるクラスに属する場合、ｍｊは教師データｘと同じクラスに属する場合において、
2003069492.tif 000003
式で前記特徴ベクトルを更新して行われ、
前記操作時間を含む入力データと前記特徴ベクトルとの距離を求め前記ユーザを識別すると良い。
ネットワーク網へ接続される第１のネットワークカード、及び入力装置を含む複数のデバイスが接続されていてＯＳによって動作する電子計算機と、
前記ネットワーク網へ接続されるための第２のネットワークカード、及び前記電子計算機を利用するユーザの個人情報かちなるデータベースを記憶した記憶手段を有するサーバと
からなるネットワークシステムに前記ユーザの個人認証を実現させるための個人認証プログラムにおいて、
前記個人認証プログラムは、電子計算機用プログラムとサーバ用プログラムから構成され、
前記電子計算機用プログラムは、
前記電子計算機に、前記ユーザが前記入力装置によって入力するとき、前記入力装置を前記ユーザが操作する操作時間を前記ＯＳの全ての命令が実行できる動作モードであるカーネルモードで取得し、前記操作時間を含む入力データを用いて前記サーバへの送信データを作成し、前記第１のネットワークカードによって前記ネットワーク網へ前記送信データを送信するための取得機能、
を実現させるためのプログラムであり、
前記サーバ用プログラムは、
前記サーバに、
前記第２のネットワークカードによって前記送信データを受信し、前記入力データを分析して前記ユーザの前記入力装置を操作する操作特徴を求めるための分析機能、及び
前記操作特徴を前記個人情報と比較して前記ユーザの個人認証を行うための認証機能を実現させるためのプログラムである
ことを特徴とするネットワークによる入力装置の入力特徴を用いた個人認証プログラムである。
また、前記取得機能は、
前記電子計算機で動作しているアプリケーションプログラムからの命令を受信し、この命令による命令実行結果を前記アプリケーションプログラムに通知するためのアプリケーションインターフェース機能と、
前記電子計算機が前記デバイスを制御するデバイスドライバを備えていて、前記デバイスドライバへアクセスして入力情報を取得するためのインターフェース機能と、
前記入力情報に前記アクセスした時間に関する情報を追加して前記操作時間を把握し、前記送信データを作成するためのデータ処理機能、
前記第１のネットワークカードへの前記送信データの送受信を行うためのネットワーク送受信機能、
前記サーバから受信データを受理して分析し、前記アプリケーションインターフェースへ送信又は前記サーバの命令を実行するためのフロー制御機能と
からなると良い。
更に、前記データ処理機能は、
前記送信データを暗号化するための暗号化機能、及び
前記受信データを復号化するための復号化機能
を有すると良い。
前記フロー制御機能は、
前記受信データに前記ユーザが個人認証されなかったことを示す不認証データがある場合、前記取得機能を停止、一時停止、又は不認証の情報を前記電子計算機の管理者に通知すると良い。
前記入力装置はキーボードであると良い。
前記操作時間は、前記キーボードのキーを押下し、前記押下してから前記キーを離す操作する時間の情報であり、
前記操作時間は、
前記キーボードのあるキーが押下されてからそのキーを離すまでの時間である第１タイム、
前記キーボードのあるキーが押下されてから次のキーが押下されるまでの時間である第２タイム、
前記キーボードのあるキーを離してから次のキーが押下されるまでの時間である第３タイム、及び
前記キーボードのあるキーを離してから次のキーを離すまでの時間である第４タイムから選択される何れかの１以上のタイムであると良い。
前記操作時間は前記キーボードの機能キーを操作する操作時間であると良い。
前記個人認証機能はニューラルンネットワーク手法である学習ベクトル量子化法を用い、学習ステップと識別ステップとからなると良い。
前記学習ステップは、
前記個人情報を読み込む第１ステップと、
前記個人情報の特徴を表す特徴ベクトルを作成する第２ステップと、
前記特徴ベクトルを学習して最適な特徴ベクトルである最適特徴ベクトルを求める第３ステップと、
前記最適特徴ベクトルを出力する第４ステップと
からなると良い。
前記第３ステップは、
前記個人情報ｘと前記特徴ベクトルとの距離を計算、最短距離の前記特徴ベクトルｍｉを計算する第５ステップと、
前記特徴ベクトルｍｉのクラスを求める第６ステップと、
前記第６ステップで求めたクラスが前記個人情報ｘのクラスと比較する第７ステップと
前記第７ステップの結果が同じクラスであるとき、前記特徴ベクトルを式
2003069492.tif 000004
で更新する第８ステップと、
前記第７ステップの結果が違うクラスであるとき、前記特徴ベクトルを式
2003069492.tif 000005
で更新する第９ステップと
前記ステップ５から９を所定回数繰り返して、結果を前記最適特徴ベクトルとして出力する第１０ステップと
からなると良い。
前記識別ステップは、
前記学習ステップで作成された最適特徴ベクトルを読み込む第１１ステップと、
前記入力データを読み込みする第１２ステップと、
前記入力データと前記特徴ベクトルとの距離を計算する第１３ステップと、
前記第１３ステップの計算結果から最短距離の特徴ベクトルを特定する第１４ステップと、
前記第１４ステップの前記最短距離の特徴ベクトルのクラスを前記ユーザの識別として出力する第１５ステップと
からなると良い。
前記ネットワーク網はインターネットであると良い。
前記ネットワーク網は無線ネットワークであると良い。
前記ネットワークによる入力装置の入力特徴を用いた個人認証プログラムの記録媒体であると良い。
前記データベースは、前記キーを識別するコード、前記キーを押下する又は離反するタイム、前記押下又は前記離反を示す識別を有すると良い。
前記識別結果は、前記ユーザごとに結果ファイルを作成して、又は前記結果ファイルに追加されて記憶媒体に保存されると良い。
また、前記暗号化又は前記復号化の処理は、
暗号化・復号化専用カードを用いて行うと良い。
発明を実施するための最良の形態
次に、本発明の実施の形態を説明する。
（共通インターフェースドライバ）
図１は、本発明の電子計算機のインターフェースドライバプログラムの実施の形態を示す概念図であり、共通インターフェースドライバを用いたＯＳの概念図である。図２は、データを転送するときのデータ及び命令の流れを示すフローチャートである。
電子計算機１はＣＰＵ、メモリ、周辺機器などのハードウェア２から構成され、これらのハードウェア２を記憶装置に記憶されているＯＳ３によって制御し動作させる。エンドユーザが使うアプリケーションプログラム４のＯＳ３が提供する環境で動作する。ＯＳ３には、周辺機器を制御するデバイスドライバ５が含まれており、アプリケーションプログラム４からの命令に従って、デバイス６を制御し、デバイス６（Ａ）からデータを受信したり、デバイス６（Ｂ）へデータを送信したりする。
この実施の形態では、各デバイスドライバ５の共通の窓口となり、アプリケーションプログラム４とのやり取りをまとめて共通インターフェースドライバ７が行っている。また、アプリケーションプログラム４からの命令によって、デバイス６間のデータの送受信も制御することができる。共通インターフェースドライバ７は、デバイスドライバ５（Ａ）とデバイスドライバ５（Ｂ）間のインターフェースで、カーネルモード８で動作するものである。
更に詳細に説明すれば、デバイス６には、デバイスＡとデバイスＢがあり、それぞれをデバイスドライバＡとデバイスドライバＢにより制御される。デバイスＡからデバイスＢへデータを転送する場合のデータの流れを図２のフローチャートに示す。ユーザモード９で動作するアプリケーションプログラム４が、デバイスＡからデバイスＢへとデータを転送するとき（Ｓ１）、データ転送の要求（命令）を出す（Ｓ２）。このときは、システムの動作モードはユーザモード９である。
システムの動作モードはカーネルモード８に切り替わり、共通インターフェースドライバ７はアプリケーションプログラム４からのデータ転送の要求を受け取り（Ｓ３）、共通インターフェースドライバ７はこのデータ転送の要求を分析して（Ｓ４）、各処理部に指示を出す。デバイスドライバＡに対してデータ送信の要求を出す（Ｓ５）。デバイスドライバＢに対してデータ受信の要求を出す（Ｓ６）。
デバイスドライバＡが共通インターフェースドライバ７からのデータ送信の要求を受け取り（Ｓ７）、デバイスＡに送信する（Ｓ８）。デバイスＡがデータ送信の要求を受け取り（Ｓ９）、データをデバイスドライバＡへ送信する（Ｓ１０）。デバイスドライバＡがデータを受信し（Ｓ１１）、内部処理して（Ｓ１２）、共通インターフェースドライバ７に渡す（Ｓ１３）。共通インターフェースドライバ７は、データを受信し、圧縮・暗号化等の処理をして（Ｓ１４）から、結果をデバイスドライバＢへ送信する（Ｓ１５）。
デバイスドライバＢは共通インターフェースドライバ７からデータを受信し（Ｓ１６）、内部処理し（Ｓ１７）、この内部処理した処理結果をデバイスＢへ送信する（Ｓ１８）。デバイスＢはデータを受け取り（Ｓ１９）、データ受取済の情報をデバイスドライバＢへ送る（Ｓ２０）。デバイスドライバＢはそのデータ受取済の情報を受け取り（Ｓ２１）、データ転送完了の情報を共通インターフェースドライバ７に送る（Ｓ２２）。
共通インターフェースドライバ７はデータ転送完了の情報を受け取り（Ｓ２３）、アプリケーションプログラム４へデータ転送完了の情報を通知して次の命令を待機する（Ｓ２４）。ここで、システムの動作モードはカーネルモード８からユーザモード９に替わり、アプリケーションプログラム４がデータ転送完了の情報を受け取り（Ｓ２５）、次の処理にかかる。
これで、データ伝送の一連の作業が終了する（Ｓ２６）。このように、データは「デバイスＡ」→「デバイスドライバＡ」→「共通インターフェースドライバ７」→「デバイスドライバＢ」→「デバイスＢ」と転送され、この間、システムの動作モードはカーネルモード８で動作し、モードの切り替えを行う必要がなくなる。
また、データはユーザモード９のアプリケーションプログラム４を経由せずに直接カーネルモード８でデバイス６間に転送され、大量のデータを高速に転送できるようになる。また、アプリケーションプログラム４から直接に取り扱いできないカーネルモード８で転送されているためデータの保全性も高まる。
デバイスＢは、キーボード、マウスなどの入力装置をはじめとする様々デバイスである場合は、各デバイスはそれぞれデバイスドライバを備えている。これらのデバイスドライバは並列に共通インターフェースドライバ７に接続され、共通インターフェースドライバ７を通って互いにまたはアプリケーションプログラム４とデータのやり取りを行う。
共通インターフェースドライバ７は、データ圧縮、暗号化、復号化等をはじめとする処理行う機能を備えてことによって、アプリケーションプログラム４から要求されたときにこれらの機能を使ってデバイス間またはアプリケーションプログラム４とデバイスＡ，Ｂとの間のデータ送受信を高速に行う。
その他に、共通インターフェースドライバ７は受信したデータの時間を表すタイムスタンプ機能を備えることによって、デバイスＡ，Ｂから受け取ったデータ等にタイムスタンプを押すことができる。このタイムスタンプ機能を使えば、デバイスＡ，Ｂから入力されるデータの入力時間に関する情報を正確把握することができる。
特に、ユーザの入力特徴を用いて個人認証を行うなどの入力時間がとても重要になる場合は、より正確な時間を把握できるようになる。
ユーザがキーボードからＩＤとパスワードを入力し、この入力する際の入力特徴・癖を利用して個人認証を行う場合を考える。このとき、共通インターフェースドライバ７を用いて、キーボードから入力される情報取得する。この情報には、キーボードのどのキーが押されたかを特定する情報がある。
また、共通インターフェースドライバ７でこの情報にタイムスタンプを追加する。タイムスタンプ処理されたキーボード情報を個人認証するときに分析することで、ユーザの入力特徴を計算でき、ユーザのキーボード入力特徴を考慮した個人認証を行うことができる。
この計算のときは下記の第１〜４タイムの内から１つ以上のタイムを利用することができる。このタイムには、キーボードのあるキーが押下されてからそのキーを離すまでの間隔である第１タイム、キーボードのあるキーが押下されてから次のキーが押下されるまでの間隔である第２タイム、キーボードのあるキーを離してから次のキーが押下されるまでの間隔である第３タイム、キーボードのあるキーを離してから次のキーを離すまでの間隔である第４タイムがある。
また、これらの第１〜４タイムを利用して統計処理されたものをユーザの入力特徴として利用できる。
（個人認証方法の実施の形態１）
次に、カーネルモードで動作するこの共通インターフェースドライバプログラムを用いた個人認証方法の実施の形態１について説明する。キーボードからパスワードを入力してユーザの個人認証を行う手順を説明する。図３は共通インターフェースドライバ７の実施の形態を示す図であり、特に、電子計算機１１の共通インターフェースドライバ７の内部構成、コマンド及びデータの流れを示す。
ユーザはキーボード１５のキーを操作してパスワード等を入力し、アプリケーションプログラム４で個人認証を行う。このとき、共通インターフェースドライバ７を経由して、アプリケーションプログラム４とキーボード１５間にデータのやりとりが行われる。共通インターフェースドライバ７は、データ取込部１８、ＴＤＩクライアント部（ＴＤＩ  Ｃｌｉｅｎｔ  Ｄｒｉｖｅｒ部）２０、データ処理部（暗号化部、復号化部を備えている）１９、ＡＰインターフェース部１７、フロー制御部２５などから構成され、各部分の概略機能は次の通りである。
データ取込部１８は、キーボードドライバであるＨＩＤ２４からキーボード１５の操作データなどを受信し、共通インターフェースドライバ７に入力するためのものである。ＡＰインターフェース部１７は、アプリケーションプログラム４と共通インターフェースドライバ７間のインターフェースを提供し、アプリケーションプログラム４からのパラメータ設定や動作開始などのコマンドを受け取り、分析して、各処理部に対して動作パラメータを渡し、データの送受信状況を監視する。
データ処理部１９は、データ取込部１８から受け取ったデータの暗号化・圧縮・タイムスタンプなどの入力データを処理するためのものである。データ取込部１８から入力されたキーボード操作データを受け取り、その入力タイムを示すタイムスタンプを追加して、ＡＰインターフェース部１７を介してアプリケーションプログラム４、又はＴＤＩクライアントドライバ部２０を介してネットワークに送信したりする。
ＴＤＩクライアントドライバ部２０は、ＬＡＮボードドライバ２１と共通インターフェースドライバ７とのインターフェースを提供する。ＬＡＮボードドライバ２１は、プロトコルドライバ２２と、ＮＤＩＳ（Ｎｅｔｗｏｒｋ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）ドライバ２３から構成され、ＬＡＮボード１６を制御し、ネットワークへデータを伝送するときの接続確立とプロトコルの制御を行う。
プロトコルドライバ２２は、ネットワークにデータを転送する際の通信プロトコルを制御するものである。ＮＤＩＳドライバ２３は、プロトコルドライバ２２とＬＡＮボード１６とのインターフェースを提供するものである。ＴＤＩクライアントドライバ部２０は、パケット化されたデータをデータ処理部１９から受け取ってプロトコルドライバ２２に出力する。
フロー制御部２５は、特定の命令によってデータ取込部１８を制御し、外部からアクセス不可にする制御を行うためのものである。上記特定の命令は、アプリケーションプログラム４、又はネットワークからのものであっても良い。特に、不正アクセス防止のために利用されるものである。
次に、電子計算機１１の個人認証専用のアプリケーションプログラム４がキーボード１５から入力されるパスワードを用いて個人認証を行う手順を図４のフローチャートを参照しながら説明する。
このフローチャートはユーザモード９で動作しているアプリケーションプログラム４の命令により共通インターフェースドライバ７が、キーボード１５からパスワードのデータを受け取り、アプリケーションプログラム４に送信する手順を示す。まず、アプリケーションプログラム４は、キーボード１５からパスワードデータの送受信の命令を出力し、データ受信が始まる（Ｓ１００）。この出力命令は、Ｗｉｎｄｏｗｓの標準仕様で提供されているインターフェースを介して共通インターフェースドライバ７に出力される。
共通インターフェースドライバ７のＡＰインターフェース部１７は、アプリケーションプログラム４からの命令を受信する（Ｓ１０１）。命令には、データ取込みパラメータ及び動作開始コマンドなどが含まれている。そして、ＡＰインターフェース部１７はデータ取込みパラメータをフロー制御部２５に渡す（Ｓ１０２）。フロー制御部２５は、データ取込パラメータを受け取り（Ｓ１０３）、そのデータ取込パラメータを解析して（Ｓ１０４）、データ取込部１８に渡す（Ｓ１０５）。
データ取込部１８は、データ取込みパラメータの設定を行い（Ｓ１０６）、ＨＩＤ２４への接続処理を行い（Ｓ１０７）、キーボード１５からのデータを受信する準備が完了する。キーボード１５からのデータはＨＩＤ２４を通してデータ取込部１８の受信バッファに取り込まれる（Ｓ１０８）。そして、データ取込部１８は受信バッファに入っているデータをデータ処理部１９に渡す（Ｓ１０９）。
データ取込部１８は、ＡＰインターフェース部１７から要求があったときに（Ｓ１１０）、アプリケーションプログラム４へ送るために、データを受け取った状況、データ処理の進行状況などの必要な情報を作成する（Ｓ１１１）。作成された情報はフロー制御部２５を介してＡＰインターフェース部１７に渡される（Ｓ１１２）。そして、続けてキーボード操作のデータを受信する必要がある場合は、Ｓ１０８〜１１０（又はＳ１１２）を繰り返して、キーボード操作のデータの受信を行う。
データ処理部１９では、受け取ったキーボード操作データのデータ処理を行い（Ｓ１１４）。このデータ処理では、アプリケーションプログラム４に必要な付加情報であるキーボード入力のタイム等を示すタイムスタンプ処理、又は暗号化をはじめとする必要な処理が行われる。
そして、これらの処理されたデータを元にしてアプリケーションプログラム４へ送信するための送信データが作成される（Ｓ１１５）。このときは、処理データが長い場合は区切ってパケット化したりする（Ｓ１１６）。フロー制御部２５は、データ処理部１９からの送信データを受信し（Ｓ１１７）、その受信したデータを解析して（Ｓ１１８）、ＡＰインターフェース部１７に渡す（Ｓ１１９）。
最後にＡＰインターフェース部１７は、アプリケーションプログラム４へキーボード操作データを送信し（Ｓ１２０）、アプリケーションプログラム４からの要求を監視し（Ｓ１２１）、指示がない場合は、データの取り込みが継続して行われる（Ｓ１２１→Ｓ１０８）。ストップ指示があるときは（Ｓ１２１）、その命令を各処理部１７〜２０，２５に指示して、処理を終了させる（Ｓ１２２）。
図６は、個人認証を行うときの動作手順を示すフローチャートである。ユーザの個人認証のときは、ユーザＩＤ、パスワードなどを利用し、これらをキーボードから入力するときの入力特徴を利用している。この入力特徴は、キーボードのキーを押下、又は離反するときの時間情報を利用して計算されて求めたものである。共通インターフェースドライバ７ではキーを特定する情報に、タイムスタンプを追加する。そして、この時間情報がサーバに送られて、サーバは個人認証のとき、下記の第１〜４タイムの内から１つ以上のタイムを計算して利用する（Ｓ１５５、Ｓ１５６）。
このタイムには、キーボードのあるキーが押下されてからそのキーを離すまでの間隔である第１タイム、キーボードのあるキーが押下されてから次のキーが押下されるまでの間隔である第２タイム、キーボードのあるキーを離してから次のキーが押下されるまでの間隔である第３タイム、キーボードのあるキーを離してから次のキーを離すまでの間隔である第４タイムがある。また、これらの第１〜４タイムを利用して統計処理されたものをユーザの入力特徴として利用できる。
図１０は、横軸にユーザがキーボードから文字を入力するときのキーを押下する時間をとり、縦軸にはキーを押下しつづける時間をとってグラフ化したものである。前述の図９と同様である。図１０のグラフ（ａ）のは、ユーザが入力するときの真のグラフとする。個人が入力するときの時間誤差を取り入れると、ユーザがあるキーを入力したのは四角６０で大体グラフ化できる。
共通インターフェースドライバ７でキーを押下するときの時間を取得するときは、図１０のグラフ（ｂ）に示すように、そのユーザが入力する時の時間の誤差範囲が楕円６４で示されるようになる。また、他のアプリケーションなど電子計算機の中央演算処理装置などの負荷がかかる処理をしているときは、線６５と線６６が僅かに傾いて時間のずれを示している。図１０のグラフ（ｂ）の楕円６４は、図９のグラフ（ｂ）の楕円６１と比べ大幅に小さくなっていることがわかる。また、線６６も同様に線６３と比べ時間ずれ少なくなっている。
図１０のグラフ（ｂ）には、あるキーを押下した時間を点Ａで、そのキーを離反した時間を点Ｂで、次のキーを押下、離反した時間をＣ、Ｄでそれぞれ表している。前述の第１タイムはＴ１＝Ｂ−Ａとなり、第２タイムはＴ２＝Ｃ−Ａとなる。そして、同様に、第３タイム、第４タイムは、Ｔ３＝Ｃ−Ｂ、Ｔ４＝Ｄ−Ｂとそれぞれなる。
（実施の形態２）
次に、ネットワークを利用した個人認証の実施の形態を示す。図５には、本実施の形態２のシステムの概要を示している。ユーザが利用する電子計算機１１がネットワーク２６を介して個人認証サーバ２８に接続されている。ユーザが電子計算機１１にアクセスするためのキーボード１５、マウス２７などの入力装置が電子計算機１１に接続されている。また、電子計算機１１は、ネットワーク２６に接続されるためのネットワークカード（図示せず）を備えている。
上記のネットワーク２６は、ＬＡＮ又はインターネット等の通信用のどんなネットワークであっても良い。個人認証サーバ２８上で個人認証のアプリケーションプログラムが動作し、電子計算機１１の共通インターフェースドライバ７を制御する。このためには、ＴＣＰ／ＩＰのようなプロトコルを利用することが可能である。個人認証サーバ２８はＩＰアドレスを利用してユーザが利用している電子計算機１１を特定し、その電子計算機１１の共通インターフェースドライバ７を制御することができる。
共通インターフェースドライバ７は、個人認証アプリケーションプログラムの指示通りに、不正アクセスしようとするユーザをアクセス不可能にする。そのためには、入力装置からアクセスを停止させたり、入力装置から特定又は全てのアプリケーションへのアクセスを制限したり、または電子計算機のシステム全体をロック状態にしたりする機能を備えている。
個人認証サーバ２８は記憶媒体を有し、予め用意されたデータベース２９が格納されている。電子計算機１１を操作しているユーザが正規のユーザであることを特定するためには、個人認証アプリケーションプログラムがデータベース２９の該ユーザに関する情報と電子計算機１１から送られてくる情報と比較して特定する。
このユーザ認証のためには、少なくてユーザの氏名または予め与えられたＩＤが必要であり、かつ、個人入力の特徴を示す情報を有するパスワード等が必要である。個人入力の特徴を示す情報には、ユーザがキーボード１５のあるキーを押下しつづける時間、あるキーを押下してから次のキーを押下するまでの時間等が必要である。
次に、これらの動作を図６に図示したフローチャートを参照しながら説明する。電子計算機１１が作動して（Ｓ１５０）、電子計算機１１の記憶媒体に格納されているＯＳが起動される（Ｓ１５１）。ＯＳが標準仕様で整えているネットワーク機能が予め設定された設定により、ネットワーク２６を経由して個人認証サーバ２８に接続される（Ｓ１５２）。
個人認証サーバ２８は新しく接続された電子計算機１１を特定し、個人認証アプリケーションプログラムはそのユーザの認証を行うためにパスワード等を要求する（Ｓ１５３）。この要求を電子計算機１１が受け取り、ユーザに対してパスワード等の要求を求める。ユーザがパスワード等を入力すると、それを個人認証サーバ２８に送信する（Ｓ１５４）。個人認証サーバ２８はこのパスワード等を受け取り、個人認証アプリケーションプログラムがユーザの認証を行う（Ｓ１５５）。
個人認証アプリケーションプログラムは電子計算機１１からの情報を個人認証サーバ２８のデータベース２９と比較して、ユーザのパスワード等が正しいかの判定を行い（Ｓ１５６）、この判定は正式なユーザであるときは、ユーザが電子計算機１１にアクセスできる許可を送信する（Ｓ１５７）。
そして、続けてユーザが電子計算機１１にアクセスする要素をオンライン監視する（Ｓ１５８→Ｓ１５９）。もし、パスワードの照合だけなら認証作業が終了する（Ｓ１５８→ＥＮＤ）。
オンライン監視するときは、所定の一定期間待機して（Ｓ１５９、Ｓ１６０）、共通インターフェースドライバ７で文字の入力情報を作成して（Ｓ１６１）、個人認証サーバ２８へこの文字入力に関する情報を送信する（Ｓ１６２）。この電子計算機１１から送られてきた文字入力に関する情報を受け取ったら個人認証サーバ２８が個人認証を行う（Ｓ１６３）。よって、正当なユーザが電子計算機１１を利用しているかを判断する（Ｓ１６４）。
正当のユーザが利用していると判断されたときは続けて次の認証まで所定時間待機する（Ｓ１６５→Ｓ１５９）。不正アクセスと判断された場合は（Ｓ１６６）、管理者（責任者）に通知する（Ｓ１６８）。また、Ｓ１５６のステップでパスワード等の照合のとき、パスワード等に誤りがある場合は不許可となり（Ｓ１６７）、管理者（責任者）に通知する（Ｓ１６８）。
そして、初期設定等の判断により、電子計算機１１をアクセスするレベルを判定して、使用不可能にする（Ｓ１６９）。このレベルとは、パスワードの誤りによる電子計算機１１へのアクセスを一切不可能にするシステムロック状態、又は、入力装置からのアクセスできなくする入力不可能状態、そして、動作しているアプリケーションが続けて動作しながら入力ができなくなる状態等がある。
そして、最後は電子計算機１１へのアクセス者に対して、電子計算機へのアクセスができなくなったことを通知して一連の認証作業が終了する。共通インターフェースドライバ７でデバイスドライバを制御することで、電子計算機１１へアクセスしている状況を一切制御することができるため、Ｓ１６９での電子計算機１１をシステムロック・入力不可能等の状態にすることができる。後述するフロー制御部２５はこれらの制御機能を整えており、上記のような状態を作り、制御する。
また、これらの状態になった場合は、一定時間がたったら再度パスワード認証状態にする、又は管理者（責任者）の許可で元の状態に戻すなどの柔軟制御が可能である。また、電子計算機１１の電源を切り再度作動させなければ復帰できない状態にもすることもできる。
上記のような制御は、一例を示すものであり、必ずしも本実施の形態２のような制御と同様にする必要はない。上記のような機能を備えているなのような形態でも良い。また、マウス２７やキーボード１５などの入力装置だけに限る必要もなく、ネットワークカード、その他の周辺機器も同様に扱うことができる。
ユーザの個人認証のときは、ユーザＩＤ、パスワードなどを利用し、これらをキーボードから入力するときの入力特徴を利用する方法もある。この入力特徴は、キーボードのキーを押下、又は離反するときの時間情報を利用して計算されて求めたものである。
共通インターフェースドライバ７ではキーを特定する情報に、タイムスタンプを追加する。そして、この時間情報が個人認証サーバ２８に送られて、個人認証サーバ２８は個人認証のとき、下記の第１〜４タイムの内から１つ以上のタイムを計算して利用する（Ｓ１５５、Ｓ１５６）。
このタイムには、キーボード１５のあるキーが押下されてからそのキーを離すまでの間隔である第１タイム、キーボード１５のあるキーが押下されてから次のキーが押下されるまでの間隔である第２タイム、キーボード１５のあるキーを離してから次のキーが押下されるまでの間隔である第３タイム、キーボード１５のあるキーを離してから次のキーを離すまでの間隔である第４タイムがある。これらの第１〜４タイムは、前述のＴ１〜Ｔ４の計算と同様に求める。
また、これらの第１〜４タイムを利用して統計処理されたものをユーザの入力特徴として利用できる。また、同様にオンライン監視のときも、上記の第１〜４タイムから１つ以上のタイム又は統計処理されたものを利用して判定を行う（Ｓ１６３，Ｓ１６４のとき）。
次に、本実施の形態２を示す共通インターフェースドライバ７の動作を図７、図８に図示したフローチャートを参照しながら説明する。共通インターフェースドライバ７の構成は上記の図３に示した実施の形態１と同じであり、各部分の機能も同様である。ここで、上記の実施の形態で記述した機能および、それとは追加となる機能を利用して説明をする。
電子計算機１１が作動し、ＯＳが起動すると、ＯＳの初期設定、または専用のアプリケーションプログラムの要求により電子計算機１１をネットワーク２６上の個人認証サーバ２８に接続し、ネットワーク２６を介しての個人認証を要求する。この要求をＯＳの提供するインターフェースを通して、共通インターフェースドライバ７のＡＰインターフェース部１７が受信する（Ｓ２０１）。
この個人認証サーバ２８への接続要求にはネットワーク２６への接続に必要な諸パラメータや動作開始コマンドなどが含まれる。ＡＰインターフェース部１７は、フロー制御部２５を通して、この諸ネットワークパラメータをＴＤＩクライアントドライバ部２０に渡す（Ｓ２０２）。ＴＤＩクライアントドライバ部２０はＮＤＩＳドライバ２３への接続処理を行い（Ｓ２０３）、プロトコルドライバ２２のネットワークパラメータの設定を行う（Ｓ２０４）。
よって、個人認証サーバ２８への接続要求をＬＡＮボードドライバ２１で送信し、ネットワーク２６に接続されている個人認証サーバ２８に接続し、個人認証サーバ２８の要求を待機する（Ｓ２０５）。そして、個人認証サーバ２８からの要求を受信する（Ｓ２０６）。ＴＤＩクライアントドライバ部２０が個人認証サーバ２８から送られてきたサーバ要求を受信しデータ処理部１９に渡す（Ｓ２０６，Ｓ２０７）。データ処理部１９はサーバ要求を受信し（Ｓ２０８）、サーバ要求を復号化して（Ｓ２０９）、フロー制御部２５に送信する（Ｓ２１０）。
フロー制御部２５はこの要求を受け取って解析する（Ｓ２１１）。サーバ要求が何を目的とするものであるか、アプリケーションプログラム４へのデータか、または個人認証のための要求かを解析する。また、外部からの不正アクセスがあり、その防止のために命令かを解析する。個人認証のためのキーボード１５からのアクセス情報である場合は、キーボード１５の入力情報サーバに返すように各部に指示する（Ｓ２１２，Ｓ２１３）。
データ取込部１８は、フロー制御部２５の指示を受信し（Ｓ２２２）、ＨＩＤ２４への接続を行う（Ｓ２２３）。そして、キーボード１５の入力データを受信バッファに取り込み（Ｓ２２４）、この受信バッファのキーボード入力情報をデータ処理部１９に転送する（Ｓ２２５）。データ処理部１９は、受信バッファのデータを受け取り、受信タイムの情報を追加したりするタイムスタンプ処理等の処理を行い（Ｓ２２６）、暗号化処理を行う（Ｓ２２７）。
そして、ネットワーク２６に送信しやすいパケットデータを作成して送信データにする（Ｓ２２８）。送信データは、ＴＤＩクライアントドライバ部２０の送信バッファへ送信される（Ｓ２２９）。そして、ＴＤＩクライアントドライバ部２０は送信バッファからプロトコルドライバ２２に送信データを送信して、個人認証サーバ２８への送信が完了したことをフロー制御部２６に通知する（Ｓ２３０，Ｓ２３１）。
フロー制御部２５は、パケット送信完了を受信し（Ｓ２３２）、アプリケーションプログラム４などへの情報提供が必要な場合はそれを作成してＡＰインターフェース部１７に渡す（Ｓ２３３〜Ｓ２３５）。そして、キーボード１５から入力データを送信する必要が無い場合は一連の動作が終わり、個人認証サーバ２８からの次の指示がくるまで待機する（Ｓ２３６→Ｓ２０５）。
こうして、個人認証サーバ２８から出された指示は、ＴＤＩクライアントドライバ部２０を通して受信され（Ｓ２０５〜Ｓ２０７）、データ処理部１９でその復号化処理が行われて（Ｓ２０８〜Ｓ２１０）、フロー制御部２５で解析される（Ｓ２１１〜Ｓ２１３）。このとき、個人認証サーバ２８からキーボード１５の入力情報は不正アクセス、つまり、正当なユーザではない、との判断がなされた場合はフロー制御部２５がそれに対応する指示を各部に送信する（Ｓ２１４）。
必要な場合は、アプリケーションプログラム４にＡＰインターフェース部１７を通して知らせる（Ｓ２１５，Ｓ２１６，Ｓ２２０，Ｓ２２１）。データ取込部１８は、フロー制御部２５からの指示がある場合は（Ｓ２１７）、ＨＩＤ２４からの入力を一時停止させてフロー制御部２５からの次の指示があるまでに待機状態になる（Ｓ２１８，Ｓ２１９）。
そして、このように一連の不正アクセスに対応した後システムから再要求があるか、あるいは個人認証サーバ２８からその訂正命令が来るまで待機状態に入る。この場合は、ユーザに成りすました行為、他人がパスワードを持ってアクセスしようとした場合などに即座に対応し得る。
（実施の形態３）
次にオンライン監視の実施の形態３について述べる。本実施の形態のシステム構成は実施の形態２のシステムの図５と同じであり、以下、実施の形態２と異なる部分および異なる動作についてのみ説明する。
本実施の形態３は、電子計算機にアクセスしているユーザが正当なユーザであるかを監視するためのシステムであある。ユーザは電子計算機にアクセスするときは、ログインする必要はなくアクセスし作業を続ける。しかし、電子計算機１１をネットワーク２６経由で個人認証サーバ２８から監視を行う。
個人認証サーバ２８は監視用の監視プログラムとデータベース２９を有し、電子計算機１１にアクセスしているユーザが正当のユーザかを監視する。この監視の作業は、前記の前記の実施の形態２と同様図６のフローチャートのＳ１５８〜Ｓ１７０のステップである。前記の実施の形態２では、Ｓ１７０で終了している。
しかし、Ｓ１７０で終了するのではなく、一定時間に電子計算機１１からのアクセスを制限したり、又は、電子計算機１１からアクセスできるアプリケーションプログラム４を制限したりすることができる。そして一定の時間が経ったら再び、Ｓ１５８から監視活動を再開する。
（実施の形態４）
上記の実施の形態で示すように共通インターフェースドライバ７を用いてパスワード認証を行うときは、キーボード１５から入力されるキーボード操作情報を直接扱うことが可能になるためには、「バックスペース」、「左シフト」、「右シフト」などの機能キーを利用したパスワード認証が可能である。
例えば、「ＰＩＡＮＯ」、バックスペース（以下、ＢＳという。）、バックスペース（以下、ＢＳという）、「ＮＯ」というふうに入力すると、結果として「ＰＩＡＮＯ」というふうに見える。従来は、「ＰＩＡＮＯ」「ＢＳ、ＢＳ」「ＮＯ」と入力したものと、直接「ＰＩＡＮＯ」と入力したものは同等に扱われていた。これは、ＢＳ等の機能キーをパスワード認証などのときに扱わないで、ただ入力ミスを訂正するときに扱われていたためである。
機能キーをパスワード認証に利用すると、「ＰＩＡＮＯ」「ＢＳ、ＢＳ」「ＮＯ」と入力した履歴が、直接「ＰＩＡＮＯ」と入力した履歴と違っているためにパスワードとして利用することが可能になる。これを個人の入力特徴と組み合わせて個人認証を行うと強力な個人認証になる。
（実施の形態５）
次に、暗号化／復号化専用カード３１を用いた実施の形態５を図１１で説明する。本実施の形態５では、電子計算機１１の暗号化・復号化処理をそれ専用のカードである暗号化／復号化専用カード３１で行う。電子計算機１１の共通インターフェースドライバ７の構成部分および処理は、前述の実施の形態１〜４と同様であり、その処理内容は省略する。但し、暗号化／復号化専用カード３１を利用するために、データ処理部１９の構成、および暗号化・復号化の処理は異なる。
図１１に図示したように、暗号化／復号化専用カード３１は電子計算機の付属ハードウェアであり、カードドライバ３０によって制御されてデータのやり取りを行う。カードドライバ３０は、共通インターフェースドライバ７のデータ処理部１９とデータ送受信を行っている。つまり、データ処理部１９は、暗号化又は復号化しようとするデータだけをカードドライバ３０へ送信し、処理されたデータを受信する構成になっている。この動作の手順を図１２のフローチャートを参照しながら説明する。
データ処理部１９は、データを暗号化又は復号化処理を行おうとするときは、カードドライバ３０へ接続処理を行う（Ｓ３００）。そして、暗号化又は復号化処理するデータをカードドライバ３０へ送信し（Ｓ３０１）、処理されたデータを受信するために待機する（Ｓ３０２）。
カードドライバ３０は、このデータを受信し（Ｓ３０３）、暗号化／復号化専用カード３１へ接続処理を行い、データを渡し（Ｓ３０４）、処理されたデータを受信するために待機する（Ｓ３０５）。暗号化／復号化専用カード３１は、このデータを暗号化又は復号化処理して処理データをカードドライバ３０へ返す。
カードドライバ３０は、暗号化／復号化専用カード３１から返信されてきた処理データを受信してデータ処理部１９へ送信する（Ｓ３０６、Ｓ３０７）。データ処理部１９は、この処理されたデータを受信して次の処理にかかる。
本実施の形態５は、あくまで一つの実施の例であり、共通インターフェースドライバ７から暗号化／復号化専用カード３１へのアクセスは、データ取込部１８等を通して自由に実施できるものとする。また、動作手順を示すフローチャートは、ここで一つのデータだけを扱っているが、一連のデータまたオンライン監視に適したデータを連続的に暗号化又は復号化処理を行うのに適した手順に変更できるものとする。
（実施の形態６）
図１７には、実施の形態６の概要を図示している。実施の形態６の個人認証システムは、少なくともクライアント２０１とサーバ２０２とから構成される。クライアント２０１とサーバ２０２はネットワーク２０３によって互いに接続され、データの送受信を行う。ネットワーク２０３はクライアント２０１とサーバ２０２がデータの送受信を行うことが可能なＬＡＮ又はインターネット等の、有線または無線のどのようなネットワークであっても良い。
クライアント２０１は、少なくともキーボード１５とＬＡＮボード１６を有する電子計算機である。クライアント２０１には共通インターフェースドライバ７がインストールされている。共通インターフェースドライバ７は実施の形態１から５の共通インターフェースドライバ７と同様の機能を有するためここでは詳記しない。共通インターフェースドライバ７はユーザがキーボード１５から入力するデータを取得してサーバ２０２へ送信する機能を有する。詳しくは、ユーザが押下又は離反したキーの識別データとその時間データを含む入力データを取得してサーバ２０２へ送信する。
サーバ２０２には、ユーザ認証プログラム２０４がインストールされている。サーバ２０２は、ユーザがキーボード１５から入力するときの入力特徴を示すデータからなるユーザデータベース２０５を有する。ユーザ認証プログラム２０４は、クライアント２０１から送信されてくる入力データを受信し、その入力データをユーザデータベース２０５のデータと比較しながら解析を行ってユーザを特定する。
〔ＬＶＱの概要〕
ユーザ認証プログラム２０４は、入力データを解析するとき、ニューラルネットワーク手法を用いてデータ解析を行う。例えば、学習ベクトル量子化アルゴリズム（Ｌｅａｒｎｉｎｇ  Ｖｅｃｔｏｒ  Ｑｕａｎｔｉｚａｔｉｏｎ、以下は略してＬＶＱという。）を用いている。ＬＶＱはＴ．Ｋｏｈｏｎｅｎによって開発された手法であり、ＬＶＱ１からＬＶＱ３までと複数のバージョンがある。
本実施の形態６ではＬＶＱ１を用いた。その他のＬＶＱアルゴリズムやニューラルネットワーク手法のアルゴリズムを用いても良い。ＬＶＱについての詳細な説明は、Ｔ．Ｋｏｈｏｎｅｎ著「“Ｓｅｌｆ−Ｏｒｇａｎｉｚｉｎｇ  Ｍａｐｓ”（Ｓｐｒｉｎｇｅｒ  Ｓｅｒｉｅｓ  ｉｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｃｉｅｎｃｅｓ，３０，２０００；Ｓｐｒｉｎｇｅｒ  Ｖｅｒｌａｇ）」などに記載されている公知技術であるのでここでは詳記しない。
初期状態に与えられる標本データ（以下、教師データという。）を複数の特徴ベクトルで特徴付けられるクラスに分けて量子化し、入力ベクトルと各特徴ベクトルとの距離を計算する。この距離がもっとも近づいた特徴ベクトルが属するクラスを入力ベクトルが属するクラスと判定する方法である。
ＬＶＱ１は次式によって表現され、学習は次のように行われる。初期状態では、クラスを特徴付ける複数の特徴ベクトルが与えられている。入力された教師データと全ての特徴ベクトルとの距離を計算し、距離が一番近い特徴ベクトルの属するクラスを教師データの属するクラスと推定することができる。
指定個数の特徴ベクトルをクラスごとに生成して、乱数を用いてこれを初期化し学習を開始する。このときの乱数の値は各クラスのベクトルデータの最大・最小値の間である。下記の式１にしたがって特徴ベクトルを更新して学習を行う。この学習を所定回数行うことによって、教師データに対して最適な特徴ベクトルを得る。
ｍｉ、ｍｊは教師データｘに対してもっとも近い距離にある特徴ベクトルである。ｍｉは教師データｘと異なるクラスに属する場合、ｍｊは教師データｘと同じクラスに属する場合である。σ（ｔ）は係数で、０から１の値を取る。
2003069492.tif 000006
〔個人特徴〕
本実施の形態６で、ユーザの入力特徴はユーザが特定のキーを押下する時間、そのキーを離反する時間を用いて次のように表す。キーを押下するときの押下時間、押下したキーを離反するときの離反時間を用いる。ユーザがタイピングするキーはその前後にタイピングしたキーとの相対関係によってユーザの入力特徴になる。
図１８には、その例を図している。ユーザの入力特徴を示すデータとして次の種類の時間を用いている。図中の横軸は時間軸である。下向きの大きな矢印でキーを押下した動作の時間を示している。同様に、上向きの大きな矢印ではキーを離反した動作の時間を示している。この二つの矢印が一組になって一つのキーを押下し離反してタイピングする動作を表す。共通インターフェースドライバ７は、ユーザがキーボード１５から入力するとき各タイピングしたキーを識別するキーコード、キーの押下時間、離反時間を取得し、入力データとしてサーバ２０２へ送信する。
図１８のグラフ（ａ）には、キー１からキー３までをタイピングする例を示している。ｔ１、ｔ２、ｔ３はキー１からキー２の時間的な相互関係を示している。ｔ１はキー１の押下時間からキー２の押下時間までの時間、ｔ２はキー１の離反時間からキー２の押下時間までの時間、ｔ３はキー１の離反時間からキー２の離反時間までの時間をそれぞれ表している。
ｔ１’、ｔ２’、ｔ３’はｔ１、ｔ２、ｔ３の場合と同様にキー２とキー３との時間的な相互関係をそれぞれ表している。ｔ２とｔ２’はキー１の離反時間、キー２の押下時間、又はキー２の離反時間、キー３の押下時間の相対関係によってマイナスの値をとることが可能である。
図１８のグラフ（ｂ）には、キー１からキー３までをタイピングする他の例を示している。ｔ４、ｔ５、ｔ４‘、ｔ５’、ｔ４”はキー１からキー３の時間的な相互関係を示している。ｔ４はキー１の押下時間からキー１の離反時間までの時間、ｔ５はキー１の離反時間からキー２の押下時間までの時間である。ｔ４’はキー２の押下時間からキー２の離反時間までの時間、ｔ５’はキー２の離反時間からキー３の押下時間までの時間で、ｔ４”はキー３の押下時間からキー３の離反時間までの時間である。
ｔ５とｔ５’はキー１の離反時間、キー２の押下時間、又はキー２の離反時間、キー３の押下時間の相対関係によってマイナスの値をとることが可能である。
〔クライアントでの処理〕
本実施の形態６では、クライアント２０１ではユーザがキーボード１５から入力するときの入力データをとってサーバ２０２へ送信する。クライアント２０１では、カーネルモードで動作する共通インターフェースドライバ７でキーに関するデータを取得している。共通インターフェースドライバ７の動作については前記の実施の形態１から５においてで詳細に説明しているため説明を省略する。
図１９には、共通インターフェースドライバ７で取得しサーバ２０２へ送信する入力データの例を図している。入力データは、「番号」２１０、「時間」２１１、「ＩＰ」２１２、「キーコード」２１３、「押／離」２１４の欄からなっている。「番号」２１０はキーのデータを取得した順番で、「時間」２１１はキーのデータを取得したときの時間である。「時間」２１１は実時間の１００ナノ秒単位で表示されている。
「ＩＰ」２１２はクライアント２０１を識別するためのネットワーク上のアドレスである。「キーコード」２１３はキーのコード番号である。「キーコード」２１３は国又は国際機関で定まられたキーコード、又はキーボードの物理的なコード番号であっても良い。「押／離」２１４はキーを押下した又は離反したか示す欄で、「１」は押下、「０」は離反に対応する。
共通インターフェースドライバ７は、データ取込部１８によってキーのデータを取得し、データ処理部１９でキーのデータに時間データを付け加えるなどとして入力データを作成する（図３を参照）。作成した入力データはＴＤＩクライアントドライバ部２０によって、ＬＡＮボードドライバ２１を経てサーバ２０２へ送信される。
〔サーバでの処理〕
サーバ２０２では、クライアント２０１から送信されてくる入力データを受信して入力データファイル２０６としてハードディスクやメモリなどの記憶媒体に保存する。サーバ２０２では、予め特定ユーザの入力するデータを取得してユーザデータベース２０５を作成している。ユーザ認証プログラム２０４、入力データファイル２０６のデータをユーザデータベース２０５のデータと比較してユーザの識別を行う。
ユーザ認証プログラム２０４は学習部２０８と識別部２０９とから構成される。学習部２０８はユーザデータベース２０５から特徴ベクトルを生成するためのプログラムである。識別部２０９は、入力データを特徴ベクトルと比較してユーザの識別を行うためのプログラムである。以下、各部の詳細な働きを示す。
〔学習部２０８〕
学習部２０８では、教師データを読み込んで特徴ベクトルを求める。読み込みした教師データからは、例えば図１８に例示したような入力されたキー、その押下、離反の時間データ、そのキーの前後に入力されたキーと関連する時間データを求めて特徴データとする。図１８に例示したｔ１からｔ３又はｔ４、ｔ５はその一例である。読み込んだすべての教師データに対する特徴データを求めて、全特徴データの特徴を示す特徴ベクトルを求める。
図２０のフローチャートに学習部２０８の動作手順を図示している。サーバ２０２のユーザ認証プログラム２０４を起動させると、学習部２０８が実行される（Ｓ４００）。保存されているユーザデータベース２０５から教師データを読み込む（Ｓ４０１）。ユーザデータベース２０５は、テキスト、バイナリ等の形式のファイルとして保存されている。指定された数の教師データを読み終わるまで次の教師データを読み込みする（Ｓ４０２→Ｓ４０１）。
読込まれた教師データが正しく読み込まれたかを判定する（Ｓ４０３）。正確に読込むことができなかった場合は、学習部２０８のプログラムを強制終了する（Ｓ４０４）。正確に読込まれた場合は、特徴ベクトルを初期化する（４０５）。特徴ベクトルの初期化では指定された数の特徴ベクトルを生成し、乱数を用いて初期化する。乱数は各クラスのベクトルの最大値と最小値との間の値を取る。
そして、学習を開始する。学習回数の初期化（Ｌ＝０）を行い（Ｓ４０６）、ＬＶＱ学習を所定回数ｎだけ行う（Ｓ４０７〜Ｓ４０９）。ＬＶＱ学習では式１で表されるように特徴ベクトルを更新する。σは０．１と固定し学習を行っている。
学習を所定回数ｎだけ行った後、学習した結果である特徴ベクトルを書き出して（Ｓ４１０）、学習部２０８が終了する（Ｓ４１１）。特徴ベクトルはテキスト又はバイナリ形式で出力されてサーバ４０２の記憶装置に記憶される。
〔識別部２０９〕
学習部２０８のプログラムが実行されて、特徴ベクトルを出力して終了すると、識別部２０９のプログラムが実行される。図２１のフローチャートには、識別部２０９のプログラムの手順を図示している。識別部２０９のプログラムが開始すると（Ｓ４２０）、学習部２０８で出力された特徴ベクトルを読み込む（Ｓ４２１）。特徴ベクトルを読み込んで、検証するユーザの入力データを読み込む（Ｓ４２２）。
入力データはクライアント２０１から送信されてサーバ２０２に入力データファイル２０６として保存されている。入力データを読み終わると、識別処理を行う（Ｓ４２３）。識別処理が終了すると識別結果を出力して（Ｓ４２４）、次の入力データを読み込み識別する（Ｓ４２５→Ｓ４２２）。次の入力データが無い又は終了する指示がある場合はプログラムを終了する（Ｓ４２６）。
〔識別結果〕
識別部２０９のプログラムで出力される識別結果はサーバ２０２の記憶装置にテキスト又はバイナリ形式のファイルとして記憶される。図２２には、識別結果の例を図示している。識別結果を「読み込みファイル」２２０の行と「識別結果」２２１の列とから成る表で図示している。「読み込みファイル」２２０の行と「識別結果」２２１列はそれぞれ「Ａ」、「Ｂ」、．．．、「Ｇ」の各行、各列から構成されている。
「読み込みファイル」２２０の各行は入力データを示し、「識別結果」２２１の各列は教師データの各特徴ベクトルを示す。各行と各列に対する交差するセルは、入力データが各特徴ベクトルに属する割合をパーセントで示している。識別部２０９のプログラムは、入力データである「読み込みファイルＡ」２２２を読み込み、この入力データがどの特徴ベクトルに属するかを求めて、結果をパーセントで出力している。
この表からは、クライアント２０１のキーボードから入力しているユーザが誰であるかを判断することができる。「読み込みファイルＡ」２２２のユーザは、「特徴ベクトルＡ」２２４を有するユーザである可能性は「７５％」、「特徴ベクトルＢ」２２５を有するユーザである可能性は「６％」である。「読み込みファイルＢ」２２３のユーザは、「特徴ベクトルＡ」２２４を有するユーザである可能性は「０％」、「特徴ベクトルＢ」２２５を有するユーザである可能性は「１００％」である。
このように、各ユーザの個人特徴によって本人特定は「１００％」ものもあれば、他のユーザの特徴と似ているため「７０％」から「８０％」ぐらいのものもある。
産業上の利用分野
本発明は、カーネルモードでキーボードからの入力の正確なタイミングを抽出しており、タイミングの正確さが求められるセキュリティ保護関連の分野、例えば、個人情報、国家機密情報、企業秘密などの管理システムに組み込んで利用すればより安全が高めることが可能である。
【図面の簡単な説明】
図１は、本発明の実施の形態を示す概念図である。
図２は、本発明の実施の形態の動作を示すフローチャートである。
図３は、共通インターフェースドライバの構成図である。
図４は、図３の動作を示すフローチャートである。
図５は、ネットワーク経由で個人認証を行う概念図である。
図６は、図５の動作手順を示すフローチャートである。
図７は、ネットワーク経由で個人認証を行うとき共通インターフェースドライバの動作手順を示すフローチャート（１）である。
図８は、図７のフローチャート（１）の続きのフローチャート（２）である。
図９は、従来の個人入力特徴を示すグラフである。
図１０は、本発明の個人入力特徴を示すグラフである。
図１１は、暗号化／復号化専用カードを用いた共通インターフェースドライバの機能ブロック図である。
図１２は、図１１の動作を示すフローチャートである。
図１３は、Ｗｉｎｄｏｗｓのアーキテクチャを示す図である。
図１４は、従来のＯＳとデバイスドライバの概念図である。
図１５は、従来のデバイスドライバの動作手順を示すフローチャートである。
図１６は、従来のキー操作データ取得のフローチャートである。
図１７は、実施の形態６の概要を示す図である。
図１８は、実施の形態６のキーの読み取りの時間間隔を示す図である。
図１９は、実施の形態６の入力データの例を示す図である。
図２０は、実施の形態６の学習部のプログラムの例を示すフローチャートである。
図２１は、実施の形態６の識別部のプログラムの例を示すフローチャートである。
図２２は、実施の形態６の識別結果を示す例である。
【図１】
2003069492.tif 000013
【図２】
2003069492.tif 000014
【図３】
2003069492.tif 000015
【図４】
2003069492.tif 000016
【図５】
2003069492.tif 000017
【図６】
2003069492.tif 000018
【図７】
2003069492.tif 000019
【図８】
2003069492.tif 000020
【図９】
2003069492.tif 000021
【図１０】
2003069492.tif 000022
【図１１】
2003069492.tif 000023
【図１２】
2003069492.tif 000024
【図１３】
2003069492.tif 000025
【図１４】
2003069492.tif 000026
【図１５】
2003069492.tif 000027
【図１６】
2003069492.tif 000028
【図１７】
2003069492.tif 000029
【図１８】
2003069492.tif 000030
【図１９】
2003069492.tif 000031
【図２０】
2003069492.tif 000032
【図２１】
2003069492.tif 000033
【図２２】
2003069492.tif 000034
【国際調査報告】
2003069492.tif 000035
2003069492.tif 000036
2003069492.tif 000037
2003069492.tif 000038