説明

認証装置、認証プログラム、及び認証システム

【課題】 パスワードのクラックに対して堅牢でユーザの誤認識も発生しにくいパスワード認証技術を提供する。
【解決手段】 メモリは、入力パスワードの文字列を保持する。制御部は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。認証部は、1以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、認証装置、認証プログラム、及び認証システムに関する。
【背景技術】
【0002】
従来より、不特定のユーザがアクセスして利用可能なコンピュータシステムの大半は、何らかのリモートアクセスプロトコルを実装している。例えば、システムを利用出来る正規のユーザをパスワード入力で特定するパスワード認証が行われている。
【0003】
一般に、パスワード認証はクリアテキスト(平文)で行われることが多いのが実情である。しかし、平文のみのパスワード認証では、ブルートフォース攻撃(総当り攻撃とも呼ばれ、可能な組合せを全て試す攻撃手法。)、辞書攻撃(辞書にある単語を片っ端から入力して試す攻撃手法。そのまま入力するだけでなく、大文字と小文字を混在させたり数字を加えたりといった処理も加えて実行するものが多い。)、あるいはパケットスニッフィング(ネットワークを流れるパケットを盗聴し、そこからIDやパスワードを拾い出すこと。)といった攻撃形態によりパスワードがクラックされてしまうことがある。そして、パスワードがクラックされてしまうと、正規ユーザになりすました攻撃者(クラッカー)にシステムを不正に利用されてしまうことがある。
【0004】
このため、認証にユーザ固有のキー入力間隔等の時間要素を取り入れたパスワード認証が提案されている(例えば、特許文献1、2)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−137681号公報
【特許文献2】特開2010−176562号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、従来のユーザ固有のキー入力間隔等を用いたパスワード認証では、ユーザのキー入力のタイミングがずれると、正規のユーザであっても誤認識によってアクセスが拒否される恐れがある点で改善の余地があった。
【0007】
上記事情に鑑み、パスワードのクラックに対して堅牢でユーザの誤認識も発生しにくいパスワード認証技術を提供する。
【課題を解決するための手段】
【0008】
一の態様の認証装置は、メモリと、制御部と、認証部とを備える。メモリは、入力パスワードの文字列を保持する。制御部は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。認証部は、1以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。
【0009】
一の態様の認証装置において、制御部は、外部から制御符号の文字入力を受け付けた後、次の文字入力までの時間間隔が閾値以上となるときに、制御符号をメモリに保持させてもよい。
【0010】
また、制御部は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の1文字前の文字が制御符号であったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントしてもよい。
【0011】
一の態様の認証装置において、制御部は、外部から制御符号以外の文字入力を受け付けた後、次の文字入力までの時間間隔が閾値以上となるときに、制御符号をメモリに保持させてもよい。
【0012】
また、制御部は、制御符号をメモリに保持させたときに、パスワードの入力者に対して通知を行ってもよい。
【0013】
また、制御部は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の1文字前の文字が制御符号でなかったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントしてもよい。
【0014】
一の態様の認証プログラムは、メモリが入力パスワードの文字列を保持する処理と、制御部が入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる処理と、認証部が1以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う処理と、をコンピュータに実行させる。
【0015】
一の態様の認証システムは、認証装置と、入力装置とを有する。認証装置は、メモリと、制御部と、認証部とを備える。メモリは、入力パスワードの文字列を保持する。制御部は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。認証部は、1以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。入力装置は、入力パスワードの文字の入力を受け付けて認証装置に通知する。
【発明の効果】
【0016】
入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。そして、1以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行うので、パスワードのクラックに対して堅牢でユーザの誤認識も発生しにくくなる。
【図面の簡単な説明】
【0017】
【図1】第1実施形態の認証システムの全体構成例を示す図
【図2】第1実施形態の認証システムの動作例を示すフローチャート
【図3】第1実施形態の認証システムへの入力例を示す図
【図4】第2実施形態の認証システムの全体構成例を示す図
【図5】第2実施形態の認証システムの動作例を示すフローチャート
【図6】第2実施形態の認証システムへの入力例を示す図
【発明を実施するための形態】
【0018】
以下、図面を用いて本発明の実施形態について説明する。
【0019】
<第1実施形態の説明>
図1は、第1実施形態の認証システムの全体構成例を示す図である。第1実施形態の認証システムは、パスワード認証を実装したコンピュータシステム全般に用いられる。
【0020】
第1実施形態の認証システムは、ユーザ側の入力端末としての入力装置1と、サービスの提供者等によって運営されるサーバとを有する。サーバには、パスワード認証を行う認証装置2が実装されており、入力装置1から入力された入力パスワードの文字列と認証装置2が保持する認証パスワードの文字列とが一致したときに、後述の認証部が認証を行う。その結果、入力装置1からサーバの提供者によって提供されるサービス(例えばインターネット上のアプリ等)へのアクセスが許可される。なお、入力装置1と認証装置2とは、例えばインターネットを介して有線又は無線で接続されている。入力装置1は、キーボードタイプのものでもタッチパネルタイプのものでもよい。なお、入力装置1は、1つのサーバに対して1台に限らず複数台存在していてもよい。
【0021】
ここで本明細書の「制御コード」とは、入力パスワードの文字の1つであって文字入力の時間間隔に閾値以上の時間経過があることを示す制御符号である。なお、本実施形態では、制御コードを「@」で示す。但し、制御コードは、「@」以外のコードを用いてもよい。
【0022】
認証装置2は、ドライバ部10と、認証部20とを有する。
【0023】
ドライバ部10は、入力パーサ11と、タイマ12と、経過コード挿入部13と、内部受信バッファ14とを有する。入力パーサ11は、入力装置1と、内部受信バッファ14と、タイマ12とにそれぞれ接続されている。タイマ12は、経過コード挿入部13にさらに接続されている。経過コード挿入部13は、内部受信バッファ14とさらに接続されている。内部受信バッファ14は、認証部20とさらに接続されている。
【0024】
入力パーサ11は、入力装置1を介してユーザからの入力を受け付ける。入力パーサ11が制御コード以外の文字入力を受け付けたときは、ドライバ部10は、内部受信バッファ14にその文字を入力する。入力パーサ11が制御コードの入力を受け付けたときは、ドライバ部10は、タイマ12を起動する。
【0025】
タイマ12は、入力パーサ11が制御コードを受信したとき、ドライバ部10によって起動される。ここでタイマ12は、カウントダウンタイマでもカウントアップタイマでもどちらでもよい。本実施形態では、タイマ12がカウントダウンタイマである例を説明する。
【0026】
経過コード挿入部13は、タイマ12の設定時間が経過したときは、制御コードを内部受信バッファ14に入力する。
【0027】
内部受信バッファ14は、入力される文字列の情報(パスワード)を保持するメモリであって、例えば揮発性メモリで構成される。なお、ドライバ部10は、ユーザから入力確定コード(キャリッジリターン)の入力を受け付けたときは、内部受信バッファ14が保持する文字と制御コードとからなるパスワードを確定する。ドライバ部10は、確定した入力パスワード(確定コード)を内部受信バッファ14からコピーし、認証部20に送信する。
【0028】
認証部20は、確定コード受信部21と記憶部22とを有する。
【0029】
確定コード受信部21は、内部受信バッファ14からコピーされた確定コードを受信する。確定コード受信部21は、受信した確定コードと記憶部22に記憶されている認証パスワードとが合致したときに、正規のアクセスであると認証する。
【0030】
記憶部22は、予め登録された認証パスワードのファイルが複数記憶されているメモリであって、例えば不揮発性メモリで構成される。本明細書の「認証パスワード」は、いずれも1以上の制御符号を含む文字列である。
【0031】
(第1実施形態の動作の説明)
以下、第1実施形態での認証装置の動作を説明する。第1実施形態では、ユーザによる制御コードの入力動作をトリガとして、認証装置側で制御コードの入力が行われる構成について説明する。
【0032】
図2は、第1実施形態の認証装置2の動作例を示すフローチャートである。図2のフローチャートは、ユーザが第1実施形態での認証装置2にアクセスした時点で開始する。
【0033】
ステップS1:ドライバ部10は、入力パーサ11が入力装置からの入力を受け付けたか否か判定する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS3に移行させる。一方、上記要件を満たさないとき(No側)は、ドライバ部10は処理をステップS2に移行させる。
【0034】
ステップS2:ドライバ部10は、タイマ12が0となったか否か(すなわち、タイマ12で設定した時間が経過したか否か)判定する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS8に移行させる。一方、上記要件を満たさないとき(すなわち、タイマ12が起動していないか、起動していてもまだ0になっていないとき)(No側)は、ドライバ部10は処理をステップS1に移行させる。その後、入力パーサ11が入力装置1からの入力を受け付けたと判定するか、タイマ12が0になったと判定するまで、ドライバ部10はステップS1のNo側の処理とステップS2のNo側の処理とを繰り返す。
【0035】
ステップS3:ドライバ部10は、タイマ12を初期化させる。例えば、5秒のカウントダウンタイマであれば、タイマ12が作動中、停止中にかかわらず、ドライバ部10はタイマ12を初期状態の5秒に設定する。
【0036】
ステップS4:ドライバ部10は、入力されたコードが制御コード「@」であるか否か判定する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS5に移行させる。一方、上記要件を満たさないとき(No側)は、ドライバ部10は処理をステップS10に移行させる。
【0037】
ステップS5:ドライバ部10は、入力された制御コードの1つ前のコードが制御コードであるか否か判定する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS6に移行させる。ステップS5のYes側は、例えばユーザが「AB@」の後にさらに「@」を入力した場合等が該当する。一方、上記要件を満たさないとき(No側)は、ドライバ部10は処理をステップS7に移行させる。ステップS5のNo側は、例えば、ユーザが「AB」の後に「@」を入力した場合等が該当する。なお、本明細書で「BP」とは、内部受信バッファ14上で現在入力されている文字のデータが格納されているアドレスを示す変数(バッファポインタ)のことを表す。また、「BP−1」とは、BPより1文字分前の内部受信バッファ14のアドレスを示す変数である。
【0038】
ステップS6:ドライバ部10は、ステップS5で入力された制御コードを受信バッファに追加せず、処理をステップS7に移行させる。例えば、ユーザが「AB@@」と入力しても受信バッファの「AB@」の後に「@」は追加されず、内部受信バッファ14に「@」が連続して保持されることはない。これにより、内部受信バッファ14のオーバーフローが防止される。
【0039】
ステップS7:ドライバ部10は、タイマ12を起動させる。これにより、例えばタイマ12は、5・4・3…のようにカウントダウンを開始する。ドライバ部10は、その後、処理をステップS1に移行させる。ドライバ部10が処理をステップS1に移行させた後、ステップS1のYes側となるか、ステップS2のYes側となるまでは、ドライバ部10はステップS1のNo側とステップS2のNo側の処理をループさせる。そして、ステップS2で、ドライバ部10がタイマ12が0になったと判定したとき(Yes側)は、処理をステップS8に移行させる。なお、タイマ12が0になる前に、ステップS1においてドライバ部10が入力パーサ11が入力装置1からの入力を受け付けたと判定したとき(Yes側)は、ドライバ部10は、処理をステップS3に移行させる。
【0040】
ステップS8:ドライバ部10は、タイマ12を初期化させる。すなわち、0になっているタイマ12をまた初期設定(例えば5秒)に戻す。
【0041】
ステップS9:ドライバ部10は、経過コード挿入部13を介して「@」を内部受信バッファ14に保持させる。そして、ドライバ部10は、処理をステップS1に移行させる。
【0042】
ステップS10:ドライバ部10は、入力されたコードが削除キー(BSキー)であるか否か判定する。ここで、ユーザがパスワードを誤入力した場合にユーザが削除キーを入力すると、ドライバ部10はユーザが入力したパスワードを1文字消去する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS11に移行させる。一方、条件を満たさないとき(No側)は、ドライバ部10は処理をステップS14に移行させる。
【0043】
ステップS11:ドライバ部10は、内部受信バッファ14に保持されている末尾の1文字を消去する。そして、ドライバ部10は、処理をステップS12に移行させる。
【0044】
ステップS12:ドライバ部10は、消去された文字の1文字前に入力された文字が制御コードであるか否か判定する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS13に移行させる。ステップS12のYes側は、例えば「AB@C」と入力されていた場合に、ユーザが「C」を消去した場合等が該当する。一方、上記要件を満たさないとき(No側)は、ドライバ部10は処理をステップS1に移行させる。ステップS12のNo側は、例えば「AB」と入力されていた場合にユーザが「B」を消去した場合や、「AB@」と入力されていた場合にユーザが「@」を消去した場合等が該当する。
【0045】
ステップS13:ドライバ部10は、タイマ12を起動する。そして、ドライバ部10は、処理をステップS1に移行させる。本ステップが無いと、例えばユーザが「AB@」と入力した後に5秒待たずに「C」を入力してしまった場合、「@」は内部受信バッファ14に保持されないため、パスワードの入力を最初から全てやり直さなければならない。しかし、本ステップがあることで、ユーザが「C」を消去した場合、ドライバ部10は再度時間を計り直すため、ユーザは入力に失敗した文字から入力し直せば足りる。すなわち、「C」を消去すると同時にドライバ部10はタイマ12を起動させるため、「C」を消去してから例えば5秒待てば、ステップS2、ステップS8、ステップS9を経由して内部受信バッファ14に「@」が保持される。
【0046】
ステップS14:ドライバ部10は、入力パーサ11が入力確定コード(キャリッジリターン)の入力を受け付けたか否か判定する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS16に移行させる。ステップS14のYes側は、例えばユーザがリターンキーやエンターキー等を入力した場合等が該当する。一方、上記要件を満たさないとき(No側)は、ドライバ部10は処理をステップS15に移行させる。
【0047】
ステップS15:ドライバ部10は、入力されたパスワードのコードを内部受信バッファ14に保持させ、処理をステップS1に移行させる。
【0048】
ステップS16:ドライバ部10は、内部受信バッファ14が保持している入力パスワードの文字列(確定コード)をコピーして認証部20の確定コード受信部21に送信する。そして、ドライバ部10は、処理を認証部20に移行させる。認証部20は、処理をステップS17に移行させる。
【0049】
ステップS17:認証部20は、ステップS16で受信した入力パスワードの確定コードと記憶部22に記憶されている認証パスワードとが一致する場合は、正規のユーザのアクセスであると認証し、本フローチャートを終了する。認証された結果、ユーザは第1実施形態のコンピュータシステムのサービスを利用することが出来る。なお、上記の入力パスワードの確定コードと認証パスワードとが一致しない場合は、認証部20は正規のユーザのアクセスであるとは認証せず、ユーザは第1実施形態のコンピュータシステムのサービスを利用することが出来ない。
【0050】
(第1実施形態の入力例の説明)
図3は、第1実施形態の認証装置2への入力例を示す図である。図3の例では、第1実施形態におけるパスワード認証において、認証パスワード「AB@C@DE」が記憶部22に記憶されているものとする。そして、ユーザが入力パスワード「AB@C@DE」を入力するものとする。
【0051】
図3において、左側の列は、ユーザの入力した文字を表している。中央の列は、サーバに入力された文字を表している。右側の列は、内部受信バッファ14に保持された文字を表している。
【0052】
まず、ユーザは「A」を入力する(S1)。すると、サーバは「A」を受信する。その後、ドライバ部10は、内部受信バッファ14に「A」を保持させる(S15)。「B」についても同様の処理が繰り返される。
【0053】
「B」の入力後、ユーザは、「@」を入力する(S1)。すると、サーバは、「@」を受信するが、ドライバ部10はこの時点で内部受信バッファ14に「@」を保持させない。その代わり、ドライバ部10は、タイマ12を起動させる(S7)。第1実施形態でのタイマ12は、起動すると5秒のカウントを始める。なお、タイマ12がカウントしている間は、5秒〜0秒までカウントされている様子が、例えば入力装置1のモニタ等に表示されるようにしてもよい。上記モニタ等に表示されれば、ユーザがカウントが完了したかどうかを知ることが出来る。そして、5秒が経過しタイマ12が0になると、ドライバ部10は、タイマ12を初期化させ、内部受信バッファ14に「@」を保持させる(S8、S9)。
【0054】
その後、「C」、「D」、「E」については「A」と同様の処理が繰り返され、「C」の後の「@」については、「B」の後の「@」についての処理と同様の処理が繰り返される。
【0055】
図3の例では、ユーザは「C」と「D」の入力前に「@」を入力し、タイマ12を起動させている(S7)。そして、5秒経過し内部受信バッファ14に「@」が保持された後(S9)、ユーザは次の入力を行っている(S1)。しかし、ユーザが「@」を入力した後、5秒待たずに次の入力を行ってしまうと、タイマ12が初期化され内部受信バッファ14に「@」が保持されない(S3)。
【0056】
その結果、「ABCDE」の入力によるブルートフォース攻撃、辞書攻撃の場合や、単に「AB@C@DE」の文字列を連続的に入力する上記の攻撃の場合には、「@」が内部受信バッファ14に保持されない。そのため、攻撃者はコンピュータシステムにログインすることが出来ない。また、パケットスニッフィング等で、不正ユーザによって盗まれた入力文字列「AB@C@DE」が入力された場合において、不正ユーザは「@」入力後の時間間隔を考慮せずに次の文字を入力する可能性が高い。このため、上記の場合には、内部受信バッファ14には「ABCDE」が保持され、不正ユーザはログインすることが出来ない。
【0057】
(第1実施形態の効果)
第1実施形態によれば、認証装置2は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。そして、認証装置2は、1以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。このため、認証装置2は、キー入力間隔を考慮に入れないブルートフォース攻撃、辞書攻撃、パケットスニッフィング等のパスワードクラックに対して堅牢な認証を行うことが出来る。
【0058】
また、第1実施形態によれば、認証装置2は、外部から制御符号の文字入力を受け付けた後、次の文字入力までの時間間隔が閾値以上となるときに、制御符号をメモリに保持させる。このため、微妙なキー入力間隔の差で正規のユーザが誤認識されることを少なくすることが出来る。
【0059】
また、第1実施形態によれば、認証装置2は、タイマ12のカウントの状態を入力装置1のモニタ等に表示させた場合には、ユーザは時間のカウントが完了したか否かを知ることが出来る。このため、ユーザの誤入力を少なくすることが出来る。
【0060】
また、第1実施形態によれば、認証装置2は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の1文字前の文字が制御符号であったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントする。このため、ユーザは、パスワードを訂正する際、パスワードを再度全て入力し直さなくてもよい。
【0061】
<第2実施形態の説明>
次に、第2実施形態の認証システムについて説明する。図4は、第2実施形態での認証システムの全体構成例を示す図である。第2実施形態での認証システムは、基本構成が第1実施形態のものと共通する。そのため、第2実施形態の説明では、第1実施形態と同一の構成については第1実施形態と同一の符号を用い、重複説明は省略する。
【0062】
第2実施形態でのドライバ部10は、入力パーサ11と、タイマ12と、経過コード挿入/送出部15と、内部受信バッファ14とを有する。
【0063】
入力パーサ11は、入力装置1と、内部受信バッファ14と、タイマ12とにそれぞれ接続されている。タイマ12は、経過コード挿入/送出部15とさらに接続されている。経過コード挿入/送出部15は、内部受信バッファ14と、入力装置1とにさらに接続されている。内部受信バッファ14は、認証部20とさらに接続されている。
【0064】
第2実施形態でのタイマ12は、入力パーサ11が制御コード以外の文字の入力を受け付けたと同時に、ドライバ部10によって起動される。なお、第2実施形態においても、タイマ12がカウントダウンタイマである例を説明する。タイマ12の設定時間が経過したときは、ドライバ部10は制御コードを経過コード挿入/送出部15に入力する。
【0065】
経過コード挿入/送出部15は、タイマ12の設定時間が経過したときは、制御コードを内部受信バッファ14に保持させる。また、経過コード挿入/送出部15は、制御コードが保持されたことを入力装置1に送信する。そして、経過コード挿入/送出部15は、入力装置1のモニタ等を介してユーザに制御コードが保持されたことを通知する。
【0066】
(第2実施形態の動作の説明)
以下、第2実施形態での認証装置2の動作を説明する。第2実施形態では、文字入力の時間間隔が閾値以上空く場合に、ユーザの入力によらずに認証装置側で制御コードの入力が行われる構成について説明する。
【0067】
図4は、第2実施形態の認証装置2の動作例を示すフローチャートである。図4のフローチャートは、第1実施形態と同様にユーザが認証装置2にアクセスした時点で開始する。
【0068】
ステップS21:ドライバ部10は、タイマ12を初期化させる。すなわち、ドライバ部10は、タイマ12を例えば初期状態の5秒に設定する。
【0069】
ステップS22:ドライバ部10は、入力パーサ11が入力装置1からの入力を受け付けたか否か判定する。上記要件を満たすときは(Yes側)は、ドライバ部10は処理をステップS24に移行させる。一方、上記要件を満たさないときは(No側)は、ドライバ部10は処理をステップS23に移行させる。
【0070】
ステップS23:ドライバ部10は、タイマ12が0秒となったか否か(すなわち、タイマ12で設定した時間が経過したか否か)判定する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS28に移行させる。一方、上記要件を満たさないとき(すなわち、タイマ12が起動していないか、起動していてもまだ0になっていないとき)(No側)は、ドライバ部10は処理をステップS22に移行させる。その後、入力パーサ11が入力装置1からの入力を受け付けたと判定するか、タイマ12が0になったと判定するまで、ドライバ部10はステップS22のNo側の処理とステップS23のNo側の処理とを繰り返す。
【0071】
ステップS24:ドライバ部10は、入力パーサ11が入力を受け付けたコードが削除キー(BSキー)であるか否か判定する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS31に移行させる。一方、上記要件を満たさないとき(No側)は、ドライバ部10は処理をステップS25に移行させる。
【0072】
ステップS25:ドライバ部10は、入力パーサ11が入力確定コード(キャリッジリターン)の入力を受け付けたか否か判定する。上記要件をみたすとき(Yes側)は、ドライバ部10は処理をステップS36に移行させる。一方、上記要件を満たさないとき(No側)は、ドライバ部10は処理をステップS26に移行させる。
【0073】
ステップS26:ドライバ部10は、入力されたパスワードのコードを内部受信バッファ14に保持させ、処理をステップS27に移行させる。
【0074】
ステップS27:ドライバ部10は、タイマ12を初期化(再)起動させる。すなわち、例えば、タイマ12が起動していないときに入力パーサ11が入力を受け付けたときは、ドライバ部10はタイマ12を初期化して起動させ、カウントを始めさせる。また、タイマ12が起動しているときに入力パーサ11が入力を受け付けたときは、ドライバ部10は起動しているタイマ12を一旦初期化して再起動させ、また最初からカウントを始めさせる。そして、ドライバ部10は、処理をステップS22に移行させる。ドライバ部10が処理をステップS22に移行させた後、ステップS22のYes側となるか、ステップS23のYes側となるまでは、ドライバ部10はステップS22のNo側とステップS23のNo側の処理をループさせる。そして、ステップS23で、ドライバ部10がタイマ12が0となったと判定したとき(Yes側)は、処理をステップS28に移行させる。なお、タイマ12が0になる前に、ステップS22においてドライバ部10が入力パーサ11が入力装置1からの入力を受け付けたと判定したとき(Yes側)は、ドライバ部10は、処理をステップS24に移行させる。
【0075】
ステップS28:トライバ部は、タイマ12を初期化させる。すなわち、0になっているタイマ12をまた初期設定(例えば5秒)に戻す。そして、ドライバ部10は、処理をステップS29に移行させる。
【0076】
ステップS29:トライバ部は、経過コード挿入/送出部15を介して「@」を内部受信バッファ14に保持させる。そして、ドライバ部10は、処理をステップS30に移行させる。
【0077】
ステップS30:ドライバ部10は、経過コード挿入/送出部15を介して「@」が内部受信バッファ14に保持されたことを入力装置1に送信する。そして、ドライバ部10は、例えば入力装置1のモニタ等に表示させるなどして、「@」が内部受信バッファ14に保持されたことがユーザにわかるように通知する。そして、ドライバ部10は、処理をステップS22に移行させる。
【0078】
ステップS31:ステップS31は、ステップS24で、ドライバ部10が、入力パーサ11が削除キー(BSキー)の入力を受け付けたと判定したとき(Yes側)の処理である。ドライバ部10は、内部受信バッファ14に保持されている末尾の1文字を消去する。そして、ドライバ部10は、処理をステップS32に移行させる。
【0079】
ステップS32:ドライバ部10は、消去された文字が1文字目であるか否か判定する。上記要件をみたすとき(Yes側)は、ドライバ部10は処理をステップS35に移行させる。ステップS32のYes側は、例えば「A」や「B」などまだ1文字しか入力されていない場合にその文字が消去された場合等が該当する。一方、上記要件を満たさないとき(No側)は、ドライバ部10は処理をステップS33に移行させる。ステップS32のNo側は、例えば「AB@」と入力されていた場合に「@」が消去された場合や、「AB@C」と入力されていた場合に「C」が消去された場合等が該当する。
【0080】
ステップS33:ドライバ部10は、消去された文字の1文字前に入力された文字が制御コードであるか否か判定する。上記要件を満たすとき(Yes側)は、ドライバ部10は処理をステップS35に移行させる。ステップS33のYes側は、例えば「AB@C」と入力されていた場合に、「C」が消去された場合等が該当する。一方、上記要件を満たさないとき(No側)は、ドライバ部10は処理をステップS34に移行させる。ステップS33のNo側は、例えば「AB」と入力されていた場合に「B」が消去された場合や、「AB@」と入力されていた場合に「@」が消去された場合等が該当する。
【0081】
ステップS34:ドライバ部10は、タイマ12を初期化再起動させる。そして、ドライバ部10は処理をステップS22に移行させる。本ステップが無いと、例えば「AB@C」と入力すべき場合において、ユーザが「AB」と入力した後に誤って5秒待たずに「C」を入力した場合、「@」は内部受信バッファ14に保持されない。このため、ユーザは入力を最初からやり直さなければならない。しかし、本ステップがあると、ユーザが「C」を消去すると同時にドライバ部10はタイマ12を初期化再起動させるため、「C」を消去してから例えば5秒待てば、ステップS23、ステップS28、ステップS29を経由して内部受信バッファ14に「@」が保持される。このため、ユーザは最初から入力をやり直さなくてよい。
【0082】
ステップS35:ドライバ部10は、タイマ12を初期化させる。本ステップは、ステップS32で1文字目が消去された場合に、ステップS34、S30を経由してタイマ12が初期化再起動され、1文字目に「@」が挿入されてしまうことや、ステップS33で消去された文字の前が「@」であった場合にステップS34、S30を経由してタイマ12が初期化再起動され、「@」が連続して挿入されてしまうことを防ぐため、ドライバ部10がタイマ12を初期化のみさせる処理である。そして、ドライバ部10は処理をステップS22に移行させる。
【0083】
ステップS36:本ステップは、ステップS25で、ドライバ部10が入力パーサ11が入力確定コード(キャリッジリターン)の入力を受け付けたと判定したとき(Yes側)の処理である。ドライバ部10は、タイマ12を初期化させる。本ステップは、入力パーサ11がコードの入力を受け付けた後、ステップS27を経由してタイマ12が初期化(再)起動してしまっているので、そのタイマ12のカウントを止めるための処理である。そして、ドライバ部10は、処理をステップS37に移行させる。
【0084】
ステップS37:ドライバ部10は、内部受信バッファ14に保持されている入力パスワードの文字列(確定コード)をコピーして認証部20の確定コード受信部21に送信する。そして、ドライバ部10は、処理を認証部20に移行する。認証部20は、処理をステップS38に移行させる。
【0085】
ステップS38:認証部20は、ステップS37で受信した入力パスワードの確定コードと記憶部22に記憶されている認証パスワードとが一致する場合は、正規のユーザのアクセスであると認証し、本フローチャートを終了する。認証された結果、ユーザは第2実施形態のコンピュータシステムのサービスを利用することが出来る。なお、上記の入力パスワードの確定コードと認証パスワードとが一致しない場合は、認証部20は正規のユーザのアクセスであるとは認証せず、ユーザは第2実施形態のコンピュータシステムのサービスを利用することが出来ない。
【0086】
(第2実施形態の入力例の説明)
図5は、第2実施形態の認証装置2への入力例を示す図である。図5の例では、第2実施形態におけるパスワード認証において、認証パスワード「AB@C@DE」が記憶部22に記憶されているものとする。そして、ユーザが「AB@C@DE」を入力するものとする。
【0087】
図5において、第1実施形態と同様に、左側の列は、ユーザの入力した文字を表している。中央の列は、サーバに入力された文字を表している。右側の列は、内部受信バッファ14に保持された文字を表している。
【0088】
まず、ユーザは「A」を入力する(S22)。すると、サーバは「A」を受信する。その後、ドライバ部10は、内部受信バッファ14に「A」を保持させ(S26)、タイマ12を起動させる(S27)。第2実施形態でのタイマ12は、起動すると5秒のカウントを始める。なお、タイマ12がカウントしている間は、5秒〜0秒までカウントされている様子が例えば入力装置1のモニタ等に表示されるようにしてもよい。上記のモニタ等に表示されれば、ユーザがカウントが完了したかどうかを知ることが出来る。
【0089】
ユーザは、タイマ12が0になる前に「B」を入力する(S22)。すると、サーバは「B」を受信する。そして、ドライバ部10は、内部受信バッファ14に「B」を保持させ(S26)、タイマ12初期化再起動させる(S27)。そして、タイマ12は再起動され5秒のカウントを始める。
【0090】
ユーザは、5秒のカウントが終了するまで待機する。5秒経過すると(S23)、ドライバ部10は、内部受信バッファ14に「@」を保持させ(S29)、さらにユーザに「@」を通知する(S30)。
【0091】
そして、ユーザは、上記の通知により「@」の入力を確認した後、「C」を入力する(S22)。そして「B」入力後と同様にタイマが0になるまでユーザは5秒待機する(S23)。そして、ドライバ部10は、また内部受信バッファ14に「@」を保持させ(S29)、さらにユーザにも「@」を通知する(S30)。そして、ユーザは通知により「@」の入力を確認した後、「D」を入力する(S22)。ユーザは、「D」の入力後、「B」の入力時と同様にタイマ12が0になる前に「E」を入力する(S22)。
【0092】
図5の例では、入力間隔が4つ存在する。上記の例では、ユーザの入力文字列自体は「ABCDE」であるが、「C」と「D」の入力時には、5秒経過後、ドライバ部10は内部受信バッファ14に「@」を保持させている(S29)。
【0093】
その結果、「ABCDE」の文字列を連続的に入力するブルートフォース攻撃、辞書攻撃の場合は、「@」が内部受信バッファ14に保持されない。そのため、攻撃者はコンピュータシステムにログインすることが出来ない。また、パケットスニッフィング等で、不正ユーザによって入力文字列「ABCDE」を盗まれて入力されても、入力文字列は登録文字列「AB@C@DE」とは異なる。そのため、不正ユーザはコンピュータシステムにログインすることが出来ない。また、不正ユーザに例えば「A→BCD→E」等、登録文字列「AB@C@DE」とは異なる場所で時間間隔を空けて入力された場合においても、不正ユーザはログインすることが出来ない。
【0094】
(第2実施形態の効果)
第2実施形態において、認証装置2は、入力パスワードの文字入力の時間間隔が閾値以上となるときに、入力パスワードの文字として時間経過を示す制御符号をメモリに保持させる。そして、認証装置2は、1以上の制御符号を含む認証パスワードの文字列と、入力パスワードの文字列とが合致したときに認証を行う。このため、認証装置2は、キー入力間隔を考慮に入れないブルートフォース攻撃、辞書攻撃、パケットスニッフィング等のパスワードクラックに対して堅牢な認証を行うことが出来る。
【0095】
また、第2実施形態において、認証装置2は、外部から制御符号以外の文字入力を受け付けた後、次の文字入力までの時間間隔が閾値以上となるときに、制御符号をメモリに保持させる。このため、認証装置2は、微妙なキー入力間隔の差で正規のユーザが誤認識されることを少なくすることが出来る。
【0096】
また、第2実施形態において、認証装置2は、タイマ12のカウントの状態を入力装置1のモニタ等に表示させた場合には、ユーザは時間のカウントが完了したか否かを知ることができ、誤入力を少なくすることが出来る。
【0097】
また、第2実施形態において、認証装置2は、制御符号をメモリに保持させたときに、パスワードの入力者に対して通知を行うこととした。このため、ユーザは間隔を閾値以上空けたか否かを知ることができ、誤入力を少なくすることが出来る。
【0098】
また、第2実施形態において、認証装置2は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の1文字前の文字が制御符号でなかったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントすることとした。このため、ユーザは、パスワードを訂正する際、パスワードを再度全て入力し直さなくてもよい。
【0099】
また、第2実施形態において、認証装置2は、入力パスワードが消去されたとき、消去された文字が1文字目であったときは、次の文字入力までの時間間隔をカウントしないこととした。このため、制御符号がメモリの1文字目に保持されることがない。
【0100】
また、第2実施形態において、認証装置2は、入力時に入力パスワードの末尾の文字が消去され、かつ末尾の文字の1文字前の文字が制御符号であったときは、末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントしないこととした。このため、制御符号が連続してメモリに保持されることがない。
【0101】
<実施形態の補足事項>
(a) 上記実施形態では、文字の入力後に閾値以上時間間隔を空けることとしたが、パスワード全体として閾値以上(例えば20秒以上)の時間をかけることとしてもよい。これによっても、時間間隔を考慮に入れない攻撃によるパスワードクラックがされにくく、また、入力者のタイミングの差によって正規ユーザが誤認識されることも少ない。
【0102】
(b) 上記実施形態では、認証装置の各部をハードウェアで実現する例を説明したが、認証装置の処理をコンピュータにソフトウェアで実行させる認証プログラムでもよい。
【0103】
(c) 上記実施形態では、認証システムが、例えばインターネット上のアプリ等へアクセスするためのユーザ認証に用いられる例について説明したが、これには限られない。例えば、上記の認証システムは、ドアの入口等に設置され、ドアロックの開閉の認証等に用いられるものであってもよい。
【0104】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲が、その精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物によることも可能である。
【符号の説明】
【0105】
入力装置…1、認証装置…2、ドライバ部…10、入力パーサ…11、タイマ…12、経過コード挿入部…13、内部受信バッファ…14、経過コード挿入/送出部…15、認証部…20、確定コード受信部…21、記憶部…22


