(57)【要約】【課題】  パスワードのクラックに対して堅牢でユーザの誤認識も発生しにくいパスワード認証技術を提供する。【解決手段】  メモリは、入力パスワードの文字列を保持する。制御部は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。認証部は、１以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。【選択図】    図１
2012194878.tif 000002
【特許請求の範囲】
【請求項１】
入力パスワードの文字列を保持するメモリと、
前記入力パスワードの文字入力の時間間隔が閾値以上となるときに、前記入力パスワードの文字として時間経過を示す制御符号を前記メモリに保持させる制御部と、
１以上の前記制御符号を含む認証パスワードの文字列と、前記入力パスワードの文字列とが合致したときに認証を行う認証部と、
を備えることを特徴とする認証装置。
【請求項２】
請求項１に記載の認証装置において、
前記制御部は、外部から前記制御符号の文字入力を受け付けた後、次の文字入力までの時間間隔が前記閾値以上となるときに、前記制御符号を前記メモリに保持させることを特徴とする認証装置。
【請求項３】
請求項２に記載の認証装置において、
前記制御部は、入力時に前記入力パスワードの末尾の文字が消去され、かつ前記末尾の文字の１文字前の文字が前記制御符号であったときは、前記末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントすることを特徴とする認証装置。
【請求項４】
請求項１に記載の認証装置において、
前記制御部は、外部から前記制御符号以外の文字入力を受け付けた後、次の文字入力までの時間間隔が前記閾値以上となるときに、前記制御符号を前記メモリに保持させることを特徴とする認証装置。
【請求項５】
請求項４に記載の認証装置において、
前記制御部は、前記制御符号を前記メモリに保持させたときに、パスワードの入力者に対して通知を行うことを特徴とする認証装置。
【請求項６】
請求項４または請求項５に記載の認証装置において、
前記制御部は、入力時に前記入力パスワードの末尾の文字が消去され、かつ前記末尾の文字の１文字前の文字が前記制御符号でなかったときは、前記末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントすることを特徴とする認証装置。
【請求項７】
メモリが入力パスワードの文字列を保持する処理と、
制御部が前記入力パスワードの文字入力の時間間隔が閾値以上となるときに、前記入力パスワードの文字として時間経過を示す制御符号を前記メモリに保持させる処理と、
認証部が１以上の前記制御符号を含む認証パスワードの文字列と、前記入力パスワードの文字列とが合致したときに認証を行う処理と、
をコンピュータに実行させることを特徴とする認証プログラム。
【請求項８】
認証装置と、入力装置とを有する認証システムであって、
前記認証装置は、
入力パスワードの文字列を保持するメモリと、
前記入力パスワードの文字入力の時間間隔が閾値以上となるときに、前記入力パスワードの文字として時間経過を示す制御符号を前記メモリに保持させる制御部と、
１以上の前記制御符号を含む認証パスワードの文字列と、前記入力パスワードの文字列とが合致したときに認証を行う認証部と、
を備え、
前記入力装置は、前記入力パスワードの文字の入力を受け付けて前記認証装置に通知することを特徴とする認証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証装置、認証プログラム、及び認証システムに関する。
【背景技術】
【０００２】
従来より、不特定のユーザがアクセスして利用可能なコンピュータシステムの大半は、何らかのリモートアクセスプロトコルを実装している。例えば、システムを利用出来る正規のユーザをパスワード入力で特定するパスワード認証が行われている。
【０００３】
一般に、パスワード認証はクリアテキスト（平文）で行われることが多いのが実情である。しかし、平文のみのパスワード認証では、ブルートフォース攻撃（総当り攻撃とも呼ばれ、可能な組合せを全て試す攻撃手法。）、辞書攻撃（辞書にある単語を片っ端から入力して試す攻撃手法。そのまま入力するだけでなく、大文字と小文字を混在させたり数字を加えたりといった処理も加えて実行するものが多い。）、あるいはパケットスニッフィング（ネットワークを流れるパケットを盗聴し、そこからＩＤやパスワードを拾い出すこと。）といった攻撃形態によりパスワードがクラックされてしまうことがある。そして、パスワードがクラックされてしまうと、正規ユーザになりすました攻撃者（クラッカー）にシステムを不正に利用されてしまうことがある。
【０００４】
このため、認証にユーザ固有のキー入力間隔等の時間要素を取り入れたパスワード認証が提案されている（例えば、特許文献１、２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１３７６８１号公報
【特許文献２】特開２０１０−１７６５６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来のユーザ固有のキー入力間隔等を用いたパスワード認証では、ユーザのキー入力のタイミングがずれると、正規のユーザであっても誤認識によってアクセスが拒否される恐れがある点で改善の余地があった。
【０００７】
上記事情に鑑み、パスワードのクラックに対して堅牢でユーザの誤認識も発生しにくいパスワード認証技術を提供する。
【課題を解決するための手段】
【０００８】
一の態様の認証装置は、メモリと、制御部と、認証部とを備える。メモリは、入力パスワードの文字列を保持する。制御部は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。認証部は、１以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。
【０００９】
一の態様の認証装置において、制御部は、外部から制御符号の文字入力を受け付けた後、次の文字入力までの時間間隔が閾値以上となるときに、制御符号をメモリに保持させてもよい。
【００１０】
また、制御部は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の１文字前の文字が制御符号であったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントしてもよい。
【００１１】
一の態様の認証装置において、制御部は、外部から制御符号以外の文字入力を受け付けた後、次の文字入力までの時間間隔が閾値以上となるときに、制御符号をメモリに保持させてもよい。
【００１２】
また、制御部は、制御符号をメモリに保持させたときに、パスワードの入力者に対して通知を行ってもよい。
【００１３】
また、制御部は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の１文字前の文字が制御符号でなかったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントしてもよい。
【００１４】
一の態様の認証プログラムは、メモリが入力パスワードの文字列を保持する処理と、制御部が入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる処理と、認証部が１以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う処理と、をコンピュータに実行させる。
【００１５】
一の態様の認証システムは、認証装置と、入力装置とを有する。認証装置は、メモリと、制御部と、認証部とを備える。メモリは、入力パスワードの文字列を保持する。制御部は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。認証部は、１以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。入力装置は、入力パスワードの文字の入力を受け付けて認証装置に通知する。
【発明の効果】
【００１６】
入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。そして、１以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行うので、パスワードのクラックに対して堅牢でユーザの誤認識も発生しにくくなる。
【図面の簡単な説明】
【００１７】
【図１】第１実施形態の認証システムの全体構成例を示す図
【図２】第１実施形態の認証システムの動作例を示すフローチャート
【図３】第１実施形態の認証システムへの入力例を示す図
【図４】第２実施形態の認証システムの全体構成例を示す図
【図５】第２実施形態の認証システムの動作例を示すフローチャート
【図６】第２実施形態の認証システムへの入力例を示す図
【発明を実施するための形態】
【００１８】
以下、図面を用いて本発明の実施形態について説明する。
【００１９】
＜第１実施形態の説明＞
図１は、第１実施形態の認証システムの全体構成例を示す図である。第１実施形態の認証システムは、パスワード認証を実装したコンピュータシステム全般に用いられる。
【００２０】
第１実施形態の認証システムは、ユーザ側の入力端末としての入力装置１と、サービスの提供者等によって運営されるサーバとを有する。サーバには、パスワード認証を行う認証装置２が実装されており、入力装置１から入力された入力パスワードの文字列と認証装置２が保持する認証パスワードの文字列とが一致したときに、後述の認証部が認証を行う。その結果、入力装置１からサーバの提供者によって提供されるサービス（例えばインターネット上のアプリ等）へのアクセスが許可される。なお、入力装置１と認証装置２とは、例えばインターネットを介して有線又は無線で接続されている。入力装置１は、キーボードタイプのものでもタッチパネルタイプのものでもよい。なお、入力装置１は、１つのサーバに対して１台に限らず複数台存在していてもよい。
【００２１】
ここで本明細書の「制御コード」とは、入力パスワードの文字の１つであって文字入力の時間間隔に閾値以上の時間経過があることを示す制御符号である。なお、本実施形態では、制御コードを「＠」で示す。但し、制御コードは、「＠」以外のコードを用いてもよい。
【００２２】
認証装置２は、ドライバ部１０と、認証部２０とを有する。
【００２３】
ドライバ部１０は、入力パーサ１１と、タイマ１２と、経過コード挿入部１３と、内部受信バッファ１４とを有する。入力パーサ１１は、入力装置１と、内部受信バッファ１４と、タイマ１２とにそれぞれ接続されている。タイマ１２は、経過コード挿入部１３にさらに接続されている。経過コード挿入部１３は、内部受信バッファ１４とさらに接続されている。内部受信バッファ１４は、認証部２０とさらに接続されている。
【００２４】
入力パーサ１１は、入力装置１を介してユーザからの入力を受け付ける。入力パーサ１１が制御コード以外の文字入力を受け付けたときは、ドライバ部１０は、内部受信バッファ１４にその文字を入力する。入力パーサ１１が制御コードの入力を受け付けたときは、ドライバ部１０は、タイマ１２を起動する。
【００２５】
タイマ１２は、入力パーサ１１が制御コードを受信したとき、ドライバ部１０によって起動される。ここでタイマ１２は、カウントダウンタイマでもカウントアップタイマでもどちらでもよい。本実施形態では、タイマ１２がカウントダウンタイマである例を説明する。
【００２６】
経過コード挿入部１３は、タイマ１２の設定時間が経過したときは、制御コードを内部受信バッファ１４に入力する。
【００２７】
内部受信バッファ１４は、入力される文字列の情報（パスワード）を保持するメモリであって、例えば揮発性メモリで構成される。なお、ドライバ部１０は、ユーザから入力確定コード（キャリッジリターン）の入力を受け付けたときは、内部受信バッファ１４が保持する文字と制御コードとからなるパスワードを確定する。ドライバ部１０は、確定した入力パスワード（確定コード）を内部受信バッファ１４からコピーし、認証部２０に送信する。
【００２８】
認証部２０は、確定コード受信部２１と記憶部２２とを有する。
【００２９】
確定コード受信部２１は、内部受信バッファ１４からコピーされた確定コードを受信する。確定コード受信部２１は、受信した確定コードと記憶部２２に記憶されている認証パスワードとが合致したときに、正規のアクセスであると認証する。
【００３０】
記憶部２２は、予め登録された認証パスワードのファイルが複数記憶されているメモリであって、例えば不揮発性メモリで構成される。本明細書の「認証パスワード」は、いずれも１以上の制御符号を含む文字列である。
【００３１】
（第１実施形態の動作の説明）
以下、第１実施形態での認証装置の動作を説明する。第１実施形態では、ユーザによる制御コードの入力動作をトリガとして、認証装置側で制御コードの入力が行われる構成について説明する。
【００３２】
図２は、第１実施形態の認証装置２の動作例を示すフローチャートである。図２のフローチャートは、ユーザが第１実施形態での認証装置２にアクセスした時点で開始する。
【００３３】
ステップＳ１：ドライバ部１０は、入力パーサ１１が入力装置からの入力を受け付けたか否か判定する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ３に移行させる。一方、上記要件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ２に移行させる。
【００３４】
ステップＳ２：ドライバ部１０は、タイマ１２が０となったか否か（すなわち、タイマ１２で設定した時間が経過したか否か）判定する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ８に移行させる。一方、上記要件を満たさないとき（すなわち、タイマ１２が起動していないか、起動していてもまだ０になっていないとき）（Ｎｏ側）は、ドライバ部１０は処理をステップＳ１に移行させる。その後、入力パーサ１１が入力装置１からの入力を受け付けたと判定するか、タイマ１２が０になったと判定するまで、ドライバ部１０はステップＳ１のＮｏ側の処理とステップＳ２のＮｏ側の処理とを繰り返す。
【００３５】
ステップＳ３：ドライバ部１０は、タイマ１２を初期化させる。例えば、５秒のカウントダウンタイマであれば、タイマ１２が作動中、停止中にかかわらず、ドライバ部１０はタイマ１２を初期状態の５秒に設定する。
【００３６】
ステップＳ４：ドライバ部１０は、入力されたコードが制御コード「＠」であるか否か判定する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ５に移行させる。一方、上記要件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ１０に移行させる。
【００３７】
ステップＳ５：ドライバ部１０は、入力された制御コードの１つ前のコードが制御コードであるか否か判定する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ６に移行させる。ステップＳ５のＹｅｓ側は、例えばユーザが「ＡＢ＠」の後にさらに「＠」を入力した場合等が該当する。一方、上記要件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ７に移行させる。ステップＳ５のＮｏ側は、例えば、ユーザが「ＡＢ」の後に「＠」を入力した場合等が該当する。なお、本明細書で「ＢＰ」とは、内部受信バッファ１４上で現在入力されている文字のデータが格納されているアドレスを示す変数（バッファポインタ）のことを表す。また、「ＢＰ−１」とは、ＢＰより１文字分前の内部受信バッファ１４のアドレスを示す変数である。
【００３８】
ステップＳ６：ドライバ部１０は、ステップＳ５で入力された制御コードを受信バッファに追加せず、処理をステップＳ７に移行させる。例えば、ユーザが「ＡＢ＠＠」と入力しても受信バッファの「ＡＢ＠」の後に「＠」は追加されず、内部受信バッファ１４に「＠」が連続して保持されることはない。これにより、内部受信バッファ１４のオーバーフローが防止される。
【００３９】
ステップＳ７：ドライバ部１０は、タイマ１２を起動させる。これにより、例えばタイマ１２は、５・４・３…のようにカウントダウンを開始する。ドライバ部１０は、その後、処理をステップＳ１に移行させる。ドライバ部１０が処理をステップＳ１に移行させた後、ステップＳ１のＹｅｓ側となるか、ステップＳ２のＹｅｓ側となるまでは、ドライバ部１０はステップＳ１のＮｏ側とステップＳ２のＮｏ側の処理をループさせる。そして、ステップＳ２で、ドライバ部１０がタイマ１２が０になったと判定したとき（Ｙｅｓ側）は、処理をステップＳ８に移行させる。なお、タイマ１２が０になる前に、ステップＳ１においてドライバ部１０が入力パーサ１１が入力装置１からの入力を受け付けたと判定したとき（Ｙｅｓ側）は、ドライバ部１０は、処理をステップＳ３に移行させる。
【００４０】
ステップＳ８：ドライバ部１０は、タイマ１２を初期化させる。すなわち、０になっているタイマ１２をまた初期設定（例えば５秒）に戻す。
【００４１】
ステップＳ９：ドライバ部１０は、経過コード挿入部１３を介して「＠」を内部受信バッファ１４に保持させる。そして、ドライバ部１０は、処理をステップＳ１に移行させる。
【００４２】
ステップＳ１０：ドライバ部１０は、入力されたコードが削除キー（ＢＳキー）であるか否か判定する。ここで、ユーザがパスワードを誤入力した場合にユーザが削除キーを入力すると、ドライバ部１０はユーザが入力したパスワードを１文字消去する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ１１に移行させる。一方、条件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ１４に移行させる。
【００４３】
ステップＳ１１：ドライバ部１０は、内部受信バッファ１４に保持されている末尾の１文字を消去する。そして、ドライバ部１０は、処理をステップＳ１２に移行させる。
【００４４】
ステップＳ１２：ドライバ部１０は、消去された文字の１文字前に入力された文字が制御コードであるか否か判定する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ１３に移行させる。ステップＳ１２のＹｅｓ側は、例えば「ＡＢ＠Ｃ」と入力されていた場合に、ユーザが「Ｃ」を消去した場合等が該当する。一方、上記要件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ１に移行させる。ステップＳ１２のＮｏ側は、例えば「ＡＢ」と入力されていた場合にユーザが「Ｂ」を消去した場合や、「ＡＢ＠」と入力されていた場合にユーザが「＠」を消去した場合等が該当する。
【００４５】
ステップＳ１３：ドライバ部１０は、タイマ１２を起動する。そして、ドライバ部１０は、処理をステップＳ１に移行させる。本ステップが無いと、例えばユーザが「ＡＢ＠」と入力した後に５秒待たずに「Ｃ」を入力してしまった場合、「＠」は内部受信バッファ１４に保持されないため、パスワードの入力を最初から全てやり直さなければならない。しかし、本ステップがあることで、ユーザが「Ｃ」を消去した場合、ドライバ部１０は再度時間を計り直すため、ユーザは入力に失敗した文字から入力し直せば足りる。すなわち、「Ｃ」を消去すると同時にドライバ部１０はタイマ１２を起動させるため、「Ｃ」を消去してから例えば５秒待てば、ステップＳ２、ステップＳ８、ステップＳ９を経由して内部受信バッファ１４に「＠」が保持される。
【００４６】
ステップＳ１４：ドライバ部１０は、入力パーサ１１が入力確定コード（キャリッジリターン）の入力を受け付けたか否か判定する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ１６に移行させる。ステップＳ１４のＹｅｓ側は、例えばユーザがリターンキーやエンターキー等を入力した場合等が該当する。一方、上記要件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ１５に移行させる。
【００４７】
ステップＳ１５：ドライバ部１０は、入力されたパスワードのコードを内部受信バッファ１４に保持させ、処理をステップＳ１に移行させる。
【００４８】
ステップＳ１６：ドライバ部１０は、内部受信バッファ１４が保持している入力パスワードの文字列（確定コード）をコピーして認証部２０の確定コード受信部２１に送信する。そして、ドライバ部１０は、処理を認証部２０に移行させる。認証部２０は、処理をステップＳ１７に移行させる。
【００４９】
ステップＳ１７：認証部２０は、ステップＳ１６で受信した入力パスワードの確定コードと記憶部２２に記憶されている認証パスワードとが一致する場合は、正規のユーザのアクセスであると認証し、本フローチャートを終了する。認証された結果、ユーザは第１実施形態のコンピュータシステムのサービスを利用することが出来る。なお、上記の入力パスワードの確定コードと認証パスワードとが一致しない場合は、認証部２０は正規のユーザのアクセスであるとは認証せず、ユーザは第１実施形態のコンピュータシステムのサービスを利用することが出来ない。
【００５０】
（第１実施形態の入力例の説明）
図３は、第１実施形態の認証装置２への入力例を示す図である。図３の例では、第１実施形態におけるパスワード認証において、認証パスワード「ＡＢ＠Ｃ＠ＤＥ」が記憶部２２に記憶されているものとする。そして、ユーザが入力パスワード「ＡＢ＠Ｃ＠ＤＥ」を入力するものとする。
【００５１】
図３において、左側の列は、ユーザの入力した文字を表している。中央の列は、サーバに入力された文字を表している。右側の列は、内部受信バッファ１４に保持された文字を表している。
【００５２】
まず、ユーザは「Ａ」を入力する（Ｓ１）。すると、サーバは「Ａ」を受信する。その後、ドライバ部１０は、内部受信バッファ１４に「Ａ」を保持させる（Ｓ１５）。「Ｂ」についても同様の処理が繰り返される。
【００５３】
「Ｂ」の入力後、ユーザは、「＠」を入力する（Ｓ１）。すると、サーバは、「＠」を受信するが、ドライバ部１０はこの時点で内部受信バッファ１４に「＠」を保持させない。その代わり、ドライバ部１０は、タイマ１２を起動させる（Ｓ７）。第１実施形態でのタイマ１２は、起動すると５秒のカウントを始める。なお、タイマ１２がカウントしている間は、５秒〜０秒までカウントされている様子が、例えば入力装置１のモニタ等に表示されるようにしてもよい。上記モニタ等に表示されれば、ユーザがカウントが完了したかどうかを知ることが出来る。そして、５秒が経過しタイマ１２が０になると、ドライバ部１０は、タイマ１２を初期化させ、内部受信バッファ１４に「＠」を保持させる（Ｓ８、Ｓ９）。
【００５４】
その後、「Ｃ」、「Ｄ」、「Ｅ」については「Ａ」と同様の処理が繰り返され、「Ｃ」の後の「＠」については、「Ｂ」の後の「＠」についての処理と同様の処理が繰り返される。
【００５５】
図３の例では、ユーザは「Ｃ」と「Ｄ」の入力前に「＠」を入力し、タイマ１２を起動させている（Ｓ７）。そして、５秒経過し内部受信バッファ１４に「＠」が保持された後（Ｓ９）、ユーザは次の入力を行っている（Ｓ１）。しかし、ユーザが「＠」を入力した後、５秒待たずに次の入力を行ってしまうと、タイマ１２が初期化され内部受信バッファ１４に「＠」が保持されない（Ｓ３）。
【００５６】
その結果、「ＡＢＣＤＥ」の入力によるブルートフォース攻撃、辞書攻撃の場合や、単に「ＡＢ＠Ｃ＠ＤＥ」の文字列を連続的に入力する上記の攻撃の場合には、「＠」が内部受信バッファ１４に保持されない。そのため、攻撃者はコンピュータシステムにログインすることが出来ない。また、パケットスニッフィング等で、不正ユーザによって盗まれた入力文字列「ＡＢ＠Ｃ＠ＤＥ」が入力された場合において、不正ユーザは「＠」入力後の時間間隔を考慮せずに次の文字を入力する可能性が高い。このため、上記の場合には、内部受信バッファ１４には「ＡＢＣＤＥ」が保持され、不正ユーザはログインすることが出来ない。
【００５７】
（第１実施形態の効果）
第１実施形態によれば、認証装置２は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。そして、認証装置２は、１以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。このため、認証装置２は、キー入力間隔を考慮に入れないブルートフォース攻撃、辞書攻撃、パケットスニッフィング等のパスワードクラックに対して堅牢な認証を行うことが出来る。
【００５８】
また、第１実施形態によれば、認証装置２は、外部から制御符号の文字入力を受け付けた後、次の文字入力までの時間間隔が閾値以上となるときに、制御符号をメモリに保持させる。このため、微妙なキー入力間隔の差で正規のユーザが誤認識されることを少なくすることが出来る。
【００５９】
また、第１実施形態によれば、認証装置２は、タイマ１２のカウントの状態を入力装置１のモニタ等に表示させた場合には、ユーザは時間のカウントが完了したか否かを知ることが出来る。このため、ユーザの誤入力を少なくすることが出来る。
【００６０】
また、第１実施形態によれば、認証装置２は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の１文字前の文字が制御符号であったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントする。このため、ユーザは、パスワードを訂正する際、パスワードを再度全て入力し直さなくてもよい。
【００６１】
＜第２実施形態の説明＞
次に、第２実施形態の認証システムについて説明する。図４は、第２実施形態での認証システムの全体構成例を示す図である。第２実施形態での認証システムは、基本構成が第１実施形態のものと共通する。そのため、第２実施形態の説明では、第１実施形態と同一の構成については第１実施形態と同一の符号を用い、重複説明は省略する。
【００６２】
第２実施形態でのドライバ部１０は、入力パーサ１１と、タイマ１２と、経過コード挿入／送出部１５と、内部受信バッファ１４とを有する。
【００６３】
入力パーサ１１は、入力装置１と、内部受信バッファ１４と、タイマ１２とにそれぞれ接続されている。タイマ１２は、経過コード挿入／送出部１５とさらに接続されている。経過コード挿入／送出部１５は、内部受信バッファ１４と、入力装置１とにさらに接続されている。内部受信バッファ１４は、認証部２０とさらに接続されている。
【００６４】
第２実施形態でのタイマ１２は、入力パーサ１１が制御コード以外の文字の入力を受け付けたと同時に、ドライバ部１０によって起動される。なお、第２実施形態においても、タイマ１２がカウントダウンタイマである例を説明する。タイマ１２の設定時間が経過したときは、ドライバ部１０は制御コードを経過コード挿入／送出部１５に入力する。
【００６５】
経過コード挿入／送出部１５は、タイマ１２の設定時間が経過したときは、制御コードを内部受信バッファ１４に保持させる。また、経過コード挿入／送出部１５は、制御コードが保持されたことを入力装置１に送信する。そして、経過コード挿入／送出部１５は、入力装置１のモニタ等を介してユーザに制御コードが保持されたことを通知する。
【００６６】
（第２実施形態の動作の説明）
以下、第２実施形態での認証装置２の動作を説明する。第２実施形態では、文字入力の時間間隔が閾値以上空く場合に、ユーザの入力によらずに認証装置側で制御コードの入力が行われる構成について説明する。
【００６７】
図４は、第２実施形態の認証装置２の動作例を示すフローチャートである。図４のフローチャートは、第１実施形態と同様にユーザが認証装置２にアクセスした時点で開始する。
【００６８】
ステップＳ２１：ドライバ部１０は、タイマ１２を初期化させる。すなわち、ドライバ部１０は、タイマ１２を例えば初期状態の５秒に設定する。
【００６９】
ステップＳ２２：ドライバ部１０は、入力パーサ１１が入力装置１からの入力を受け付けたか否か判定する。上記要件を満たすときは（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ２４に移行させる。一方、上記要件を満たさないときは（Ｎｏ側）は、ドライバ部１０は処理をステップＳ２３に移行させる。
【００７０】
ステップＳ２３：ドライバ部１０は、タイマ１２が０秒となったか否か（すなわち、タイマ１２で設定した時間が経過したか否か）判定する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ２８に移行させる。一方、上記要件を満たさないとき（すなわち、タイマ１２が起動していないか、起動していてもまだ０になっていないとき）（Ｎｏ側）は、ドライバ部１０は処理をステップＳ２２に移行させる。その後、入力パーサ１１が入力装置１からの入力を受け付けたと判定するか、タイマ１２が０になったと判定するまで、ドライバ部１０はステップＳ２２のＮｏ側の処理とステップＳ２３のＮｏ側の処理とを繰り返す。
【００７１】
ステップＳ２４：ドライバ部１０は、入力パーサ１１が入力を受け付けたコードが削除キー（ＢＳキー）であるか否か判定する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ３１に移行させる。一方、上記要件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ２５に移行させる。
【００７２】
ステップＳ２５：ドライバ部１０は、入力パーサ１１が入力確定コード（キャリッジリターン）の入力を受け付けたか否か判定する。上記要件をみたすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ３６に移行させる。一方、上記要件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ２６に移行させる。
【００７３】
ステップＳ２６：ドライバ部１０は、入力されたパスワードのコードを内部受信バッファ１４に保持させ、処理をステップＳ２７に移行させる。
【００７４】
ステップＳ２７：ドライバ部１０は、タイマ１２を初期化（再）起動させる。すなわち、例えば、タイマ１２が起動していないときに入力パーサ１１が入力を受け付けたときは、ドライバ部１０はタイマ１２を初期化して起動させ、カウントを始めさせる。また、タイマ１２が起動しているときに入力パーサ１１が入力を受け付けたときは、ドライバ部１０は起動しているタイマ１２を一旦初期化して再起動させ、また最初からカウントを始めさせる。そして、ドライバ部１０は、処理をステップＳ２２に移行させる。ドライバ部１０が処理をステップＳ２２に移行させた後、ステップＳ２２のＹｅｓ側となるか、ステップＳ２３のＹｅｓ側となるまでは、ドライバ部１０はステップＳ２２のＮｏ側とステップＳ２３のＮｏ側の処理をループさせる。そして、ステップＳ２３で、ドライバ部１０がタイマ１２が０となったと判定したとき（Ｙｅｓ側）は、処理をステップＳ２８に移行させる。なお、タイマ１２が０になる前に、ステップＳ２２においてドライバ部１０が入力パーサ１１が入力装置１からの入力を受け付けたと判定したとき（Ｙｅｓ側）は、ドライバ部１０は、処理をステップＳ２４に移行させる。
【００７５】
ステップＳ２８：トライバ部は、タイマ１２を初期化させる。すなわち、０になっているタイマ１２をまた初期設定（例えば５秒）に戻す。そして、ドライバ部１０は、処理をステップＳ２９に移行させる。
【００７６】
ステップＳ２９：トライバ部は、経過コード挿入／送出部１５を介して「＠」を内部受信バッファ１４に保持させる。そして、ドライバ部１０は、処理をステップＳ３０に移行させる。
【００７７】
ステップＳ３０：ドライバ部１０は、経過コード挿入／送出部１５を介して「＠」が内部受信バッファ１４に保持されたことを入力装置１に送信する。そして、ドライバ部１０は、例えば入力装置１のモニタ等に表示させるなどして、「＠」が内部受信バッファ１４に保持されたことがユーザにわかるように通知する。そして、ドライバ部１０は、処理をステップＳ２２に移行させる。
【００７８】
ステップＳ３１：ステップＳ３１は、ステップＳ２４で、ドライバ部１０が、入力パーサ１１が削除キー（ＢＳキー）の入力を受け付けたと判定したとき（Ｙｅｓ側）の処理である。ドライバ部１０は、内部受信バッファ１４に保持されている末尾の１文字を消去する。そして、ドライバ部１０は、処理をステップＳ３２に移行させる。
【００７９】
ステップＳ３２：ドライバ部１０は、消去された文字が１文字目であるか否か判定する。上記要件をみたすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ３５に移行させる。ステップＳ３２のＹｅｓ側は、例えば「Ａ」や「Ｂ」などまだ１文字しか入力されていない場合にその文字が消去された場合等が該当する。一方、上記要件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ３３に移行させる。ステップＳ３２のＮｏ側は、例えば「ＡＢ＠」と入力されていた場合に「＠」が消去された場合や、「ＡＢ＠Ｃ」と入力されていた場合に「Ｃ」が消去された場合等が該当する。
【００８０】
ステップＳ３３：ドライバ部１０は、消去された文字の１文字前に入力された文字が制御コードであるか否か判定する。上記要件を満たすとき（Ｙｅｓ側）は、ドライバ部１０は処理をステップＳ３５に移行させる。ステップＳ３３のＹｅｓ側は、例えば「ＡＢ＠Ｃ」と入力されていた場合に、「Ｃ」が消去された場合等が該当する。一方、上記要件を満たさないとき（Ｎｏ側）は、ドライバ部１０は処理をステップＳ３４に移行させる。ステップＳ３３のＮｏ側は、例えば「ＡＢ」と入力されていた場合に「Ｂ」が消去された場合や、「ＡＢ＠」と入力されていた場合に「＠」が消去された場合等が該当する。
【００８１】
ステップＳ３４：ドライバ部１０は、タイマ１２を初期化再起動させる。そして、ドライバ部１０は処理をステップＳ２２に移行させる。本ステップが無いと、例えば「ＡＢ＠Ｃ」と入力すべき場合において、ユーザが「ＡＢ」と入力した後に誤って５秒待たずに「Ｃ」を入力した場合、「＠」は内部受信バッファ１４に保持されない。このため、ユーザは入力を最初からやり直さなければならない。しかし、本ステップがあると、ユーザが「Ｃ」を消去すると同時にドライバ部１０はタイマ１２を初期化再起動させるため、「Ｃ」を消去してから例えば５秒待てば、ステップＳ２３、ステップＳ２８、ステップＳ２９を経由して内部受信バッファ１４に「＠」が保持される。このため、ユーザは最初から入力をやり直さなくてよい。
【００８２】
ステップＳ３５：ドライバ部１０は、タイマ１２を初期化させる。本ステップは、ステップＳ３２で１文字目が消去された場合に、ステップＳ３４、Ｓ３０を経由してタイマ１２が初期化再起動され、１文字目に「＠」が挿入されてしまうことや、ステップＳ３３で消去された文字の前が「＠」であった場合にステップＳ３４、Ｓ３０を経由してタイマ１２が初期化再起動され、「＠」が連続して挿入されてしまうことを防ぐため、ドライバ部１０がタイマ１２を初期化のみさせる処理である。そして、ドライバ部１０は処理をステップＳ２２に移行させる。
【００８３】
ステップＳ３６：本ステップは、ステップＳ２５で、ドライバ部１０が入力パーサ１１が入力確定コード（キャリッジリターン）の入力を受け付けたと判定したとき（Ｙｅｓ側）の処理である。ドライバ部１０は、タイマ１２を初期化させる。本ステップは、入力パーサ１１がコードの入力を受け付けた後、ステップＳ２７を経由してタイマ１２が初期化（再）起動してしまっているので、そのタイマ１２のカウントを止めるための処理である。そして、ドライバ部１０は、処理をステップＳ３７に移行させる。
【００８４】
ステップＳ３７：ドライバ部１０は、内部受信バッファ１４に保持されている入力パスワードの文字列（確定コード）をコピーして認証部２０の確定コード受信部２１に送信する。そして、ドライバ部１０は、処理を認証部２０に移行する。認証部２０は、処理をステップＳ３８に移行させる。
【００８５】
ステップＳ３８：認証部２０は、ステップＳ３７で受信した入力パスワードの確定コードと記憶部２２に記憶されている認証パスワードとが一致する場合は、正規のユーザのアクセスであると認証し、本フローチャートを終了する。認証された結果、ユーザは第２実施形態のコンピュータシステムのサービスを利用することが出来る。なお、上記の入力パスワードの確定コードと認証パスワードとが一致しない場合は、認証部２０は正規のユーザのアクセスであるとは認証せず、ユーザは第２実施形態のコンピュータシステムのサービスを利用することが出来ない。
【００８６】
（第２実施形態の入力例の説明）
図５は、第２実施形態の認証装置２への入力例を示す図である。図５の例では、第２実施形態におけるパスワード認証において、認証パスワード「ＡＢ＠Ｃ＠ＤＥ」が記憶部２２に記憶されているものとする。そして、ユーザが「ＡＢ＠Ｃ＠ＤＥ」を入力するものとする。
【００８７】
図５において、第１実施形態と同様に、左側の列は、ユーザの入力した文字を表している。中央の列は、サーバに入力された文字を表している。右側の列は、内部受信バッファ１４に保持された文字を表している。
【００８８】
まず、ユーザは「Ａ」を入力する（Ｓ２２）。すると、サーバは「Ａ」を受信する。その後、ドライバ部１０は、内部受信バッファ１４に「Ａ」を保持させ（Ｓ２６）、タイマ１２を起動させる（Ｓ２７）。第２実施形態でのタイマ１２は、起動すると５秒のカウントを始める。なお、タイマ１２がカウントしている間は、５秒〜０秒までカウントされている様子が例えば入力装置１のモニタ等に表示されるようにしてもよい。上記のモニタ等に表示されれば、ユーザがカウントが完了したかどうかを知ることが出来る。
【００８９】
ユーザは、タイマ１２が０になる前に「Ｂ」を入力する（Ｓ２２）。すると、サーバは「Ｂ」を受信する。そして、ドライバ部１０は、内部受信バッファ１４に「Ｂ」を保持させ（Ｓ２６）、タイマ１２初期化再起動させる（Ｓ２７）。そして、タイマ１２は再起動され５秒のカウントを始める。
【００９０】
ユーザは、５秒のカウントが終了するまで待機する。５秒経過すると（Ｓ２３）、ドライバ部１０は、内部受信バッファ１４に「＠」を保持させ（Ｓ２９）、さらにユーザに「＠」を通知する（Ｓ３０）。
【００９１】
そして、ユーザは、上記の通知により「＠」の入力を確認した後、「Ｃ」を入力する（Ｓ２２）。そして「Ｂ」入力後と同様にタイマが０になるまでユーザは５秒待機する（Ｓ２３）。そして、ドライバ部１０は、また内部受信バッファ１４に「＠」を保持させ（Ｓ２９）、さらにユーザにも「＠」を通知する（Ｓ３０）。そして、ユーザは通知により「＠」の入力を確認した後、「Ｄ」を入力する（Ｓ２２）。ユーザは、「Ｄ」の入力後、「Ｂ」の入力時と同様にタイマ１２が０になる前に「Ｅ」を入力する（Ｓ２２）。
【００９２】
図５の例では、入力間隔が４つ存在する。上記の例では、ユーザの入力文字列自体は「ＡＢＣＤＥ」であるが、「Ｃ」と「Ｄ」の入力時には、５秒経過後、ドライバ部１０は内部受信バッファ１４に「＠」を保持させている（Ｓ２９）。
【００９３】
その結果、「ＡＢＣＤＥ」の文字列を連続的に入力するブルートフォース攻撃、辞書攻撃の場合は、「＠」が内部受信バッファ１４に保持されない。そのため、攻撃者はコンピュータシステムにログインすることが出来ない。また、パケットスニッフィング等で、不正ユーザによって入力文字列「ＡＢＣＤＥ」を盗まれて入力されても、入力文字列は登録文字列「ＡＢ＠Ｃ＠ＤＥ」とは異なる。そのため、不正ユーザはコンピュータシステムにログインすることが出来ない。また、不正ユーザに例えば「Ａ→ＢＣＤ→Ｅ」等、登録文字列「ＡＢ＠Ｃ＠ＤＥ」とは異なる場所で時間間隔を空けて入力された場合においても、不正ユーザはログインすることが出来ない。
【００９４】
（第２実施形態の効果）
第２実施形態において、認証装置２は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。そして、認証装置２は、１以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。このため、認証装置２は、キー入力間隔を考慮に入れないブルートフォース攻撃、辞書攻撃、パケットスニッフィング等のパスワードクラックに対して堅牢な認証を行うことが出来る。
【００９５】
また、第２実施形態において、認証装置２は、外部から制御符号以外の文字入力を受け付けた後、次の文字入力までの時間間隔が閾値以上となるときに、制御符号をメモリに保持させる。このため、認証装置２は、微妙なキー入力間隔の差で正規のユーザが誤認識されることを少なくすることが出来る。
【００９６】
また、第２実施形態において、認証装置２は、タイマ１２のカウントの状態を入力装置１のモニタ等に表示させた場合には、ユーザは時間のカウントが完了したか否かを知ることができ、誤入力を少なくすることが出来る。
【００９７】
また、第２実施形態において、認証装置２は、制御符号をメモリに保持させたときに、パスワードの入力者に対して通知を行うこととした。このため、ユーザは間隔を閾値以上空けたか否かを知ることができ、誤入力を少なくすることが出来る。
【００９８】
また、第２実施形態において、認証装置２は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の１文字前の文字が制御符号でなかったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントすることとした。このため、ユーザは、パスワードを訂正する際、パスワードを再度全て入力し直さなくてもよい。
【００９９】
また、第２実施形態において、認証装置２は、入力パスワードが消去されたとき、消去された文字が１文字目であったときは、次の文字入力までの時間間隔をカウントしないこととした。このため、制御符号がメモリの１文字目に保持されることがない。
【０１００】
また、第２実施形態において、認証装置２は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の１文字前の文字が制御符号であったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントしないこととした。このため、制御符号が連続してメモリに保持されることがない。
【０１０１】
＜実施形態の補足事項＞
（ａ）  上記実施形態では、文字の入力後に閾値以上時間間隔を空けることとしたが、パスワード全体として閾値以上（例えば２０秒以上）の時間をかけることとしてもよい。これによっても、時間間隔を考慮に入れない攻撃によるパスワードクラックがされにくく、また、入力者のタイミングの差によって正規ユーザが誤認識されることも少ない。
【０１０２】
（ｂ）  上記実施形態では、認証装置の各部をハードウェアで実現する例を説明したが、認証装置の処理をコンピュータにソフトウェアで実行させる認証プログラムでもよい。
【０１０３】
（ｃ）  上記実施形態では、認証システムが、例えばインターネット上のアプリ等へアクセスするためのユーザ認証に用いられる例について説明したが、これには限られない。例えば、上記の認証システムは、ドアの入口等に設置され、ドアロックの開閉の認証等に用いられるものであってもよい。
【０１０４】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲が、その精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物によることも可能である。
【符号の説明】
【０１０５】
入力装置…１、認証装置…２、ドライバ部…１０、入力パーサ…１１、タイマ…１２、経過コード挿入部…１３、内部受信バッファ…１４、経過コード挿入／送出部…１５、認証部…２０、確定コード受信部…２１、記憶部…２２
【図１】
2012194878.tif 000003
【図２】
2012194878.tif 000004
【図３】
2012194878.tif 000005
【図４】
2012194878.tif 000006
【図５】
2012194878.tif 000007
【図６】
2012194878.tif 000008