(57)【要約】【課題】正規ユーザのパスワードによる認証を阻害せず、攻撃者のパスワードによる認証を阻止することを目的とする。【解決手段】正しいパスワードを受け付ける前に認証処理に失敗したパスワード又は該パスワードの対応値を所定個数記憶する記憶部に、新たに認証処理に失敗したパスワード又は該パスワードの対応値を記憶する際、該記憶部から消失するパスワード又は該パスワードの対応値の個数をカウントするカウント部と、前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定せずに、前記カウントした値をリセットする認証部と、を有する認証装置が提供される。【選択図】図１
2018180911.tif 000002
【特許請求の範囲】
【請求項１】
正しいパスワードを受け付ける前に認証処理に失敗したパスワード又は該パスワードの対応値を所定個数記憶する記憶部に、新たに認証処理に失敗したパスワード又は該パスワードの対応値を記憶する際、該記憶部から消失するパスワード又は該パスワードの対応値の個数をカウントするカウント部と、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定せずに、前記カウントした値をリセットする認証部と、
を有する認証装置。
【請求項２】
前記認証部は、前記カウントした値が所定個数未満である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定する、
請求項１に記載の認証装置。
【請求項３】
前記認証部は、前記カウントした値が所定個数以上である場合、動作モード情報を、攻撃者のパスワードによる認証でないことを示す第１モードから、攻撃者のパスワードによる認証であることを示す第２モードに切り替え、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに、動作モード情報を前記第１モードに切り替え、
前記カウント部は、前記第２モードの状態において前記記憶部から消失するパスワード又は該パスワードの対応値が、前記第１モードの状態において前記記憶部から消失するパスワード又は該パスワードの対応値と同じ値の場合、少なくとも一回は前記カウントする個数から除外する、
請求項１又は２に記載の認証装置。
【請求項４】
正しいパスワードを受け付ける前に認証処理に失敗したパスワード又は該パスワードの対応値を所定個数記憶する記憶部に、新たに認証処理に失敗したパスワード又は該パスワードの対応値を記憶する際、該記憶部から消失するパスワード又は該パスワードの対応値の個数をカウントする処理と、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定せずに、前記カウントした値をリセットする処理と、
をコンピュータに実行させるための認証プログラム。
【請求項５】
正しいパスワードを受け付ける前に認証処理に失敗したパスワード又は該パスワードの対応値を所定個数記憶する記憶部に、新たに認証処理に失敗したパスワード又は該パスワードの対応値を記憶する際、該記憶部から消失するパスワード又は該パスワードの対応値の個数をカウントし、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定せずに、前記カウントした値をリセットする、
ことをコンピュータが実行する認証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証装置、認証プログラム及び認証方法に関する。
【背景技術】
【０００２】
ユーザ名とパスワードの２つの文字列の組み合わせによる認証方法には、悪意を持った攻撃者がすべての文字列パターンを総当りで入力すると、膨大な時間がかかったとしてもいつかは必ず認証に成功してしまうという課題がある。
【０００３】
そこで、入力されたパスワードを解析して攻撃者による総当たり攻撃であるかどうかを判定し、攻撃者に対しては、不正なパスワード試行を何回か行わせた後、偽サーバにログインさせる技術が提案されている（例えば、特許文献１参照）。特許文献１では、総当たり攻撃かどうかの判別は、誤ったパスワードを入力したことでログインに失敗したときの回数をカウントすることにより行う。その際、正規のユーザが、間違いやすいパスワードを誤って入力したときには、ログインに失敗した回数にカウントしない処理を行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２８２７３９号公報
【特許文献２】特開２０１１−５９８８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記手法では、間違いやすいパスワードは、例えば隣のキー、大文字と小文字等、予め定義されている。よって、予め定義されたパスワードの誤り以外のパスワードの誤入力は、正規ユーザの行為とはみなされず、悪意を持った攻撃者の行為であると判定され、ログインに失敗した回数にカウントされる。よって、上記手法では、正規ユーザのパスワードによる認証を阻害する場合がある。
【０００６】
そこで、１つの側面では、正規ユーザのパスワードによる認証を阻害せず、攻撃者のパスワードによる認証を阻止することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様では、正しいパスワードを受け付ける前に認証処理に失敗したパスワード又は該パスワードの対応値を所定個数記憶する記憶部に、新たに認証処理に失敗したパスワード又は該パスワードの対応値を記憶する際、該記憶部から消失するパスワード又は該パスワードの対応値の個数をカウントするカウント部と、前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定せずに、前記カウントした値をリセットする認証部と、を有する認証装置が提供される。
【発明の効果】
【０００８】
１つの側面では、本発明は、正規ユーザのパスワードによる認証を阻害せず、攻撃者のパスワードによる認証を阻止することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係る認証システムの構成及び認証サーバの機能構成の一例を示す図。
【図２】一実施形態に係る認証装置（端末装置）の機能構成の他の例を示す図。
【図３】一実施形態に係る認証サーバのハードウェア構成の一例を示す図。
【図４】一実施形態に係る初期化処理の一例を示すフローチャート。
【図５】一実施形態に係る初期化処理時の記憶部の状態の一例を示す図。
【図６】一実施形態に係る認証処理の一例を示すフローチャート。
【図７】一実施形態に係る認証処理（続き）の一例を示すフローチャート。
【図８】一実施形態に係る認証処理時のパスワード履歴記憶部の状態の一例を示す図。
【図９】一実施形態に係る認証処理時の出現頻度記憶部の状態の一例を示す図。
【図１０】一実施形態に係る攻撃判定処理の一例を示すフローチャート。
【図１１】一実施形態に係る攻撃判定時のパスワード履歴記憶部及び出現頻度記憶部の状態の一例を示す図。
【図１２】一実施形態に係る攻撃判定時の出現頻度記憶部の状態の一例を示す図。
【図１３】一実施形態の変形例に係る認証サーバの機能構成の一例を示す図。
【図１４】一実施形態の変形例に係る出現頻度記憶部及び出現頻度共有記憶部の状態の一例を示す図。
【図１５】一実施形態の変形例に係る出現頻度記憶部及び出現頻度共有記憶部の状態の一例を示す図。
【図１６】一実施形態の変形例に係る攻撃判定処理の一例を示すフローチャート。
【図１７】一実施形態の変形例に係る攻撃判定時の出現頻度記憶部の状態の一例を示す図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
【００１１】
［認証装置の機能構成］
まず、本発明の一実施形態に係る認証システム１の構成及び認証サーバ１０の機能構成の一例について、図１を参照しながら説明する。図１は、一実施形態に係る認証システム１の構成及び認証サーバ１０の機能構成の一例を示す。
【００１２】
本実施形態に係る認証システム１は、認証サーバ１０及び端末装置２０を有する。認証サーバ１０と端末装置２０とは、ネットワーク３０を介して接続されている。ネットワーク３０は、公衆ネットワーク、ＬＡＮ（Local Area Network）等のネットワークであってもよい。
【００１３】
認証サーバ１０は、端末装置２０のログイン画面から入力されたユーザ名及びパスワードをネットワーク３０を介して取得し、正しいユーザ名及びパスワードが入力されたか否かを判定する。認証サーバ１０は、正しいユーザ名及びパスワードが入力されたと判定すると、認証処理の成功を端末装置２０に通知し、端末装置２０のログインを許可する。認証サーバ１０は、認証装置の一例であり、認証機能と通信機能とを有する電子機器で構成され得る。認証サーバ１０は、クラウド上のサーバであってもよい。
【００１４】
端末装置２０は、ＰＣ（Personal Computer）、タブレット型端末、スマートフォン、ＰＤＡ（Personal Digital Assistants）、携帯電話、ＨＭＤ（Head Mount Display）、ＦＭＤ（Face Mount Display）等のウェアラブルデバイスであってもよい。
【００１５】
なお、認証サーバ１０の認証機能を端末装置２０の内部に有してもよい。この場合、図２に示すように、端末装置２０が、図１の認証サーバ１０と同じ認証機能を有する。図２の端末装置２０もまた、直接入力されたユーザ名及びパスワードが正しいかを判定し、正しい場合にはユーザにログインを許可する認証装置の一例である。
【００１６】
以下、本実施形態では、図１の認証サーバ１０による認証機能及び動作を説明することで、同じ機能を有する図２の端末装置２０の認証機能及び動作については説明を省略する。
【００１７】
［機能構成］
一実施形態に係る認証サーバ１０の機能構成の一例について説明する。本実施形態に係る認証サーバ１０は、入力受付部１１、入力チェック部１２、記憶部１３、パスワード変換部１４、カウント部１５、認証部１６及び制御部１７を有する。
【００１８】
入力受付部１１は、ネットワーク３０を介して端末装置２０からユーザ名及びパスワードを受け付ける。入力チェック部１２は、受け付けたユーザ名が存在するか、またパスワードが正しいかを判定する。
【００１９】
パスワード変換部１４は、入力されたパスワード文字列をハッシュ関数などを使って出現頻度記憶部１３２の記憶領域の大きさの範囲の数値に変換する。パスワード変換部１４は、入力されたパスワードをハッシュ値以外の値に変換してもよい。ハッシュ関数の一例としては、与えられた入力に対して１２８ビットのハッシュ値を出力するＭＤ５（エムディーファイブ、Message Digest Algorithm５）が挙げられる。
【００２０】
認証部１６は、受け付けたユーザ名及びパスワードに基づき認証処理を行う。認証部１６は、記憶部１３に記憶されているユーザ毎のユーザ名文字列及びパスワード文字列１３５のうち、端末装置のシリアル番号等から特定されるユーザのユーザ名文字列及びパスワード文字列１３５と、受け付けたユーザ名及びパスワードとを比較する。ユーザ名文字列及びパスワード文字列１３５はユーザ毎に事前に登録されている。
【００２１】
認証部１６は、比較の結果、ユーザ名及びパスワードが一致すると判定した場合、認証に成功したと判定し、ユーザ名及びパスワードが一致しないと判定した場合、認証に失敗したと判定する。ただし、総当たり攻撃と判定されている間は、正しいパスワードが入力されても、一度は認証に成功したと判定しない。
【００２２】
記憶部１３は、ユーザ毎の記憶領域を有する。例えば、ユーザＡ用記憶部１３ａには、ユーザＡのためのパスワード履歴記憶部１３１ａ、出現頻度記憶部１３２ａ、動作モードフラグ１３３ａ、認証状態フラグ１３４ａを有する。ユーザＢ用記憶部１３ｂ及びユーザＣ用記憶部１３ｃも同様に、上記２つの記憶部と２つのフラグを有する。
【００２３】
以下、ユーザＡ用記憶部１３ａ、ユーザＢ用記憶部１３ｂ、ユーザＣ用記憶部１３ｃを含むユーザ毎に設けられた記憶部のすべてを記憶部１３と総称する。また、パスワード履歴記憶部１３１ａ、１３１ｂ・・・をパスワード履歴記憶部１３１と総称する。また、出現頻度記憶部１３２ａ、１３２ｂ・・・を出現頻度記憶部１３２と総称する。また、動作モードフラグ１３３ａ、１３３ｂ・・・を動作モードフラグ１３３と総称する。また、認証状態フラグ１３４ａ、１３４ｂ・・・を認証状態フラグ１３４と総称する。つまり、パスワード履歴記憶部１３１、出現頻度記憶部１３２、動作モードフラグ１３３及び認証状態フラグ１３４はユーザ毎にそれぞれ独立して確保される。各情報の記憶場所が確保されるユーザ数は、ユーザＡ，ユーザＢ、ユーザＣの３人に限られず、１人であっても、２人以上であってもよい。
【００２４】
パスワード履歴記憶部１３１は、ユーザが入力した所定個の直近のパスワード文字列をハッシュ化したハッシュ値を記憶する。図１はパスワード文字列をハッシュ化したハッシュ値の履歴の数を４個として記載しているが、特に４個に限定するものではない。
【００２５】
出現頻度記憶部１３２は、入力されたパスワードのハッシュ値ごとにその入力の有無を示す情報を記憶する。本実施形態では、出現頻度記憶部１３２は、合計５５個分の情報を記憶できる。しかしながら、出現頻度記憶部１３２は、特に５５個に限定するものでなく、認証サーバ１０の持つメモリや処理性能の許す範囲でなるべく大きな数の情報を記憶できるように設計することが望ましい。
【００２６】
動作モードフラグ１３３は、総当り攻撃の兆候が検出された場合に動作モードを通常状態からブロック状態に変更したことを記憶するフラグである。動作モードフラグ１３３は、総当り攻撃を受けていないことを示す通常状態か、総当り攻撃を受けていることを示すブロック状態かのいずれかに設定される。
【００２７】
認証状態フラグ１３４は、正しいユーザ名及びパスワードが入力されて認証に成功したかどうかを記憶する。認証状態フラグ１３４は、認証に成功した状態を示す認証状態か、認証に失敗した状態又は認証前の状態を示す非認証かのいずれかに設定される。
【００２８】
カウント部１５は、正しいパスワードを受け付ける前に認証処理に失敗したパスワード又はパスワードに対応するハッシュ値を記憶するパスワード履歴記憶部１３１に、新たに認証処理に失敗したパスワード又はハッシュ値を記憶する際、パスワード履歴記憶部１３１から追い出される（消失する）パスワード又はハッシュ値の個数をカウントする。ハッシュ値は、パスワードに対応するパスワードの対応値の一例である。
【００２９】
例えば、ユーザＡ用記憶部１３ａのパスワード履歴記憶部１３１ａには、最新、１つ前、２つ前、３つ前の認証処理に失敗した４つのハッシュ値が格納される。本実施形態では、パスワードの対応値としてハッシュ値が記憶される。しかしながら、パスワード履歴記憶部１３１ａには、ハッシュ値が記憶される替わりにパスワード自体が記憶されてもよい。
【００３０】
最新、１つ前、２つ前、３つ前の認証処理に失敗したハッシュ値が記憶されている場合、次に認証処理に失敗したハッシュ値をパスワード履歴記憶部１３１ａに記憶させるためには、ＦＩＦＯ（First In First Out）により３つ前の認証処理に失敗したハッシュ値がパスワード履歴記憶部１３１ａから追い出され、消失される。そして、格納されているハッシュ値を一つずつずらして最新の認証処理に失敗したハッシュ値を新たにパスワード履歴記憶部１３１ａに記憶する。カウント部１５は、パスワード履歴記憶部１３１ａから消失されるハッシュ値の個数をカウントし、カウント値を得る。実際には、カウント部１５は、出現頻度記憶部１３２の各ハッシュ値の領域の正の値の個数をカウントする。
【００３１】
認証部１６は、正規ユーザに対する認証処理を行うとともに、攻撃者が端末装置２０を利用して、すべての文字列パターンを総当りで入力する「総当たり攻撃」の判定を行う。認証部１６は、出現頻度記憶部１３２の内容をチェックし、カウント部１５がカウントした出現頻度記憶部１３２の正の領域の個数から攻撃の兆候を判断する。総当たり攻撃の判定では、認証部１６は、カウント値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに認証処理に成功した判定せずに、カウント値をリセットする。一方、認証部１６、カウント値が所定個数未満である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定する。
【００３２】
制御部１７は、認証サーバ１０の全体を制御する。また、制御部１７は、パスワード履歴記憶部１３１及び出現頻度記憶部１３２等の記憶部１３へのデータ格納を制御する。なお、図２は機能に着目したブロック図を描いており、これらの機能ブロックで示した各部のソフトウエアを実行するプロセッサは、一例を図３に示すようにハードウェアである。
【００３３】
［ハードウェア構成］
次に、本実施形態に係る認証サーバ１０のハードウェア構成について、図３を参照して説明する。図３は、本実施形態に係る認証サーバ１０のハードウェア構成の一例を示す。認証サーバ１０は、入力装置１０１、出力装置１０２、外部Ｉ／Ｆ１０３、ＲＡＭ（Random Access Memory）１０４、ＲＯＭ（Read Only Memory）１０５、ＣＰＵ（Central Processing Unit）１０６、通信Ｉ／Ｆ１０７、及びＨＤＤ（Hard Disk Drive）１０８などを備え、それぞれがバスＢで相互に接続されている。
【００３４】
入力装置１０１は、キーボードやマウスなどを含み、認証サーバ１０に各操作信号を入力するために用いられる。出力装置１０２は、ＬＣＤ（Liquid crystal Display）モニタ等のディスプレイ、プリンタ、ＣＲＴ（Cathode Ray Tube）などを含み、各種の処理結果を出力する。通信Ｉ／Ｆ１０７は、認証サーバ１０をネットワークに接続するインターフェースである。これにより、認証サーバ１０は、通信Ｉ／Ｆ１０７を介して、他の機器（端末装置２０等）とデータ通信を行うことができる。
【００３５】
ＨＤＤ１０８は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、認証サーバ１０の全体を制御する基本ソフトウェア及びアプリケーションソフトウェアがある。例えば、ＨＤＤ１０８には、各種のデータベースやプログラム等が格納されてもよい。
【００３６】
外部Ｉ／Ｆ１０３は、外部装置とのインターフェースである。外部装置には、記録媒体１０３ａなどがある。これにより、認証サーバ１０は、外部Ｉ／Ｆ１０３を介して記録媒体１０３ａの読み取り及び／又は書き込みを行うことができる。記録媒体１０３ａには、ＣＤ（Compact Disk）、及びＤＶＤ（Digital Versatile Disk）、ならびに、ＳＤメモリカード（SD Memory card）やＵＳＢメモリ（Universal Serial Bus memory）等がある。
【００３７】
ＲＯＭ１０５は、電源を切っても内部データを保持することができる不揮発性の半導体メモリである。ＲＯＭ１０５には、ネットワーク設定等のプログラム及びデータが格納されている。ＲＡＭ１０４は、認証プログラム等のプログラムやデータを一時保持する揮発性の半導体メモリである。ＣＰＵ１０６は、ＨＤＤ１０８やＲＯＭ１０５などの記憶装置から、認証プログラム等のプログラムやデータをＲＡＭ１０４上に読み出し、処理を実行することで、装置全体の制御や搭載機能を実現する演算装置である。
【００３８】
かかる構成により、本実施形態に係る認証サーバ１０では、ＣＰＵ１０６が、例えばＲＡＭ１０４、ＲＯＭ１０５、ＨＤＤ１０８内に格納された認証プログラム及びデータを用いて初期化処理、認証処理及び攻撃判定処理を実行する。なお、パスワード履歴記憶部１３１、出現頻度記憶部１３２、動作モードフラグ１３３、認証状態フラグ１３４及び登録されたユーザ名文字列並びにパスワード文字列１３５の各情報は、ＲＡＭ１０４、ＨＤＤ１０８、又はネットワークを介して認証サーバ１０に接続されるクラウド上のサーバ等に格納され得る。
【００３９】
また、入力受付部１１の機能は、例えば、入力装置１０１により実現可能である。入力チェック部１２、パスワード変換部１４、カウント部１５、認証部１６及び制御部１７の機能は、例えば、認証プログラムがＣＰＵ１０６に実行させる処理により実現される。
【００４０】
［初期化処理］
次に、本実施形態に係る認証サーバ１０の動作について説明する。まず、認証サーバ１０が行う初期化処理の一例について、図４を参照して説明する。図４は、一実施形態に係る初期化処理の一例を示したフローチャートである。
【００４１】
初期化処理が開始されると、制御部１７は、記憶部１３に記憶されている動作モードフラグ１３３の状態を「通常」に設定する（ステップＳ１）。次に、制御部１７は、パスワード履歴記憶部１３１をすべて空にする（ステップＳ２）。次に、制御部１７は、出現頻度記憶部１３２のすべての領域の値を０にする（ステップＳ３）。次に、制御部１７は、認証状態フラグ１３４の状態を「非認証」に設定し（ステップＳ４）、本処理を終了する。以上のステップは、すべての登録ユーザに対して行われる。
【００４２】
初期化処理が行われた結果、記憶部１３の状態は、すべての登録ユーザに対して、図５に示すように、パスワード履歴記憶部１３１のすべてが空の状態になり、出現頻度記憶部１３２の５５個の領域のすべてに「０」が設定される。また、動作モードフラグは、攻撃者のパスワードによる認証でない（正規者のパスワードによる認証である）ことを示す「通常」状態に設定される。認証状態フラグは、認証前の状態を示す「非認証」に設定される。
【００４３】
［認証処理］
次に、認証サーバ１０が行う認証処理の一例について、図６及び図７を参照して説明する。図６および図７は、一実施形態に係る認証処理の一例を示すフローチャートである。ユーザが、端末装置２０のログイン画面からユーザ名とパスワードを入力すると、入力受付部１１は、ユーザ名及びパスワードの入力を受け付け（ステップＳ１０）、入力チェック部１２に送る。
【００４４】
次に、入力チェック部１２は、記憶部１３を参照して、特定のユーザのユーザ名が登録されているかを判定する（ステップＳ１２）。例えば、入力チェック部１２は、ユーザ名及びパスワードと共に、端末装置２０を特定する情報を取得し、該情報から特定のユーザを判別し、特定のユーザのユーザ名文字列とパスワード文字列１３５を参照して、ユーザ名が登録されているかを判定してもよい。端末装置２０を特定する情報には、端末装置２０に付与された装置のシリアル番号等を用いることができる。
【００４５】
入力チェック部１２は、記憶部１３に登録された特定のユーザのユーザ名文字列と比較して一致しない場合、入力したユーザ名が登録されていないと判定し、本処理を終了する。一方、入力チェック部１２は、特定のユーザのユーザ名文字列と一致する場合、入力したユーザ名が登録されていると判定し、パスワードが正しいかを判定する（ステップＳ１４）。
【００４６】
入力チェック部１２は、特定のユーザのパスワード文字列と一致する場合、入力したパスワードは正しいと判定し、ステップＳ１６に進む。入力チェック部１２は、特定のユーザのパスワード文字列と一致しない場合、入力したパスワードは誤っていると判定し、図７の処理（ステップＳ３０〜）に進む。
【００４７】
ステップＳ３０において、制御部１７は、動作モードフラグ１３３が「通常」状態に設定されているかを判定する。制御部１７は、動作モードフラグ１３３は「通常」状態に設定されていない場合、ステップＳ４０に進む。制御部１７は、動作モードフラグ１３３は「通常」状態に設定されている場合、ステップＳ３２に進み、パスワード履歴記憶部１３１に以前に誤入力したパスワードのハッシュ値が記憶され、一杯であるかを判定する。制御部１７は、パスワード履歴記憶部１３１が以前に誤入力したパスワードのハッシュ値で一杯でないと判定した場合、ステップＳ４０に進む。
【００４８】
ステップＳ４０において、パスワード履歴記憶部１３１に記憶されているハッシュ値を古い方向の記憶領域に１つずつずらす。つまり、２つ前の領域に記憶されていたハッシュ値は３つ前の領域に１つずらし、１つ前の領域に記憶されていたハッシュ値は２つ前の領域に１つずらし、最新の領域に記憶されていたハッシュ値は１つ前の領域に１つずらして記憶される。
【００４９】
次に、パスワード変換部１４は、ハッシュ関数を用いて、誤って入力されたと判定されたパスワードのハッシュ値を算出し（ステップＳ４２）、算出したハッシュ値をパスワード履歴記憶部１３１の最新の領域に記憶し（ステップＳ４４）、本処理を終了する。
【００５０】
このようにして、誤ったパスワードが入力されると、パスワード履歴記憶部１３１には、誤入力されたパスワードのハッシュ値が記憶される。例えば、正しいパスワードが"Himitsu"である場合に、最初に"himitsu"、次に"Himitu"と誤ってパスワードが入力された場合のパスワード履歴記憶部１３１の変化の一例を図８に示す。この場合、パスワード履歴記憶部１３１にはまだ空きが残っているため、図７のステップＳ３２からステップＳ４０〜Ｓ４４の処理が行われ、ステップＳ３４〜Ｓ３８に示す処理は発生しない。
【００５１】
なお、図８では、説明をわかりやすくするためにパスワードが文字列で表現されているが、実際はハッシュ値に変換されて記憶される。ただし、パスワード履歴記憶部１３１には、パスワードの文字列をそのまま記憶してもよい。
【００５２】
パスワード変換部１４が使用するハッシュ化アルゴリズムは特に限定しないが、本実施形態の例では、出現頻度記憶部１３２の領域が５５個に設定されているため、パスワード変換部１４で生成されるハッシュ値は０から５４の値になるようにパスワードが変換される。例えば、パスワード変換部１４は、パスワード文字列に含まれる各文字の文字コードを単純に加算した後、５５で割った余りの値をハッシュ値に用いることができる。実際には入力された類似の文字列に対してもなるべくバラバラの値を取るような既存アルゴリズムが存在しており、パスワード変換部１４は、それらのアルゴリズムでハッシュ値を算出することが望ましい。パスワード変換部１４は、例えばパスワード文字列の文字毎にビットシフトを加える等の処理を施して、ビットシフト処理後のパスワードに対してハッシュ値を算出してもよい。
【００５３】
ユーザが２回連続してパスワードの入力を誤り、パスワード履歴記憶部１３１が図８の状態になった後に、正しいパスワードである"Himitsu"が入力されたとする。この場合、図６のステップＳ１０〜Ｓ１４の処理を行い、ステップＳ１４において、入力チェック部１２は正しいパスワードが入力されたと判定し、制御部１７は、動作モードフラグ１３３が「通常」状態に設定されているかを判定する（ステップＳ１６）。
【００５４】
制御部１７は、動作モードフラグ１３３が「通常」状態に設定されていないと判定した場合、ステップＳ２６に進む。制御部１７は、動作モードフラグ１３３が「通常」状態に設定されていると判定した場合、認証状態フラグ１３４を、認証に成功したことを示す「認証」状態に設定する（ステップＳ１８）。つまり、認証状態フラグ１３４は、今回入力されたパスワード"Himitsu"が正しいパスワードであると認証済みであることを示す。
【００５５】
次に、制御部１７は、パスワード履歴記憶部１３１に記憶されているハッシュ値に対応する出現頻度記憶部１３２の領域の値から１を減算する（ステップＳ２０）。次に、制御部１７は、ステップＳ２０にて「−１」した出現頻度記憶部１３２の領域の値が下限値よりも小さくなった場合、下限値に設定し直す（ステップＳ２２）。
【００５６】
このように、認証状態フラグ１３４が認証済みに切り替わったタイミングで、パスワード履歴記憶部１３１に最大で４つの直近の誤りパスワードが蓄積されている場合は、それらのパスワードは正規ユーザが誤って入力しやすいパスワードと判定できる。よって、この場合、パスワード履歴記憶部１３１に記憶されているハッシュ値に対応する出現頻度記憶部１３２内の領域の値に「−１」を加算する。なお、後述するように、出現頻度記憶部１３２内の領域の正の値を持つ個数が所定個以上の場合、攻撃者によるパスワードの認証が行われていると判定される。
【００５７】
制御部１７は、図６のステップＳ２０及びステップＳ２２の処理を、パスワード履歴記憶部１３１に記憶されているハッシュ値の数だけ行った後、パスワード履歴記憶部１３１をすべて空にし（ステップＳ２４）、本処理を終了する。
【００５８】
本実施形態では、総当り攻撃による誤ったパスワードの入力と、正規ユーザの記憶違いやタイプミスと言った原因による誤ったパスワードの入力を、過去に入力されたパスワードとの類似性（バラツキ）で判別する。
【００５９】
そのために、パスワード履歴記憶部１３１と出現頻度記憶部１３２の２種の領域が用いられる。これらの２つの領域は、ユーザ毎に別々に用意される。パスワード履歴記憶部１３１は、入力されたパスワード文字列の直近の履歴を所定個数（本実施形態では、４つ）記憶しておく領域である。記憶する個数は固定数に限定されず、ｎ（ｎ≧１）個とする。この際、パスワード文字列をそのまま記憶するのではなくハッシュ関数を用いて数値化した値を記憶する。この仕組みにより正規ユーザが正しくパスワードを入力した時点で、パスワード履歴記憶部１３１に蓄積されている誤ったパスワードを正規ユーザが誤りやすいパスワードと判断することが可能となる。
【００６０】
例えば、ハッシュ関数を、各文字列の文字コードを単純に加算した後、５５で割った余りとした場合、図８のパスワード履歴記憶部１３１に蓄積されている、正規ユーザが誤りやすいパスワードのハッシュ値は、以下のように算出される。
【００６１】
"himitsu"=(0x68+0x69+0x6D+0x69+0x74+0x73+0x75)/55=1
"Himitu"=(0x48+0x69+0x6D+0x69+0x74+0x75)/55=19
この場合、出現頻度記憶部１３２の状態は図９のようになる。つまり、出現頻度記憶部１３２の領域の左上のマスをハッシュ値「０」に対応する領域と定義し、そこから１行目を右方向にハッシュ値「１」、「２」・・・に対応する領域としている。１行目の右上の「１０」の次は２行目の左端がハッシュ値「１１」に対応する領域になる。
【００６２】
よって、図６のステップＳ２０の処理が実行されると、図９に示すように、正規ユーザが誤りやすいhimitsu"のパスワードのハッシュ値「１」に対応する領域と、"Himitu"のパスワードのハッシュ値「１９」に対応する領域に「−１」が設定される。
【００６３】
ステップＳ２２において、出現頻度記憶部１３２に設定することが可能な負の値に下限を設け、例えば下限値を「−３」に設定されると、出現頻度記憶部１３２に設定される値は−３よりも小さい値にはならないように制御される。下限値を設ける理由は、下限を設けないと、ユーザが同一の入力誤りを繰り返すたびに出現頻度記憶部１３２に設定される値が無制限に小さくなっていき、総当たり攻撃の判定の際に、いつまでも総当たり攻撃と判断されにくくなるためである。
【００６４】
次に、４パターン「"ａａａ"，"ａａｂ"，"ａａｃ"，"ＡＡＡ"」の誤ったパスワード文字列が入力された場合について説明する。上記４パターンのパスワードの入力では、正規ユーザが誤ってパスワードを入力したのか、総当たり攻撃の初回４回で入力されたパスワードであるのかの判断は難しい。この状態で、更にもう１つ間違ったパスワード"ＡＡＢ"が入力されたとする。
【００６５】
この場合、図６のステップＳ１０〜Ｓ１４の処理が実行され、ステップＳ１４にて「Ｎｏ」と判定され、図７のステップＳ３０、Ｓ３２の処理が実行される。ステップＳ３２にて、制御部１７は、パスワード履歴記憶部１３１は一杯であると判定する。
【００６６】
そこで、次に、制御部１７は、パスワード履歴記憶部１３１の最も古いパスワードのハッシュ値に対して出現頻度記憶部１３２の対応する領域の値に１を加算する（ステップＳ３４）。次に、制御部１７は、加算した後の領域の値が、１よりも大きくなった場合、当該領域の値を１に設定する（ステップＳ３６）。次に、制御部１７は、攻撃判定処理を呼び出す（ステップＳ３８）。呼び出された、図１０に示す攻撃判定処理は、主に認証部１６及びカウント部１５により実行される。なお、図１０の処理後、図７に戻り、ステップＳ４０〜Ｓ４４が処理される。
【００６７】
この時点では、図１１（ａ）に示すパスワード履歴記憶部１３１の３つ前の領域に記憶されていたパスワード"ａａａ"は、更にもう１つ間違ったパスワード"ＡＡＢ"が入力された時点で、図１１（ｂ）に示すように、パスワード履歴記憶部１３１から消失される。このときに消失された（追い出された）"ａａａ"に対応する出現頻度記憶部１３２の対応領域の値が「＋１」される。
【００６８】
"ａａａ"のハッシュ値は、以下の計算により１６となる。
"aaa"=(0x61+0x61+0x61)/55=16
このため、図１１（ｃ）に示すように、ハッシュ値１６に対応する出現頻度記憶部１３２の領域が＋１となる。なお、図１１（ａ）及び図１１（ｂ）では、説明をわかりやすくするためにパスワードが文字列で表現されているが、実際はパスワード履歴記憶部１３１には、パスワードのハッシュ値が記憶される。
【００６９】
図１１（ｃ）に示す出現頻度記憶部１３２の状態で、図１０の攻撃判定処理が開始されると、カウント部１５は、出現頻度記憶部１３２の正の値を持つ領域の数を示す変数であるカウンタＣに「０」を設定する（ステップＳ５０）。
【００７０】
次に、認証部１６は、出現頻度記憶部１３２の領域の位置を示す変数Ｎの値に「０」を設定する（ステップＳ５２）。「０」の変数Ｎは、図１１（ｃ）の出現頻度記憶部１３２の先頭の位置、つまり、左上の位置を示す。
【００７１】
次に、認証部１６は、出現頻度記憶部１３２のＮ番目が正の値かを判定する（ステップＳ５４）。認証部１６は、出現頻度記憶部１３２のＮ番目が正の値でないと判定した場合、そのままステップＳ５８に進む。一方、認証部１６は、出現頻度記憶部１３２のＮ番目が正の値であると判定した場合、カウント部１５は、カウンタＣに「１」を加算し（ステップＳ５６）、ステップＳ５８に進む。
【００７２】
ステップＳ５８において、認証部１６は、変数Ｎに「１」を加算し、出現頻度記憶部１３２の領域を次の領域であるＮ番目に変更する（ステップＳ５８）。次に、認証部１６は、出現頻度記憶部１３２の領域の最後までチェックしたかを判定する（ステップＳ６０）。例えば、認証部１６は、Ｎの値が５５になった場合には「Ｙｅｓ」と判定し、Ｎの値が５５未満である場合には「Ｎｏ」と判定する。認証部１６は、出現頻度記憶部１３２の領域の最後までチェックしていないと判定した場合、ステップＳ５４に戻り、出現頻度記憶部１３２のＮ番目が正の値かを判定する。つまり、出現頻度記憶部１３２の先頭（０番目）の領域から最後の領域（５４番目）まで各領域が正の値かをチェックするまで、ステップＳ５４〜Ｓ６０が繰り返される。ステップＳ６０において、認証部１６は、出現頻度記憶部１３２の最後の領域までチェックしたと判定すると、カウンタＣの数が、所定個数以上かを判定する（ステップＳ６２）。予め所定個数は１０に設定されているとすると、例えば、図１１（ｃ）の場合、カウンタＣの数は１である。よって、ステップＳ６２において、認証部１６は、カウンタＣの数が１０未満であると判定し、総当たりの攻撃は生じていないと判断して、本処理を終了する。
【００７３】
更に３回間違ったパスワードが入力されると、パスワード履歴記憶部１３１から消失される、以下の各パスワードのハッシュ値に該当する箇所が１加算される。
"aab"=(0x61+0x61+0x62)/55=17
"aac"=(0x61+0x61+0x63)/55=18
"AAA"=(0x41+0x41+0x41)/55=30
このとき、図6のステップＳ１０〜Ｓ１４、図７のステップＳ３０〜Ｓ３８の処理が時移行され、ステップＳ３８にて呼び出された図１０に示す攻撃判定処理において、カウント部１５は、出現頻度記憶部１３２が正の値の領域の数をカウントＣにカウントする。
【００７４】
図１２（ａ）には "aab"、"aac"、"AAA"の各パスワードのハッシュ値に該当する箇所が１加算された結果の出現頻度記憶部１３２の状態が示されている。この場合、カウントＣには４が設定される。この場合、図１０のステップＳ６２において、認証部１６は、カウンタＣの数が１０未満であると判定し、総当たり攻撃は生じていないと判断して、本処理を終了する。
【００７５】
カウント部１５は、出現頻度記憶部１３２が更新されるたびに、その中で正の値の領域の数をカウントし、認証部１６は、それが所定個数（本実施形態では１０箇所）を超えると、総当り攻撃が発生したと判定する（ステップＳ６２）。そして、認証部１６は、動作モードフラグ１３３を「通常」状態から「ブロック」状態に変更する（ステップＳ６４）。
【００７６】
例えば、図１２（ｂ）に示す出現頻度記憶部１３２では、カウントＣには１０が設定される。この場合、図１０のステップＳ６２において、カウント部１５は、カウンタＣの数が１０以上であると判定し、認証部１６は、総当たり攻撃が発生したと判定する。この判定結果により、動作モードフラグ１３３が、「通常」状態から「ブロック」状態に変更される。動作モードフラグ１３３が「ブロック」状態になっている場合、「攻撃者のパスワードによる認証が行われている」ことを示す。
【００７７】
このように、本実施形態では、誤ったパスワードが連続して入力された場合、出現頻度記憶部１３２は、パスワード履歴記憶部１３１から追い出された（消失された）パスワードを数値化したハッシュ値に対する入力の頻度を負の値で記憶し、正規者が誤入力しやすいパスワードとして記憶しておく。また、総当たり攻撃の場合、入力されるパスワードは毎回異なるものとなるため、パスワードを数値化したハッシュ値もバラバラな値を取る可能性が非常に高くなる。よって、総当たり攻撃を受けたと予測される出現頻度記憶部１３２の正の値の領域が示すように、所定個数以上の領域にわたって多様なハッシュ値が蓄積されている場合にこれを総当たり攻撃の兆候と捉えることが可能となる。
【００７８】
また、本実施形態では、出現頻度記憶部１３２を利用して総当たり攻撃の兆候を捉えたことを記憶し、動作モードを切り替えるための動作モードフラグ１３３（記憶域）がユーザ毎に用意されている。総当たり攻撃を受けると動作モードフラグ１３３が通常状態からブロック状態に切り替わり、この状態では正しいパスワードが入力されても認証を通さない動作とする。
【００７９】
つまり、動作モードフラグ１３３がブロック状態のときに正しいパスワードが入力された場合、図６のステップＳ１０〜Ｓ１６の処理が実行され、ステップＳ１６にて「Ｎｏ」と判定される。この場合、認証部１６は、動作モードフラグ１３３を「通常」状態に設定する（ステップＳ２６）。次に、認証部１６は、出現頻度記憶部１３２をすべてチェックし、値が正の領域を「０」に設定する（ステップＳ２８）。これにより、出現頻度記憶部１３２の正の値の領域の数により総当たり攻撃を受けている状態をカウントしていたカウント値がリセットされる。なお、制御部１７は、パスワード履歴記憶部１３１をすべて空にし（ステップＳ２４）、本処理が終了する。
【００８０】
これにより、総当たり攻撃中に正しいパスワードが一度入力されても、動作モードフラグ１３３が「ブロック」状態から「通常」状態に切り替わる動作が行われるのみで認証を成功させない。このため、総当たり攻撃中の正しいパスワードの入力に対して認証が通り、パスワードが漏えいすることを防止できる。かかる仕組みでは、動作モードフラグ１３３がブロック状態のときに正規ユーザが正しいパスワードを入力しても認証に成功しないが、正規ユーザの場合は認証に失敗するとユーザ名やパスワードの入力ミスを疑って、再度正しいパスワードを入力する。その際、正規ユーザは認証に成功するため、正規ユーザが再度正しいパスワードを入力しても認証に成功しないという不都合は生じない。
【００８１】
一方、総当たり攻撃の場合には、その性質上、総当たり攻撃中にたまたま正しいパスワードを入力して認証に成功しなかった後に、再度正しいパスワードを入力する可能性は極めて低い。以上から、本実施形態に係る認証処理及び攻撃判定処理によれば、正規ユーザのパスワードによる認証を阻害せず、攻撃者のパスワードによる認証を阻止することができる。
【００８２】
動作モードフラグ１３３は、攻撃者のパスワードによる認証か否かを示す動作モード情報の一例であり、通常状態又ブロック状態に設定される。通常状態は、攻撃者のパスワードによる認証でないことを示す第１モードの状態であり、ブロック状態は、攻撃者のパスワードによる認証であることを示す第２モードの状態である。
【００８３】
なお、本実施形態では、攻撃者のパスワードによる認証の一例として、総当たり攻撃を例に挙げて説明しているが、攻撃者のパスワードによる認証には、辞書攻撃を含む。パスワードが完全にランダムな文字列では利用者の記憶や入力が困難なため、既存の単語をベースにパスワードを設定することが多い。その場合、攻撃者は総当りではなく、既存単語の辞書に従って作成されたパスワードを優先的に入力することで、総当りに比べてはるかに少ない試行回数で認証に成功する可能性がある。この手法を用いた攻撃者のパスワードによる認証を辞書攻撃と呼ぶ。
【００８４】
以上に説明したように、本実施形態では、ユーザがパスワードを入力するたびに、そのパスワードはハッシュ化されてパスワード履歴記憶部１３１に蓄積される。入力パスワードの履歴が蓄積された状態で正しいパスワードが入力された場合は、パスワード履歴記憶部１３１に記憶している最大ｎ個のパスワードは正規ユーザが間違えて入力したパスワードと判断し、出現頻度記憶部１３２に「負」の値を加算する形で記憶していく。
【００８５】
正しいパスワードが入力されずに、誤ったパスワード入力が続く場合、パスワード履歴記憶部１３１の蓄積可能な数を超えて追い出されたパスワードのハッシュ値は、出現頻度記憶部１３２に「正」の値を加算する形で記憶していく。
【００８６】
パスワードが入力されるたびに、出現頻度記憶部１３２の中で「正」の値を持つ領域の数をチェックし、その数があらかじめ決められた所定個数を超えると総当り攻撃の兆候と判断して、認証部１６は、認証をブロックする状態に動作モードフラグ１３３を切り替える。総当たり攻撃が続くと、いずれは正しいパスワードが入力されるが、ブロック状態では、たとえ正しいパスワードが入力されても認証失敗と処理されるため認証は成功しない。
【００８７】
ブロック状態になると、その後は誤ったパスワードが入力されても出現頻度記憶部１３２の更新は不要となる。その後も総当り攻撃が続いて、いずれは正しいパスワードを入力される可能性があるが、正しいパスワードが入力されても、動作モードフラグ１３３がブロック状態であれば認証失敗となる。このため総当たり攻撃により正しいパスワードが入力されても、不正に認証されてパスワードが漏えいすることを防止できる。
【００８８】
ブロック状態で一度正しいパスワードが入力されると、動作モードフラグ１３３は通常状態に戻される。その際、出現頻度記憶部１３２のうち、値が「＋１」以上の箇所は値を「０」に戻す。総当り攻撃がその後も続いた場合でも、一度正しいパスワードに対して認証失敗を応答しているため、総当り攻撃では再度正しいパスワードは入力されない。よって、一度入力された正しいパスワードと同じパスワードによるアタックは行われず、セキュリティは守られる。また、総当たり攻撃が続くと、出現頻度記憶部１３２の領域を一度「０」に戻した後でもすぐに「＋１」以上の領域が増えて再びブロック状態となる。
【００８９】
以上、本実施形態では、ユーザ名とパスワードの２つの文字列で管理される認証システム１において、総当り攻撃などの手法による端末装置２０の不正利用やアカウント情報の漏洩を防止する仕組みを実現することができる。
【００９０】
本実施形態では、ユーザ名ごとに過去に入力された直近の複数回のパスワード文字列をハッシュ関数で数値化したハッシュ値がパスワード履歴記憶部１３１に蓄積される。また、過去の誤った入力パスワードの出現頻度が、ハッシュ値毎に記録する出現頻度記憶部１３２を使って分析される。これにより、総当り攻撃、辞書攻撃の兆候が見られた場合には正しいユーザ名、パスワードが入力されても認証成功させないようにガードすることができる。加えて、本実施形態では、正規ユーザの入力誤りや記憶違いによる誤ったパスワード入力については、出現頻度記憶部１３２に「負」の値を加算する形で記憶することで、総当たり攻撃とみなされにくい仕組みを実現する。
【００９１】
以上により、認証システム１では、正規ユーザのパスワードによる認証を阻害せず、攻撃者のパスワードによる認証を阻止することができる。
【００９２】
［変形例］
次に、一実施形態の変形例に係る認証サーバ１０の構成について、図１３を参照しながら説明する。図１３は、一実施形態の変形例に係る認証サーバ１０の機能構成の一例を示す。
【００９３】
多くの場合、攻撃者は手入力でデタラメな文字列を入力するのではなく、特定のプログラムアルゴリズムによって生成した文字列や単語辞書を参照して生成した文字列を順番に自動的に入力する。従って、攻撃者が同一の攻撃プログラムを利用して一つの端末装置２０の複数のユーザや、異なる端末装置２０に対して総当り攻撃を実施すると、出現頻度記憶部１３２に記憶される「正」の値の領域や出現順序はほぼ同じになると考えられる。
【００９４】
上記実施形態では１０箇所の出現頻度をカウントした際に総当り攻撃の兆候と判断した。本変形例では、その判断をした時点での出現頻度記憶部１３２の情報を他システムや他ユーザでも共有することで、他ユーザでも同一の発生パターンと判断した場合は１０箇所より最大で２倍早い段階で総当り攻撃と判断することが可能となる。
【００９５】
そこで、図１３の変形例に係る認証サーバ１０では、出現頻度記憶部１３２の情報を他ユーザや他装置で共有できる仕組みを実現する。これにより、総当たり攻撃の兆候を通常より早い段階で捉えることができ、偶然に早い段階での攻撃で正しいパスワードが入力された場合にもパスワードが漏えいするリスクを低減できる。つまり、ブロック状態に推移する前に攻撃者により偶然に早い段階で正しいパスワードが入力されてしまったときにパスワードが漏えいする可能性を下げることができる。
【００９６】
具体的には、図１３に示す一実施形態の変形例に係る認証サーバ１０は、図１に示した一実施形態に係る認証サーバ１０に対して、出現頻度共有記憶部２００が追加されている点のみが異なる。出現頻度共有記憶部２００は、ユーザ毎の出現頻度記憶部１３２と同じ構造であり、いずれかのユーザで総当たり攻撃の兆候が検出された際に、その中身がコピーされ、他ユーザでの攻撃判定実施の際にコピーした出現頻度記憶部１３２が参照可能となる。出現頻度共有記憶部２００には、１つ又は複数の出現頻度記憶部１３２のデータがコピーされ得る。
【００９７】
図１４は、一実施形態の変形例に係る出現頻度記憶部１３２及び出現頻度共有記憶部２００の状態の一例を示す。ここでは、ユーザＡの端末装置２０に対する攻撃の兆候を、ユーザＢ用の端末装置との間で共有する場合の例を示す。
【００９８】
攻撃が行われていない状態では、ユーザＡ用記憶部１３ａの図１４（ａ）に示す出現頻度記憶部１３２ａと、ユーザＢ用記憶部１３ｂの図１４（ｂ）に示す出現頻度記憶部１３２ｂとは、各ユーザの過去の入力誤り等で異なる状態になっている。また、図１４（ｃ）に一例を示す出現頻度共有記憶部２００は初期状態で何も記憶されていない。
【００９９】
攻撃者がユーザＡに対して総当たり攻撃を仕掛けてきた際、出現頻度記憶部１３２ａにおいて総当たり攻撃の兆候を検出したら、検出したタイミングでユーザＡの出現頻度記憶部１３２ａを出現頻度共有記憶部２００に保存しておく。図１５には、出現頻度記憶部１３２ａの正の領域が１０カ所以上になり、総当たり攻撃と判定されたため、図１５（ａ）の出現頻度記憶部１３２ａのデータを、図１５（ｃ）の出現頻度共有記憶部２００にコピーした状態が示されている。
【０１００】
出現頻度共有記憶部２００にデータが格納されているとき、認証部１６は出現頻度記憶部１３２と出現頻度共有記憶部２００の２つを参照して判定を行う。図１６は、一実施形態の変形例に係る攻撃判定処理の一例を示すフローチャートである。本変形例において、図１６の攻撃判定処理は、図７のステップＳ３８にて呼び出される図１０の攻撃判定処理の替わりに呼び出される。なお、図１６の攻撃判定処理では、図１０の攻撃判定処理と同一の処理を行うステップには、図１０のステップ番号と同一ステップ番号を付すことにより、説明を簡略化する。
【０１０１】
また、ここでは、ユーザＡのログイン操作に対して図１６のフローチャートを用いて、変形例に係る攻撃判定処理を説明し、ユーザＢ及びその他のユーザのログイン操作に対する攻撃判定処理についてはユーザＡの場合と同じ処理であるため、説明を省略する。
【０１０２】
図１６の処理が開始されると、ステップＳ５０〜Ｓ５６の処理が実行される。ステップＳ５４において、認証部１６は、出現頻度記憶部１３２のＮ番目が正の値かを判定する。認証部１６は、出現頻度記憶部１３２のＮ番目が正の値でないと判定した場合、そのままステップＳ７８に進む。一方、認証部１６は、出現頻度記憶部１３２のＮ番目が正の値であると判定した場合、カウント部１５は、カウンタＣに「１」を加算し（ステップＳ５６）、ステップＳ７８に進む。
【０１０３】
ステップＳ７８において、認証部１６は、出現頻度共有記憶部２００のＮ番目が正の値かを判定する。認証部１６は、出現頻度共有記憶部２００のＮ番目が正の値でないと判定した場合、ステップＳ５８に進む。一方、認証部１６は、出現頻度共有記憶部２００のＮ番目が正の値であると判定した場合、カウント部１５は、カウンタＣに「１」を加算し（ステップＳ８０）、ステップＳ５８に進む。
【０１０４】
ステップＳ５８において、認証部１６は、変数Ｎに「１」を加算し、出現頻度記憶部１３２の領域を次の領域であるＮ番目に変更する。次に、認証部１６は、出現頻度記憶部１３２の領域の最後までチェックしたかを判定する（ステップＳ６０）。例えば、認証部１６は、Ｎの値が５５になった場合には「Ｙｅｓ」と判定し、Ｎの値が５５未満である場合には「Ｎｏ」と判定する。認証部１６は、出現頻度記憶部１３２の領域の最後までチェックしていないと判定した場合、ステップＳ５４に戻り、出現頻度記憶部１３２のＮ番目が正の値かを判定する。つまり、出現頻度記憶部１３２の先頭（０番目）の領域から最後の領域（５４番目）までチェックするまで、ステップＳ５４、Ｓ５６，Ｓ７８、Ｓ８０、Ｓ５８，Ｓ６０の処理が繰り返される。ステップＳ６０において、認証部１６は、領域の最後までチェックしたと判定すると、カウンタＣの数が、所定個数以上かを判定する（ステップＳ６２）。
【０１０５】
例えば、図１７（ａ）に示す出現頻度記憶部１３２ａ及び図１７（ｃ）に示す出現頻度共有記憶部２００の正の値の領域が一致する数をカウントすると、カウンタＣの数は２０である。所定個数が１０であるとすると、ステップＳ６２において、認証部１６は、カウンタＣの数が所定個数以上であると判定し、総当たりの攻撃がされていると判断して、動作モードフラグ１３３を「ブロック」状態に設定し（ステップＳ６４）、本処理を終了する。
【０１０６】
以上に説明したように、一実施形態の変形例に係る攻撃判定処理では、出現頻度共有記憶部２００にデータが存在し、ユーザ毎の出現頻度記憶部１３２と出現頻度共有記憶部２００の両者で同一箇所が「正」になっている場合は、カウンタＣの加算数が２倍になる。これにより、同じ総当たり攻撃を受けた際のカウントの増加が最大で通常の２倍になり、各ユーザが単独で出現頻度記憶部１３２の「正」の値の領域の個数を検出するよりも最大で２倍早い時点で総当り攻撃の兆候を捕らえることができる。
【０１０７】
また、上記の説明では出現頻度共有記憶部２００は１個としているが、これを複数用意し、複数ユーザで総当たり攻撃の兆候を検出し、その出現パターンが異なる場合はそれぞれのコピーを用いてもよい。また、単独のユーザでも複数回の攻撃の兆候を捕えたならその都度コピーを保存してもよい。出現頻度共有記憶部２００が複数存在する場合は、認証部１６は、その判定を出現頻度共有記憶部２００の個数分だけ繰り返すことになる。
【０１０８】
一実施形態の変形例に係る認証サーバ１０によれば、一のユーザの出現頻度記憶部１３２のデータを認証サーバ１０の出現頻度共有記憶部２００に転送し、他のユーザへの総当たり攻撃を判定する際に用いることができる。また、転送される出現頻度記憶部１３２には、ユーザが入力した正しいパスワードや誤ったパスワードの履歴の直接の文字列が含まれないため、共有の際にパスワードが漏えいする危険性が少ないという特長がある。
【０１０９】
以上、一実施形態に係る認証サーバ１０及びその変形例に係る認証サーバ１０について説明した。本実施形態及びその変形例に係る認証サーバ１０によれば、総当り攻撃及び辞書攻撃でのパスワード漏洩を防止できるため、ユーザは複雑なパスワードの設定ルールを強いられることなく、利用しやすいパスワードを設定することができる。
【０１１０】
また、普段から入力誤りをしやすいパスワードについては、パスワード履歴記憶部１３１を用いて記憶し、誤ったパスワードの入力頻度によって出現頻度記憶部１３２に「負」の重み付けがなされるため、すぐに総当り攻撃と判断されない。よって、所定回数パスワードを間違えるとアカウントがロックされるといった短所が発生しない。
【０１１１】
また、パスワード文字列の攻撃判定や過去入力パスワードの記憶にはハッシュ化した数値を用いるため、システム内部に入力文字列そのものを記憶する必要がない。これにより処理の高速化、必要とするメモリ量の削減、セキュリティの向上といった効果が得られる。
【０１１２】
以上、認証装置、認証プログラム及び認証方法を上記実施形態により説明したが、本発明に係る認証装置、認証プログラム及び認証方法は上記実施形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。また、上記実施形態及び変形例が複数存在する場合、矛盾しない範囲で組み合わせることができる。
【０１１３】
以上の説明に関し、更に以下の項を開示する。
（付記１）
正しいパスワードを受け付ける前に認証処理に失敗したパスワード又は該パスワードの対応値を所定個数記憶する記憶部に、新たに認証処理に失敗したパスワード又は該パスワードの対応値を記憶する際、該記憶部から消失するパスワード又は該パスワードの対応値の個数をカウントするカウント部と、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定せずに、前記カウントした値をリセットする認証部と、
を有する認証装置。
（付記２）
前記認証部は、前記カウントした値が所定個数未満である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定する、
付記１に記載の認証装置。
（付記３）
前記認証部は、前記カウントした値が所定個数以上である場合、動作モード情報を、攻撃者のパスワードによる認証でないことを示す第１モードから、攻撃者のパスワードによる認証であることを示す第２モードに切り替え、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに、動作モード情報を前記第１モードに切り替え、
前記カウント部は、前記第２モードの状態において前記記憶部から消失するパスワード又は該パスワードの対応値が、前記第１モードの状態において前記記憶部から消失するパスワード又は該パスワードの対応値と同じ値の場合、少なくとも一回は前記カウントする個数から除外する、
付記１又は２に記載の認証装置。
（付記４）
正しいパスワードを受け付ける前に認証処理に失敗したパスワード又は該パスワードの対応値を所定個数記憶する記憶部に、新たに認証処理に失敗したパスワード又は該パスワードの対応値を記憶する際、該記憶部から消失するパスワード又は該パスワードの対応値の個数をカウントする処理と、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定せずに、前記カウントした値をリセットする処理と、
をコンピュータに実行させるための認証プログラム。
（付記５）
前記カウントした値が所定個数未満である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定する、
付記４に記載の認証プログラム。
（付記６）
前記カウントした値が所定個数以上である場合、動作モード情報を、攻撃者のパスワードによる認証でないことを示す第１モードから、攻撃者のパスワードによる認証であることを示す第２モードに切り替え、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに、動作モード情報を前記第１モードに切り替え、
前記第２モードの状態において前記記憶部から消失するパスワード又は該パスワードの対応値が、前記第１モードの状態において前記記憶部から消失するパスワード又は該パスワードの対応値と同じ値の場合、少なくとも一回は前記カウントする個数から除外する、
付記４又は５に記載の認証プログラム。
（付記７）
正しいパスワードを受け付ける前に認証処理に失敗したパスワード又は該パスワードの対応値を所定個数記憶する記憶部に、新たに認証処理に失敗したパスワード又は該パスワードの対応値を記憶する際、該記憶部から消失するパスワード又は該パスワードの対応値の個数をカウントし、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定せずに、前記カウントした値をリセットする、
ことをコンピュータが実行する認証方法。
（付記８）
前記カウントした値が所定個数未満である場合、正しいパスワードの入力を受け付けたときに認証処理に成功したと判定する、
付記７に記載の認証方法。
（付記９）
前記カウントした値が所定個数以上である場合、動作モード情報を、攻撃者のパスワードによる認証でないことを示す第１モードから、攻撃者のパスワードによる認証であることを示す第２モードに切り替え、
前記カウントした値が所定個数以上である場合、正しいパスワードの入力を受け付けたときに、動作モード情報を前記第１モードに切り替え、
前記第２モードの状態において前記記憶部から消失するパスワード又は該パスワードの対応値が、前記第１モードの状態において前記記憶部から消失するパスワード又は該パスワードの対応値と同じ値の場合、少なくとも一回は前記カウントする個数から除外する、
付記７又は８に記載の認証方法。
【符号の説明】
【０１１４】
１  認証システム
１０  認証サーバ
１１  入力受付部
１２  入力チェック部
１３  記憶部
１３ａ  ユーザＡ用記憶部
１４  パスワード変換部
１５  カウント部
１６  認証部
１７  制御部
２０  端末装置
３０  ネットワーク
１３１ａ、１３１  パスワード履歴記憶部
１３２ａ、１３２  出現頻度記憶部
１３３ａ、１３３  動作モードフラグ
１３４ａ、１３４  認証状態フラグ
【図１】
2018180911.tif 000003
【図２】
2018180911.tif 000004
【図３】
2018180911.tif 000005
【図４】
2018180911.tif 000006
【図５】
2018180911.tif 000007
【図６】
2018180911.tif 000008
【図７】
2018180911.tif 000009
【図８】
2018180911.tif 000010
【図９】
2018180911.tif 000011
【図１０】
2018180911.tif 000012
【図１１】
2018180911.tif 000013
【図１２】
2018180911.tif 000014
【図１３】
2018180911.tif 000015
【図１４】
2018180911.tif 000016
【図１５】
2018180911.tif 000017
【図１６】
2018180911.tif 000018
【図１７】
2018180911.tif 000019