これから発明の実施形態の説明を行う。まず、マトリクス認証に特有の技術についての説明をする。マトリクス認証は、所定パターンに配列した複数のパターン要素(パターン要素列190)を認証を受けるユーザが使用するクライアント装置に提示パターン191として提示し、当該提示パターン191に含まれる特定の位置のパターン要素に対して適用することによりワンタイムパスワードを生成するためのワンタイムパスワード導出ルール102bを当該ユーザのパスワードとするものである。
[提示パターンとパターン要素]
提示パターン191とは、パターン要素を所定パターンに配列したものである。所定パターンとしては、縦m個×横n個のそれぞれの位置に全体が方形を形成するように配置したマトリクス、そのようなマトリクスを複数並べたもの、などが典型的であるが、その他に任意の図形の形状とすることができる。本明細書では、そのような典型的なマトリクス形状以外の形状の提示パターンを使用した場合も、マトリクス認証方式と呼ぶことにする。所定パターンとしては、規則的な形状や印象的な形状が、ユーザの記憶に残りやすく、従ってユーザがパスワードであるワンタイムパスワード導出ルール102bを記憶しやすいために好適である。
パターン要素とは、提示パターン内において所定パターンを構成するように所定位置に配置される要素であり、好適には0から9までの1桁の数字であるが、他に、アルファベット、記号、などの任意のキャラクターとすることができる。なお、記号としては、PCの標準のキーボードに割り当てられている「+」、「−」、「*」、「=」、「_」、「!」、「?」、「#」、「$」、「&」などの記号が特に好適である。キャラクターとして、図形、イラスト、写真などの図柄を使用することもできる。好適には、同じパターン要素は、提示パターン内において、複数個表示される。このようにすると、パスワードであるワンタイムパスワード導出ルール102bと、ワンタイムパスワード導出ルール102bを提示パターンに適用した結果であるワンタイムパスワード192とは多対1の対応となり、ワンタイムパスワード192の入力時に自動的にハッシュ化がなされることになる。すなわち、ワンタイムパスワード192の入力時に、自動的にハッシュ関数演算と同様の処理がなされることになり、そのため、1つのワンタイムパスワード192だけからは、提示パターンが特定されていたとしても、ワンタイムパスワード導出ルール102bを特定することはできない。
本実施例では、図7などに示すような、0から9までの1桁の数字をパターン要素とし、それぞれのパターン要素を4つの4×4のマトリクスからなる所定パターン191pに配列したものを提示パターン191とする。なお、携帯電話機などのように画面の面積が小さい場合は、4×4のマトリクスの数を3つなどに減少させた提示パターンを使用すると好適である。
[パターン要素列]
パターン要素列190は、提示パターン191を生成するために所定パターン191pに配置する要素の内容を表わすデータであり、典型的には、その提示パターン191に含まれるすべてのパターン要素を順番に並べたものである。パターン要素列190は、提示パターン191が生成される前に生成される。なお、パターン要素列190は、パターン要素が順番に並べられた1つの文字列でなければならないというものではなく、1つの提示パターン191に含まれるすべてのパターン要素の情報を含むデータを意味するものである。従って、パターン要素列190に含まれるそれぞれのパターン要素を提示パターン内のそれぞれの位置に対応付けられる限り、パターン要素列190に含まれるパターン要素の順番は自由である。またパターン要素列190は、複数のデータに分割されていても構わない。本発明に係るユーザ認証システム100は、大きく、ユーザの認証を行う認証サーバ101と、その認証サーバとネットワークで接続された、ユーザが認証を要求する端末である認証要求クライアント151とから構成される。ユーザ認証システム100においては、パターン要素列190は、認証要求クライアント151の内部で生成されて、その中で提示パターン191の生成に使用されるが、パターン要素列190がそのままの形態でネットワークを通じて認証サーバ101に送信されることはない。
[ワンタイムパスワード導出ルール]
ワンタイムパスワード導出ルール102bは、提示パターン191に含まれる特定の位置のパターン要素に対して適用することによりワンタイムパスワード192を生成するためのルールであり、ユーザのパスワードとして機能するデータである。パターン要素に対して適用するルールとは、典型的には、どの位置のパターン要素をどの順番で選択するのかということである。この場合、ワンタイムパスワード導出ルール102bは、提示パターン191に含まれる選択されるパターン要素のそれぞれの位置と、当該それぞれのパターン要素が選択される順番との組み合わせの情報である。またワンタイムパスワード導出ルール102bは、提示パターン191に基づかないで入力される固定の数字などのキャラクターの情報を含んでいてもよく、この場合、ワンタイムパスワード導出ルール102bは、提示パターン191に含まれる選択されるパターン要素のそれぞれの位置および当該提示パターン191に基づかないで入力される固定のキャラクターのそれぞれと、当該それぞれのパターン要素の位置および当該それぞれのキャラクターが選択あるいは入力される順番との組み合わせの情報である。
図6に典型的なワンタイムパスワード導出ルール102bの構造を示す。本実施例では、0から9までの1桁の数字をパターン要素とし、それぞれのパターン要素を4つの4×4のマトリクスからなる所定パターン191pのそれぞれの要素の位置に配置した提示パターン191に対するワンタイムパスワード導出ルール102bが例示されている。図6においては、所定パターン191pのそれぞれの要素の位置は、01から64までの数字で区別されて表示されている。提示パターン191が認証を受けようとするユーザに対して表示されるときには、所定パターン191pのそれぞれの要素の位置には0から9までの1桁の数字が表示される。
入力されるワンタイムパスワード192は、好適には、提示パターン191に基づく数字と、それに基づかないで入力される固定の数字とを使用するものである。提示パターン191に含まれるパターン要素の数は64個であるため、提示パターン191に含まれるパターン要素のそれぞれの位置が選択されたことは、それぞれの位置に割り当てられた01から64までの2桁の数字によって表わされる。そして、提示パターン191に基づかないで入力される固定の数字については、最初にそのような固定の数字であることを示す「9」の数字が割り当てられ、次に入力される1桁の数字が割り当てられた、2桁の数字によって表わされる。図6の例では、ワンタイムパスワード192の最初の4つの数字は、提示パターン191の特定の位置のパターン要素を選択することによって入力されるものである。ワンタイムパスワード導出ルール102bのそれらに対応する部分として、それらの位置を表わす数字である「01」、「16」、「29」、「20」がその順番に配置される。選択されたパターン要素は、キーボード196などによって入力される。ワンタイムパスワード192のその次の2つの数字は、提示パターン191に基づかないで、キーボード196などから入力されるものである。ワンタイムパスワード導出ルール102bのそれらに対応する部分として、直接入力を表わす「9」の数字の後に、入力される数字である「2」および「9」がそれぞれ付加された「92」、「99」が続いてその順番に配置される。ワンタイムパスワード192のその次の1つの最後の数字は、提示パターン191の特定の位置のパターン要素を選択することによって入力されるものである。ワンタイムパスワード導出ルール102bのそれに対応する部分として、それの位置を表わす数字である「33」が続いて配置され、ワンタイムパスワード導出ルール102bはここで終了する。ワンタイムパスワード導出ルール102bには、それの終了点をユニークに特定するエンドマーク、例えば「00」などの数字をその最後にさらに付加してもよいし、あるいは、ワンタイムパスワード導出ルール102bの全体の長さを示す数値をそれに関連付けていてもよい。
[パターンシード値]
パターンシード値183は、所定の変換規則により変換されることによって、1つの提示パターン191に含まれるパターン要素をユニークに決定する値である。パターンシード値183そのものは、所定の発生規則により所定の範囲内において発生されられる。後述するが、本発明のパターンシード値183は、所定の変換規則を適用して1つの提示パターン191に含まれるパターン要素を生成する際に、さらに他の要素の情報と組み合わせられる点が重要な特徴である。
認証サーバ101が、認証要求クライアント151で入力されたワンタイムパスワードが正しいかどうかを検証するためには、認証要求クライアント151において表示される提示パターン191を知る必要がある。しかし、提示パターン191をそのまま認証サーバ101から認証要求クライアント151に送ったのでは、それがネットワーク盗聴などにより悪意の第三者に取得されると、パスワードが推測される可能性が生じる。その一方で、提示パターン191を認証サーバ101と認証要求クライアント151との間で共有しなければ、認証サーバ101においてワンタイムパスワード192の検証を行うことができない。パターンシード値183は、このような相反する要求を解決するものであり、所定の変換規則を適用することにより提示パターン191をユニークに決定するが、パターン要素列190そのものではない情報である。認証サーバ101から認証要求クライアント151へは、パターン要素列190そのものは送信されず、それに代えてパターンシード値183が送信される。認証要求クライアント151は、認証サーバ101から受信したパターンシード値183に所定の変換規則を適用することにより提示パターン191を生成することができる。所定の変換規則とは、例えばハッシュ関数演算などが考えられる。このように、パターン要素列190そのものがネットワーク上を流れないため、パターンシード値183を使用することにより、セキュリティが向上する。
そして本発明においては、パターンシード値183は、所定の変換規則により1つの提示パターン191に含まれるパターン要素を生成する際に、さらに他の要素の情報と組み合わされる。他の要素の情報としては、認証を受けようとするユーザが使用している認証要求クライアント151を識別するクライアント識別情報102cが使用される。このようにすると、クライアント識別情報102cを出力する機器を保有していることが認証の際の追加的な検証のための条件となり、セキュリティが向上する。パターンシード値183は、クライアント識別情報102cと組み合わされて1つの提示パターン191に含まれるパターン要素をユニークに決定する。このようにすることによって、提示パターン191は、パターンシード値183だけでなく、クライアント識別情報102cの情報も組み込んだものとなるため、ワンタイムパスワード192が正しいクライアント識別情報102cが使用された提示パターン191に基づいて入力されたものであるかどうかを検証することが可能となる。そして、本発明においては、提示パターン191を、認証要求クライアント151を識別するクライアント識別情報102cを使用して攪乱することによって、提示パターン191にはクライアント識別情報102cの情報も組み込まれることになる。そしてワンタイムパスワード192は、そのようにして生成された提示パターン191に、ユーザに関連付けられたワンタイムパスワード導出ルール102bを適用したものである。このように、本発明においては、ワンタイムパスワード192が、正しいワンタイムパスワード導出ルール102bに基づいた正しいユーザによって入力されたものであるかどうかということと、正しいユーザが有する正しいクライアント識別情報102cを有する認証要求クライアント151から入力されたものであるかどうかということという、2つの要素に基づく認証の成否を規定する情報を含むことになる。このようにして、二要素認証を行うことができるようになるため、セキュリティが劇的に向上する。
さらに本発明においては、クライアント識別情報102cという第2の要素を使用した認証を行うにもかかわらず、ユーザ認証に際してクライアント識別情報102cそのものを検証するものではないことが大きな特徴である。すなわち、認証の際のワンタイムパスワードがネットワーク盗聴されたとしても、それからクライアント識別情報が漏洩することはない。そのため、認証の際のワンタイムパスワードがネットワーク盗聴された場合でも、提示パターンやワンタイムパスワードの生成ルールの推定が不可能であり、強固なセキュリティが得られる。このように、第2の要素であるクライアント識別情報102cが漏洩する可能性を発生させることなく、その第2の要素を認証のために使用する要素として追加することが可能となる。
また、提示パターン191を生成する際に、複数のクライアント識別情報102cを同時に使用することも可能である。この場合は、それらの複数のクライアント識別情報102cとパターンシード値183とを組み合わせることによって提示パターン191に含まれるパターン要素を決定することになる。それらの複数のクライアント識別情報102cが異なるソースに由来するものであれば、それらが同じ認証要求クライアント151に関連付けられたものであるとしても、認証のための要素の数が実質的に三要素以上の多要素に拡張されることになり、さらに強固なセキュリティが得られる。
なお、提示パターン191を生成する際に、他の情報をさらに使用して提示パターン191をさらに攪乱することも有用である。そのような他の情報としては、例えば、ユーザID 102aを使用することが可能である。この場合、パターンシード値183は、ユーザID 102aおよびクライアント識別情報102cと組み合わされて1つの提示パターン191に含まれるパターン要素をユニークに決定することになる。ユーザID 102aはユーザに由来する情報であるため、そのような処理は認証のための要素を増加させるものとは言えない。しかし、パターンシード値183から提示パターン191を生成するためには、さらにユーザID 102aを使用した演算が必要になるため、ワンタイムパスワード192から提示パターン191を類推することが一層困難になる。したがって、ユーザID 102aを提示パターン191の生成のためにさらに使用することによって、セキュリティをさらに向上させることができる。
パターンシード値183は、典型的には、乱数発生アルゴリズムによって発生させられた所定の範囲内の数値である。パターンシード値183は、所定の範囲内の数値であれば、乱数発生アルゴリズム以外の発生規則、例えば、所定の初期値からの所定値ごとのカウントアップやカウントダウンで発生させられてもよい。
[ワンタイムパスワード]
ワンタイムパスワード192は、認証を受けようとするユーザが提示パターン191に対して自己のワンタイムパスワード導出ルール102bを適用することによって生成・入力される使い捨てのパスワードである。図7は、マトリクス認証方式におけるワンタイムパスワード入力方法の概念図である。ユーザは、提示パターン191に対してワンタイムパスワード導出ルール102bを適用することによって、マトリクス上の所定の位置に表示された数字を順番に抽出してワンタイムパスワード192を生成し、それを認証要求クライアント151に入力する。また、提示パターン191に基づかない固定の数字を含めて入力することも可能である。すなわち、固定パスワードをワンタイムパスワードに含めることもできる。図7において破線で示した矢印と丸は、提示パターン191に基づくワンタイムパスワードをキーボード196から入力することを表わしている。図7の例では、提示パターン191に基づいて「2504」を入力し、次に提示パターン191に基づかない固定の数字として「29」を入力し、次に提示パターン191に基づいて「0」を入力することによって、ワンタイムパスワード192として「2504290」が入力されている。
[本発明に係るユーザ認証方法]
これから図面を参照して本発明の実施形態に係るユーザ認証システム100の説明を行う図1はハードウェア構成図、図2はブロック図、図3および4は動作フロー図である。まず、本発明に係るユーザ認証方法の概要について説明する。本発明に係るユーザ認証方法は、上述したような、チャレンジ・レスポンス方式の認証方法の一種であるマトリクス認証である。本発明に係るユーザ認証方法では、所定パターンに配列した複数のパターン要素(チャレンジコードに相当)を認証要求クライアント151において認証を受けるユーザに提示パターン191として提示し、当該提示パターン191に含まれる特定の位置のパターン要素に対してユーザが適用することによりワンタイムパスワード192(レスポンスに相当)を生成するためのワンタイムパスワード導出ルール102bを当該ユーザのパスワードとするものである。認証要求クライアント151においてユーザに提示される提示パターン191を生成する際に使用される情報であるパターンシード値183は、認証サーバ101において生成され、認証要求クライアント151に送信される。提示パターン191は、パターンシード値183とクライアント識別情報102cとに基づいて生成される。認証要求クライアント151において、ユーザが提示パターン191に基づいて入力したワンタイムパスワード192は、認証要求クライアント151から認証サーバ101に送信される。認証サーバ101は、当該ユーザのユーザIDに関連付けられたクライアント識別情報102cと受信したパターンシード値183とに基づいて提示パターンを再現し、それに当該ユーザのパスワードであるワンタイムパスワード導出ルール102bを適用することによって検証コード193を生成する。そして認証サーバ101は、認証要求クライアント151から送信されたワンタイムパスワード192と検証コード193とを比較し、それらが等しければ当該ユーザに対する認証が成功したものと判定し、認証成功時の所定の動作を開始させる。
[二要素ユーザ認証システム100のハードウェア構成]
次に、二要素ユーザ認証システム100の構成の説明をする。図1は、本発明の一実施形態に係る二要素ユーザ認証システム100のハードウェア構成図である。図1を参照すると、ユーザ認証システム100は、大きく、認証サーバ101と認証要求クライアント151とから構成される。認証サーバ101は、CPU101a、RAM101b、記憶装置101c、ユーザインターフェース(I/F)101d、ネットワークインターフェース(I/F)101eから構成され、それらがバスを通じて接続されている。記憶装置101cは、その記憶領域にOS101c1、ユーザ認証アプリケーション101c2を記憶し、またその記憶領域にパスワード記憶部102を含む。パスワード記憶部102は、ユーザID102a、ワンタイムパスワード導出ルール102b、クライアント識別情報102cをお互いに関連付けて記憶する。認証要求クライアント151は、CPU151a、RAM151b、記憶装置151c、ユーザインターフェース(I/F)151d、ネットワークインターフェース(I/F)151eから構成され、それらがバスを通じて接続されている。記憶装置151cは、その記憶領域にOS151c1、ブラウザアプリケーション151c2、提示パターン生成モジュール151c3、クライアント識別情報取得モジュール151c4を記憶する。
認証サーバ101は、二要素ユーザ認証システム100において、認証要求クライアント151からのユーザ認証要求に応答して、ユーザの認証を行う構成要素である。認証サーバ101は、OS101c1、ユーザ認証アプリケーション101c2などがインストールされた、サーバとしてのコンピュータなどの形態である。また、認証サーバ101は、SSL−VPNゲートウェイのようなインターネット上に仮想専用線ネットワークを提供するためのゲートウェイ装置などにおけるユーザ認証を提供するハードウェアの形態とすることもできる。CPU101aは、ユーザ認証アプリケーション101c2などをOS101c1上で実行してユーザ認証に関する情報処理を行うプロセッサである。RAM101bは、記憶装置101cに記憶されたソフトウェアがその上に読み込まれるメモリ空間と、読み込まれたソフトウェアがCPU101aによって実行される際に必要となるワークエリア等を提供するメモリである。記憶装置101cは、ソフトウェアやデータなどの情報を記憶・管理する構成要素であり、典型的にはハードディスクドライブなどの形態である。記憶装置101cは、好適には、OS101c1、ユーザ認証アプリケーション101c2のプログラムのファイルを記憶しており、それらのプログラムはRAM101b上に読み出されて実行される。記憶装置101cは、OS101c1、ユーザ認証アプリケーション101c2のプログラムに関しては、それをROMに記憶した形態であってもよい。この場合、そのようなROMはCPU101aなどのプログラム実行要素とともにファームウェアを構成することになる。ユーザI/F101dは、ユーザとの間でデータの入出力を行うための構成要素であり、典型的にはキーボード196、ソフトウェアキーボードなどのキー入力手段と、画面に情報を表示するディスプレイなどの出力手段と、それらとの間のハードウェアI/Fとから構成される。キーボード196は、テンキー、標準のフルキーボードなど、ワンタイムパスワードを構成するパターン要素の入力ができる限り、任意の形態のものを使用できる。ソフトウェアキーボードは、ディスプレイの画面上にキーボードのシンボルを表示させ、タッチパネル、マウス、トラックボールなどのポインティングデバイスを使用してキーのシンボルを選択させることによりキー入力を受け付ける。ネットワークI/F101eは、ネットワークに接続して情報の入出力を行うためのI/Fである。
OS101c1、ユーザ認証アプリケーション101c2は、それらが組み合わされて形式的には一体のプログラムの形態となっていてもよい。例えば、OS101c1がユーザ認証アプリケーション101c2の機能を包含していてもよい。また、ユーザ認証アプリケーション101c2が、他のアプリケーションに組み込まれていてもよい。また、それらがそれぞれ複数のプログラムに分割されていてもよい。
認証サーバ101と認証要求クライアント151とはネットワークで接続される。ネットワークは、好適には、TCP/IPベースのプロトコルで動作するインターネットあるいはイントラネットである。イントラネットにおいて、認証要求クライアント151がクライアント用Windows(登録商標。以下、同じ) OSで動作している場合には、ネットワークはTCP/IPベースのプロトコルで動作するWindowsのドメインネットワークとすることができる。なお、本明細書ではOSとしてWindowsを例示して説明しているが、他のOS、例えば、Mac OS(登録商標)、Linux(登録商標)、Unix(登録商標)などを使用することも可能である。
本発明に係る認証方法は、少なくとも以下の2つの利用形態で実施することが可能である。1つの利用形態は、Webサービスの提供を受ける際の認証を行うものである。例えば、認証要求クライアント151をネットワーク上のWebサービスに接続した状態で、WebブラウザなどによってWeb上のコンテンツ、SSL−VPNサービス、アプリケーションを使用する際の、当該ユーザに対する使用許可のための認証の形態である。この場合、認証サーバ101は、典型的には、インターネットまたはイントラネットなどのネットワーク上に配置され、当該ネットワークを通じてアクセスしてきた認証要求クライアント151に対してユーザ認証のためのWebページを提供し、それを通じてユーザ認証のためのデータの送受信を行うようなWebサーバの形態や、RADIUSサーバと連携して認証・アカウンティング管理を実施する、SSL−VPNゲートウェイのようなインターネット上に仮想専用線ネットワークを提供する装置の形態である。
もう1つの利用形態は、OSに管理されたネットワーク環境に接続する際の認証を行うものである。例えば、ユーザが認証要求クライアント151を使用して、認証サーバ101と同じWindowsのドメインネットワークに適正なネットワークユーザとして接続する際の、当該ユーザのそのネットワークへのログオン認証の形態である。この場合、認証サーバ101は、典型的には、認証のためのリソースをネットワーク上に提供しており、それによって、ユーザからの認証要求クライアント151を使用したWindowsのドメインネットワークへのログオン認証要求に応答してユーザ認証を実行し、その認証結果を当該Windowsのドメインネットワークのネットワークユーザの権限を管理するドメインコントローラに伝達する。
OS101c1は、認証サーバ101のハードウェアに密接な基本的な情報処理を行うオペレーティングシステムである。ユーザ認証アプリケーション101c2は、OS101c1上で動作するユーザ認証のためのアプリケーションソフトウェアである。認証サーバ101がWebサーバの形態である場合、ユーザ認証アプリケーション101c2は、典型的には、CGIで呼び出される形態かサーブレットの形態の認証プログラムを備えた、認証のためのWebページまたはリソースをインターネットまたはイントラネットのWeb上に提供するWebサーバプログラムである。パスワード記憶部102は、典型的にはハードディスクドライブなどの一領域であり、好適にはデータは暗号化ファイルとしてパスワード記憶部102に記憶される。ユーザID102aは、ユーザをユニークに識別するためのデータである。ユーザID102aは、任意の文字列を使用することができる。ワンタイムパスワード導出ルール102bは、上述したように、提示パターンに含まれる特定の位置のパターン要素に対して適用することによりワンタイムパスワードを生成するためのルールであり、ユーザのパスワードとして機能するデータである。クライアント識別情報102cは、認証を受けようとするユーザが使用している認証要求クライアント151を識別するためのデータであり、提示パターンを生成する際に、パターンシード値に組み合わされて使用されるデータである。
認証要求クライアント151は、二要素ユーザ認証システム100において、ユーザが認証サーバ101に対して認証を要求する構成要素であり、OS151c1、ブラウザアプリケーション151c2、提示パターン生成モジュール151c3、クライアント識別情報取得モジュール151c4などがインストールされた端末であり、具体的には、PC、携帯電話機、PDAなどの形態である。CPU151aは、ブラウザアプリケーション151c2、提示パターン生成モジュール151c3、クライアント識別情報取得モジュール151c4などをOS151c1上で実行して、ユーザ認証要求に関する情報処理を行うプロセッサである。RAM151bは、記憶装置151cに記憶されたソフトウェアがその上に読み込まれるメモリ空間と、読み込まれたソフトウェアがCPU151aによって実行される際に必要となるワークエリア等を提供するメモリである。記憶装置151cは、ソフトウェアやデータなどの情報を記憶・管理する構成要素であり、典型的にはハードディスクドライブなどの形態である。記憶装置151cは、好適には、OS151c1、ブラウザアプリケーション151c2、提示パターン生成モジュール151c3、クライアント識別情報取得モジュール151c4のプログラムのファイルを記憶しており、それらのプログラムはRAM151b上に読み出されて実行される。なお、記憶装置151cは、OS151c1、ブラウザアプリケーション151c2、提示パターン生成モジュール151c3、クライアント識別情報取得モジュール151c4に関しては、そのプログラムをROMに記憶した形態であってもよい。この場合、そのようなROMはCPU151aなどのプログラム実行要素とともにファームウェアを構成することになる。ユーザI/F151dは、ユーザとの間でデータの入出力を行うための構成要素であり、典型的には、図示していないが、キーボード196やソフトウェアキーボードなどのキー入力手段と、画面に情報を表示するディスプレイなどの出力手段と、それらとの間のハードウェアI/Fとから構成される。外部/ネットワークI/F151eは、外部通信インターフェースを搭載した外部機器や、ネットワークに接続して情報の入出力を行うためのI/Fである。外部/ネットワークI/F151eを通じて、外部通信インターフェースを搭載した外部機器からはクライアント識別情報を取得することができる。また、外部/ネットワークI/F151eを通じて、ネットワークを経由して認証サーバ101と接続することができる。外部通信インターフェースとしては、USB、BlueTooth(登録商標)、無線LAN、赤外線通信、Felica(登録商標)やRFIDの非接触通信、などの各種の通信インターフェースを使用することができ、接続される外部機器としては、USBメモリ、無線通信用データカード(USB接続、PCカード接続、Express Card接続、など)、FelicaやRFIDなどのICカード、携帯電話機、生体認証情報(指紋、虹彩、静脈など)読み取り機などを使用することができる。
なお、認証要求クライアント151は、ユーザが使用する認証要求クライアント151に関連付けられたクライアント識別情報102cを記憶したクライアント識別情報記憶部172と接続されている。なお、本発明の認証要求クライアント151は、クライアント識別情報102cを取得することができればよく、クライアント識別情報記憶部172を備えている必要はない。クライアント識別情報記憶部172が認証要求クライアント151と同じ筐体内に存在することもあり得るが、本発明の認証要求クライアント151は、何らかの手段によりクライアント識別情報102cを取得できれば十分であり、そのようなクライアント識別情報記憶部172を必須の構成としては含まない概念である。
クライアント識別情報102cとしては、ユーザが使用する認証要求クライアント151のハードウェアに内蔵された情報(ハードウェア関連情報)、ユーザが使用する認証要求クライアント151のソフトウェアに付随する情報(ソフトウェア関連情報)、ユーザが使用する認証要求クライアント151に接続された外部機器から取得される情報(外部機器関連情報)、ユーザが使用する認証要求クライアント151に内蔵または接続された生体認証情報読み取り器から取得されるユーザの生体情報(生体認証情報)などを使用することができる。
ハードウェア関連情報については、CPU等のハードウェア構成要素シリアル番号、ネットワークインターフェースカードのMACアドレス、ハードディスクのシリアル番号、などをクライアント識別情報102cとして使用することができる。この場合、クライアント識別情報記憶部172は、CPU等のハードウェア構成要素内のシリアル番号IDの記録領域、ネットワークインターフェースカードのMACアドレスの記憶領域、ハードディスクのシリアル番号の記憶領域、などとなる。ハードウェア関連情報は、そのハードウェアに対して適切な読み出し操作を行うことにより、それを記憶したハードウェアからバスを通じて取得される。
ソフトウェア関連情報については、Windows(登録商標) OSのGUID(Globally Unique IDentifier)やプロダクトIDやプロダクトキー、TCP/IPネットワークのIPアドレス、などをクライアント識別情報102cとして使用することができる。この場合、クライアント識別情報記憶部172は、Windows(登録商標) OSのGUIDの情報を記憶したハードディスク上のファイルやメモリ上の領域、Windows OSのプロダクトIDとプロダクトキーの情報を記憶したハードディスク上のファイルやメモリ上の領域、TCP/IPネットワークのIPアドレスの設定情報を記憶したハードディスク上のファイルやメモリ上の領域、などとなる。ソフトウェア関連情報は、OSのコマンドを使用することにより、それを記憶したハードディスク上のファイルやメモリ上の領域から取得される。
外部機器関連情報については、USBメモリのシリアル番号、無線通信用データカードや携帯電話機のシリアル番号や契約者IDや電話番号、Bluetoothや無線LAN搭載各種機器のシリアル番号、FelicaやRFIDなどのICカードのID番号(シリアル番号)、などをクライアント識別情報102cとして使用することができる。この場合、クライアント識別情報記憶部172は、USBメモリのシリアル番号の記憶領域、無線通信用データカードや携帯電話機のシリアル番号や契約者番号や電話番号の記憶領域、Bluetoothや無線LAN搭載各種機器のシリアル番号の記憶領域、FelicaやRFIDなどのICカードのID番号(シリアル番号)の記憶領域、などとなる。外部機器関連情報は、その外部機器に対して適切な読み出しコマンドを送信することにより、それを記憶した外部機器から外部/ネットワークI/F 151eを通じて取得される。
生体認証情報については、指紋、虹彩、静脈などの本人確認に適した所定の生体のパターンを生体認証情報読み取り機によって読み取ることによって出力される生体認証情報をクライアント識別情報102cとして使用することができる。この場合、クライアント識別情報記憶部172は、ユーザの所定の生体のパターンを読み取って生体認証情報を出力している際の、生体認証情報読み取り機における情報処理手段となる。すなわち、固定的なユーザの所定の生体のパターンを生体認証情報に変換することが、クライアント識別情報102cをクライアント識別情報記憶部172から読み出すことに相当する。生体認証情報は、生体認証情報読み取り機に対して適切な読み取りコマンドを送信することにより、ユーザの所定の生体のパターンを読み取っている生体認証情報読み取り機から、バス(生体認証情報読み取り機が内蔵の場合)または外部/ネットワークI/F 151e(生体認証情報読み取り機が外部に接続されている場合)を通じて取得される。
OS151c1、ブラウザアプリケーション151c2、提示パターン生成モジュール151c3、クライアント識別情報取得モジュール151c4は、それらの一部または全部が組み合わされて形式的には一体のプログラムの形態となっていてもよい。例えば、ブラウザアプリケーション151c2が提示パターン生成モジュール151c3やクライアント識別情報取得モジュール151c4の機能を包含していてもよく、OS151c1がブラウザアプリケーション151c2、提示パターン生成モジュール151c3及びクライアント識別情報取得モジュール151c4の機能を包含していてもよい。また、それらが他のアプリケーションに組み込まれていてもよい。また、それらがそれぞれ複数のプログラムに分割されていてもよい。
OS151c1は、認証要求クライアント151のハードウェアに密接な基本的な情報処理を行うオペレーティングシステムであり、認証要求クライアント151のハードウェアに応じた基本プログラムである。OS151c1は、プラットフォームに準じたアーキテクチャのファームウェアの形態であってもよい。ブラウザアプリケーション151c2は、OS151c1上で動作する、ネットワーク上に提供されている情報にアクセスして表示させ、さらにユーザからのデータの入力を受け付けるためのブラウザの機能を実現させるソフトウェアであり、典型的には、インターネットまたはイントラネット上のWebページにアクセスするためのWebブラウザアプリケーションの形態である。なお、ブラウザアプリケーション151c2は、Webブラウザアプリケーションに限られることはなく、サーバがネットワーク上に提供するユーザ認証用の画面にアクセスすることができるアプリケーションであれば、どのようなアプリケーションであってもよい。ブラウザアプリケーション151c2は、他のアプリケーションが認証を実施する際の画面表示のためのAPIを提供するプラットフォームに準じたアーキテクチャのファームウェアの形態であってもよい。提示パターン生成モジュール151c3は、ブラウザアプリケーション151c2に組み込まれて実行される、提示パターンを生成してブラウザに表示させるためのプログラムであり、認証要求クライアント151がPCの場合、典型的には、Java(登録商標)アプレット、ActiveX(登録商標)、Flash(登録商標)などの形態である。認証要求クライアント151が、携帯電話機、PDAなどの場合であっても、近い将来にはブラウザアプリケーション151c2にモジュールを組み込むことが可能になると見込まれており、提示パターン生成モジュール151c3は、そのようなモジュールの形態として機能することになる。提示パターン生成モジュール151c3は、他のアプリケーションが認証を実施するためのAPIを提供するプラットフォームに準じたアーキテクチャのファームウェアの形態であってもよい。クライアント識別情報取得モジュール151c4は、ブラウザアプリケーション151c2に組み込まれて実行される、ユーザが使用している認証要求クライアント151からクライアント識別情報102cを取得するためのプログラムであり、提示パターン生成モジュール151c3と同様の形態のモジュールである。
認証サーバ101がWindowsのドメインネットワークへのログオン認証を実施する場合には、認証のためのブラウザアプリケーション151c2および提示パターン生成モジュール151c3は、クライアント用Windows OSとしてのOS151c1に組み込まれており、認証要求クライアント151のWindowsのドメインネットワークへのログオン認証画面に提示パターン191を表示させ、本願発明に係る認証方法に基づいた認証手続をユーザに要求する。
標準のWindowsのログオン認証画面の変更は、具体的には以下のようにして実施する。ここでは、Windows XPを例にして説明する。まず、ブラウザアプリケーション151c2、提示パターン生成モジュール151c3、及びクライアント識別情報取得モジュール151c4の機能を実施するプログラムであるログオン認証モジュールをWindows用のDLLファイルとして作成する。ここでは、「SmxGina.dll」という名前のDLLファイルを作成する。ここで、Windowsのログオン認証画面のプログラムは、以下に示すレジストリのロケーションにおいて「GinaDLL」という名前のキーのデータとして指定されている。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
標準のログオン認証のモジュールは「msgina.dll」というDLLファイルであり、それが前述した「GinaDLL」という名前のキーのデータに設定されている。当該キーのデータを「SmxGina.dll」に書き換えると、本願発明に係る認証方法を実施するログオン認証モジュールがログオンなどの認証時に呼び出されることになる。
図8は、二要素ユーザ認証システム100におけるログオン認証画面197Aおよび197Bのイメージ図である。Windowsのログオン時にログオン認証モジュール「SmxGinaDLL」が起動させられることによって、まず、ログオン認証画面197Aが表示させられる。ログオン認証画面197Aには、ユーザ名入力フィールド、ログオン先入力フィールドが表示される。ログオン先にネットワーク名を入力することによってオンラインで使用するためにWindowsのドメインネットワークへのログオン認証を行わせることができる。ユーザがログオン認証画面197Aのユーザ名入力フィールドに自己のユーザIDを入力ユーザID181として入力すると、当該認証モジュールは認証サーバ101に入力ユーザID181を伝達してそれに基づいて提示パターン191を生成させる。そして、提示パターン191を含むログオン認証画面197Bが表示される。ログオン認証画面197Bにはパスワード入力フィールドがあり、キーボード196などによってワンタイムパスワードとして数字などのキャラクターが入力されると、それに応答して「*」が1つずつ表示される。ワンタイムパスワード192の入力が完了すると、当該認証モジュールは、認証サーバ101にワンタイムパスワード192を伝達してユーザ認証を実行させ、その認証結果をドメインコントローラに伝達する。
[二要素ユーザ認証システム100の機能ブロック構成]
図2は、本発明の一実施形態に係る二要素ユーザ認証システム100のブロック図である。図2は、図1に示したハードウェア構成の二要素ユーザ認証システム100を、ソフトウェアとハードウェア資源とが協働して実施される情報処理の観点から表現した図であり、当該情報処理を機能ブロックの単位で表わした図である。図2において、認証サーバ101は、パスワード記憶部102、認証要求受信手段103、検証コード生成手段106、ワンタイムパスワード受信手段121、ユーザ認証手段122、パターンシード値発生手段104、パターンシード値送信手段105から構成される。これらの機能ブロックは、ユーザ認証アプリケーション101c2の必要部分がOS101c1の必要部分とともに記憶装置101cからRAM101b上に読み込まれ、それらのソフトウェアがCPU101aによって実行されることによって、RAM101b、記憶装置101c、ユーザI/F101d、ネットワークI/F101eなどのハードウェア要素とも適宜協働して実現されるものである。
パスワード記憶部102は、それぞれのユーザに関して、ユーザID102aと、当該ユーザのパスワードであるワンタイムパスワード導出ルール102bと、クライアント識別情報102cとをお互いに関連付けてあらかじめ記憶する構成要素であり、CPU101a、RAM101b、記憶装置101cなどがソフトウェアと協働することによって実現される機能ブロックである。認証要求受信手段103は、認証要求クライアント151から、そこで入力された入力ユーザID181を含んだ認証要求を受信する構成要素であり、CPU101a、RAM101b、ネットワークI/F101eなどがソフトウェアと協働することによって実現される機能ブロックである。パターンシード値発生手段104は、クライアント識別情報102cとともに提示パターンを規定する値であるパターンシード値183を所定の発生規則により発生する構成要素であり、CPU101a、RAM101bなどがソフトウェアと協働することによって実現される機能ブロックである。パターンシード値送信手段105は、発生させられたパターンシード値183を認証要求クライアント151に送信する構成要素であり、CPU101a、RAM101b、ネットワークI/F101eなどがソフトウェアと協働することによって実現される機能ブロックである。検証コード生成手段106は、認証を受けようとしているユーザのパスワードであるワンタイムパスワード導出ルール102bを、認証要求クライアント151に表示されている提示パターン191に適用した結果である検証コード193を生成する構成要素であり、CPU101a、RAM101bなどがソフトウェアと協働することによって実現される機能ブロックである。検証コード193は、正しいワンタイムパスワード導出ルール102bが正しい提示パターンに適用された結果である正しいワンタイムパスワード192と同じ値である。ワンタイムパスワード受信手段121は、認証要求クライアント151から、そこで入力されたワンタイムパスワード192を受信する構成要素であり、CPU101a、RAM101b、ネットワークI/F101eなどがソフトウェアと協働することによって実現される機能ブロックである。ユーザ認証手段122は、ワンタイムパスワード192と検証コード193とを比較して、それらが等しいときにユーザ認証を成功させる構成要素であり、CPU101a、RAM101bなどがソフトウェアと協働することによって実現される機能ブロックである。
認証要求クライアント151は、ユーザID入力手段152、認証要求送信手段153、パターンシード値受信手段154、パターン要素列生成手段155、パターン表示手段156、ワンタイムパスワード入力手段157、ワンタイムパスワード送信手段158から構成される。これらの機能ブロックは、ブラウザアプリケーション101c2の必要部分、提示パターン生成モジュール151c3、クライアント識別情報取得モジュール151c4などがOS151c1の必要部分とともに記憶装置151cからRAM151b上に読み込まれ、それらのソフトウェアがCPU151aによって実行されることによって、RAM151b、記憶装置151c、ユーザI/F151d、外部/ネットワークI/F151eなどのハードウェア要素とも適宜協働して実現されるものである。
ユーザID入力手段152は、認証を受けようとするユーザのユーザIDを入力ユーザID181として入力を受け付ける構成要素であり、CPU151a、RAM151b、ユーザI/F151dなどがソフトウェアと協働することによって実現される機能ブロックである。認証要求送信手段153は、入力された入力ユーザID181を認証サーバ101に送信する構成要素であり、CPU151a、RAM151b、外部/ネットワークI/F151eなどがソフトウェアと協働することによって実現される機能ブロックである。パターンシード値受信手段154は、認証サーバ101から、パターンシード値183を受信する構成要素であり、CPU151a、RAM151b、外部/ネットワークI/F151eなどがソフトウェアと協働することによって実現される機能ブロックである。パターン要素列生成手段155は、認証要求クライアント151で取得したクライアント識別情報102cおよび認証サーバ101から受信したパターンシード値183に基づいて、所定のパターン要素列生成規則により提示パターンに含まれるパターン要素を生成する構成要素であり、CPU151a、RAM151bなどがソフトウェアと協働することによって実現される機能ブロックである。パターン表示手段156は、パターン要素列生成手段155によって生成されたパターン要素列190のパターン要素を所定パターン191pに配列して提示パターンを生成し、それを画面に表示させる構成要素であり、CPU151a、RAM151b、ユーザI/F151dなどがソフトウェアと協働することによって実現される機能ブロックである。ワンタイムパスワード入力手段157は、画面に表示させた提示パターンなどを通じてワンタイムパスワード192のユーザからの入力を受け付ける構成要素であり、CPU151a、RAM151b、ユーザI/F151dなどがソフトウェアと協働することによって実現される機能ブロックである。ワンタイムパスワード送信手段158は、入力されたワンタイムパスワード192を認証サーバ101に送信する構成要素であり、CPU151a、RAM151b、外部/ネットワークI/F151eなどがソフトウェアと協働することによって実現される機能ブロックである。クライアント識別情報取得手段171は、認証を受けようとするユーザが使用する認証要求クライアント151を識別するクライアント識別情報102cを取得する構成要素であり、クライアント識別情報102cがハードウェア関連情報またはソフトウェア関連情報の場合は、CPU151a、RAM151bなどがソフトウェアと協働することによって実現される機能ブロックであり、クライアント識別情報102cが外部機器関連情報の場合は、CPU151a、RAM151b、外部/ネットワークI/F151eなどがソフトウェアと協働することによって実現される機能ブロックである。
[二要素ユーザ認証システム100の動作]
これから、二要素ユーザ認証システム100の動作について説明する。図3および4は、二要素ユーザ認証システム100の動作フロー図である。まず、二要素ユーザ認証システム100で認証を受けることになるユーザは、そのユーザID102aと、パスワードであるワンタイムパスワード導出ルール102bと、そのユーザが認証を受ける際に使用する認証要求クライアント151を識別するクライアント識別情報102cをあらかじめ認証サーバ101に入力して登録する。パスワード記憶部102は、そのユーザのユーザID102aとワンタイムパスワード導出ルール102bとクライアント識別情報102cとをお互いに関連付けてユーザの認証に先立ってあらかじめ記憶する(ステップS101)。認証サーバ101は、好適にはインターネットまたはイントラネットのWeb上にユーザIDとパスワードとクライアント識別情報102cの登録のための初期登録Webページなどを提供しており、ユーザは、認証要求クライアント151などの端末からその初期登録Webページを通じて認証サーバ101にアクセスする。それによって、認証要求クライアント151には、ユーザID入力のための入力フィールドと、0から9までの数字を乱数的にパターン要素として配置した提示パターン191が表示される(図示せず)。ユーザは入力フィールドに自分が登録したいユーザID102aを入力する。ユーザは次に、自分が登録しようとするワンタイムパスワード導出ルール102bに従って、提示パターン191に含まれるパターン要素の位置の選択または当該提示パターン191に基づかない固定の数字などのキャラクターの入力を行う。認証サーバ101は、入力されたユーザID102aをそのユーザのユーザIDとしてパスワード記憶部102に記憶させる。一方、選択または入力された数字の列は、それだけではワンタイムパスワード導出ルール102bを特定することができない。従って、認証サーバ101は、異なる提示パターン191を表示してパスワード導出ルール102bに従った2回目の数字の選択または入力を行わせ、選択または入力された数字の列を1回目のものと比較して、ワンタイムパスワード導出ルール102bを特定する。2回目の提示パターン191を、1回目の提示パターン191と大きく異なるように工夫して発生させると、通常、2回の提示パターン191の提示によってワンタイムパスワード導出ルール102bを特定することが可能である。2回の提示パターン191の提示でワンタイムパスワード導出ルール102bの特定ができなかった場合は、それが特定できるまで、提示パターン191の内容を変えてそれの提示を繰り返す。これによって、提示パターン191に含まれるパターン要素の内で選択されたもののそれぞれの位置および当該提示パターン191に基づかない固定のキャラクターのそれぞれと、当該それぞれのパターン要素の位置および当該それぞれの固定のキャラクターが選択あるいは入力される順番との組み合わせであるワンタイムパスワード導出ルール102bが特定される。特定されたワンタイムパスワード導出ルール102bは、当該ユーザのユーザID102aと関連付けられてパスワード記憶部102に記憶される。なお、初期登録Webページから、提示パターン生成モジュール151c3やクライアント識別情報取得モジュール151c4などの、認証要求クライアント151に必要なソフトウェアをダウンロードすることができるように構成すると好適である。これによって、その初期登録Webページにアクセスしてきた任意のPCの中にパターン要素列生成手段155やクライアント識別情報取得手段171を形成させ、それを認証要求クライアント151として動作できるようにすることができる。
認証要求クライアント151が、ユーザID102aとワンタイムパスワード導出ルール102bの登録のために認証サーバ101にアクセスしたときに、クライアント識別情報取得手段171が動作することにより認証要求クライアント151が取得可能なクライアント識別情報102cを取得して、認証サーバ101に送信する。これは、ユーザID102aとワンタイムパスワード導出ルール102bの登録の前でも後でもよい。このとき、初期登録Webページが、各種のクライアント識別情報102cの取得先(CPU、MACアドレス、ハードディスク、Windows OSのGUIDやプロダクトIDやプロダクトキー、IPアドレス、USBメモリ、無線通信用データカード、携帯電話機、Bluetoothや無線LAN搭載各種機器、Felica、RFID、生体認証情報読み取り機、などのクライアント識別情報記憶部172を有するもの)を選択のために表示する。ここで、クライアント識別情報取得手段171が取得可能なクライアント識別情報102cをバスや外部/ネットワークI/Fを通じて走査して確認し、クライアント識別情報102cを取得可能な取得先だけを表示させるようにすると好適である。なお、二要素ユーザ認証システム100の管理者が、1つあるいは複数のクライアント識別情報102cの取得先をあらかじめ設定しておき、ユーザが取得先を選択しないようにも構成できる。ユーザが、表示された取得先のいずれかを選択すると、選択された取得先からクライアント識別情報102cがクライアント識別情報取得手段171によって読み出される。なお、ユーザは複数の取得先を選択することも可能である。この場合、それらの複数のクライアント識別情報102cを同時にパターンシード値183と組み合わせて提示パターン191を生成するようにすることもでき、認証のための要素の数を実質的に三要素以上の多要素に拡張することもできる。読み出されたクライアント識別情報102cは、認証サーバ101に送信され、認証サーバ101は、受信したクライアント識別情報102cを、ユーザID102a及びワンタイムパスワード導出ルール102bと関連付けてパスワード記憶部102に記憶することによって登録する。これらの登録の操作が完了すると、そのユーザは、二要素ユーザ認証システム100による認証を受けることができるようになる。なお、クライアント識別情報102cを登録する際に、その取得先の情報をいずれかの場所に記憶させておくと好適である。そのようにすると、ユーザが認証を受ける際に、記憶された取得先の情報を使用して、クライアント識別情報102cの取得先を自動的に設定することが可能となるからである。取得先の情報は、認証要求クライアント151の記憶装置151c内に所定の記憶領域を設けて、そこにユーザID102aと関連付けて記憶させることができる。また、取得先の情報をクライアント識別情報102cとともに認証サーバ101に記憶させ、ユーザの認証の際に取得先の情報を認証サーバ101から認証要求クライアント151に送信するように構成することもできる。
次に、認証を受けようとするユーザは、認証要求クライアント151において、ユーザID入力手段152により自分のユーザIDを入力ユーザID181として入力する(ステップS103)。典型的には、ユーザは認証要求クライアント151上で動作しているブラウザアプリケーション151c2を使用して、認証サーバ101が提供するユーザ認証Webページにアクセスし、そこに表示されるユーザID入力のための入力フィールドに自己のユーザIDを入力する。Windowsのドメインネットワークへのログイン認証の場合は、図8に示されたログオン認証画面197Aにおいて、ユーザー名フィールドに自己のユーザIDを入力し、ログオン先にログオンしようとするネットワーク名を入力する。次に、認証要求クライアント151は、認証要求送信手段153により、入力された入力ユーザID181を含む認証要求を認証サーバ101に送信する(ステップS105)。典型的には、認証要求クライアント151上で動作しているブラウザアプリケーション151c2が、入力フィールドに入力された入力ユーザID181をインターネットまたはイントラネットを通じて認証サーバ101に送信する。Windowsのドメインネットワークへのログイン認証の場合は、ログオン認証モジュール「SmxGinaDLL」が入力ユーザID181を含む認証要求を認証サーバ101に送信する。次に、認証サーバ101は、認証要求受信手段103により、認証要求クライアント151から送信された入力ユーザID181を含む認証要求を受信する(ステップS107)。典型的には、認証サーバ101は、ユーザ認証アプリケーション101c2を動作させ、それによって入力ユーザID181を含む認証要求を受信する。次に、認証サーバ101は、パターンシード値発生手段104により、パターンシード値183を所定の発生規則によって発生させる(ステップS109)。所定の発生規則は、典型的には、所定の範囲内の乱数を発生させることである。図5には、パターンシード値183として、16進数で表わした「284E17・・・39D0」が例示されている。パターンシード値183は、例えば、16バイトのような所定のビット長の数字列で表わすことができ、この場合、当該所定の範囲とは、16進数で「0000000000000000」から「FFFFFFFFFFFFFFFF」の範囲となる。従って、当該所定の範囲の任意の数字列をパターンシード値183とすることができるため、最大で当該所定の範囲の数だけ異なる提示パターン191を生成することが可能となる。
次に、認証サーバ101は、パターンシード値送信手段105により、発生したパターンシード値183を認証要求クライアント151に送信する(ステップS111)。典型的には、認証サーバ101は、ユーザ認証アプリケーション101c2を動作させ、それによってパターンシード値183を認証要求クライアント151に送信する。次に、認証要求クライアント151は、パターンシード値受信手段154により、認証サーバ101から送信されたパターンシード値183を受信する(ステップS113)。典型的には、認証要求クライアント151上で動作しているブラウザアプリケーション151c2またはログオン認証モジュール「SmxGinaDLL」が、パターンシード値183を受信する。次に、認証要求クライアント151は、ユーザにクライアント識別情報102cの取得先を選択させ、選択された取得先からクライアント識別情報取得手段171によりクライアント識別情報102cを取得する(ステップS115)。なお、クライアント識別情報102cの登録時における取得先が記憶装置151c内の所定領域に記憶されている場合には、その取得先の情報を使用することによって、認証要求クライアント151においてクライアント識別情報102cの取得先は自動的に設定されることになる。また、クライアント識別情報102cの登録時における取得先が認証サーバ101に記憶されている場合には、その取得先の情報が認証サーバ101から認証要求クライアント151に送信され、その取得先の情報を使用することによって、認証要求クライアント151においてクライアント識別情報102cの取得先は自動的に設定されることになる。これらの場合、ユーザによるクライアント識別情報102cの取得先の選択は不要である。次に、認証要求クライアント151は、パターン要素列生成手段155により、ステップS115で取得したクライアント識別情報102cと、ステップS113で受信したパターンシード値183とに基づいて所定のパターン要素列生成規則により提示パターン191を構成するパターン要素列190を生成する(ステップS117)。所定のパターン要素列生成規則とは、クライアント識別情報102cとパターンシード値183との組み合わせに対してユニークに決定されるパターン要素列であって、そのパターン要素列だけからは元のクライアント識別情報102cとパターンシード値183とを推定することが極めて困難なものを発生させる規則であって、典型的には、以下に述べるような、クライアント識別情報102cとパターンシード値183との組み合わせを一種の初期値とした暗号化演算によるものである。図5は、提示パターン191の生成方法の概念図である。ここでは、「C8E30B178422」というクライアント識別情報102cと「284E17・・・39D0」というパターンシード値183とに基づいてパターン要素列190が生成される。そのために、まず、クライアント識別情報102cとパターンシード値183の組み合わせから、所定の数字列を一意的に生成する。図5の第1段及び第2段に示した例では、それぞれ16進数で表わしたクライアント識別情報102cとパターンシード値183とを結合して所定の数字列を生成している。クライアント識別情報102cとパターンシード値183との組み合わせ方としては、他には、加算、減算、排他的論理和、などのあらゆる演算を使用して組み合わせることができる。次に、その所定の数字列に対して暗号化演算を実施して、所定のビット長のビット列184を生成する。ここでは、所定のビット長は、64の数字からなる提示パターン191を生成するために十分な情報量である256ビットである。暗号化演算としては、演算結果から元の数字列を求めることが事実上不可能なものであればよく、ハッシュ関数演算、共通鍵暗号化演算、などを使用することができる。例えば、ハッシュ関数としてSHA256を使用して、その所定の数字列を暗号化すると、256ビットのビット列184を生成することができる。また、共通鍵暗号化演算としてAESを使用して、その所定の数字列から鍵を生成し、その鍵によってあらかじめ適当に設定した256ビットの数字列を暗号化すると、256ビットのビット列184を生成することができる。また、それらのハッシュ関数演算と共通鍵暗号化演算とを組み合わせることもできる。なお、図5に示したビット列184「0111001011001101・・・11010」の値は説明のための例示であり、正確なSHA256演算の結果を示したものではない。次に、256ビットのビット列184を77桁の十進数に変換し、そこから64桁の数字を抽出してパターン要素列190とする。なお、図5に示したパターン要素列190「38064655・・・1017」の値は説明のための例示であり、正確な変換・抽出の結果を示したものではない。64桁の数字の抽出は、不要な上位ビット列の削除、不要な下位ビット列の削除、割算などのあらゆる演算を使用することができる。次に、認証要求クライアント151は、パターン表示手段156により、パターン要素列190のそれぞれのパターン要素を4つの4×4のマトリクスからなるパターンのそれぞれの要素の位置に配置した提示パターン191を表わす画像を生成し、それを認証要求クライアント151の画面に表示させる(ステップS119)。Windowsのドメインネットワークへのログイン認証の場合は、図8に示されるように、ログオン認証画面197Aに続いて、提示パターン191を含むログオン認証画面197Bが表示させられる。
次に、認証を受けようとするユーザは、認証要求クライアント151の画面に表示された提示パターン191の特定の位置に表示されたパターン要素(0から9のいずれかの数字)を選択したり、提示パターン191に基づかない固定の数字などのキャラクターを入力したりすることを順番に実施することによって、自分のワンタイムパスワード導出ルール102bを提示パターン191に適用した結果であるワンタイムパスワード192を認証要求クライアント151に入力する。認証要求クライアント151は、ワンタイムパスワード入力手段157により、ワンタイムパスワード192の入力を受け付ける(ステップS121)。次に、認証要求クライアント151は、ワンタイムパスワード送信手段158により、入力されたワンタイムパスワード192を認証サーバ101に送信する(ステップS123)。次に、認証サーバ101は、ワンタイムパスワード受信手段121により、認証要求クライアント151から送信されたワンタイムパスワード192を受信する(ステップS125)。
次に、認証サーバ101は、検証コード生成手段106により、認証要求クライアント151から受信した入力ユーザID181および認証要求クライアント151に送信したパターンシード値183に基づいて、所定のパターン要素列生成規則により生成されるパターン要素列から構成される提示パターンに、当該入力ユーザID181に対応するワンタイムパスワード導出ルール102bを適用した結果である検証コード193を生成する(ステップS127)。ここでの所定のパターン要素列生成規則は、認証要求クライアント151において、ステップS117でパターン要素列生成手段155がパターン要素列を発生させたパターン要素列生成規則と全く同じ規則である。従って、検証コード193は、入力ユーザID181のユーザに関連付けられた正しいワンタイムパスワード導出ルール102bが、そのユーザに関連付けられた正しいクライアント識別情報102cと正しいパターンシード値183とに基づく正しい提示パターン191に適用された結果である正しいワンタイムパスワード192と同じ値となる。次に、認証サーバ101は、ユーザ認証手段122により、受信したワンタイムパスワード192と生成した検証コード193とを比較し、それらが等しければ、当該ユーザのユーザ認証が成功したものと判定する(ステップS129)。認証が成功すると、以下のように、ユーザ認証の利用形態に応じたサービスが許可されることになる。Web上のコンテンツ等の使用許可のためのユーザ認証の場合は、コンテンツへのアクセスが許可されたり、アプリケーションの利用が許可されたりする。Windowsのドメインネットワークへのログオン認証の場合は、認証サーバ101は、認証結果をWindowsのドメインコントローラに伝達し、Windowsネットワークへの参加を認めさせる。認証サーバ101が、SSL−VPNゲートウェイの形態であれば、当該SSL−VPNへのアクセスが許可される。
なお、認証のための要素の数を実質的に三要素以上の多要素に拡張することを目的として、複数のクライアント識別情報102cを同時にパターンシード値183と組み合わせて提示パターン191を生成するように構成するためには、クライアント識別情報102cを扱う手段やステップにおいて、複数のクライアント識別情報102cを使用するように本発明を構成すればいい。具体的には、パスワード記憶部102は、ユーザのユーザIDと当該ユーザのワンタイムパスワード導出ルールと当該ユーザが使用する認証要求クライアントをそれぞれ識別する複数のクライアント識別情報とをお互いに関連付けてあらかじめ記憶するものであり、パターンシード値発生手段104は、複数のクライアント識別情報と組み合わされて提示パターンをユニークに決定する値であるパターンシード値を所定の発生規則により発生するものであり、クライアント識別情報取得手段171は、認証を受けようとするユーザが使用している認証要求クライアント151を識別する複数のクライアント識別情報102cを取得するものであり、パターン要素列生成手段155は、取得された複数のクライアント識別情報102cと受信したパターンシード値183とに基づいて、所定のパターン要素列生成規則により前記提示パターンを構成するパターン要素の集合であるパターン要素列を生成するものであり、検証コード生成手段106は、受信したユーザIDに関連付けられた複数のクライアント識別情報および送信したパターンシード値に基づいて所定のパターン要素列生成規則により生成されるパターン要素列から構成される提示パターンに含まれるパターン要素に受信したユーザIDに関連付けられたワンタイムパスワード導出ルールを適用した結果である検証コードを生成するものであるように構成するとよい。
以上に説明した動作フローにおいて、あるステップにおいて、そのステップではまだ利用することができないはずのデータを利用しているなどの動作フロー上の矛盾が生じない限りにおいて、動作フローを自由に変更することができる。例えば、ステップS127の認証サーバ101における検証コード193の生成などは、入力ユーザID181とパターンシード値183が利用できるようになるステップS109の直後で実行されてもよい。
以上に説明してきた各実施形態は、本発明を説明するための例示であり、本発明はこれらの実施形態に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。