以下、認証装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
本実施の形態において、一方向性変換関数の実行回数を少なくできるために、認証処理を高速に行う認証システムについて説明する。特に、認証処理の際の被認証装置における一方向性変換関数の実行回数が0となるため、被認証装置の負荷が極めて小さくて良い認証システムについて説明する。
図1は、本実施の形態における認証システムAの概念図である。認証システムAは、認証装置1、および1または2以上の被認証装置2を備える。認証装置1と1以上の各被認証装置2とは、インターネット等のネットワークを介して、通信可能である。認証装置1は、被認証装置2を認証する装置である。認証装置1は、被認証装置2と通信可能な情報処理装置であり、例えば、いわゆるクラウドサーバ、ASPサーバ等であるが、その種類は問わない。被認証装置2は、認証される装置である。被認証装置2は、例えば、いわゆるパーソナルコンピュータ、タブレット端末、スマートフォン、携帯電話、テレビ、自動車等のあらゆる機器が考えられ、その種類は問わない。また、認証装置1と1以上の各被認証装置2との通信手段やネットワークの種類は問わないことは言うまでもない。
図2は、本実施の形態における認証システムAのブロック図である。図3は、本実施の形態における認証システムAを構成する被認証装置2のブロック図である。
認証システムAは、認証装置1、1または2以上の被認証装置2を備える。なお、認証システムAは、2以上の認証装置1を備えても良い。
認証装置1は、第一格納部11、第一処理部12、第一送信部13、および第一受信部14を備える。第一格納部11は、第一パスワード格納部111、第一乱数格納部112、第一認証情報格納部113、第一秘匿情報納部114、第一記号格納部115、および第一データ格納部116を備える。第一処理部12は、第一乱数生成部121、第一排他的論理和部122、第一変換部123、第一秘匿情報生成部124、第一演算部125、第一認証部126、および第一認証結果処理部127を備える。
被認証装置2は、第二格納部21、第二受信部22、第二処理部23、および第二送信部24を備える。第二格納部21は、第二認証情報格納部211、および第二秘匿情報納部212を備える。第二処理部23は、第二排他的論理和部231、および第二演算部232を備える。
認証装置1を構成する第一格納部11には、各種の情報が格納される。各種の情報とは、例えば、後述するパスワード、後述する乱数、後述する認証情報、後述する秘匿情報、後述する記号、後述する第一データ等である。
第一パスワード格納部111には、パスワード(S)が格納される。なお、パスワード(S)は、任意の情報であり、何でも良い。Sは、例えば、「ABC」「125XYZ」「あいうえおQ!」等である。なお、パスワード(S)は、例えば、被認証装置2の識別子として利用されても良い。
第一乱数格納部112には、第nの乱数(Nn)が格納される。なお、nは1以上の自然数である。第一乱数格納部112には、第1の乱数(N1)、第2の乱数(N2)、・・・第nの乱数(Nn)等の多数の乱数が格納されても良いし、最新の乱数である第nの乱数(Nn)のみ格納されても良い。第一乱数格納部112の第nの乱数(Nn)は、通常、認証装置1が生成するが、予め1または2以上の乱数が第一乱数格納部112に格納されていても良い。
第一認証情報格納部113には、第nの認証情報(An)が格納される。認証情報とは、認証に利用される情報であり、後述する一方向性変換関数が適用された結果の情報である。第一認証情報格納部113には、第1の認証情報(A1)、第2の認証情報(A2)、・・・第nの認証情報(An)等の多数の認証情報が格納されても良いし、第n回目の認証で使用する第nの認証情報(An)と第n+1の認証情報(An+1)の認証情報のみが格納されても良い。第一認証情報格納部113の第nの認証情報(An)は、通常、認証装置1が生成するが、第一認証情報格納部113に1または2以上の認証情報(A1,A2,・・・,An)が予め格納されていても良い。
第一秘匿情報納部114には、第nの秘匿情報(Mn)が格納される。秘匿情報は、認証に使用する秘密の情報である。秘匿情報の内容や種類等は問わない。第一秘匿情報納部114には、第1の秘匿情報(M1)、第2の秘匿情報(M2)、・・・第nの秘匿情報(Mn)等の多数の秘匿情報が格納されても良いし、第n回目の認証で使用する第nの秘匿情報(Mn)と第n+1の秘匿情報(Mn+1)の秘匿情報のみが格納されても良い。第一秘匿情報納部114の第nの秘匿情報(Mn)は、通常、認証装置1が生成するが、第一秘匿情報納部114に1または2以上の秘匿情報(M1,M2,・・・,Mn)が予め格納されていても良い。
第一記号格納部115には、第nの記号が格納される。一の記号は、他の記号と識別可能であれば良い。記号は、順序性を有する情報であることは好適である。記号は、例えば、1以上の自然数(1,2,・・・,n)である。記号は、例えば、1以上のアルファベットから構成する文字列である。第nの乱数(Nn)、第nの認証情報(An)、第nの秘匿情報(Mn)のnは、記号である。第一記号格納部115の第nの記号は、通常、認証装置1が生成するが、第一記号格納部115に1または2以上の記号が予め格納されていても良い。なお、認証装置1における記号の生成とは、例えば、数値のインクリメントである。
第一データ格納部116には、第一データ(α)が格納される。第一データ(α)は、第nの認証情報(An)と第n+1の認証情報(An+1)との排他的論理和の演算(An XOR An+1)を行い、取得されたデータである。また、第一データ(α)は、第nの認証情報(An)と第n+1の認証情報(An+1)と第nの秘匿情報(Mn)との排他的論理和の演算(An XOR An+1 XOR Mn)を行い、取得されたデータであることは好適である。AnとAn+1とMnとの排他的論理和の演算は、AnとAn+1とを用いた排他的論理和の演算である。なお、かかる演算は、通常、認証装置1が行うが、他の装置で行われても良い。第一データ格納部116の第一データ(α)は、通常、認証装置1が生成するが、予め格納されていても良い。第一データ格納部116には、1または2以上の第一データ(α)が、予め格納されていても良い。2以上の各第一データ(α)は、排他的論理和の演算「(An XOR An+1)または(An XOR An+1 XOR Mn)」のnが異なるデータである。また、n個の第一データ(α)は、例えば、添字のnを、1からnまで1ずつずらしながら排他的論理和の演算を行った結果のデータである。
第一処理部12は、各種の処理を行う。各種の処理とは、例えば、第一乱数生成部121、第一排他的論理和部122、第一変換部123、第一秘匿情報生成部124、第一演算部125、第一認証部126、第一認証結果処理部127が行う処理である。
第一乱数生成部121は、第n+1の乱数(Nn+1)を生成し、第一乱数格納部112に、少なくとも一時蓄積する。
第一乱数生成部121は、第一の乱数(N1)を生成し、第一乱数格納部112に、少なくとも一時蓄積する。また、第一乱数生成部121は、第n+1の乱数(Nn+1)を生成し、第一乱数格納部112に、少なくとも一時蓄積する。
なお、乱数を発生するアルゴリズムは問わない。また、乱数を発生する処理は公知技術であるので、詳細な説明は省略する。
また、第一乱数生成部121が乱数を生成するタイミングは問わない。例えば、第一乱数生成部121は、ユーザからの指示に応じて、乱数を生成する。例えば、第一乱数生成部121は、外部の装置から命令が受信されたことにより、乱数を生成する。例えば、第一乱数生成部121は、予め決められた時刻になった場合に、乱数を生成する。
第一排他的論理和部122は、2以上の情報に対して排他的論理和の演算を行い、演算結果を取得する。
第一排他的論理和部122は、例えば、パスワード(S)と第一の乱数(N1)との排他的論理和の演算(S XOR N1)を行い、演算結果を取得する。また、第一排他的論理和部122は、例えば、パスワード(S)と第n+1の乱数(Nn+1)との排他的論理和の演算(S XOR Nn+1)を行い、演算結果を取得する。
また、第一排他的論理和部122は、例えば、第n+1の認証情報(An+1)と第nの認証情報(An)とを用いて、排他的論理和の演算(An+1 XOR An)を行い、第一データ(α)を取得する。
また、第一排他的論理和部122は、例えば、第n+1の認証情報(An+1)と第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、排他的論理和の演算(An+1 XOR An XOR Mn)を行い、第一データ(α)を取得する。
また、第一排他的論理和部122は、例えば、第n+1の認証情報(An+1)と第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、演算((An+1 XOR An) + Mn))を行い、第一データ(α)を取得する。なお、ここでの「+」は他の演算(例えば、「-」「×」等)でも良い。つまり、第一排他的論理和部122は、排他的論理和以外の演算を含めて、演算を実行しても良い。
第一変換部123は、第一排他的論理和部122が取得した演算結果に対して一方向性変換関数Hを施し、第一の認証情報(A1)を取得し、第一認証情報格納部113に蓄積する。上述したように、一方向性変換関数Hは、例えば、ハッシュ関数であるが、その種類は問わない。なお、ここでの演算結果は、パスワード(S)と第一の乱数(N1)との排他的論理和の演算(S XOR N1)の結果である。
第一変換部123は、演算結果に対して一方向性変換関数Hを施し、第n+1の認証情報(An+1)を取得し、当該第n+1の認証情報(An+1)を第一認証情報格納部113に蓄積する。なお、一方向性変換関数Hを施すことは、一方向性変換関数を実行することと言っても良い。ここで、蓄積とは、第n+1の認証情報(An+1)を第nの認証情報(An)に上書きすることでも良いし、追記することでも良い。
なお、第一変換部123が使用する演算結果は、例えば、第一排他的論理和部122が取得した情報である。
第一秘匿情報生成部124は、認証に使用する秘密の情報である第一の秘匿情報(M1)を生成し、当該第一の秘匿情報(M1)を第一秘匿情報納部114に、少なくとも一時蓄積する。ここで、第一の秘匿情報(M1)は、任意の情報であり、何でも良い。なお、パスワード(S)、乱数(N)、認証情報(A)のビット数と、秘匿情報(M)のビット数とは同じであることは好適である。
また、第一秘匿情報生成部124が第一の秘匿情報(M1)を生成する方法は問わない。第一秘匿情報生成部124は、第一の秘匿情報(M1)が取得できれば良い。第一秘匿情報生成部124は、例えば、第一格納部11に格納されている秘匿情報の候補の中から情報を選択する。第一秘匿情報生成部124は、例えば、予め格納されている元情報(秘匿情報を生成するための元になる情報)に対して予め決められた処理を行い、新しい秘匿情報を取得する。なお、予め決められた処理とは、例えば、予め格納されている関数に元情報をパラメータとして与えて、当該関数の実行することである。
第一演算部125は、第nの認証情報(An)と第n+1の認証情報(An+1)とを用いて、第一演算を行い、第一演算結果を取得する。ここで、第一演算は、例えば、和、差、乗算、除算、平均値算出等であり、演算の種類は問わない。第一演算部125は、例えば、和演算「β=An+An+1」により、βを取得する。
第一演算部125は、例えば、第nの認証情報(An)と第n+1の認証情報(An+1)と第nの秘匿情報(Mn)とを用いて、第一演算を行い、第一演算結果を取得する。第一演算部125は、例えば、「β=An+An+1+Mn」、「β=An+An+1-Mn」、「β=(An-An+1)×Mn」により、第一演算結果を取得する。
また、第一演算部125は、例えば、第nの秘匿情報(Mn)、第n+1の認証情報(An+1)と、第nの認証情報(An)のうちの1以上の情報を用いて演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第一秘匿情報納部114に、少なくとも一時蓄積する。なお、かかる演算の種類は問わない。また、かかる演算は、例えば、「Mn+1=Mn+An」、「Mn+1=An+1+An+Mn」、「Mn+1=Mn+An+1」、「Mn+1=Mn+x(xは定数)」である。なお、「+」は他の演算でも良いことは言うまでもない。
また、第一演算部125は、例えば、第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第一秘匿情報納部114に、少なくとも一時蓄積する。
なお、第一排他的論理和部122が第一データ(α)を算出する際、または第一演算部125が第一演算結果を算出する際の、少なくともどちらか一方では、秘匿情報(M)が使用されることは好適である。なお、第一排他的論理和部122が第一データ(α)を算出する際と第一演算部125が第一演算結果を算出する際の両方、秘匿情報(M)が使用されても良い。
第一認証部126は、第一演算結果と第二データ(β)とが予め決められた関係を有するか否かを判断する。予め決められた関係とは、通常、一致である。ただし、予め決められた関係は、第一演算結果と、第二データ(β)から導出されるデータとが一致する関係でも良い。かかる場合、被認証装置2は、第n+1の認証情報(An+1)と第nの認証情報(An)とを用いて第一演算が行われた結果を送信するのではなく、第n+1の認証情報(An+1)と第nの認証情報(An)とを用いて第一演算が行われた結果から導出した第二データ(β)を認証装置1に送信する。
また、(An+1)と(An)とを用いて第一演算が行われた演算結果から導出した第二データ(β)は、例えば、関数f(演算結果)により取得されるデータである。かかる場合、予め決められた関係は、「関数f(第一演算結果)=第二データ(β)」である。
第一認証部126は、例えば、第一演算結果と第二データ(β)とが一致するか否かを判断する。
ここで、第一演算結果は、第nの認証情報(An)と第n+1の認証情報(An+1)とを用いて、第一演算(例えば、和演算)を行い、取得された情報である。第nの認証情報(An)と第n+1の認証情報(An+1)とは、第一データ(α)が取得される元になった情報である。第二データ(β)は、後述する第一受信部14が受信した情報である。
第一認証部126は、例えば、第一演算部125が取得した第一演算結果と、第一受信部14が受信した第二データ(β)とが一致するか否かを判断する。なお、第一演算結果は、第一格納部11に予め格納されていても良い。
第一認証結果処理部127は、第一認証部126の判断結果を用いた処理を行う。第一認証結果処理部127は、例えば、第一認証部126の判断結果を被認証装置2に送信する。また、第一認証結果処理部127は、例えば、判断結果が認証許可である場合、被認証装置2またはユーザのログインを許可する。また、第一認証結果処理部127は、例えば、判断結果が認証許可である場合、被認証装置2を動作可能にする。また、第一認証結果処理部127は、例えば、判断結果が認証不許可である場合、被認証装置2にエラーメッセージを送信する。
第一送信部13は、第一データ(α)を被認証装置2に送信する。第一送信部13は、例えば、記号nと第一データ(α)とを被認証装置2に送信する。なお、記号nは、例えば、認証の毎にインクリメントされる自然数である。
第一送信部13は、第一の認証情報(A1)を被認証装置2に送信する。第一送信部13は、第一の認証情報(A1)と第一の秘匿情報(M1)とを被認証装置2に送信しても良い。
第一受信部14は、第二データ(β)を被認証装置2から受信する。第二データ(β)は、例えば、第n+1の認証情報(An+1)と、第nの認証情報(An)とを用いて第一演算が行われた結果である。第n+1の認証情報(An+1)は、例えば、第一送信部13が送信した第一データ(α)と第nの認証情報(An)との排他的論理和の演算(α XOR An)により取得された情報である。第二データ(β)は、例えば、第一データ(α)と第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、演算が行われた結果である。第二データ(β)は、例えば、第n+1の認証情報(An+1)と、第nの認証情報(An)とを用いて第一演算を行い、その演算結果に対して予め決められた演算を行った結果でも良い。
第一受信部14は、通常、第一送信部13における第一データ(α)の送信に応じて、第二データ(β)を被認証装置2から受信する。
認証装置1の認証処理の開始のトリガーは問わない。例えば、被認証装置2からの指示を受信したことにより、認証装置1は認証処理を開始する。また、例えば、図示しない受付部がユーザからの指示を受け付けたことに応じて、認証装置1は認証処理を開始する。例えば、図示しない受付部が外部の装置からの命令を受信したことにより、認証装置1は認証処理を開始する。例えば、第一処理部12が予め決められた時刻になったことを検知した場合に、認証装置1は認証処理を開始する。
被認証装置2を構成する第二格納部21には、各種の情報が格納される。各種の情報とは、例えば、認証情報、秘匿情報である。
第二認証情報格納部211には、第nの認証情報(An)が格納される。なお、第1の認証情報(A1)は、通常、認証装置1から受信された情報である。第二以降の認証情報(A2,A3,・・・,An)は、通常、被認証装置2で生成された情報である。第二認証情報格納部211には、第1の認証情報(A1)、第2の認証情報(A2)、・・・第nの認証情報(An)等の多数の認証情報が格納されても良い。
第二秘匿情報納部212には、第nの秘匿情報(Mn)が格納される。なお、第1の秘匿情報(M1)は、通常、認証装置1から受信された情報である。第二以降の秘匿情報(M2, M3,・・・,Mn)は、通常、被認証装置2で生成された情報である。第二秘匿情報納部212には、第1の秘匿情報(M1)、第2の秘匿情報(M2)、・・・第nの秘匿情報(Mn)等の多数の秘匿情報が格納されても良いし、第n回目の認証で使用する第nの秘匿情報(Mn)と第n+1の秘匿情報(Mn+1)の秘匿情報のみが格納されても良い。
第二受信部22は、第一データ(α)を認証装置1から受信する。第二受信部22は、例えば、記号nと第一データ(α)とを認証装置1から受信する。
第二受信部22は、例えば、第一の認証情報(A1)を受信し、当該第一の認証情報(A1)を第二認証情報格納部211に、少なくとも一時蓄積する。また、第二受信部22は、例えば、第一の秘匿情報(M1)を受信し、当該第一の秘匿情報(M1)を第二秘匿情報納部212に、少なくとも一時蓄積する。
第二処理部23は、各種の処理を行う。各種の処理とは、例えば、第二排他的論理和部231、第二演算部232が行う処理である。
第二排他的論理和部231は、例えば、第一データ(α)と第nの認証情報(An)とを用いて、排他的論理和の演算(α XOR An)を行い、第n+1の認証情報(An+1)を取得する。
第二排他的論理和部231は、例えば、第一データ(α)と第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、排他的論理和の演算(α XOR An XOR Mn)を行い、第n+1の認証情報(An+1)を取得する。
第二演算部232は、第二排他的論理和部231が取得した第n+1の認証情報(An+1)と、第nの認証情報(An)とを用いて、第一演算を行い、第二データ(β)を取得する。なお、第一演算は、上述したように、例えば、「+」であるが、「-」「*」等、問わない。
第二演算部232は、例えば、第nの秘匿情報(Mn)、第n+1の認証情報(An+1)、第nの認証情報(An)のうちの1以上の情報を用いて演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第二秘匿情報納部212に、少なくとも一時蓄積する。なお、かかる演算の種類は問わない。また、かかる演算は、例えば、「Mn+1=Mn+An」、「Mn+1=An+1+An+Mn」、「Mn+1=Mn+An+1」、「Mn+1=Mn+x(xは定数)」である。なお、「+」は他の演算でも良いことは言うまでもない。
第二演算部232は、例えば、第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得し、第二秘匿情報納部212に蓄積する。ここで、第二演算は、例えば、和、差、乗算、除算、平均値算出等である。ただし、第二演算の種類は問わない。第二演算部232は、例えば、和演算「Mn+1=An+Mn」により、βを取得する。また、第一演算と第二演算とは、同じ種類の演算でも(例えば、両方とも+)良いし、異なる種類の演算(例えば、一方が+、他方が-)でも良い。なお、第二演算部232は、例えば、第n+1の認証情報(An+1)と第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得し、第二秘匿情報納部212に蓄積しても良い。かかる場合の第二演算の種類も問わない。
第二送信部24は、第二データ(β)を認証装置1に送信する。なお、第二データ(β)は、通常、第二演算部232が取得した情報である。
第一格納部11、第一パスワード格納部111、第一乱数格納部112、第一認証情報格納部113、第一秘匿情報納部114、第一記号格納部115、第一データ格納部116、第二格納部21、第二認証情報格納部211、および第二秘匿情報納部212は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
第一格納部11等に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が第一格納部11等で記憶されるようになってもよく、通信回線等を介して送信された情報が第一格納部11等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が第一格納部11等で記憶されるようになってもよい。
第一処理部12、第一乱数生成部121、第一排他的論理和部122、第一変換部123、第一秘匿情報生成部124、第一演算部125、第一認証部126、第一認証結果処理部127、第二処理部23、第二排他的論理和部231、および第二演算部232は、通常、MPUやメモリ等から実現され得る。第一処理部12等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
第一送信部13、および第二送信部24は、通常、無線または有線の通信手段で実現されるが、放送手段で実現されても良い。
第一受信部14、および第二受信部22は、通常、無線または有線の通信手段で実現されるが、放送を受信する手段で実現されても良い。
次に、認証システムAの動作について説明する。まず、認証システムAにおける初期登録処理の例を、図4のフローチャートを用いて説明する。なお、動作開始時に、認証装置1は、第一パスワード格納部111にパスワード(S)を保持している、とする。
(ステップS401)認証装置1の第一乱数生成部121は、第一の乱数(N1)を生成し、第一乱数格納部112に蓄積する。
(ステップS402)第一排他的論理和部122は、格納されているパスワード(S)とステップS401で取得された第一の乱数(N1)との排他的論理和の演算(S XOR N1)を行い、第一演算結果を取得する。また、第一変換部123は、第一排他的論理和部122が取得した第一演算結果に対して一方向性変換関数Hを施し、第一の認証情報(A1)を取得する。また、第一秘匿情報生成部124は、認証に使用する秘密の情報である第一の秘匿情報(M1)を生成する。
(ステップS403)第一変換部123は、取得した第一の認証情報(A1)を第一認証情報格納部113に保存する。また、第一秘匿情報生成部124は、生成した第一の秘匿情報(M1)を第一秘匿情報納部114に保存する。
(ステップS404)第一送信部13は、取得された第一の認証情報(A1)と第一の秘匿情報(M1)とを認証装置2に安全な手段で送信する。ここで、認証装置1の初期登録処理は完了する。
(ステップS405)被認証装置2の第二受信部22は、第一の認証情報(A1)を受信し、当該第一の認証情報(A1)を第二認証情報格納部211に蓄積する。また、第二受信部22は、第一の秘匿情報(M1)を受信し、当該第一の秘匿情報(M1)を第二秘匿情報納部212に蓄積する。ここで、被認証装置2の初期登録処理は完了する。なお、第二受信部22は、通常、第一の認証情報(A1)と第一の秘匿情報(M1)とを一緒に受信するが、別々に受信しても良い。
なお、図4のフローチャートにおいて、認証装置1は、第一の認証情報(A1)と第一の秘匿情報(M1)とを予め格納しており、かかる第一の認証情報(A1)と第一の秘匿情報(M1)とを被認証装置2に送信しても良い。かかる場合、ステップS401からステップS403の処理は不要である。
また、認証システムAが秘匿情報(Mn)を用いない場合、認証装置1は、第一の認証情報(A1)のみを被認証装置2に送信しても良い。
次に、認証システムAにおけるn回目の認証時の認証処理の例を、図5のフローチャートを用いて説明する。なお、n回目の認証処理の開始時に、認証装置1は、パスワード(S)を第一パスワード格納部111に保持しており、かつ乱数(Nn)を第一乱数格納部112に保持している、とする。また、n回目の認証処理の開始時に、被認証装置2は、第nの認証情報(An)を第二認証情報格納部211に保持しており、第nの秘匿情報(Mn)を第二秘匿情報納部212に保持している、とする。
(ステップS501)第一排他的論理和部122は、格納されているパスワード(S)と格納されている第nの乱数(Nn)との排他的論理和の演算(S XOR Nn)を行い、演算結果を取得する。次に、第一変換部123は、第一排他的論理和部122が取得した演算結果に対して一方向性変換関数Hを施し、第nの認証情報(An)を取得する。
(ステップS502)第一乱数生成部121は、第n+1の乱数(Nn+1)を生成し、第一乱数格納部112に保存する。
(ステップS503)第一排他的論理和部122は、パスワード(S)と第n+1の乱数(Nn+1)との排他的論理和の演算(S XOR Nn+1)を行い、演算結果を取得する。次に、第一変換部123は、当該演算結果に対して一方向性変換関数Hを施し、第n+1の認証情報(An+1)を取得する。次に、第一排他的論理和部122は、当該第n+1の認証情報(An+1)と第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、排他的論理和の演算(An+1 XOR An XOR Mn)を行い、第一データ(α)を取得する。
(ステップS504)第一送信部13は、ステップS503で取得された第一データ(α)を安全な手段で被認証装置2に送信する。なお、ここで、第一送信部13は、nをも被認証装置2に送信することは好適である。第一送信部13がnをも被認証装置2に送信する場合、例えば、過去の処理においてエラーが発生した場合にも対応でき、好適である。
(ステップS505)被認証装置2の第二受信部22は、第一データ(α)を認証装置1から受信する。そして、第二排他的論理和部231は、第一データ(α)と第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、排他的論理和の演算(α XOR An XOR Mn)を行い、演算結果(通常、第n+1の認証情報(An+1)に相当する情報)を取得する。次に、第二演算部232は、第二排他的論理和部231が取得した演算結果と、第nの認証情報(An)とを用いて、第一演算を行い、第二データ(β)を取得する。なお、ここでの第一演算は、例えば、「和」である。
(ステップS506)被認証装置2の第二送信部24は、ステップS505で取得された第二データ(β)を認証装置1に送信する。
(ステップS507)被認証装置2の第二演算部232は、第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第二秘匿情報納部212に蓄積する。ここで、被認証装置2のn回目の認証のための処理は完了する。
(ステップS508)認証装置1の第一受信部14は、被認証装置2から第二データ(β)を受信する。そして、第一演算部125は、第nの認証情報(An)と第n+1の認証情報(An+1)とを用いて、第一演算を行い、第一演算結果を取得する。次に、第一認証部126は、取得した第一演算結果が受信された第二データ(β)と一致するか否かを判断する。第一認証部126が一致すると判断した場合はステップS509に行き、一致しないと判断した場合はステップS510に行く。なお、第一演算は、ここでは、例えば、和演算である。
(ステップS509)ステップS509に制御が移る場合は、認証が成立した場合である。そして、第一変換部123は、ステップS503で取得した第n+1の認証情報(An+1)を第一認証情報格納部113に蓄積する。また、第一演算部125は、第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第一秘匿情報納部114に蓄積する。また、第一演算部125は、記号nをインクリメントする。なお、第一認証結果処理部127は、認証許可に対応する処理を行っても良い。また、第二演算は、ここでは、例えば、和演算である。
(ステップS510)ステップS510に制御が移る場合は、認証が不成立である場合である。そして、第一認証結果処理部127は、認証不許可に対応する処理を行う。かかる処理は、例えば、エラーメッセージ等の認証装置1への送付である。
ここで、認証装置1のn回目の認証処理は完了する。
なお、図5のフローチャートにおいて、n+1回以降の認証処理時にも、同様に動作が行われる。
また、図5のフローチャートにおいて、認証装置1は、第一の認証情報(A1)に対応する第一データ(α)(第一の認証情報(A1)と第二の認証情報(A2)とを用いて取得されたα)、第二の認証情報(A2)に対応する第一データ(α)(第二の認証情報(A2)と第三の認証情報(A3)とを用いて取得されたα)、・・・、第nの認証情報(An)に対応する第一データ(α)(第nの認証情報(An)と第n+1の認証情報(An+1)とを用いて取得されたα)等を予め格納していても良い。かかる場合、ステップS501からステップS503の処理は省略可能である。また、かかる場合、ステップS508の第一演算結果を取得する処理は省略可能である。
また、図5のフローチャートにおいて、認証装置1は、第一の第nの秘匿情報(M1)、・・・、第nの秘匿情報(Mn)を予め格納していても良い。かかる場合、ステップS509における第n+1の秘匿情報(Mn+1)を取得し、蓄積する処理は省略可能である。
また、認証システムAが秘匿情報(Mn)を用いない場合、第一データ(α)は秘匿情報(Mn)を用いずに算出された情報である。認証システムAが秘匿情報(Mn)を用いない場合、ステップS509で第n+1の秘匿情報(Mn+1)を算出する処理は必要ない。
以上、本実施の形態によれば、ワンタイムパスワードの認証処理において、一方向性変換関数の実行回数を少なくできるために、認証処理が高速に行える。なお、認証処理が高速に行えることは、認証処理の負荷を小さくできることである。
さらに具体的には、上記の図4、図5のフローチャートで示した通り、本認証方式では、認証時、認証装置1では認証情報の生成に、一方向性変換関数2回、第一演算(例えば、加算)1回、排他的論理和4回、第二演算(例えば、加算)1回を必要とする。そして、第一演算(例えば、加算)と排他的論理和と第二演算の各演算の処理負荷は、一方向性変換関数に比較して無視できるため、認証処理における処理負荷は、実質、一方向性変換関数の2回分の適用による負荷である、と言える。また、認証情報Anを保存しておけば、認証処理において、一方向性変換関数の適用は1回であり、極めて高速に認証処理が行える。
また、被認証装置2での処理負荷は、排他的論理和2回、第一演算(例えば、加算)1回、第二演算(例えば、加算)1回の処理の負荷であり、実質、それらの処理負荷は無視できる。
なお、上述した通り、本実施の形態において、次回認証情報と今回認証情報の融合演算(上記の第一演算)を、主として、加算としたが、次回認証情報と今回認証情報の融合演算を排他的論理和とする以外はあらゆる演算の使用が可能である。今回秘匿情報や任意の定数を付加する等も認められる。融合演算の組み合わせ情報を、今回認証情報によって秘匿化して認証装置1から被認証装置2へ送付し共有するなどのバリエーションも考えられる。
また、本実施の形態において、主として、次回秘匿情報を、今回認証情報と今回秘匿情報を加算することで算出したが、次回認証情報と今回秘匿情報の加算、あるいは今回認証情報と次回認証情報と今回秘匿情報の加算で算出しても良い。また、加算以外の演算、あるいは複数の演算の組み合わせにより次回秘匿情報を算出するようにしても良い。
また、上記の実施の形態において、認証終了後、認証装置1において、今回認証情報AnからH(An)を生成し、これを被認証装置2へ送付し、被認証装置2において被認証装置2で保持するAnから同様に生成したH(An)と比較し、同じであれば相互認証が成立するといった付加機能も実現でき得る。
さらに、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD-ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における認証装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、第nの認証情報(An)と第n+1の認証情報(An+1)との排他的論理和の演算(An XOR An+1)により取得された第一データ(α)が格納される第一データ格納部にアクセス可能なコンピュータを、前記第一データ(α)を被認証装置に送信する第一送信部と、前記第一送信部が送信した第一データ(α)と前記第nの認証情報(An)との排他的論理和の演算(α XOR An)により取得された第n+1の認証情報(An+1)と、前記第nの認証情報(An)とを用いて第一演算が行われ、取得された、第二データ(β)を前記被認証装置から受信する第一受信部と、前記第一送信部が送信した第一データ(α)が取得される元になった、第nの認証情報(An)と第n+1の認証情報(An+1)との第一演算の結果と、前記第一受信部が受信した第二データ(β)とが予め決められた関係を有するか否かを判断する第一認証部と、前記第一認証部の判断結果を用いた処理を行う第一認証結果処理部として機能させるためのプログラムである。
また、上記プログラムにおいて、前記第一データ格納部に格納されている第一データ(α)は、前記第n+1の認証情報(An+1)と前記第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、排他的論理和の演算(An+1 XOR An XOR Mn)を行い、取得されたデータであることは好適である。
また、本実施の形態における被認証装置2を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、第nの認証情報(An)が格納される第二認証情報格納部にアクセス可能なコンピュータを、第一データ(α)を認証装置から受信する第二受信部と、前記第一データ(α)と前記第nの認証情報(An)との排他的論理和の演算(α XOR An)を行い、第n+1の認証情報(An+1)を取得する第二排他的論理和部と、前記第二排他的論理和部が取得した前記第n+1の認証情報(An+1)と、前記第nの認証情報(An)とを用いて、第一演算を行い、第二データ(β)を取得する第二演算部と、前記第二データ(β)を前記認証装置に送信する第二送信部として機能させるためのプログラムである。
また、上記プログラムにおいて、前記第二排他的論理和部は、前記第一データ(α)と前記第nの認証情報(An)と前記第nの秘匿情報(Mn)とを用いて、排他的論理和の演算(α XOR An XOR Mn)を行い、第n+1の認証情報(An+1)を取得し、前記第二演算部は、前記第nの認証情報(An)と前記第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得するものとして、コンピュータを機能させるプログラムであることは好適である。
(実施の形態2)
本実施の形態において、実施の形態1と比較して秘匿情報を用いずに認証処理を行う点が異なる認証システムについて説明する。
本実施の形態における認証システムBの概念図は、符号の違いを除いて、認証システムAの概念図と同様である。認証システムBは、認証装置3、および1または2以上の被認証装置4を備える。認証装置3は、被認証装置4を認証する装置である。認証装置3は、被認証装置4と通信可能であれば何でも良い。認証装置3は、被認証装置4と通信可能な情報処理装置であり、例えば、いわゆるクラウドサーバ、ASPサーバ等であるが、その種類は問わない。被認証装置4は、認証される装置である。被認証装置4は、例えば、いわゆるパーソナルコンピュータ、タブレット端末、スマートフォン、携帯電話、テレビ、自動車等のあらゆる機器が考えられ、その種類は問わない。また、認証装置3と1以上の各被認証装置4との通信手段やネットワークの種類は問わないことは言うまでもない。
図6は、本実施の形態における認証システムBのブロック図である。
認証システムBは、認証装置3、および1または2以上の被認証装置4を備える。なお、認証システムBは、2以上の認証装置3を備えても良い。
認証装置3は、第一格納部31、第一処理部32、第一送信部13、および第一受信部14を備える。第一格納部31は、第一パスワード格納部111、第一乱数格納部112、第一認証情報格納部113、第一記号格納部115、および第一データ格納部116を備える。第一処理部32は、第一乱数生成部121、第一排他的論理和部122、第一変換部123、第一演算部125、第一認証部126、および第一認証結果処理部127を備える。
被認証装置4は、第二格納部41、第二受信部22、第二処理部43、および第二送信部24を備える。第二格納部41は、第二認証情報格納部211を備える。
認証装置3を構成する第一格納部31には、各種の情報が格納される。各種の情報とは、例えば、パスワード、乱数、認証情報等である。
被認証装置4を構成する第二格納部41には、各種の情報が格納される。各種の情報とは、例えば、認証情報等である。
次に、認証システムBの動作について説明する。まず、認証システムBの初期登録処理の例を図7のフローチャートを用いて説明する。なお、動作開始時に、認証装置3は、第一パスワード格納部111にパスワード(S)を保持している、とする。
(ステップS701)認証装置3の第一乱数生成部121は、第一の乱数(N1)を生成し、当該第一の乱数(N1)を第一乱数格納部112に蓄積する。
(ステップS702)第一排他的論理和部122は、格納されているパスワード(S)とステップS701で取得された第一の乱数(N1)との排他的論理和の演算(S XOR N1)を行い、演算結果を取得する。また、第一変換部123は、第一排他的論理和部122が取得した演算結果に対して一方向性変換関数Hを施し、第一の認証情報(A1)を取得する。
(ステップS703)第一変換部123は、ステップS702で取得した第一の認証情報(A1)を第一認証情報格納部113に保存する。
(ステップS704)第一送信部13は、取得された第一の認証情報(A1)を被認証装置4に送信する。ここで、認証装置3の初期登録処理は完了する。
(ステップS705)被認証装置4の第二受信部22は、第一の認証情報(A1)を受信し、当該第一の認証情報(A1)を第二認証情報格納部211に蓄積する。ここで、被認証装置4の初期登録処理は完了する。
なお、図7のフローチャートにおいて、認証装置1は、第一の認証情報(A1)を予め格納しており、かかる第一の認証情報(A1)を被認証装置2に送信しても良い。かかる場合、ステップS701からステップS703の処理は不要である。
次に、認証システムBにおけるn回目の認証時の認証処理の例を、図8のフローチャートを用いて説明する。なお、n回目の認証処理の開始時に、認証装置3は、パスワード(S)を第一パスワード格納部111に保持しており、かつ乱数(Nn)を第一乱数格納部112に保持している、とする。また、n回目の認証処理の開始時に、被認証装置4は、第nの認証情報(An)を第二認証情報格納部211に保持している、とする。
(ステップS801)第一排他的論理和部122は、格納されているパスワード(S)と格納されている第nの乱数(Nn)との排他的論理和の演算(S XOR Nn)を行い、演算結果を取得する。次に、第一変換部123は、第一排他的論理和部122が取得した演算結果に対して一方向性変換関数Hを施し、第nの認証情報(An)を取得する。
(ステップS802)第一乱数生成部121は、第n+1の乱数(Nn+1)を生成し、第一乱数格納部112に保存する。
(ステップS803)第一排他的論理和部122は、パスワード(S)と第n+1の乱数(Nn+1)との排他的論理和の演算(S XOR Nn+1)を行い、演算結果を取得する。次に、第一変換部123は、演算結果に対して一方向性変換関数Hを施し、第n+1の認証情報(An+1)を取得する。次に、第一排他的論理和部122は、第n+1の認証情報(An+1)と第nの認証情報(An)とを用いて、排他的論理和の演算(An+1 XOR An)を行い、第一データ(α)を取得する。
(ステップS804)第一送信部13は、ステップS803で取得された第一データ(α)を安全な手段で被認証装置2に送信する。なお、ここで、第一送信部13は、nをも被認証装置2に送信することは好適である。
(ステップS805)被認証装置2の第二受信部22は、第一データ(α)を認証装置3から受信する。そして、第二排他的論理和部231は、第一データ(α)と第nの認証情報(An)とを用いて、排他的論理和の演算(α XOR An)を行い、第n+1の認証情報(An+1)を取得する。次に、第二演算部232は、第二排他的論理和部231が取得した第n+1の認証情報(An+1)と、第nの認証情報(An)とを用いて、第一演算を行い、第二データ(β)を取得する。なお、ここでの第一演算は、例えば、「和」である。
(ステップS806)被認証装置2の第二送信部24は、ステップS805で取得された第二データ(β)を認証装置3に送信する。
(ステップS807)認証装置1の第一受信部14は、被認証装置2から第二データ(β)を受信する。そして、第一演算部125は、第一データ(α)の取得の元になった、第nの認証情報(An)と第n+1の認証情報(An+1)とを用いて、第一演算を行い、第一演算結果を取得する。次に、第一認証部126は、取得した第一演算結果が、受信された第二データ(β)と一致するか否かを判断する。第一認証部126が一致すると判断した場合はステップS808に行き、一致しないと判断した場合はステップS809に行く。なお、第一演算は、ここでは、例えば、和演算である。
(ステップS808)ステップS808に制御が移る場合は、認証が成立した場合である。そして、第一変換部123は、ステップS803で取得した第n+1の認証情報(An+1)を第一認証情報格納部113に蓄積する。また、第一演算部125は、記号nをインクリメントする。なお、第一認証結果処理部127は、認証許可に対応する処理を行っても良い。また、第二演算は、ここでは、例えば、和演算である。
(ステップS809)ステップS809に制御が移る場合は、認証が不成立である場合である。そして、第一認証結果処理部127は、認証不許可に対応する処理を行う。かかる処理は、例えば、エラーメッセージ等の認証装置1への送付である。
ここで、認証装置3のn回目の認証処理は完了する。
なお、図8のフローチャートにおいて、n+1回以降の認証処理時にも、同様に動作が行われる。
また、図8のフローチャートにおいて、認証装置1は、第一の認証情報(A1)に対応する第一データ(α)(第一の認証情報(A1)と第二の認証情報(A2)とを用いて取得されたα)、第二の認証情報(A2)に対応する第一データ(α)(第二の認証情報(A2)と第三の認証情報(A3)とを用いて取得されたα)、・・・、第nの認証情報(An)に対応する第一データ(α)(第nの認証情報(An)と第n+1の認証情報(An+1)とを用いて取得されたα)等を予め格納していても良い。かかる場合、ステップS801からステップS803の処理は省略可能である。
以上、本実施の形態によれば、ワンタイムパスワードの認証処理において、一方向性変換関数の実行回数を少なくできるために、認証処理が高速に行える。
さらに、本実施の形態における認証装置3を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、第nの認証情報(An)と第n+1の認証情報(An+1)との排他的論理和の演算(An XOR An+1)により取得された第一データ(α)が格納される第一データ格納部にアクセス可能なコンピュータを、前記第一データ(α)を被認証装置に送信する第一送信部と、前記第一送信部が送信した第一データ(α)と前記第nの認証情報(An)との排他的論理和の演算(α XOR An)により取得された第n+1の認証情報(An+1)と、前記第nの認証情報(An)とを用いて第一演算が行われ、取得された、第二データ(β)を前記被認証装置から受信する第一受信部と、前記第一送信部が送信した第一データ(α)が取得される元になった、第nの認証情報(An)と第n+1の認証情報(An+1)との第一演算の結果と、前記第一受信部が受信した第二データ(β)とが予め決められた関係を有するか否かを判断する第一認証部と、前記第一認証部の判断結果を用いた処理を行う第一認証結果処理部として機能させるためのプログラムである。
また、本実施の形態における被認証装置4を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、第nの認証情報(An)が格納される第二認証情報格納部にアクセス可能なコンピュータを、第一データ(α)を認証装置から受信する第二受信部と、前記第一データ(α)と前記第nの認証情報(An)との排他的論理和の演算(α XOR An)を行い、第n+1の認証情報(An+1)を取得する第二排他的論理和部と、前記第二排他的論理和部が取得した前記第n+1の認証情報(An+1)と、前記第nの認証情報(An)とを用いて、第一演算を行い、第二データ(β)を取得する第二演算部と、前記第二データ(β)を前記認証装置に送信する第二送信部として機能させるためのプログラムである。
(実施の形態3)
本実施の形態において、一方向性変換関数の実行回数を少なくできるために、認証処理を高速に行う認証システムについて説明する。特に、認証処理の際の被認証装置における一方向性変換関数の実行回数が0となるため、被認証装置の負荷が極めて小さくて良い認証システムについて説明する。
本実施の形態における認証システムCの概念図は、符号の違いを除いて、認証システムAの概念図と同様である。認証システムCは、認証装置5、および1または2以上の被認証装置6を備える。認証装置5と1以上の各被認証装置6は、インターネット等のネットワークを介して、通信可能である。認証装置5は、被認証装置6を認証する装置である。認証装置5は、被認証装置6と通信可能な情報処理装置であり、例えば、いわゆるクラウドサーバ、ASPサーバ等であるが、その種類は問わない。被認証装置6は、認証される装置である。被認証装置6は、例えば、いわゆるパーソナルコンピュータ、タブレット端末、スマートフォン、携帯電話、テレビ、自動車等のあらゆる機器が考えられ、その種類は問わない。また、認証装置5と1以上の各被認証装置6との通信手段やネットワークの種類は問わないことは言うまでもない。
図9は、本実施の形態における認証システムCのブロック図である。図10は、本実施の形態における認証システムCを構成する被認証装置6のブロック図である。
認証装置5は、第一格納部11、第一処理部52、第一送信部13、および第一受信部14を備える。第一処理部52は、第一乱数生成部121、第一排他的論理和部122、第一変換部123、第一秘匿情報生成部124、第一演算部525、第一認証部126、および第一認証結果処理部127を備える。
被認証装置6は、第二格納部21、第二受信部22、第二処理部63、および第二送信部24を備える。第二処理部63は、第二排他的論理和部231、および第二演算部632を備える。
第一演算部525は、第nの認証情報(An)と第n+1の認証情報(An+1)とを用いて、第一演算を行い、第一演算結果を取得する。ここで、第一演算は、例えば、和、差、乗算、除算、平均値算出等であり、演算の種類は問わない。第一演算部525は、例えば、和演算「第一演算結果=An+An+1」により、第一演算結果を取得する。
第一演算部525は、例えば、第nの認証情報(An)と第n+1の認証情報(An+1)と第nの秘匿情報(Mn)とを用いて、第一演算を行い、第一演算結果を取得する。第一演算部125は、例えば、「第一演算結果=An+An+1+Mn」により、第一演算結果を取得する。第一演算部125は、例えば、「第一演算結果=An+An+1-Mn」、「第一演算結果=(An-An+1)×Mn」により、第一演算結果を取得する。
また、第一演算部525は、例えば、第nの秘匿情報(Mn)、第n+1の認証情報(An+1)と、第nの認証情報(An)のうちの1以上の情報を用いて演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第一秘匿情報納部114に、少なくとも一時蓄積する。なお、かかる演算の種類は問わない。また、かかる演算は、例えば、「Mn+1=Mn+An」、「Mn+1=An+1+An+Mn」、「Mn+1=Mn+An+1」、「Mn+1=Mn+x(xは定数)」である。なお、「+」は他の演算でも良いことは言うまでもない。
また、第一演算部525は、例えば、第n+1の認証情報(An+1)と第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第一秘匿情報納部114に、少なくとも一時蓄積する。
なお、第一排他的論理和部122が第一データ(α)を算出する際、または第一演算部525が第一演算結果を算出する際の、少なくともどちらか一方では、秘匿情報(M)が使用されることは好適である。なお、第一排他的論理和部122が第一データ(α)を算出する際と第一演算部525が第一演算結果を算出する際の両方、秘匿情報(M)が使用されても良い。
第二演算部632は、例えば、第二排他的論理和部231が取得した第n+1の認証情報(An+1)と、第nの認証情報(An)と、第nの秘匿情報(Mn)とを用いて、第一演算を行い、第二データ(β)を取得する。なお、第一演算は、上述したように、例えば、「+」であるが、「-」「*」等、問わない。第二演算部632は、例えば、演算式「β=An+1+An+Mn」により、第二データ(β)を取得する。
第二演算部632は、第二排他的論理和部231が取得した第n+1の認証情報(An+1)と、第nの認証情報(An)とを用いて、第一演算を行い、第二データ(β)を取得する。なお、第一演算は、上述したように、例えば、「+」であるが、「-」「*」等、問わない。
第二演算部632は、例えば、第nの秘匿情報(Mn)、第n+1の認証情報(An+1)、第nの認証情報(An)のうちの1以上の情報を用いて演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第二秘匿情報納部212に、少なくとも一時蓄積する。なお、かかる演算の種類は問わない。また、かかる演算は、例えば、「Mn+1=Mn+An」、「Mn+1=An+1+An+Mn」、「Mn+1=Mn+An+1」、「Mn+1=Mn+x(xは定数)」である。なお、「+」は他の演算でも良いことは言うまでもない。 第二演算部632は、例えば、第n+1の認証情報(An+1)と第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得し、第二秘匿情報納部212に蓄積する。ここで、第二演算は、例えば、和、差、乗算、除算、平均値算出等である。ただし、第二演算の種類は問わない。第二演算部632は、例えば、和演算「Mn+1=An+1+Mn」により、βを取得する。また、第一演算と第二演算とは、同じ種類の演算でも(例えば、両方とも+)良いし、異なる種類の演算(例えば、一方が+、他方が-)でも良い。
第一処理部52、第一演算部525、第二処理部63、および第二演算部632は、通常、MPUやメモリ等から実現され得る。第一処理部52等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
次に、認証システムCの動作について説明する。まず、認証システムCにおける認証装置5、被認証装置6の初期登録処理は、各々認証装置1、被認証装置2の初期登録処理と同様であるので、説明を省略する。
次に、認証システムCにおけるn回目の認証時の認証処理の例を、図11のフローチャートを用いて説明する。なお、n回目の認証処理の開始時に、認証装置5は、パスワード(S)を第一パスワード格納部111に保持しており、かつ乱数(Nn)を第一乱数格納部112に保持している、とする。また、n回目の認証処理の開始時に、被認証装置6は、第nの認証情報(An)を第二認証情報格納部211に保持しており、第nの秘匿情報(Mn)を第二秘匿情報納部212に保持している、とする。
(ステップS1101)第一排他的論理和部122は、格納されているパスワード(S)と格納されている第nの乱数(Nn)との排他的論理和の演算(S XOR Nn)を行い、演算結果を取得する。次に、第一変換部123は、第一排他的論理和部122が取得した演算結果に対して一方向性変換関数Hを施し、第nの認証情報(An)を取得する。
(ステップS1102)第一乱数生成部121は、第n+1の乱数(Nn+1)を生成し、第一乱数格納部112に保存する。
(ステップS1103)第一排他的論理和部122は、パスワード(S)と第n+1の乱数(Nn+1)との排他的論理和の演算(S XOR Nn+1)を行い、演算結果を取得する。次に、第一変換部523は、当該演算結果に対して一方向性変換関数Hを施し、第n+1の認証情報(An+1)を取得する。次に、第一排他的論理和部122は、当該第n+1の認証情報(An+1)と第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、排他的論理和の演算(An+1 XOR An XOR Mn)を行い、第一データ(α)を取得する。
(ステップS1104)第一送信部13は、ステップS1103で取得された第一データ(α)を安全な手段で被認証装置2に送信する。なお、ここで、第一送信部13は、nをも被認証装置2に送信することは好適である。第一送信部13がnをも被認証装置2に送信する場合、例えば、過去の処理においてエラーが発生した場合にも対応でき、好適である。
(ステップS1105)被認証装置6の第二受信部22は、第一データ(α)を認証装置1から受信する。なお、第二受信部22は、第一データ(α)とnとを認証装置1から受信することは好適である。
そして、第二排他的論理和部231は、第一データ(α)と第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、排他的論理和の演算(α XOR An XOR Mn)を行い、演算結果(通常、第n+1の認証情報(An+1)に相当する情報)を取得する。次に、第二演算部632は、第二排他的論理和部231が取得した演算結果と、第nの認証情報(An)と第nの秘匿情報(Mn)とを用いて、第一演算を行い、第二データ(β)を取得する。なお、ここでの第一演算は、例えば、「和」である。つまり、例えば、演算式「β=(α XOR An XOR Mn)+An+Mn」により第二データ(β)が得られる。
(ステップS1106)被認証装置6の第二送信部24は、ステップS1105で取得された第二データ(β)を認証装置1に送信する。
(ステップS1107)被認証装置6の第二演算部632は、第n+1の認証情報(An+1)と第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第二秘匿情報納部212に蓄積する。また、第二演算部632は、記号nをインクリメントする。ここで、被認証装置2のn回目の認証のための処理は完了する。
(ステップS1108)認証装置5の第一受信部14は、被認証装置6から第二データ(β)を受信する。そして、第一演算部525は、第nの認証情報(An)と第n+1の認証情報(An+1)と第nの秘匿情報(Mn)とを用いて、第一演算を行い、第一演算結果を取得する。つまり、第一演算部525は、演算式「第一演算結果=An+An+1+Mn」により、第一演算結果を取得する。
次に、第一認証部126は、取得した第一演算結果が受信された第二データ(β)と一致するか否かを判断する。第一認証部126が一致すると判断した場合はステップS1109に行き、一致しないと判断した場合はステップS1110に行く。なお、第一演算は、ここでは、例えば、和演算である。
(ステップS1109)ステップS1109に制御が移る場合は、認証が成立した場合である。そして、第一変換部123は、ステップS1103で取得した第n+1の認証情報(An+1)を第一認証情報格納部113に蓄積する。また、第一演算部525は、第n+1の認証情報(An+1)と第nの秘匿情報(Mn)とを用いて、第二演算を行い、第n+1の秘匿情報(Mn+1)を取得し、当該第n+1の秘匿情報(Mn+1)を第一秘匿情報納部114に蓄積する。また、第一演算部525は、記号nをインクリメントする。なお、第一認証結果処理部127は、認証許可に対応する処理を行っても良い。また、第二演算は、ここでは、例えば、和演算である。
(ステップS1110)ステップS1110に制御が移る場合は、認証が不成立である場合である。そして、第一認証結果処理部127は、認証不許可に対応する処理を行う。かかる処理は、例えば、エラーメッセージ等の認証装置1への送付である。
ここで、認証装置1のn回目の認証処理は完了する。
なお、図11のフローチャートにおいて、n+1回以降の認証処理時にも、同様に動作が行われる。
また、図11のフローチャートにおいて、認証装置5は、第一の認証情報(A1)に対応する第一データ(α)(第一の認証情報(A1)と第二の認証情報(A2)とを用いて取得されたα)、第二の認証情報(A2)に対応する第一データ(α)(第二の認証情報(A2)と第三の認証情報(A3)とを用いて取得されたα)、・・・、第nの認証情報(An)に対応する第一データ(α)(第nの認証情報(An)と第n+1の認証情報(An+1)とを用いて取得されたα)等を予め格納していても良い。かかる場合、ステップS1101からステップS1103の処理は省略可能である。また、かかる場合、ステップS1108の第一演算結果を取得する処理は省略可能である。
また、図11のフローチャートにおいて、認証装置5は、第一の第nの秘匿情報(M1)、・・・、第nの秘匿情報(Mn)を予め格納していても良い。かかる場合、ステップS1109における第n+1の秘匿情報(Mn+1)を取得し、蓄積する処理は省略可能である。
また、認証システムCが秘匿情報(Mn)を用いない場合、第一データ(α)は秘匿情報(Mn)を用いずに算出された情報である。認証システムAが秘匿情報(Mn)を用いない場合、ステップS1109で第n+1の秘匿情報(Mn+1)を算出する処理は必要ない。
以上、本実施の形態によれば、ワンタイムパスワードの認証処理において、一方向性変換関数の実行回数を少なくできるために、認証処理が高速に行える。なお、認証処理が高速に行えることは、認証処理の負荷を小さくできることである。
さらに具体的には、上記の図4、図11のフローチャートで示した通り、本認証方式では、認証時、認証装置5では認証情報の生成に、一方向性変換関数2回、第一演算(例えば、加算)1回、排他的論理和4回、第二演算(例えば、加算)1回を必要とする。そして、第一演算(例えば、加算)と排他的論理和と第二演算の各演算の処理負荷は、一方向性変換関数に比較して無視できるため、認証処理における処理負荷は、実質、一方向性変換関数の2回分の適用による負荷である、と言える。また、認証情報Anを保存しておけば、認証処理において、一方向性変換関数の適用は1回であり、極めて高速に認証処理が行える。
また、被認証装置6での処理負荷は、排他的論理和2回、第一演算(例えば、加算)1回、第二演算(例えば、加算)1回の処理の負荷であり、実質、それらの処理負荷は無視できる。
なお、上述した通り、本実施の形態において、次回認証情報と今回認証情報の融合演算(上記の第一演算)を、主として、加算としたが、次回認証情報と今回認証情報の融合演算を排他的論理和とする以外はあらゆる演算の使用が可能である。今回秘匿情報や任意の定数を付加する等も認められる。融合演算の組み合わせ情報を、今回認証情報によって秘匿化して認証装置1から被認証装置2へ送付し共有するなどのバリエーションも考えられる。
また、本実施の形態において、主として、次回秘匿情報を、次回認証情報と今回秘匿情報を加算することで算出したが、今回認証情報と今回秘匿情報の加算、あるいは今回認証情報と次回認証情報と今回秘匿情報の加算で算出しても良い。また、加算以外の演算、あるいは複数の演算の組み合わせにより次回秘匿情報を算出するようにしても良い。
また、上記の実施の形態において、認証終了後、認証装置5において、今回認証情報AnからH(An)を生成し、これを被認証装置6へ送付し、被認証装置6において被認証装置2で保持するAnから同様に生成したH(An)と比較し、同じであれば相互認証が成立するといった付加機能も実現でき得る。
上記の実施の形態で説明した認証システムは、情報通信システム等において,例えば、利用者や通信相手の資格認証、あるいは認証毎に変わる認証情報を用いて暗号鍵を生成し、当該暗号鍵を用いた暗号通信を実現するワンタイムパスワード認証処理方式に関するものである。
そして、上記の実施の形態で説明した認証システムにおける認証処理方法は、一般的なワンタイムパスワード認証方法として、クラウドシステムやアプリケーション提供サービスシステム等のログイン時の認証に適用できることはもちろんのこと、高速に認証情報を更新できる利点から、その認証情報をシーズにして暗号鍵を生成し、情報送信単位毎に異なる鍵で暗号通信を実現することができる。これは、低レイヤの通信においても実現可能で、レイヤ3においてパケット毎に違う鍵での暗号通信を実現する等の応用が可能となる。
また、本認証処理方法は、極めて高速であるため、例えば、認証情報が64ビットの場合、64ビットの平文に対して当該認証情報を排他的論理和で加え合わせるバーナム暗号を用いれば、64ビットの情報送信単位毎に異なる鍵で暗号通信を実現することも可能となる。
例えば、IoTにおいて端末側を被認証部、端末収容装置を認証部とすれば、被認証部の処理負荷はほぼ0であるので、前記バーナム暗号を用いれば暗号化・復号の処理なしに暗号通信を実現することができる。これは、センサネットワークやICタグ・RFIDのネットワーク等の処理能力が限られた装置のネットワークに対して、暗号通信の機能を付加できるということを意味している。
今後、IoTのインフラが普及してくることに伴い、家電、コネクティッドカー、スマートグリッドのみならず、センサネットワークやICタグ等、処理能力の低い装置も含んだ処理系においてセキュリティ通信の実現が求められる場合が増加してくると予想される。本認証処理方法により、このような環境においても、簡易に高速な認証と鍵配送、および高速な暗号通信を実現できるため、適当な暗号方法を組み合わせれば様々な局面でIoTのセキュリティ対策を実現することができる。
また、図12は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態の認証装置1,3,5、被認証装置2,4,6を実現するコンピュータの外観の例を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図12は、このコンピュータシステム300の概観図であり、図13は、システム300のブロック図である。
図12において、コンピュータシステム300は、CD-ROMドライブを含むコンピュータ301と、キーボード302と、マウス303と、モニタ304とを含む。
図13において、コンピュータ301は、CD-ROMドライブ3012に加えて、MPU3013と、CD-ROMドライブ3012等に接続されたバス3014と、ブートアッププログラム等のプログラムを記憶するためのROM3015と、MPU3013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM3016と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク3017とを含む。ここでは、図示しないが、コンピュータ301は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。
コンピュータシステム300に、上述した実施の形態の認証装置1等の機能を実行させるプログラムは、CD-ROM3101に記憶されて、CD-ROMドライブ3012に挿入され、さらにハードディスク3017に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ301に送信され、ハードディスク3017に記憶されても良い。プログラムは実行の際にRAM3016にロードされる。プログラムは、CD-ROM3101またはネットワークから直接、ロードされても良い。
プログラムは、コンピュータ301に、上述した実施の形態の認証装置1等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム300がどのように動作するかは周知であり、詳細な説明は省略する。
なお、上記プログラムにおいて、情報を送信するステップや、情報を受信するステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、上記各実施の形態において、各処理は、単一の装置によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。