【特許請求の範囲】
【請求項1】
入力パスワードの文字列を保持するメモリと、
前記入力パスワードの文字入力の時間間隔が閾値以上となるときに、前記入力パスワードの文字として時間経過を示す制御符号を前記メモリに保持させる制御部と、
1以上の前記制御符号を含む認証パスワードの文字列と、前記入力パスワードの文字列とが合致したときに認証を行う認証部と、
を備えることを特徴とする認証装置。
【請求項2】
請求項1に記載の認証装置において、
前記制御部は、外部から前記制御符号の文字入力を受け付けた後、次の文字入力までの時間間隔が前記閾値以上となるときに、前記制御符号を前記メモリに保持させることを特徴とする認証装置。
【請求項3】
請求項2に記載の認証装置において、
前記制御部は、入力時に前記入力パスワードの末尾の文字が消去され、かつ前記末尾の文字の1文字前の文字が前記制御符号であったときは、前記末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントすることを特徴とする認証装置。
【請求項4】
請求項1に記載の認証装置において、
前記制御部は、外部から前記制御符号以外の文字入力を受け付けた後、次の文字入力までの時間間隔が前記閾値以上となるときに、前記制御符号を前記メモリに保持させることを特徴とする認証装置。
【請求項5】
請求項4に記載の認証装置において、
前記制御部は、前記制御符号を前記メモリに保持させたときに、パスワードの入力者に対して通知を行うことを特徴とする認証装置。
【請求項6】
請求項4または請求項5に記載の認証装置において、
前記制御部は、入力時に前記入力パスワードの末尾の文字が消去され、かつ前記末尾の文字の1文字前の文字が前記制御符号でなかったときは、前記末尾の文字が消去された時点を基準として次の文字入力までの時間間隔をカウントすることを特徴とする認証装置。
【請求項7】
メモリが入力パスワードの文字列を保持する処理と、
制御部が前記入力パスワードの文字入力の時間間隔が閾値以上となるときに、前記入力パスワードの文字として時間経過を示す制御符号を前記メモリに保持させる処理と、
認証部が1以上の前記制御符号を含む認証パスワードの文字列と、前記入力パスワードの文字列とが合致したときに認証を行う処理と、
をコンピュータに実行させることを特徴とする認証プログラム。
【請求項8】
認証装置と、入力装置とを有する認証システムであって、
前記認証装置は、
入力パスワードの文字列を保持するメモリと、
前記入力パスワードの文字入力の時間間隔が閾値以上となるときに、前記入力パスワードの文字として時間経過を示す制御符号を前記メモリに保持させる制御部と、
1以上の前記制御符号を含む認証パスワードの文字列と、前記入力パスワードの文字列とが合致したときに認証を行う認証部と、
を備え、
前記入力装置は、前記入力パスワードの文字の入力を受け付けて前記認証装置に通知することを特徴とする認証システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−194878(P2012−194878A)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2011−59358(P2011−59358)
【出願日】平成23年3月17日(2011.3.17)
【出願人】(000237662)富士通テレコムネットワークス株式会社 (682)
【Fターム(参考)】