これから発明の実施形態の説明を行う。まず、オンライン、オフラインという用語の意義を説明する。オンラインとは、ユーザがオフライン二要素認証クライアント151を使用して、オフライン認証支援サーバ101と同じネットワークに適正なネットワークユーザとして接続している状態のことである。ユーザがオフライン二要素認証クライアント151をオンラインの状態で使用するためにはそのネットワークのリソースの使用許可を得る必要があるため、ネットワークがドメインとして管理されている場合には、当該ユーザのそのドメインネットワークへのログオン認証が必要である。オフラインとは、ユーザがオフライン二要素認証クライアント151を適正なユーザとして使用しているが、オフライン認証支援サーバ101と同じネットワークには接続していない状態のことである。オフラインの状態であっても、Windows(登録商標。以下、同じ)ネットワークの場合はドメインネットワークのユーザとしてログオンすることも可能であり、また、ローカルのコンピュータのユーザとしてログオンすることも可能である。ユーザがオフライン二要素認証クライアント151をオフラインの状態で使用するためには、当該ユーザは、そのドメインネットワークまたはそのコンピュータへのログオン認証を受けることが必要である。
次に、マトリクス認証に特有の技術についての説明をする。マトリクス認証は、所定パターンに配列した複数のパターン要素(パターン要素列190)を認証を受けるユーザが使用するクライアント装置に提示パターン191として提示し、当該提示パターン191に含まれる特定の位置のパターン要素に対して適用することによりワンタイムパスワードを生成するためのワンタイムパスワード導出ルール102bを当該ユーザのパスワードとするものである。
[提示パターンとパターン要素]
提示パターン191とは、パターン要素を所定パターンに配列したものである。所定パターンとしては、縦m個×横n個のそれぞれの位置に全体が方形を形成するように配置したマトリクス、そのようなマトリクスを複数並べたもの、などが典型的であるが、その他に任意の図形の形状とすることができる。本明細書では、そのような典型的なマトリクス形状以外の形状の提示パターンを使用した場合も、マトリクス認証方式と呼ぶことにする。所定パターンとしては、規則的な形状や印象的な形状が、ユーザの記憶に残りやすく、従ってユーザがパスワードであるワンタイムパスワード導出ルール102bを記憶しやすいために好適である。
パターン要素とは、提示パターン内において所定パターンを構成するように所定位置に配置される要素であり、好適には0から9までの1桁の数字であるが、他に、アルファベット、記号、などの任意のキャラクターとすることができる。なお、記号としては、PCの標準のキーボードに割り当てられている「+」、「−」、「*」、「=」、「_」、「!」、「?」、「#」、「$」、「&」などの記号が特に好適である。キャラクターとして、図形、イラスト、写真などの図柄を使用することもできる。好適には、同じパターン要素は、提示パターン内において、複数個表示される。このようにすると、パスワードであるワンタイムパスワード導出ルール102bと、ワンタイムパスワード導出ルール102bを提示パターン191に適用した結果であるワンタイムパスワード192とは多対1の対応となり、ワンタイムパスワード192の入力時に自動的にハッシュ化がなされることになる。そのため、1つのワンタイムパスワード192だけからは、提示パターン191が特定されていたとしても、ワンタイムパスワード導出ルール102bを特定することはできない。
本実施例では、図8などに示すような、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と、オフライン認証支援サーバ101とネットワークで接続可能であるがネットワーク非接続状態であるオフラインでユーザの認証を行える端末であるオフライン二要素認証クライアント151とから構成される。オフライン二要素ユーザ認証システム100においては、パターン要素列190は、オフライン二要素認証クライアント151の内部で生成されて提示パターン191の生成に使用されるのみであって、パターン要素列190がネットワークを通じて送信されることはない。
[ワンタイムパスワード導出ルール]
ワンタイムパスワード導出ルール102bは、提示パターン191に含まれる特定の位置のパターン要素に対して適用することによりワンタイムパスワード192を生成するためのルールであり、ユーザのパスワードとして機能するデータである。パターン要素に対して適用するルールとは、典型的には、どの位置のパターン要素をどの順番で選択するのかということである。この場合、ワンタイムパスワード導出ルール102bは、提示パターン191に含まれる選択されるパターン要素のそれぞれの位置と、当該それぞれのパターン要素が選択される順番との組み合わせの情報である。またワンタイムパスワード導出ルール102bは、提示パターン191に基づかないで入力される固定の数字などのキャラクターの情報を含んでいてもよく、この場合、ワンタイムパスワード導出ルール102bは、提示パターン191に含まれる選択されるパターン要素のそれぞれの位置および当該提示パターン191に基づかないで入力される固定のキャラクターのそれぞれと、当該それぞれのパターン要素の位置および当該それぞれのキャラクターが選択あるいは入力される順番との組み合わせの情報である。すなわち、提示パターン191に基づかない固定パスワード成分をワンタイムパスワードに含めることができる。
図7に典型的なワンタイムパスワード導出ルール102bの構造を示す。本実施例では、0から9までの1桁の数字をパターン要素とし、それぞれのパターン要素を4つの4×4のマトリクスからなる所定パターン191pのそれぞれの要素の位置に配置した提示パターン191に対するワンタイムパスワード導出ルール102bが例示されている。図7においては、所定パターン191pのそれぞれの要素の位置は、01から64までの数字で区別されて表示されている。提示パターン191が認証を受けようとするユーザに対して表示されるときには、所定パターン191pのそれぞれの要素の位置には0から9までの1桁の数字が表示される。
入力されるワンタイムパスワード192は、好適には、提示パターン191に基づく数字と、それに基づかないで入力される固定の数字とを使用するものである。提示パターン191に含まれるパターン要素の数は64個であるため、提示パターン191に含まれるパターン要素のそれぞれの位置が選択されたことは、それぞれの位置に割り当てられた01から64までの2桁の数字によって表わされる。そして、提示パターン191に基づかないで入力される固定の数字については、最初にそのような固定の数字であることを示す「9」の数字が割り当てられ、次に入力される1桁の数字が割り当てられた、2桁の数字によって表わされる。図7の例では、ワンタイムパスワード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に含まれるパターン要素を生成する際に、さらに他の要素の情報と組み合わせられる点が重要な特徴である。オフライン二要素認証クライアント151は、提示パターン191を表示するために、それを生成するための情報を記憶しておく必要がある。オフライン認証クライアント151が、提示パターン191を構成するパターン要素列190をそのまま記憶するような構成だと、悪意の第三者がオフライン二要素認証クライアント151を解析すると、パターン要素列190を特定され、従って、提示パターン191を特定される可能性がある。これは、セキュリティ上、あまり好ましいことではない。これを防止するためには、パターン要素列190を記憶させないことが考えられる。その一方で、オフライン二要素認証クライアント151で認証を実施するためには、提示パターン191を生成して表示できなければならない。
パターンシード値183は、このような相反する要求を解決するものであり、所定の変換規則を適用することにより提示パターン191をユニークに決定するが、パターン要素列190そのものではない情報である。オフライン二要素認証クライアント151には、パターン要素列190そのものは記憶されず、それに代えてパターンシード値183が記憶される。そしてオフライン二要素認証クライアント151においては、記憶しているパターンシード値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を適用することによって生成・入力される使い捨てのパスワードである。図8は、マトリクス認証方式におけるワンタイムパスワード入力方法の概念図である。ユーザは、提示パターン191に対してワンタイムパスワード導出ルール102bを適用することによって、マトリクス上の所定の位置に表示された数字を順番に抽出してワンタイムパスワード192を生成し、それをオフライン二要素認証クライアント151に入力する。また、提示パターン191に基づかない固定の数字を含めて入力することも可能である。すなわち、固定パスワードをワンタイムパスワードに含めることもできる。図7において破線で示した矢印と丸は、提示パターン191に基づくワンタイムパスワードをキーボード196から入力することを表わしている。図8の例では、提示パターン191に基づいて「2504」を入力し、次に提示パターン191に基づかない固定の数字として「29」を入力し、次に提示パターン191に基づいて「0」を入力することによって、ワンタイムパスワード192として「2504290」が入力されている。
[検証コード]
検証コード193は、入力されたワンタイムパスワード192の正当性を検証するためのデータである。検証コード193は、オフライン二要素認証クライアント151において複数のパターンシード値183に基づいて表示することが可能な複数の提示パターン191のそれぞれに含まれる特定の位置のパターン要素に対してユーザが自己のワンタイムパスワード導出ルール102bを適用した結果に対して、逆算を防止するために一方向関数演算を実施してハッシュ化したものである。すなわち、検証コード193は、認証を受けようとするユーザに関連付けられた正しいワンタイムパスワード導出ルール102bが正しい提示パターン191に適用された結果である正しいワンタイムパスワード192と同じ値に一方向関数演算を実施したものである。従って、検証コード193は、表示可能な提示パターン191と同じ数だけ生成されてオフライン認証クライアント151に記憶される。オフライン認証クライアント151におけるユーザ認証時には、提示された提示パターン191に基づいて入力されたワンタイムパスワード192に検証コード193の生成時に使用したものと同じ一方向関数演算を実施した値と、提示パターン191に対応する検証コード193とを比較することによって、ワンタイムパスワード192の正当性が検証される。ここで、検証コードをハッシュ化していないものとしても、当然にワンタイムパスワード192の正当性を検証することはできる。しかし、そのような検証コードは正しいワンタイムパスワード192と等しいものであるため、クライアントPCが悪意の第三者に解析されて、そのような検証コードがクライアント識別情報と共に漏洩した場合には、提示パターン191と正しいワンタイムパスワード192のペアが複数知られる可能性があり、パスワードであるワンタイムパスワード導出ルール102bが特定されてしまう可能性があるという問題がある。検証コード193をハッシュ化したものとすることによって、検証コード193からは正しいワンタイムパスワード192を特定することができなくなるので、クライアントPCが悪意の第三者に解析されたとしても、パスワードであるワンタイムパスワード導出ルール102bが漏洩することはない。
[一方向関数およびハッシュ関数]
一方向関数とは、ある入力値に適用した出力値は簡単に計算できるが、その出力値からは元の入力値を求めることは極めて困難な関数のことをいう。ハッシュ関数とは、一方向関数の特徴である一方向性を有し、さらに、元の入力値が異なる場合に出力値が同一になる確率が極めて小さいという衝突耐性を有する関数をいう。ハッシュ関数は、通常、入力値にかかわらず一定範囲の出力値を生成する。一方向関数はハッシュ関数を含む概念であり、一方向関数とハッシュ関数はほぼ同様に使用することができるが、入力値の範囲が大きいなどの理由で、より高い衝突耐性が必要とされる場合には、ハッシュ関数を使用すると好適である。本発明においては、一方向関数に代えてハッシュ関数を使用することは当然に可能であるが、ハッシュ関数に代えて一方向関数を使用することも可能である。
[本発明に係るユーザ認証方法]
これから図面を参照して本発明に係るユーザ認証方法の説明を行う。図1はハードウェア構成図、図2はブロック図、図3から4は動作フロー図である。まず、本発明に係るユーザ認証方法の概要について説明する。本発明に係るユーザ認証方法は、上述したような、チャレンジ・レスポンス方式の認証方法の一種であるマトリクス認証である。本発明に係るユーザ認証方法では、いずれの実施形態においても、所定パターンに配列した複数のパターン要素をオフライン二要素認証クライアント151において認証を受けるユーザに提示パターン191として提示し、当該提示パターン191に含まれる特定の位置のパターン要素に対してユーザが適用することによりワンタイムパスワード192を生成するためのワンタイムパスワード導出ルール102bを当該ユーザのパスワードとするものである。
オフライン二要素認証クライアント151においてユーザに提示される提示パターン191を生成する際に使用される情報であるパターンシード値183は、オフライン認証支援サーバ101においてあらかじめ複数生成され、オフライン二要素認証クライアント151にネットワークあるいは他の記憶媒体を介して伝達されてあらかじめ記憶される。オフライン二要素認証クライアント151は、クライアント識別情報102cを取得する。提示パターン191は、パターンシード値183と取得したクライアント識別情報102cとに基づいて所定の生成規則により生成される。オフライン二要素認証クライアント151に入力されたワンタイムパスワード192が正当であるかどうかを検証するための検証コード193は、パターンシード値183のそれぞれと取得されたクライアント識別情報102cとに基づいて生成されるパターン要素列190から構成される提示パターン191のそれぞれに当該ユーザのパスワードであるワンタイムパスワード導出ルール102bを適用した結果に一方向関数演算を実施することによってオフライン認証支援サーバ101であらかじめ複数生成され、オフライン認証クライアント151にネットワークあるいは他の記憶媒体を介して伝達されて記憶される。
オフライン二要素認証クライアント151において、複数が生成可能な提示パターン191の中から1つが選択されて表示される。ユーザは表示された提示パターン191に対して自分のワンタイムパスワード導出ルール102bを適用することによってワンタイムパスワード192を入力する。オフライン二要素認証クライアント151は、入力されたワンタイムパスワード192に検証コード193の生成時に使用したものと同じ一方向関数演算を実施したものを、それに対応する検証コード193と比較し、それらが等しければ当該ユーザに対する認証が成功したものと判定し、認証成功時の所定の動作を開始させる。
[オフライン二要素ユーザ認証システム100のハードウェア構成]
次に、オフライン二要素ユーザ認証システム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を記憶し、またその記憶領域に検証データ記憶部161を含む。OS151c1は、検証データ要求モジュール151c2、シード値選択・パターン生成モジュール151c3、検証コード特定・認証モジュール151c4、クライアント識別情報取得モジュール151c5を含む。検証データ記憶部161は、複数のパターンシード値183、複数の検証コード193を記憶する。それらの複数のパターンシード値183、複数の検証コード193をまとめて検証データ194と呼ぶ。
オフライン認証支援サーバ101は、オフライン二要素ユーザ認証システム100において、オフライン二要素認証クライアント151においてオフラインの二要素ユーザ認証が実施できるために必要なデータをあらかじめ生成する構成要素である。オフライン認証支援サーバ101は、OS101c1、ユーザ認証支援アプリケーション101c2などがインストールされた、サーバあるいはパーソナルコンピュータなどの形態である。CPU101aは、OS101c1、ユーザ認証支援アプリケーション101c2などをOS101c1上で実行してオフライン認証クライアントでのユーザ認証を支援する情報処理を行うプロセッサである。RAM101bは、記憶装置101cに記憶されたソフトウェアがその上に読み込まれるメモリ空間と、読み込まれたソフトウェアがCPU101aによって実行される際に必要となるワークエリア等を提供するメモリである。記憶装置101cは、ソフトウェアやデータなどの情報を記憶・管理する構成要素であり、典型的にはハードディスクドライブなどの形態である。記憶装置101cは、好適には、OS101c1、ユーザ認証支援アプリケーション101c2のプログラムのファイルを記憶しており、それらのプログラムはRAM101b上に読み出されて実行される。記憶装置101cは、OS101c1、ユーザ認証支援アプリケーション101c2のプログラムに関しては、それをROMに記憶した形態であってもよい。この場合、そのようなROMはCPU101aなどのプログラム実行要素とともにファームウェアを構成することになる。ユーザI/F101dは、ユーザとの間でデータの入出力を行うための構成要素であり、典型的にはキーボード196、ソフトウェアキーボードなどのキー入力手段と、画面に情報を表示するディスプレイなどの出力手段と、それらとの間のハードウェアI/Fとから構成される。キーボード196は、テンキー、標準のフルキーボードなど、ワンタイムパスワードを構成するパターン要素の入力ができる限り、任意の形態のものを使用できる。ソフトウェアキーボードは、ディスプレイの画面上にキーボードのシンボルを表示させ、タッチパネル、マウス、トラックボールなどのポインティングデバイスを使用してキーのシンボルを選択させることによりキー入力を受け付ける。外部/ネットワークI/F101eは、USBメモリやフロッピー(登録商標)ディスクドライブなどの記憶装置やネットワークに接続して情報の入出力を行うためのI/Fである。
OS101c1、ユーザ認証支援アプリケーション101c2は、それらが組み合わされて形式的には一体のプログラムの形態となっていてもよい。例えば、OS101c1がユーザ認証支援アプリケーション101c2の機能を包含していてもよい。また、ユーザ認証支援アプリケーション101c2が、他のアプリケーションに組み込まれていてもよい。また、それらがそれぞれ複数のプログラムに分割されていてもよい。
オフライン認証支援サーバ101は、オフライン二要素認証クライアント151に対して何らかの形態で検証データ194を伝達することができれば、ネットワークで接続されていても、されていなくてもよい。しかし好適には、オフライン認証支援サーバ101は、オフライン二要素認証クライアントとネットワークで接続することが可能であり、ネットワーク接続されているオンライン状態において、あらかじめ検証データ194をオフライン二要素認証クライアント151に伝達する。ネットワークは、好適には、TCP/IPベースのプロトコルで動作するインターネットあるいはイントラネットである。イントラネットにおいて、オフライン二要素認証クライアント151がクライアント用Windows OSで動作している場合には、ネットワークはTCP/IPベースのプロトコルで動作するWindowsのドメインネットワークとすることができる。なお、本明細書ではOSとしてWindowsを例示して説明しているが、他のOS、例えば、Mac OS(登録商標)、Linux(登録商標)、Unix(登録商標)などを使用することも可能である。
オフライン認証支援サーバ101がオフライン二要素認証クライアント151とネットワークで接続される場合は、オフライン認証支援サーバ101は、典型的にはインターネットあるいはイントラネットなどのネットワーク上に配置され、当該ネットワークを通じてアクセスしてきたオフライン二要素認証クライアント151に対してユーザ認証のための検証データ194を提供するリソースを提供するWebサーバの形態である。この場合、好適には、オフライン二要素認証クライアント151をオフライン認証支援サーバ101と同じネットワークに接続するためのネットワークへのログオン認証時に検証データ194がオフライン二要素認証クライアント151に伝達される。
好適には、オフライン二要素認証クライアント151のログオン時に、本発明に係るユーザ認証方法を実施するプログラムが起動してログオン認証画面を表示するようにし、そのログオン認証画面においてはネットワークへのログオンとコンピュータへのログオンとが選択できるように構成する。このように構成すると、オンラインとオフラインのログオン認証をシームレスに実施することができるようになるとともに、オフライン二要素認証クライアント151のネットワークへのログオン認証時において、検証データ194の生成と伝達の要求をHTTPプロトコル、HTTPSプロトコルなどを使用してオフライン認証支援サーバ101に送信することができる。従って、オフライン二要素認証クライアント151は、ネットワークへのログオン認証が成功した直後に、ネットワークを通じてオフライン認証支援サーバ101から簡便かつ確実に検証データ194を取得することができる。
他には、オフライン認証支援サーバ101は、検証データ194のデータを添付した電子メールをユーザに送信するメールサーバの形態とすることもできる。この場合、オフライン二要素認証クライアント151は、オフライン認証支援サーバ101からユーザ宛に送信された電子メールが蓄積されているサーバにアクセスして当該電子メールを受信し、当該電子メールに添付されている検証データ194を取得する。電子メールに添付されているデータは、検証データ194そのもののファイルであってもよいし、検証データ194をインストールするための実行形式のファイルであってもよい。オフライン認証支援サーバ101は、それぞれのユーザのメールアドレスを記憶していると好適である。電子メールによる検証データ194の伝達は、オフライン認証支援サーバ101からのネットワークや記憶媒体を通じてデータの伝達が、ユーザの長期出張などで困難な場合に有効である。
オフライン認証支援サーバ101がオフライン二要素認証クライアント151とネットワークで接続されない場合は、オフライン認証支援サーバ101は、検証データ194を外部/ネットワークI/F101eを通じてフロッピー(登録商標)ディスク、USBメモリなどの記憶媒体に出力する。出力するデータは、検証データ194そのもののファイルであってもよいし、検証データ194をインストールするための実行形式のファイルであってもよい。オフライン二要素認証クライアント151は、検証データ194が記憶された記憶媒体を外部/ネットワークI/F151eを通じて接続し、そこから検証データ194を取得する。
上述した、オフライン認証支援サーバ101が検証データ194を生成し、オフライン認証クライアント151が生成された検証データ194を取得して記憶することは、ユーザがオフライン認証クライアント151で認証を受けようとする前にあらかじめ実行される必要がある。
OS101c1は、オフライン認証支援サーバ101のハードウェアに密接な基本的な情報処理を行うオペレーティングシステムである。ユーザ認証支援アプリケーション101c2は、OS101c1上で動作する、パターンシード値183および検証コード194を生成してそれをオフライン二要素認証クライアント151に伝達するためのアプリケーションソフトウェアである。オフライン認証支援サーバ101がWebサーバの形態である場合、ユーザ認証支援アプリケーション101c2は、典型的には、CGIで呼び出される形態かサーブレットの形態の認証支援プログラムを備えた、検証データ194をインターネットまたはイントラネットのWebを介して提供するWebサーバプログラムである。オフライン認証支援サーバ101がメールサーバの形態である場合、ユーザ認証支援アプリケーション101c2は、典型的には、検証データ194を生成するプログラムを備えた、検証データ194を添付したメールをインターネットまたはイントラネットを介して提供するメールサーバプログラムである。パスワード記憶部102は、典型的にはハードディスクドライブなどの一領域であり、好適にはデータは暗号化ファイルとしてパスワード記憶部102に記憶される。ユーザID102aは、ユーザをユニークに識別するためのデータである。ユーザID102aは、任意の文字列を使用することができる。ワンタイムパスワード導出ルール102bは、上述したように、提示パターンに含まれる特定の位置のパターン要素に対して適用することによりワンタイムパスワードを生成するためのルールであり、ユーザのパスワードとして機能するデータである。クライアント識別情報102cは、認証を受けようとするユーザが使用しているオフライン二要素認証クライアント151を識別するためのデータであり、提示パターンを生成する際に、パターンシード値に組み合わされて使用されるデータである。
オフライン二要素認証クライアント151は、オフラインユーザ認証システム100において、ユーザからの認証要求に応答してオフラインの状態で認証を実施する構成要素であり、OS151c1、検証データ要求モジュール151c2、シード値選択・パターン生成モジュール151c3、検証コード特定・認証モジュール151c4、クライアント識別情報取得モジュール151c5などがインストールされた端末であり、具体的には、PC、携帯電話機、PDAなどの形態である。CPU151aは、検証データ要求モジュール151c2、シード値選択・パターン生成モジュール151c3、検証コード特定・認証モジュール151c4、クライアント識別情報取得モジュール151c5などをOS151c1とともに実行して、ユーザ認証に関する情報処理を行うプロセッサである。RAM151bは、記憶装置151cに記憶されたソフトウェアがその上に読み込まれるメモリ空間と、読み込まれたソフトウェアがCPU151aによって実行される際に必要となるワークエリア等を提供するメモリである。記憶装置151cは、ソフトウェアやデータなどの情報を記憶・管理する構成要素であり、典型的にはハードディスクドライブなどの形態である。記憶装置151cは、好適には、OS151c1、検証データ要求モジュール151c2、シード値選択・パターン生成モジュール151c3、検証コード特定・認証モジュール151c4、クライアント識別情報取得モジュール151c5のプログラムのファイルを記憶しており、それらのプログラムはRAM151b上に読み出されて実行される。なお、記憶装置151cは、OS151c1、検証データ要求モジュール151c2、シード値選択・パターン生成モジュール151c3、検証コード特定・認証モジュール151c4、クライアント識別情報取得モジュール151c5に関しては、そのプログラムをROMに記憶した形態であってもよい。この場合、そのようなROMはCPU151aなどのプログラム実行要素とともにファームウェアを構成することになる。ユーザI/F151dは、ユーザとの間でデータの入出力を行うための構成要素であり、典型的には、図示していないが、キーボード196やソフトウェアキーボードなどのキー入力手段と、画面に情報を表示するディスプレイなどの出力手段と、それらとの間のハードウェアI/Fとから構成される。外部/ネットワークI/F151eは、USBメモリやフロッピー(登録商標)ディスクドライブなどの記憶装置や外部通信インターフェースを搭載した外部機器やネットワークに接続して情報の入出力を行うためのI/Fである。外部/ネットワークI/F151eを通じて、外部通信インターフェースを搭載した外部機器からはクライアント識別情報を取得することができる。また、外部/ネットワークI/F151eを通じて、ネットワークを経由して認証サーバ101と接続することができる。外部通信インターフェースとしては、USB、BlueTooth(登録商標)、無線LAN、赤外線通信、Felica(登録商標)やRFIDの非接触通信、などの各種の通信インターフェースを使用することができ、接続される外部機器としては、USBメモリ、無線通信用データカード(USB接続、PCカード接続、Express Card接続、など)、FelicaやRFIDなどのICカード、携帯電話機、生体認証情報(指紋、虹彩、静脈など)読み取り機などを使用することができる。オフライン二要素認証クライアント151をオフライン認証支援サーバ101とネットワークで接続しない形態においては、検証データ要求モジュール151c2は必ずしも必要ない。
なお、オフライン二要素認証クライアント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、クライアント識別情報取得モジュール151c5は、それらの一部または全部が組み合わされて形式的には一体のプログラムの形態となっていてもよい。例えば、検証データ要求モジュール151c2、シード値選択・パターン生成モジュール151c3、検証コード特定・認証モジュール151c4、クライアント識別情報取得モジュール151c5が一体であってもよい。また、それらが独立したアプリケーションであっても、あるいは、他のアプリケーションに組み込まれていてもよい。また、それらがそれぞれ複数のプログラムに分割されていてもよい。
OS151c1は、オフライン二要素認証クライアント151のハードウェアに密接な基本的な情報処理を行うオペレーティングシステムであり、オフライン認証クライアント151のハードウェアに応じた基本プログラムである。OS151c1は、プラットフォームに準じたアーキテクチャのファームウェアの形態であってもよい。検証データ要求モジュール151c2は、オフライン二要素認証クライアント151がオフライン認証支援サーバ101と同じネットワークにログオンする際に、オフライン認証支援サーバ101に対して検証データ194の生成および送信を要求するプログラムであり、典型的には、OS151c1によってネットワークへのログオン認証時に呼び出されるモジュールの形態である。シード値選択・パターン生成モジュール151c3は、OS151c1とともに動作する、検証データ194に含まれる複数のパターンシード値183から1つのパターンシード値183を所定の選択規則によって選択し、それに基づいてパターン要素列190を生成し、さらに提示パターン191を生成するプログラムであり、典型的には、OS151c1によってコンピュータへのログオン認証時に呼び出されるモジュールの形態である。生成された提示パターン191は、OS151c1によって画面に表示される。検証コード特定・認証モジュール151c4は、OS151c1とともに動作する、検証データ194に含まれる複数の検証コード193から表示されている提示パターン191に対応する1つの検証コード193を特定し、認証を受けようとするユーザがOS151c1を通じて入力したワンタイムパスワード192と特定された検証コード193とを比較し、それらが等しければ当該ユーザに対する認証を成功させるプログラムであり、典型的には、OS151c1によってコンピュータへのログオン認証時に呼び出されるモジュールの形態である。検証データ要求モジュールc2、提示パターン選択・生成モジュールc3、検証コード特定・認証モジュールc4、クライアント識別情報取得モジュール151c5は、プラットフォームに準じたアーキテクチャのファームウェアの形態であってもよい。クライアント識別情報取得モジュール151c5は、ユーザが使用しているオフライン二要素認証クライアント151からクライアント識別情報102cを取得するためのプログラムであり、典型的には、OS151c1によってコンピュータへのログオン認証時に呼び出されるモジュールの形態である。
典型的には、OS151c1はクライアント用Windows OSであり、検証データ要求モジュール151c2はネットワークへのログオン認証時などのオンラインのときに検証データ要求を行い、シード値選択・パターン生成モジュール151c3、検証コード特定・認証モジュール151c4、及びクライアント識別情報取得モジュール151c5はコンピュータへのログオン認証画面に提示パターン191を表示させてユーザに認証を要求し、本願発明に係る認証方法に基づいてユーザの認証を実施する。このように、標準のWindowsへのログオン認証に代えて、本願発明に係る認証方法に基づくユーザ認証を実施させると好適である。
標準のWindowsへのログオン認証画面の変更は、具体的には以下のようにして実施する。ここでは、Windows XPを例にして説明する。まず、検証データ要求モジュールc2、提示パターン選択・生成モジュールc3、検証コード特定・認証モジュールc4、およびクライアント識別情報取得モジュール151c5の機能を実現するプログラムであるログオン認証モジュールをWindows用のDLLファイルとして作成する。ここでは、「SmxGina.dll」という名前のDLLファイルを作成する。ここで、Windowsへのログオン認証画面のプログラムは、以下に示すレジストリのロケーションにおいて「GinaDLL」という名前のキーのデータとして指定されている。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
標準のログオン認証のモジュールは「msgina.dll」というDLLファイルであり、それが前述した「GinaDLL」という名前のキーのデータに設定されている。当該キーのデータを「SmxGina.dll」に書き換えると、本願発明に係る認証方法を実施するログオン認証モジュール「SmxGinaDLL」がログオンなどの認証時に呼び出されることになる。
図9は、オフライン二要素ユーザ認証システム100におけるログオン認証画面197Aおよび197Bのイメージ図である。Windowsのログオン時にログオン認証モジュール「SmxGinaDLL」が起動させられることによって、まず、ログオン認証画面197Aが表示させられる。ログオン認証画面197Aには、ユーザ名入力フィールド、ログオン先入力フィールドが表示される。オフライン二要素認証クライアント151がドメインネットワークに接続された状態で、ログオン先にドメイン名を入力することによってオンラインで使用するためにWindowsのドメインネットワークへのログオン認証を行わせることができる。オフライン二要素認証クライアント151がドメインネットワークに接続されていない状態では、ログオン先にドメイン名を入力することによってドメインネットワークのユーザとしてオフラインでコンピュータを使用するためのログオン認証を行わせることができ、ログオン先にコンピュータ名を入力することによってローカルコンピュータのユーザとしてオフラインで使用するためにコンピュータへのログオン認証を行わせることができる。ユーザがログオン認証画面197Aのユーザ名入力フィールドに自己のユーザIDを入力ユーザID181として入力すると、次に、提示パターン191を含むログオン認証画面197Bが表示される。ログオン認証画面197Bにはパスワード入力フィールドがあり、キーボード196によってワンタイムパスワードとして数字などのキャラクターが入力されると、それに応答して「*」が1つずつ表示される。
[オフライン二要素ユーザ認証システム100の機能ブロック構成]
図2は、本発明の一実施形態に係るオフライン二要素ユーザ認証システム100のブロック図である。図2は、図1に示したハードウェア構成のオフライン二要素ユーザ認証システム100を、ソフトウェアとハードウェア資源とが協働して実施される情報処理の観点から表現した図であり、当該情報処理を機能ブロックの単位で表わした図である。図2において、オフライン認証支援サーバ101は、パスワード記憶部102、要求受付手段103、パターンシード値発生手段104、パターンシード値送信手段105、検証コード生成手段106、検証コード送信手段111から構成される。これらの機能ブロックは、ユーザ認証支援アプリケーション101c2の必要部分がOS101c1の必要部分とともに記憶装置101cからRAM101b上に読み込まれ、それらのソフトウェアがCPU101aによって実行されることによって、RAM101b、記憶装置101c、ユーザI/F101d、外部/ネットワークI/F101eなどのハードウェア要素とも適宜協働して実現されるものである。
パスワード記憶部102は、それぞれのユーザに関して、ユーザID102aと、当該ユーザのパスワードであるワンタイムパスワード導出ルール102bと、クライアント識別情報102cとをお互いに関連付けてあらかじめ記憶する構成要素であり、CPU101a、RAM101b、記憶装置101cなどがソフトウェアと協働することによって実現される機能ブロックである。要求受付手段103は、認証を受けることになるユーザのユーザIDの情報を伴う、当該ユーザのための検証データ194の生成と出力の要求である検証データ要求を受け付ける構成要素であり、CPU101a、RAM101b、ユーザI/F101dあるいは外部/ネットワークI/F101eなどがソフトウェアと協働することによって実現される機能ブロックである。検証データ要求はオフライン二要素認証クライアント151からネットワークを通じて受信してもよく、また、オフライン認証支援サーバ101にユーザI/F101dを通じて直接入力されてもよい。パターンシード値発生手段104は、クライアント識別情報102cとともに提示パターンを規定する値であるパターンシード値183を所定の発生規則により複数発生する構成要素であり、CPU101a、RAM101bなどがソフトウェアと協働することによって実現される機能ブロックである。パターンシード値送信手段105は、発生させられた複数のパターンシード値183を、オフライン二要素認証クライアント151に記憶させるために出力する構成要素であり、CPU101a、RAM101b、ユーザI/F101dあるいは外部/ネットワークI/F101eなどがソフトウェアと協働することによって実現される機能ブロックである。複数のパターンシード値183は、ネットワークを通じてオフライン二要素認証クライアント151に送信されてもよいし、記憶媒体に出力されてもよい。検証コード生成手段106は、要求受付手段103を通じて入力された入力ユーザID 181および発生させられたそれぞれのパターンシード値183に基づいて所定のパターン要素列生成規則により生成されるパターン要素列190から構成される提示パターン191のそれぞれに対応させて、当該入力ユーザID 181に関連付けられたワンタイムパスワード導出ルール102bをそれぞれの提示パターン191に含まれるパターン要素に適用した結果に一方向関数演算を実施したものである検証コード193を複数生成する構成要素であり、CPU101a、RAM101bなどがソフトウェアと協働することによって実現される機能ブロックである。検証コード送信手段111は、生成された複数の検証コード193をオフライン二要素認証クライアント151に記憶させるために出力する構成要素であり、CPU101a、RAM101b、ユーザI/F101dあるいは外部/ネットワークI/F101eなどがソフトウェアと協働することによって実現される機能ブロックである。複数の検証コード193は、ネットワークを通じてオフライン二要素認証クライアント151に送信されてもよいし、記憶媒体に出力されてもよい。
オフライン二要素認証クライアント151は、ユーザID入力手段152、検証データ要求手段153、パターンシード値受信手段154、パターン要素列生成手段155、パターン表示手段156、ワンタイムパスワード入力手段157、検証データ記憶部161、検証コード受信手段162、パターンシード値選択手段163、検証コード特定手段164、ユーザ認証手段165、クライアント識別情報取得手段171から構成される。これらの機能ブロックは、検証データ要求モジュール151c2、シード値選択・パターン生成モジュール151c3、検証コード特定・認証モジュール151c4、クライアント識別情報取得モジュール151c5がOS151c1の必要部分とともに記憶装置151cからRAM151b上に読み込まれ、それらのソフトウェアがCPU151aによって実行されることによって、RAM151b、記憶装置151c、ユーザI/F151d、外部/ネットワークI/F151eなどのハードウェア要素とも適宜協働して実現されるものである。オフライン二要素認証クライアント151がネットワークを通じてオフライン認証支援サーバ101から検証データ194を取得しない場合は、検証データ要求手段153は必ずしも必要ない。
ユーザID入力手段152は、認証を受けようとするユーザのユーザIDを入力ユーザID181として入力を受け付ける構成要素であり、CPU151a、RAM151b、ユーザI/F151dなどがソフトウェアと協働することによって実現される機能ブロックである。ユーザがオフライン二要素認証クライアント151をオンラインで使用するためにネットワークへのログオン認証をする場合には、検証データ要求手段153に入力ユーザID181を伝達し、それに検証データ要求を送信させる。検証データ要求手段153は、入力された入力ユーザID181の情報を含む検証データ要求をオフライン認証支援サーバ101に送信する構成要素であり、CPU151a、RAM151b、外部/ネットワークI/F151eなどがソフトウェアと協働することによって実現される機能ブロックである。パターンシード値受信手段154は、オフライン認証支援サーバ101で生成された検証データ194を構成する複数のパターンシード値183を取得する構成要素であり、CPU151a、RAM151b、ユーザI/F151dまたは外部/ネットワークI/F151eなどがソフトウェアと協働することによって実現される機能ブロックである。複数のパターンシード値183は、オフライン認証支援サーバ101からネットワークを通じて取得してもよく、それを記憶した記憶媒体から取得してもよい。パターン要素列生成手段155は、後述のパターンシード値選択手段163によって選択されたパターンシード値183と、後述のクライアント識別情報取得手段171によって取得されたクライアント識別情報102cとに基づいて所定の生成規則により提示パターン191に含まれるパターン要素を生成する構成要素であり、CPU151a、RAM151bなどがソフトウェアと協働することによって実現される機能ブロックである。パターン表示手段156は、パターン要素列生成手段155によって生成されたパターン要素列190のパターン要素を所定パターン191pに配列して提示パターン191を生成し、それを画面に表示させる構成要素であり、CPU151a、RAM151b、ユーザI/F151dなどがソフトウェアと協働することによって実現される機能ブロックである。ワンタイムパスワード入力手段156は、画面に表示させた提示パターン191などを通じてワンタイムパスワード192のユーザからの入力を受け付ける構成要素であり、CPU151a、RAM151b、ユーザI/F151dなどがソフトウェアと協働することによって実現される機能ブロックである。検証データ記憶部161は、あるユーザのための複数のパターンシード値183および複数の検証コード193から構成される検証データ194を、当該ユーザのユーザID102aと関連付けて記憶する構成要素であり、CPU151a、RAM151b、記憶装置151cなどがソフトウェアと協働することによって実現される機能ブロックである。検証データ記憶部161が記憶する検証データ194は、パターンシード値受信手段154および検証コード受信手段162から取得され、それらを取得したときに使用されているユーザIDがユーザID102aとして対応付けられて記憶される。検証データ記憶部161は、複数のユーザの検証データ194を記憶することができる。検証コード受信手段162は、オフライン認証支援サーバ101で生成された検証データ194を構成する複数の検証コード193を取得する構成要素であり、CPU151a、RAM151b、ユーザI/F151d、外部/ネットワークI/F151eなどがソフトウェアと協働することによって実現される機能ブロックである。複数の検証コード193は、オフライン認証支援サーバ101からネットワークを通じて取得してもよく、それを記憶した記憶媒体から取得してもよい。パターンシード値選択手段163は、入力ユーザID181に等しいユーザIDがユーザID102aとして記憶されているかどうかを確認し、入力ユーザID181に等しいユーザIDがあった場合は、そのユーザIDに関連付けられている検証データ194に含まれる複数のパターンシード値183の中から所定の規則により1つを選択することによって、提示パターン191を生成するためのパターンシード値183を選択する構成要素であり、CPU151a、RAM151b、記憶装置151cなどがソフトウェアと協働することによって実現される機能ブロックである。検証コード特定手段164は、パターンシード値選択手段163で選択されたパターンシード値183に対応する検証コード193を特定する構成要素であり、CPU151a、RAM151b、記憶装置151cなどがソフトウェアと協働することによって実現される機能ブロックである。ユーザ認証手段165は、入力されたワンタイムパスワード192に検証コード193の生成時に使用したものと同じ一方向関数演算を実施したものと、特定された検証コード193とを比較して、それらが等しいときにユーザ認証が成功したものと判定する構成要素であり、CPU151a、RAM151bなどがソフトウェアと協働することによって実現される機能ブロックである。クライアント識別情報取得手段171は、認証を受けようとするユーザが使用するオフライン二要素認証クライアント151を識別するクライアント識別情報102cを取得する構成要素であり、クライアント識別情報102cがハードウェア関連情報またはソフトウェア関連情報の場合は、CPU151a、RAM151bなどがソフトウェアと協働することによって実現される機能ブロックであり、クライアント識別情報102cが外部機器関連情報の場合は、CPU151a、RAM151b、外部/ネットワークI/F151eなどがソフトウェアと協働することによって実現される機能ブロックである。
オフライン二要素ユーザ認証システム100は、具体的には以下のような構成を有するものとする。オフライン認証支援サーバ101は、従来のオンラインでの認証サーバの機能を有しており、その機能によって、オフライン二要素認証クライアント151のネットワークを通じたユーザ認証が実施される。オフライン二要素認証クライアント151はクライアント用Windows OSで動作しており、ユーザがWindowsにログオンする際にはログオン認証モジュール「SmxGinaDLL」が起動して、まず、ログオン認証画面197Aが表示される。オフライン二要素認証クライアント151がドメインネットワークに接続されている状態で、ログオン認証画面197Aにおいてログオン先にドメイン名を指定してネットワークへの認証が要求された場合には、続いてログオン認証画面197Bが表示され、従来のオンラインでのユーザ認証システムで実施されていたものと同様のユーザ認証が実行されるとともに、当該ネットワークへのログオン認証が成功すると、オフライン二要素認証クライアント151からオフライン認証支援サーバ101に対して検証データ要求が送信され、オフライン二要素認証クライアント151はオフライン認証支援サーバ101からオンラインで検証データ194をあらかじめ取得して記憶する。オフライン二要素認証クライアント151がドメインネットワークに接続されていない状態で、ログオン認証画面197Aにおいてログオン先にドメイン名またはコンピュータ名を指定してコンピュータへの認証が要求された場合には、続いてログオン認証画面197Bが表示され、あらかじめ記憶していた検証データ194に基づいて、本発明に係るオフラインユーザ認証が実施される。
[オフライン二要素ユーザ認証システム100の動作]
これから、オフライン二要素ユーザ認証システム100の動作について説明する。オフライン二要素ユーザ認証システム100の動作は、大きく2つの段階に分けることができる。1つの段階は、オフライン二要素認証クライアント151が、ユーザ認証を受けることになるユーザのための検証データ194をオフライン認証支援サーバ101に生成させて、それをあらかじめ取得して記憶する段階である。もう1つの段階は、ユーザ認証を受けようとするユーザに対して、オフライン二要素認証クライアント151が、あらかじめ記憶した検証データ194に基づいてオフラインでユーザ認証を実施する段階である。
[オフライン二要素ユーザ認証システム100の動作(1)−検証データ取得]
まず、検証データ194を取得する動作フローについて説明する。図3は、オフライン二要素ユーザ認証システム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の提示によってワンタイムパスワード導出ルール192bを特定することが可能である。2回の提示パターン191の提示でワンタイムパスワード導出ルール102bの特定ができなかった場合は、それが特定できるまで、提示パターン191の内容を変えてそれの提示を繰り返す。これによって、提示パターン191に含まれるパターン要素の内で選択されたもののそれぞれの位置および当該提示パターン191に基づかない固定のキャラクターのそれぞれと、当該それぞれのパターン要素の位置および当該それぞれの固定のキャラクターが選択あるいは入力される順番との組み合わせであるワンタイムパスワード導出ルール102bが特定される。特定されたワンタイムパスワード導出ルール102bは、当該ユーザのユーザID102aと関連付けられてパスワード記憶部102に記憶される。なお、初期登録Webページから、シード値選択・パターン生成モジュール151c3や検証コード特定・認証モジュールやクライアント識別情報取得モジュール151c5などの、オフライン二要素認求クライアント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に記憶することによって登録する。これらの登録の操作が完了すると、オフライン認証支援サーバ101は、そのユーザに対する認証のための検証データ194を生成することができるようになり、そのユーザは、オフライン二要素ユーザ認証システム100による認証を受けることができるようになる。なお、クライアント識別情報102cを登録する際に、その取得先の情報をいずれかの場所に記憶させておくと好適である。そのようにすると、ユーザが認証を受ける際に、記憶された取得先の情報を使用して、クライアント識別情報102cの取得先を自動的に設定することが可能となるからである。例えば、取得先の情報は、オフライン二要素認証クライアント151の記憶装置151c内に所定の記憶領域を設けて、そこにユーザID102aと関連付けて記憶させることができる。
次に、認証を受けようとするユーザは、オフライン二要素認証クライアント151において、ユーザID入力手段152により自分のユーザIDを入力ユーザID181として入力する(ステップS103)。ユーザは、典型的には、オフライン二要素認証クライアント151がドメインネットワークに接続された状態で、オフライン二要素認証クライアント151のWindowsのログオン認証画面197Aにおいて、ユーザー名フィールドに自己のユーザIDを入力し、ログオン先としてドメイン名を入力したユーザ認証の要求を行う。これによって、入力ユーザID181がオフライン認証クライアント151に入力される。続いて、ログオン認証画面197Bが表示され、従来のユーザ認証方法と同様の方法によってユーザ認証が実施される。ユーザ認証が成功すると、次に、オフライン二要素認証クライアント151は、検証データ要求手段153により、入力された入力ユーザID181を伴う検証データ194の生成と出力の要求をオフライン認証支援サーバ101に送信する(ステップS105)。典型的には、ログオン認証画面197Aおよび197Bを表示させているログオン認証モジュール「SmxGinaDLL」が、オフライン認証支援サーバ101がネットワーク上に提供している検証データ194の出力のためのリソースにアクセスして、入力ユーザID181の情報を含む、検証データ要求のデータを伝達する。当該リソースは、典型的には、HTTPSプロトコルでアクセス可能なJava(登録商標)サーブレットの形態である。次に、オフライン認証支援サーバ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は、検証コード生成手段106により、クライアント識別情報102cおよび発生させられたそれぞれのパターンシード値183に基づいて所定のパターン要素列生成規則により生成されるパターン要素列190から構成される提示パターン191のそれぞれに対応させて、当該入力ユーザID181に関連付けられたワンタイムパスワード導出ルール102bをそれぞれの提示パターン191に含まれるパターン要素に適用した結果に一方向関数演算を実施したものである検証コード193を複数生成する。(ステップS111)。ここで、所定のパターン要素列生成規則とは、クライアント識別情報102cとパターンシード値183との組み合わせに対してユニークに決定されるパターン要素列であって、そのパターン要素列だけからは元のクライアント識別情報102cとパターンシード値183とを推定することが極めて困難なものを発生させる規則であって、典型的には、以下に述べるような、クライアント識別情報102cとパターンシード値183との組み合わせを一種の初期値とした暗号化演算によるものである。図6は、提示パターン191の生成方法の概念図である。ここでは、「C8E30B178422」というクライアント識別情報102cと「284E17・・・39D0」というパターンシード値183とに基づいてパターン要素列190が生成される。そのために、まず、クライアント識別情報102cとパターンシード値183の組み合わせから、所定の数字列を一意的に生成する。図6の第1段及び第2段に示した例では、それぞれ16進数で表わしたクライアント識別情報102cとパターンシード値183とを結合して所定の数字列を生成している。クライアント識別情報102cとパターンシード値183との組み合わせ方としては、他には、加算、減算、排他的論理和、などのあらゆる演算を使用して組み合わせることができる。次に、その所定の数字列に対して暗号化演算を実施して、所定のビット長のビット列184を生成する。ここでは、所定のビット長は、64の数字からなる提示パターン191を生成するために十分な情報量である256ビットである。暗号化演算としては、演算結果から元の数字列を求めることが事実上不可能なものであればよく、ハッシュ関数演算、共通鍵暗号化演算、などを使用することができる。例えば、ハッシュ関数としてSHA256を使用して、その所定の数字列を暗号化すると、256ビットのビット列184を生成することができる。また、共通鍵暗号化演算としてAESを使用して、その所定の数字列から鍵を生成し、その鍵によってあらかじめ適当に設定した256ビットの数字列を暗号化すると、256ビットのビット列184を生成することができる。また、それらのハッシュ関数演算と共通鍵暗号化演算とを組み合わせることもできる。なお、図6に示したビット列184「0111001011001101・・・11010」の値は説明のための例示であり、正確なSHA256演算の結果を示したものではない。次に、256ビットのビット列184を77桁の十進数に変換し、そこから64桁の数字を抽出してパターン要素列190とする。なお、図6に示したパターン要素列190「38064655・・・1017」の値は説明のための例示であり、正確な変換・抽出の結果を示したものではない。64桁の数字の抽出は、不要な上位ビット列の削除、不要な下位ビット列の削除、割算などのあらゆる演算を使用することができる。このような所定のパターン要素列生成規則によって生成されたパターン要素列190から構成される提示パターン191のそれぞれに含まれるパターン要素に対して、ワンタイムパスワード導出ルール102bを適用して正しいワンタイムパスワードを生成し、そのワンタイムパスワードに一方向関数演算を実施することにより、検証コード193が生成される。
次に、オフライン認証支援サーバ101は、パターンシード値送信手段105により、発生した複数のパターンシード値183をオフライン二要素認証クライアント151に送信する(ステップS113)。典型的には、オフライン認証支援サーバ101は、ユーザ認証支援アプリケーション101c2を動作させ、それによって複数のパターンシード値183をオフライン二要素認証クライアント151に送信する。次に、オフライン二要素認証クライアント151は、パターンシード値受信手段154により、オフライン認証支援サーバ101から送信された複数のパターンシード値183を受信し、それを入力ユーザID181と関連付けて検証データ記憶部161に記憶する(ステップS115)。典型的には、オフライン二要素認証クライアント151上で動作しているログオン認証モジュール「SmxGinaDLL」が、複数のパターンシード値183を受信して記憶させる。次に、オフライン認証支援サーバ101は、検証コード送信手段111により、発生した複数の検証コード193をオフライン二要素認証クライアント151に送信する(ステップS117)。典型的には、オフライン認証支援サーバ101は、ユーザ認証支援アプリケーション101c2を動作させ、それによって複数の検証コード193をオフライン二要素認証クライアントに送信する。次に、オフライン二要素認証クライアント151は、検証コード受信手段162により、オフライン認証支援サーバ101から送信された複数の検証コード193を受信し、それを対応するパターンシード値183と関連付けて検証データ記憶部161に記憶する(ステップS119)。典型的には、オフライン二要素認証クライアント151上で動作しているログオン認証モジュール「SmxGinaDLL」が、複数の検証コード193を受信して記憶させる。以上の動作によって、入力ユーザID181に対応した検証データ194がオフライン二要素認証クライアント151に記憶され、オフラインユーザ認証の準備が完了したことになる。
なお、検証データ要求は、オフライン認証支援サーバ101にネットワークを介さずに直接入力することもできる。この場合、オフライン認証支援サーバ101に入力ユーザID181を伴う検証データ要求を入力し、それに対応する検証データ194を記憶媒体などに出力させる。オフライン二要素認証クライアント151は、当該記憶媒体から検証データ194を読み込んで記憶する。
[オフラインユーザ認証システム100の動作(2)−ユーザ認証]
次に、オフラインでのユーザ認証の動作フローについて説明する。図4は、オフライン二要素ユーザ認証システム100のオフラインユーザ認証の動作フロー図である。まず、認証を受けようとするユーザは、ユーザID入力手段152を通じて、そのユーザIDをオフライン二要素認証クライアント151に入力する(ステップS151)。ユーザは、典型的には、オフライン二要素認証クライアント151がドメインネットワークに接続されていない状態で、オフライン二要素認証クライアント151のWindowsのログオン認証画面197Aにおいて、ユーザー名フィールドに自己のユーザIDを入力し、ログオン先としてドメイン名またはコンピュータ名を指定したユーザ認証の要求を行うことによって、入力ユーザID181を入力する。次に、オフライン二要素認証クライアント151は、パターンシード値選択手段163により、入力ユーザID181が、検証データ記憶部161に記憶されているユーザID102aに含まれていることを確認する(ステップS153)。これによって、認証を受けようとするユーザに関連付けられた検証データ194が記憶されており、オフラインユーザ認証を行うことができることを確認する。次に、オフライン認証クライアント151は、パターンシード値選択手段163により、入力ユーザID181に関連付けられた複数のパターンシード値183の中から、所定の規則により1つのパターンシード値183を選択する(ステップS155)。選択されるパターンシード値183としては、好適には、次にオフライン認証支援サーバ101から検証データ194を新しく取得して記憶するまでは、記憶された複数のパターンシード値183のうち、当該ユーザの認証に使用するためにすでに選択されたものは選択されない。このようにすることによって、1回のオフラインユーザ認証ごとに、異なる提示パターン191を表示させることができ、総当り攻撃を排除できるため、よりセキュリティを向上させることができる。パターンシード値183が例えば100個記憶されている場合は、新しく検証データ194を取得するまでの間、連続して100回、オフラインユーザ認証を実施することができることになる。選択されていないパターンシード値183が少なくなってくると、その旨の警告が表示される。すべてのパターンシード値183が選択されてしまうと、それ以上の新しいユーザ認証はできない。次に、オフライン認証クライアント151は、検証コード特定手段164により、入力ユーザID181に関連付けられた複数の検証コード193の中から、ステップS155で選択されたパターンシード値183に対応する検証コードを特定する(ステップS157)。次に、オフライン認証クライアント151は、ユーザにクライアント識別情報102cの取得先を選択させ、選択された取得先からクライアント識別情報取得手段171によりクライアント識別情報102cを取得する(ステップS159)。なお、クライアント識別情報102cの登録時における取得先が記憶装置151c内の所定領域に記憶されている場合には、その取得先の情報を使用することによって、オフライン認証クライアント151においてクライアント識別情報102cの取得先は自動的に設定されることになる。この場合、ユーザによるクライアント識別情報102cの取得先の選択は不要である。次に、オフライン認証クライアント151は、パターン要素列生成手段155により、ステップS159で取得されたクライアント識別情報102cと、ステップS157で選択されたパターンシード値183とに基づいて所定のパターン要素列生成規則により提示パターン191を構成するパターン要素列190を生成する(ステップS161)。この所定のパターン要素列生成規則は、ステップS111において説明したものと全く同じものである。次に、オフライン二要素認証クライアント151は、パターン表示手段156により、生成されたパターン要素列190のそれぞれのパターン要素を4つの4×4のマトリクスからなるパターンのそれぞれの要素の位置に配置した提示パターン191を表わす画像を生成し、それをオフライン二要素認証クライアント151の画面に表示させる(ステップS163)。典型的には、図9に示されるように、ログオン認証画面197Aに続いて、提示パターン191を含むログオン認証画面197Bが表示させられる。
次に、認証を受けようとするユーザは、オフライン二要素認証クライアント151の画面に表示された提示パターン191の特定の位置に表示されたパターン要素(0から9のいずれかの数字)を選択したり、提示パターン191に基づかない固定の数字などのキャラクターを入力したりすることを順番に実施することによって、自分のワンタイムパスワード導出ルール102bを提示パターン191に適用した結果であるワンタイムパスワード192をオフライン二要素認証クライアント151に入力する。オフライン二要素認証クライアント151は、ワンタイムパスワード入力手段157により、ワンタイムパスワード192の入力を受け付ける(ステップS165)。
次に、オフライン二要素認証クライアント151は、ユーザ認証手段165により、入力されたワンタイムパスワード192に検証コード193の生成時に使用したものと同じ一方向関数演算を実施したものと、特定された検証コード193とを比較し、それらが等しければ、当該ユーザのユーザ認証が成功したものと判定する(ステップS167)。認証が成功すると、以下のように、ユーザ認証の利用形態に応じたサービスが許可されることになる。すなわち、Windowsのログオン認証の場合には、Windowsが起動してそのユーザに対応する環境が提供される。
なお、認証のための要素の数を実質的に三要素以上の多要素に拡張することを目的として、複数のクライアント識別情報102cを同時にパターンシード値183と組み合わせて提示パターン191を生成するように構成するためには、クライアント識別情報102cを扱う手段やステップにおいて、複数のクライアント識別情報102cを使用するように本発明を構成すればいい。具体的には、パスワード記憶部102は、ユーザのユーザIDと当該ユーザのワンタイムパスワード導出ルールと当該ユーザが使用するオフライン二要素認証クライアント151をそれぞれ識別する複数のクライアント識別情報102cとをお互いに関連付けてあらかじめ記憶するものであり、パターンシード値発生手段104は、複数のクライアント識別情報と組み合わされて提示パターンをユニークに決定する値であるパターンシード値を所定の発生規則により発生するものであり、クライアント識別情報取得手段171は、認証を受けようとするユーザが使用しているオフライン認証クライアント151を識別する複数のクライアント識別情報102cを取得するものであり、パターン要素列生成手段155は、取得された複数のクライアント識別情報と選択されたパターンシード値183とに基づいて、所定のパターン要素列生成規則によりパターン要素列190を生成するものであり、検証コード生成手段106は、受信したユーザIDに関連付けられた複数のクライアント識別情報102cおよび発生させられたそれぞれのパターンシード値183に基づいて所定のパターン要素列生成規則により生成されるパターン要素列から構成される提示パターンのそれぞれに対応させて、受信したユーザIDに関連付けられたワンタイムパスワード導出ルールをそれぞれの提示パターンに含まれるパターン要素に適用した結果に一方向関数演算を実施したものである検証コードを生成するものであるように構成するとよい。
なお、以上に説明した動作フローにおいて、あるステップにおいて、そのステップではまだ利用することができないはずのデータを利用しているなどの動作フロー上の矛盾が生じない限りにおいて、動作フローを自由に変更することができる。
以上に説明してきた各実施形態は、本発明を説明するための例示であり、本発明はこれらの実施形態に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。