説明

RSAをベースとしたパスワード認証方式及びその応用

【課題】計算量と通信量を削減し、安全な、RSA及びパスワードに基づく相互認証のための新たな方式を提供する
【解決手段】本発明者が提案する新たな方式の一つによれば、サーバにおけるマスター鍵の計算は、サーバ自身が生成するRSA秘密鍵(d, N)と、サーバ自身に属する記憶装置に格納される認証データに基づいて行われる。一方、クライアントにおけるマスター鍵の計算は、サーバから送信される情報Uに基づいて行われる。この方式によれば、サーバはクライアントから送られてくる情報に関係なく、マスター鍵の計算を行うことができる。したがって、サーバは、クライアントとの通信を行なう前に(たとえばクライアントからの認証要求を受ける前に)、事前にマスター鍵の計算を済ませておくことができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、RSAをベースとしたパスワード認証方式及びその応用に関する。
【背景技術】
【0002】
現在までに、RSAをベースにしてパスワード認証を行う方式はいくつか提案されている。例えば、特開平7−245657号公報には、構内電子交換機が提供するサービス(Remote System Access)を公衆網から利用する際、電子交換機の内部にあるセキュリティ管理装置は利用者(発信者)から受信したパスワードコードと設定しておいたパスワードコードを比較することで認証を行う方式が開示されている。しかしながら、この方式は、攻撃者が利用者に成りすませるため安全ではない。
【0003】
また、特開平62−190943号公報には、各ノードが相手のRSA公開鍵で配送鍵を暗号化した暗号文とその暗号文に自分の署名鍵で署名した署名文を付け、相手側に送るとともに、配送鍵を使って共通鍵暗号で共通鍵暗号方式に使うデータ通信用の鍵をパスワードとともに暗号化して送ることで認証を行う方式が開示されている。この方式では、さらに、RSA暗号用の秘密鍵はマスター鍵で暗号化され保存される。しかしながら、この方式は、自分のRSA公開鍵をほかのノートに配送する際認証を行わない。つまり、攻撃者があるノードに成りすまして自分が作ったRSA公開鍵をほかのノードに送ることで、そのノードからの配送鍵、データ通信用の鍵、パスワードを得ることができるため安全ではない。
【0004】
このほか、特開平9−107352号公報には、データ署名に必要とする秘密鍵を携帯可能なハウジング内に格納して、利用者から入力されたパスワードが正しい時のみ、署名生成用の演算処理を行う方式が開示されている。ただし、この方式を安全に利用するには、秘密鍵を保存している携帯可能なハウジングが外部からアクセスや読み取りが不可能である必要があり、デバイスの耐タンパー性が必要となる。
【0005】
このように、RSAをベースにしてパスワード認証を行う方式はいくつかのものが提案されている。その中で、PKIに依存せずにパスワード認証をする方式では、RSA公開鍵に対する特殊な攻撃(すなわち、e-residue攻撃)が存在する。その攻撃を防ぐには、(1)RSA公開鍵の一部である暗号用の指数eに制約を掛ける方法と(2)質問・応答型のサーブプロトコル(subprotocol)を用いることがある。(1)を使う場合の問題点は、eを選択する自由度がなくなるため、RSA暗号に必要とする演算回数を最低に抑えることが出来ないことである。(2)を使う場合の問題点は、サーブプロトコルを実行するために余分な計算量と通信量が必要になることである。そして、これまでのRSAをベースにしたパスワード認証方式におけるもっとも大きな問題点は、既存の方式を使って容易にかつ効率的に、プライバシー保護に必要不可欠な匿名認証や安全性をもっと高める二要素認証へ応用が出来ないことである。
【特許文献1】特開平7−245657号公報
【特許文献2】特開平62−190943号公報
【特許文献3】特開平9−107352号公報
【発明の開示】
【0006】
本発明者は、前述の課題を解決しうる、RSA及びパスワードに基づく相互認証のための新たな方式を提案する。さらに本発明者は、この新たな認証方式を応用した、新たな匿名認証方式や二要素認証方式を提案する。
【0007】
本発明者が提案する新たな方式の一つによれば、サーバにおけるマスター鍵の計算は、サーバ自身が生成するRSA秘密鍵(d, N)と、サーバ自身に属する記憶装置に格納される認証データに基づいて行われる。一方、クライアントにおけるマスター鍵の計算は、サーバから送信される情報Uとクライアント自身が生成する乱数に基づいて行われる。
【0008】
この方式によれば、サーバはクライアントから送られてくる情報に関係なく、マスター鍵の計算を行うことができる。したがって、サーバは、クライアントとの通信を行なう前に(たとえばクライアントからの認証要求を受ける前に)、事前にマスター鍵の計算を済ませておくことができる。
【0009】
事前にマスター鍵の計算を済ませておくことができることの利点は、クライアントと通信して認証処理を行う時点における、サーバの処理が少なくて済むことである。また、この方式によれば、クライアントとサーバの間の通信量を少なくすることができる。これらの利点は、特に、この方式を匿名認証方式に応用したときに顕著に現れる。
【0010】
RSA及びパスワードに基づく既存の相互認証方式においては、サーバのマスター鍵をクライアントが決める構成になっていた。既存の匿名認証方式において、クライアントからの認証要求があった場合、クライアントから認証情報を受信した後に、サーバのデータベースに格納されている多数のクライアント情報の全てについて、マスター鍵の計算を行わなければならなかった。マスター鍵の計算には、一般に処理量が極めて大きいRSA復号処理を伴うため、多数のクライアント情報の全てについてマスター鍵の計算を行うことは、非常に長い処理時間を必要とした。したがって、クライアントとサーバが通信して認証処理を行う時点における、計算時間は非常に長いものとならざるを得なかった。
【0011】
しかし本発明者が提案するところによれば、サーバは、クライアントと通信を行なう前に、そのデータベースに格納されているクライアントのためのマスター鍵の計算を済ませておくことができるため、クライアントが認証を要求してきた時には、すでに計算しておいたマスター鍵(又はそれに基づく情報)を利用して、直ちに応答を返すことができる。したがって、認証に要する通信時間を劇的に短縮することが可能となる。
【0012】
匿名認証方式の場合、クライアントの認証要求に対してはじめに送信されるメッセージは、実際には、サーバの情報とマスター鍵に基づいて計算されるOTPで暗号化したものである。上記のアイディアによれば、クライアントとの接続を行なう前に、サーバに格納されたクライアント情報の全てについてのOTP暗号文を、予め計算しておくことができる。
【0013】
同様の利点が、上記のアイディアを二要素認証方式などへ応用した場合にも得ることができる。すなわち、クライアントではなくサーバがマスター鍵を決める構成としたことで、サーバにおける計算を事前に行なうことができ、クライアントが認証を要求してきた時には、少ない処理で素早く認証を完了することが可能になる。
【0014】
本発明者が提案するところによれば、前述のように、クライアントにおけるマスター鍵の計算は、サーバから送信される情報Uに基づいて行われる。しかしてこの情報Uは、クライアントから送信される認証情報に基づいて生成される。この認証情報が、サーバに格納されている認証データに正しく対応するデータに基づいて生成されたものでなければ、認証は失敗する。このデータはパスワードそのものであることができる。また実施形態によっては、クライアントに属する記憶装置に格納された情報とパスワードから生成されたものでもよい。二要素認証方式への応用の場合、パスワードとその他の情報から生成されたものであることができる。
【0015】
本発明者が提案する別の新たな方式の一つによれば、クライアント側で乱数を2つ(x1, x2)生成し、これらの乱数や、これらの乱数をRSA公開鍵(e, N)で暗号化した(y1, y2)を認証に用いる。具体的には、ユーザが入力したパスワードに少なくとも基づいてマスクWを生成すると共に、認証情報Zを、Z=y1・x2・W mod Nによって計算し、認証情報Z及び暗号文y2を、クライアントの識別子と共にサーバへ送信する。
【0016】
この方式において、攻撃者が認証情報Zからパスワードに関する情報を不正に得ようと考えても、それにはU=(Z/x2) mod Nを計算しなければならない。そのためには、攻撃者は、自分が生成したRSA 公開鍵(e, N)でy2からx2を求める必要がある。(ただし、その時、Nは2 つのランダムに選択された大きな素数p とq の積であり)、e は、e と(p-1)・(q-1)の最大公約数が1 でないような素数である。)しかしながら、その公開鍵を使ってy2からx2を求めようとしても、その候補の数は少なくとも2のe乗個存在する。したがってeを適切に設定することにより、その探索を事実上不可能とすることができる。たとえば本願の出願時点における計算機の能力を鑑みれば、eを80ビット以上の素数と設定すれば、その探索を不可能にするに十分であると考えられる。したがってこの方式によれば、パスワードに対するe-residue攻撃を防止することができる。また、このアイディアを二要素認証システムに応用すると、上の性質により、攻撃者の書き換え攻撃(replacement攻撃)を防止することも可能となる。
【0017】
本発明者が提案する第3の新たな方式によれば、クライアントは、パスワードのみならず、そのメモリに保持された秘密情報にも基づいて、サーバへ送信する認証情報を形成する。またサーバは、当該秘密情報に対応してサーバに格納されている認証データに基づいて、クライアントへ送信する認証情報を形成する。そして、その相互認証が成功したとき、クライアントおよびサーバは、それぞれ、次のセッションのために、その秘密情報及び認証データを更新しておく。
【0018】
この方式によれば、サーバはクライアントのパスワードを全数探索することができなくなり、クライアントから記録情報が漏洩したとしても安全性が保たれる。
【0019】
本発明者が提案する第4の新たな方式の一つによれば、クライアントがサーバへ送信する認証情報を、クライアントに予め格納された署名鍵SigKによって署名化し、サーバは、その署名化された認証情報を、署名鍵SigKに対応して予めサーバに格納された検証鍵VrfKを用いて検証することによって行なう。
【0020】
この方式によれば、認証情報が署名化されているため、server compromise impersonation攻撃を防止することができる。
【0021】
本発明者の提案は、基本的にユーザやサーバ認証を必要とするサービスやアプリケーションで利用できる。例えば、ユーザ認証やサーバ認証は、電子商取引、サーバやネットワークへのログインなどで必要とされており、その応用先は広い。また、本発明者の提案に基づく匿名認証は、匿名を要するサービスやアプリケーション(例えば、匿名掲示板や内部告発システムなど)で利用できる。そして、本発明者の提案に基づく二要素認証は、クライアントが耐タンパモジュールなどを備えてない場合はユビキタス環境での認証方式として適しているし、クライアントが耐タンパモジュールを用いる場合はもっと高い安全性を要求するインタネットバンキングなどに使うことができる。
【0022】
クライアントは、例えばパソコンや携帯電話、PDAなどであることができ、計算能力やメモリを具備してユーザによって操作されるコンピュータであることができる。サーバも一般的なコンピュータであることができるが、多数のユーザを管理可能な能力を備えるコンピュータであることが好ましい。サーバは、ネットワークの構成要素の1つであったり、電子商取引システムの構成要素の1つであったりすることができる。
【0023】
本明細書に開示される、RSA及びパスワードに基づく相互認証のための新たな方式は、クライアント側及びサーバ側の両方において、新規且つ有用な特徴を含んでいる。従って、本発明者の提案の具現化形態には、クライアント及びサーバを含む相互認証システム及び方法のみならず、相互認証のためのクライアントにおける新規な構成や方法や、サーバにおける新規な構成や方法を含む。また既存の多くの相互認証処理と同様に、本明細書に開示される相互認証処理においても、ソフトウェア処理によってその主要部を実現することが可能であるため、本発明者の提案の具現化形態には、クライアントやサーバで実行されるプログラムであって、ここに提案される処理をCPUに遂行させるプログラムが含まれる。
【0024】
本発明者の提案に基づく好適な具現化形態のいくつかは、添付の特許請求の範囲に特定されている。しかしながら、その具現化形態は、特許請求の範囲や明細書及び図面に明示的に記載されるものに限定されず、本願に開示される発明の範囲を逸脱することなく、様々な態様を呈することが可能である。本願に開示される発明の具現化形態は、特許請求の範囲や明細書及び図面に明示的に開示されるか否かにかかわらず、これらの書類から教示されうるあらゆる新規かつ有益な構成やそれらの組み合わせを、その範囲に含むものである。
【発明を実施するための最良の形態】
【0025】
以下、添付図面を参照しつつ、本発明者の提案の好適な具現化形態の例(実施例)について説明する。まず、RSAをベースにしたパスワード認証システム及びその応用システムの実施例を説明する前に、いくつかの背景知識及び以下の説明において用いる記号について説明しておく。
【0026】
公開鍵暗号方式には、公開鍵(PubK)および秘密鍵(PriK)の対(PubK, PriK)と、暗号化関数Encと、復号化関数Decとが用いられる。公開鍵は秘密ではなく、誰でも入手できるように公開しておく。それに対して秘密鍵は所有者のみの秘密である。暗号化は、公開鍵を用いてメッセージmをC=EncPubK(m)となるような暗号文Cを生成することによって行われうる。暗号文は、秘密鍵を用いてのみ、m=DecPriK(C)と復号されることが可能である。つまり、暗号文は、公開鍵を用いては復号できない。
【0027】
そして公開鍵署名方式では、検証鍵(VrfK)および署名鍵(SigK)の対(VrfK, SigK)が存在する。公開鍵暗号方式の公開鍵と同じように、検証鍵は秘密ではなく、誰でも入手できるように公開しておく。それに対して、署名鍵は所有者(署名者)のみの秘密である。署名化は、署名鍵を用いてメッセージmをs=SignSigK(m)となるような署名文(m, s)を生成することで行われる。署名文の検証は、検証鍵を用いて、VerVrfK(m, s)を求めることで検証可能である。つまり、検証できた場合はその署名文(m, s)が正当な署名者により生成されたことを意味し、そうではない場合は、(m, s)が正しい署名文ではないことになる。
【0028】
ここで、RSA公開鍵方式についてその具体的な一例を説明する。しかし、RSA公開鍵方式の詳細な構成方法が以下の例に限定されるものではないことに留意されたい。周知のRSA公開鍵方式では、公開鍵は(e, N)であり、秘密鍵は(d, N)である。ただし、Nは、2つのランダムに選択された大きな素数pとqの積であり(すなわち、N=p・q)、eは、eと(p-1)・(q-1)の最大公約数が1であるような任意の数(例えば、e=3あるいはe=216+1)であり、dは、e-1 mod ((p-1)・(q-1))である。安全性を最大化するには、pとqを同じ長さにする。一般に、暗号システムでは、その安全性のレベルを記述するセキュリティパラメータを有する。RSA公開鍵方式でセキュリティパラメータをlにすると2l-1<N<2lである。メッセージm(m∈ZN* )に対して、暗号化関数はEncPubK(m)=me mod Nであり、復号化関数はDecPriK(C)=Cd mod Nである。ここで、暗号文Cと公開鍵(e, N)が与えられた時、メッセージmを求めるのは計算量的に困難である。RSAは、大きな数Nの素因数分解が難しいことから安全性を得ている。
【0029】
以下の説明において、ハッシュ関数Hのセキュリティパラメータをk(ただし、1/2kは無視できるほど小さいと仮定する)にする。また、{0, 1}*は有限の2進数のストリングの集合を、{0, 1}kは長さkの2進数のストリングの集合を示す。ハッシュ関数FとHは{0, 1}*の入力から{0, 1}kの出力を出す安全な一方向関数であり、FDH(Full-Domain Hash)関数Gは{0, 1}*の入力から、

の出力を作る安全な一方向関数である。また、乱数発生器から発生される乱数はt(t∈ZN*)を無作為に生成する。また、‖は値を連結(concatenation)するという意味である。また、CとSはそれぞれユーザとサーバを表すIDである。また、

は、値を排他的論理和(exclusive OR)するという意味である。
【0030】
これから説明するRSAをベースにしたパスワード認証システム及びその応用システムにおいて、RSA公開鍵(e, N)の指数であるeは80ビット以上の素数であり、RSA公開鍵(e, N)を用いて暗号化する際には必ずeが80ビット以上の素数であることとNが奇数であることをチックする。る。その時、eは80ビット以上の素数の中でHamming weightが最小になるのが好ましい。

〔実施例1:RSAをベースにしたパスワード認証システム〕
【0031】
図1は、実施例1として以下に説明する、RSAをベースにしたパスワード認証システム100の構成を示すブロック図である。パスワード認証システム100は、ユーザ端末装置102とサーバの認証装置104とで構成される。このパスワード認証システムでは、ユーザの端末装置は入力されたパスワードに基づいてある演算を行い、ユーザのパスワード認証データ(すなわち、パスワードそのもの)を保持しているサーバの認証装置と、インターネットのようなオープンネットワーク106を通してお互いに相互認証して、その相互認証が成功した時、お互いに共有する同じセッション鍵を確保する。
【0032】
なお、図1を含めた以下の全ての図において、そこに描かれる機能要素のそれぞれは、専用のハードウェアによって実現されることもできるが、CPUとコンピュータ・プログラムを用いたソフトウェア処理によって実現されることができる場合がある。従って、以下の全ての図において、例えば「乱数発生器206」のように「器」「装置」のような用語が用いられているとしても、その実現手段はハードウェアに限定されるものではなく、ソフトウェア処理による手段によっても実装可能であることに注意されたい。また、2つ以上の機能要素を1つのハードウェア回路にまとめたり、あるいは2つ以上の機能要素をそれぞれサブプログラムとして含んだ1つのプログラムにまとめたりすることも可能である。例えば、以下の実施例で紹介されるユーザ端末装置やサーバの認証装置の機能の全てを、プロセッサとメモリとプログラムコードを用いて実現することも可能である。さらに、各機能要素をFPGAのようなプログラマブルな回路を用いて実現することも可能である。当業者であれば、当然ながら、実施形態の具体的要求に応じて、適切な実装手段を選択することができるだろう。

<ユーザ端末装置の動作>
【0033】
初めに、図2を参照して、RSAをベースにしたパスワード認証システム100におけるユーザ端末装置102の動作について説明する。図2は、パスワード認証システム100における、ユーザ端末装置102の機能構成及び動作を説明するための図である。
【0034】
まず、マスク生成器202は、ユーザから入力されたパスワードpwとクライアントIDであるCとサーバIDであるSとを入力として、マスク W=G(C, S, pw)を計算して出力する。
【0035】
そして、RSA暗号演算器204は、乱数発生器206によりランダムに発生させた乱数x1, x2 (x1, x2∈ZN*)とサーバの認証装置104から受信したRSA公開鍵(e, N)とを入力として、暗号文y1=x1e mod Nと暗号文y2=x2e mod Nとを計算して出力する。
【0036】
結合器208は、マスク生成器202から生成されたマスクWと、乱数発生器206により発生させた乱数x2と、RSA暗号演算器204から出力された暗号文y1と、サーバの認証装置から受信したRSA公開鍵(e, N)とを入力として、マスクによってスクランブルされた暗号文Z=y1・x2・W mod Nを計算して出力する。
【0037】
端末装置102は、クライアントIDであるCと結合器208により出力されたZとRSA暗号演算器204により出力された暗号文y2とをサーバの認証装置104へ送信する。
【0038】
続いて、マスター鍵生成器210は、サーバの認証装置104から受信した値Uと、乱数発生器により発生させた乱数x1と、サーバの認証装置104から受信したRSA公開鍵(e, N)とを入力として、マスター鍵k'=U/x1 mod Nを計算して出力する。
【0039】
そして、認証結果判断部212は、サーバの認証装置104から受信したVSが正しく生成された認証子であるかどうかを判断する。認証結果判断部212は、クライアントIDであるCと、サーバIDであるSと、サーバの認証装置104から受信したRSA公開鍵(e, N)と、結合器208により出力されたマスクによってスクランブルされた暗号文Zと、RSA暗号演算器204により出力された暗号文y2と、サーバの認証装置104から受信した値Uと、ユーザから入力されたパスワードpwと、乱数発生器206により発生させた乱数x2と、マスター鍵生成器210により出力されたマスター鍵k'とを入力として、H(1‖Msg‖pw‖x2‖k')を計算し、それとサーバの認証装置104から受信したVSとを比較する。ここで、Msg=C‖S‖e‖N‖Z‖y2‖Uである。ここで、Hの代わりにMAC(Message Authentication Code)を使ってもよい。
【0040】
認証結果判断部212において、VSとH(1‖Msg‖pw‖x2‖k')が一致しない場合、認証結果判断部212は、エラーメッセージ発生器214に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器214はエラーを発生して処理を中断する。
【0041】
一方、認証結果判断部212においてVSとH(1‖Msg‖pw‖x2‖k')が一致した場合はサーバの認証装置104が正当な装置として認証して、Msg‖pw‖x2‖k'を出力する。
【0042】
そして、認証子生成器216は、認証結果判断部212から入力されたMsg‖pw‖x2‖k'から認証子VCを、VC=H(2‖Msg‖pw‖x2‖k')により計算して出力する。
【0043】
ユーザの端末装置102は、認証子生成器216により出力された認証子VCをサーバの認証装置へ送信する。
【0044】
セッション鍵生成器218は、認証結果判断部212から入力されたMsg‖pw‖x2‖k'を入力として、セッション鍵SKをSK=H(3‖Msg‖pw‖x2‖k')により生成して出力する。

<サーバの認証装置の動作>
【0045】
次に、図3を参照して、パスワード認証システム100におけるサーバの認証装置104の動作について説明する。サーバの認証装置104は、クライアントのIDであるCとそのユーザのパスワードであるpwの対を装置内部にあるデータベース302に保持している。
【0046】
まず、RSA鍵生成器304は、セキュリティパラメータlを入力として、RSA鍵生成アルゴリズムに従ってRSA公開鍵(e, N)とRSA秘密鍵(d, N)を生成して出力する。認証装置104はRSA鍵生成器304により生成されたRSA公開鍵(e, N)をユーザの端末装置102へ送信する。
【0047】
そして、RSA復号演算器306は、ユーザの端末装置102から受信した暗号文y2とRSA鍵生成器304により生成されたRSA秘密鍵(d, N)とを入力として、乱数x2'を、x2'=y2d mod Nにより計算して出力する。
【0048】
また、RSA復号演算器306は、ユーザの端末装置102から受信したマスクによってスクランブルされた暗号文Zと、乱数x2'と、RSA鍵生成器304により生成されたRSA秘密鍵(d, N)とを入力として、値Uを、U=(Z/x2')d mod Nにより計算して出力する。
【0049】
一方、マスク生成器308は、クライアントIDであるCとサーバのIDであるSとデータベースから読み出したユーザのパスワードpwとを入力として、マスクW=G(C, S, pw)を計算して出力する。
【0050】
そして、マスター鍵生成器310は、マスク生成器308により生成されたマスクWとRSA鍵生成器304により生成されたRSA秘密鍵(d, N)とを入力として、マスター鍵kを、k=Wd mod Nにより計算して出力する。
【0051】
集合器312は、クライアントIDであるCと、サーバIDであるSと、RSA公開鍵により生成されたRSA公開鍵(e, N)と、ユーザの端末装置から受信したマスクによってスクランブルされた暗号文Zと、もう一つの暗号文y2と、RSA復号演算器により出力された値Uと乱数x2'と、データベースから読み出したユーザのパスワードpwと、マスター鍵生成器から生成されたマスター鍵kとを入力として、Msg‖pw‖x2'‖kを出力する。ここで、Msg=C‖S‖e‖N‖Z‖y2‖Uである。
【0052】
そして、認証子生成器314は、集合器312から出力されたMsg‖pw‖x2'‖kを入力として、認証子VSを、VS=H(1‖Msg‖pw‖x2'‖k)により計算してMsg‖pw‖x2'‖kとともに出力する。
【0053】
サーバの認証装置104は、認証子生成器314により計算して得られたVSとサーバのIDであるSとRSA復号演算器306により出力された値Uとをユーザの端末装置102へ送信する。
【0054】
続いて、認証結果判断部316は、認証子生成器314から出力されたMsg‖pw‖x2'‖kを入力として、H(2‖Msg‖pw‖x2'‖k)を計算してユーザの端末装置102から受信したVCと比較する。ここで、Hの代わりにMAC(Message Authentication Code)を使ってもよい。
【0055】
認証結果判断部316においてVCとH(2‖Msg‖pw‖x2'‖k)が一致しない場合、認証結果判断部は、エラーメッセージ発生器318に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器318はエラーを発生して処理を中断する。
【0056】
一方、認証結果判断部316において、VCとH(2‖Msg‖pw‖x2'‖k)が一致した場合は、ユーザの端末装置が正当な装置として認証する。
【0057】
セッション鍵生成器320は、認証子生成器314から出力されたMsg‖pw‖x2'‖kを入力として、セッション鍵SKをSK=H(3‖Msg‖pw‖x2'‖k)により生成して出力する。

〔実施例2:RSAをベースにした匿名認証システム〕
【0058】
図4は、前述のパスワード認証システム100の応用である、RSAをベースにした匿名認証システム400の構成を示すブロック図である。匿名認証システム400は、ユーザの端末装置402とサーバの認証装置404とを備えている。サーバの認証装置404は、n個のクライアントのIDであるCjとそのユーザのパスワードであるpwjの対((Cj, pwj),1≦j≦n)を装置内部にあるデータベースに保持している。匿名認証システム400では、ユーザの端末装置402は入力されたパスワードに基づいてある演算を行い、ユーザのパスワード認証データ(すなわち、パスワードそのもの)を保持しているサーバの認証装置404と、インターネットのようなオープンネットワーク106を通してお互いに相互認証して、その相互認証が成功した時、お互いに共有する同じセッション鍵を確保する。つまり、サーバの認証装置404は、通信する相手が登録されたパスワードの一つを知っているユーザであることは確認できるものの、そのユーザを特定することは出来ない。
【0059】
本発明の第2実施例としてここに紹介する匿名認証システム400の特徴は、サーバの認証装置404に必要になる暗号演算自体の量は装置内部にあるデータベースに保持しているクライアントの数(つまり、n)に比例して増加するものの、その暗号演算はユーザの端末装置402と通信を行う前に事前に済ませておくことができることである。そのため、ユーザの端末装置402と実際に通信を行う間にサーバの認証装置404で行うことが必要な暗号演算は、ただ2回のRSA復号演算で済む。

<ユーザの端末装置の動作>
【0060】
まず、図5を参照して、匿名認証システム400におけるユーザの端末装置402の機能構成と動作について説明する。なお、前述のユーザ端末装置102と全く同じ構成要素については同じ符号を付してそれを示している。
【0061】
まず、マスク生成器202は、ユーザから入力されたパスワードpwiとクライアントIDであるCiとサーバIDであるSとを入力として、マスクWi=G(Ci, S, pwi)を計算して出力する。
【0062】
そして、RSA暗号演算器204は、乱数発生器206によりランダムに発生させた乱数x1, x2 (x1, x2∈ZN*)とサーバの認証装置から受信したRSA公開鍵(e, N)とを入力として、暗号文y1=x1e mod Nと暗号文y2=x2e mod Nを計算して出力する。
【0063】
結合器208は、マスク生成器202から生成されたマスクWiと乱数発生器206により発生させた乱数x2とRSA暗号演算器204から出力された暗号文y1とサーバの認証装置404から受信したRSA公開鍵(e, N)とを入力として、マスクによってスクランブルされた暗号文Z=y1・x2・Wi mod Nを計算して出力する。
【0064】
ユーザの端末装置402は、クライアントIDの集合であるC={C1, C2, …, Cn-1, Cn}と、結合器208により出力されたZと、RSA暗号演算器204により出力された暗号文y2とをサーバの認証装置404へ送信する。
【0065】
続いて、マスター鍵生成器210は、サーバの認証装置404から受信した値Uと乱数発生器206により発生させた乱数x1とサーバの認証装置404から受信したRSA公開鍵(e, N)とを入力として、マスター鍵Ki=U/x1 mod Nを計算して出力する。
【0066】
そして、復号用OTP生成器520は、クライアントIDであるCiと、マスク生成器502から生成されたマスクWiと、マスター鍵生成器から生成されたマスター鍵Kiとを入力として、復号用OTPであるF(Ci, Wi, Ki)を計算して出力する。
【0067】
そして、マスター秘密値生成器522は、復号用OTP生成器520から生成された復号用OTPであるF(Ci, Wi, Ki)と、サーバの認証装置404から受信したi番目のOTP暗号文Ti=iとを入力として、マスター秘密値:

を計算して出力する。
【0068】
認証結果判断部512は、サーバの認証装置404から受信したVSが正しく生成された認証子であるかどうかを判断する。認証結果判断部512は、クライアントIDの集合であるCと、サーバIDであるSと、サーバの認証装置404から受信したRSA公開鍵(e, N)と、結合器により出力されたマスクによってスクランブルされた暗号文Zと、RSA暗号演算器204により出力された暗号文y2と、サーバの認証装置404から受信した値Uと、OTP暗号文の集合である{Ti}1≦i≦nと乱数発生器により発生させた乱数x2と、マスター秘密値生成器522により出力されたマスター秘密値MS'とを入力としてH(1‖Msg‖x2‖MS')を計算し、サーバの認証装置404から受信したVSと比較する。ここで、Msg=C‖S‖e‖N‖Z‖y2‖U‖{Ti}1≦i≦nである。ここで、Hの代わりにMAC(Message Authentication Code)を使ってもよい。
【0069】
認証結果判断部512において、VSとH(1‖Msg‖x2‖MS')が一致しない場合、認証結果判断部は、エラーメッセージ発生器に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器はエラーを発生して処理を中断する。
【0070】
一方、認証結果判断部512においてVSとH(1‖Msg‖x2‖MS')が一致した場合はサーバの認証装置404が正当な装置として認証して、Msg‖x2‖MS'を出力する。
【0071】
そして、認証子生成器516は、認証結果判断部512から入力されたMsg‖x2‖MS'から、認証子VCを、VCi=H(2‖Msg‖x2‖MS')により計算して出力する。
【0072】
ユーザの端末装置402は、認証子生成器516により出力された認証子VCiをサーバの認証装置404へ送信する。
【0073】
セッション鍵生成器518は、認証結果判断部512から入力されたMsg‖x2‖MS'を入力として、セッション鍵SKを、SK=H(3‖Msg‖x2‖MS')により生成して出力する。

<サーバの認証装置404の動作>
【0074】
次に、図6を参照して、RSAをベースにした匿名認証システム400におけるサーバの認証装置404の機能要素及び動作について説明する。サーバの認証装置404はn個のクライアントのIDであるCjとそのユーザのパスワードであるpwjの対((Cj,pwj),1≦j≦n)を装置内部にあるデータベース602に保持している。
【0075】
まず、RSA鍵生成器304は、セキュリティパラメータlを入力として、RSA鍵生成アルゴリズムに従ってRSA公開鍵(e,N)とRSA秘密鍵(d,N)を生成して出力する。
【0076】
マスク生成器608は、各クライアントIDであるCjとサーバのIDであるSとデータベースから読み出した各ユーザのパスワードpwjを入力として、マスクWj=G(Cj,S,pwj)を計算して、その集合である{Wj}1≦j≦nを{Cj}1≦j≦nとともに出力する。
【0077】
そして、マスター鍵生成器610は、マスク生成器608により生成されたマスクの集合{Wj}1≦j≦nとRSA鍵生成器304により生成されたRSA秘密鍵(d,N)を入力として、マスター鍵Kjを、Kj=Wjd mod Nにより計算して、その集合である{Kj}1≦j≦nを出力する。
【0078】
そして、暗号用OTP生成器622は、マスク生成器608から出力された各クライアントIDであるCjと各マスクWjとマスター鍵生成器610から生成されたマスター鍵Kjを入力として、暗号用OTPであるF(Cj,Wj,Kj)を計算して、その集合である{F(Cj,Wj,Kj)}1≦j≦nを出力する。
【0079】
そして、OTP暗号演算器624は、暗号用OTP生成器622から生成された暗号用OTPの集合である{F(Cj,Wj,Kj)}1≦j≦nとマスター秘密値発生器626によりランダムに発生させたマスター秘密値MS(MS∈{0,1}k)を入力として、OTP暗号文:

を計算して、その集合である{Tj}1≦j≦nを出力する。
【0080】
サーバの認証装置404において、これまでの計算はユーザの端末装置402と通信をする前に、予め済ませておくことができる。
【0081】
続いてサーバの認証装置404は、RSA鍵生成器304により生成されたRSA公開鍵(e,N)をユーザの端末装置402へ送信する。
【0082】
そして、RSA復号演算器306は、ユーザの端末装置402から受信した暗号文y2とRSA鍵生成器304により生成されたRSA秘密鍵(d,N)を入力として、乱数x2'を、x2'=y2d mod Nにより計算して出力する。
【0083】
また、RSA復号演算器306は、ユーザの端末装置402から受信したマスクによってスクランブルされた暗号文Zと乱数x2'とRSA鍵生成器304により生成されたRSA秘密鍵(d,N)とを入力として、値Uを、U=(Z/x2')d mod Nにより計算して出力する。
【0084】
一方、集合器612は、クライアントIDの集合であるC={C1,C2,…,Cn-1,Cn}と、サーバIDであるSと、RSA公開鍵により生成されたRSA公開鍵(e,N)と、ユーザの端末装置402から受信したマスクによってスクランブルされた暗号文Zと、もう一つの暗号文y2と、RSA復号演算器306により出力された値Uと、乱数x2'と、OTP暗号演算器624により出力されたOTP暗号文の集合である{Tj}1≦j≦nとを入力として、Msg‖x2'を出力する。ここで、Msg=C‖S‖e‖N‖Z‖y2‖U‖{Tj}1≦j≦nである。
【0085】
そして、認証子生成器614は、集合器612から出力されたMsg‖x2'とマスター秘密値発生器626にランダムに発生させたマスター秘密値MSを入力として、認証子VSを、VS=H(1‖Msg‖x2'‖MS)により計算してMsg‖x2'‖MSとともに出力する。
【0086】
サーバの認証装置404は、認証子生成器614により計算して得られたVSとサーバのIDであるSとRSA復号演算器306により出力された値UとOTP暗号演算器624により出力されたOTP暗号文の集合である{Tj}1≦j≦nをユーザの端末装置402へ送信する。
【0087】
続いて、認証結果判断部616は、認証子生成器614から出力されたMsg‖x2'‖MSを入力として、H(2‖Msg‖x2'‖MS)を計算してユーザの端末装置402から受信したVCiと比較する。ここで、Hの代わりにMAC(Message Authentication Code)を使ってもよい。
【0088】
認証結果判断部616においてVCiとH(2‖Msg‖x2'‖MS)が一致しない場合、認証結果判断部616は、エラーメッセージ発生器318に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器318はエラーを発生して処理を中断する。
【0089】
一方、認証結果判断部616において、VCiとH(2‖Msg‖x2'‖MS)が一致した場合は、ユーザの端末装置402が正当な装置として認証する。
【0090】
セッション鍵生成器620は、認証子生成器614から出力されたMsg‖x2'‖MSを入力として、セッション鍵SKをSK=H(3‖Msg‖x2'‖MS)により生成して出力する。

〔実施例3:RSAをベースにした二要素認証システム〕
【0091】
図7は、前述のパスワード認証システム100の応用である、RSAをベースにした二要素認証システム700の構成を示すブロック図である。二要素認証システム700は、図7はユーザの端末装置702とサーバの認証装置704を備える。図7は、RSAをベースにした二要素認証システム700のj番目プロトコル実行を表している。ユーザの端末装置702はi番目サーバのIDであるSiとj番目記録情報CSjとを装置内部にあるメモリに保存していて、サーバの認証装置704はクライアントのIDであるCとj番目認証データSSjを装置内部にあるデータベースに保持している。ここで、iとjはi,j≧1になるような整数である。
【0092】
この二要素認証システム700のj番目プロトコル実行では、ユーザの端末装置702はユーザから入力されたパスワードとメモリに保持された記録情報CSjに基づいてある演算を行い、ユーザの認証データである記録情報SSjを保持しているサーバの認証装置704と、インターネットのようなオープンネットワーク106を通してお互いに相互認証して、その相互認証が成功した時、お互いに共有する同じセッション鍵を確保しながら各自の記録情報を次のセッションのために更新しておく。それにより、サーバの端末装置はユーザの認証データに対してパスワードを全数探索することができなくなり、ユーザの端末装置702は記録情報が漏洩したとしても安全性が落ちることがない。

[1.二要素認証システム700の初期化]
【0093】
二要素認証システム700の初期化では、ユーザの端末装置702はユーザから入力されたパスワードに基づいて、サーバの認証装置704と安全な通信路(例えば、直接に渡したり、郵便で送付したり、あるいは電話で知らせるなど)を用いて初期化処理を行い、ユーザの端末装置702は内蔵するメモリへ記録情報としてCS1を保存し、サーバの認証装置704は内蔵するデータベースへ記録情報としてSS1を保存する。
【0094】
以下、図8および9を参照して、ユーザの端末装置702およびサーバの認証装置704において二要素認証システム700のための初期化を行う作業を説明する。

<ユーザの端末装置702における作業>
【0095】
図8を参照する。認証データ生成器1032は、乱数発生器206によりランダムに発生させた乱数si1(si1∈{0,1}k)と、クライアントIDであるCと、i番目サーバIDであるSiと、ユーザから入力されたパスワードpwとを入力として、認証データ:

を計算して出力する。
【0096】
ユーザの端末装置702は、認証データ生成器1032から生成されたサーバ用の認証データvi1をサーバの認証装置704へ送信する。ユーザの端末装置702は、i番目サーバIDであるSiと、カウンタ1 と、乱数発生器206により発生させた乱数si1と、サーバの認証装置704から受信したRSA公開鍵(e,N)をユーザの端末装置702が内蔵するメモリ1034へ記録情報としてSi,1,si1,(e,N)を保存する。

<サーバの認証装置704における作業>
【0097】
次に、図9を参照して、サーバの認証装置704の初期化の作業について説明する。
【0098】
RSA鍵生成器304は、セキュリティパラメータlを入力として、RSA鍵生成アルゴリズムに従ってRSA公開鍵(e,N)とRSA秘密鍵(d,N)を生成して出力する。
【0099】
サーバの認証装置704は、RSA鍵生成器304から生成されたRSA公開鍵(e,N)をユーザの端末装置702へ送信する。サーバの認証装置704は、クライアントIDであるCとカウンタ1とユーザの端末装置702から受信した認証データvi1とRSA鍵生成器304により生成されたRSA秘密鍵(d,N)をサーバの認証装置704の内部にあるデータベース1102へ記録情報としてC,1,vi1,(d,N)を保存する。

[2.二要素認証システム700のj(j≧1)番目プロトコル実行]
【0100】
次に、図10および11を参照して、前述した初期化を行った後(j=1の時)の、あるいは二要素認証システム700のj−1番目プロトコル実行を行った後(すなわち、CSj=(Si,j,sij,(e,N),[SigK])とSSj=(C,j,vij,(d,N),[VrfK])の時)の、RSAをベースにした二要素認証システム700のj番目プロトコル実行を行う動作をユーザの端末装置702とサーバの認証装置704とに分けて説明する。

<ユーザの端末装置702の動作>
【0101】
まず図10を参照し、二要素認証システム700におけるユーザの端末装置702のj番目プロトコル実行の動作について説明する。この時、ユーザの端末装置702は記録情報としてSi,j,sij,(e,N)を装置内部にあるメモリ1034に保持している。
【0102】
まず、認証データ生成器1032は、ユーザから入力されたパスワードpwと、クライアントIDであるCと、i番目サーバIDであるSiと、メモリ1034から読み出した乱数sijとを入力として、認証データ:

を計算して出力する。
【0103】
そして、マスク生成器1002は、認証データ生成器1032から生成された認証データvijとメモリ1034から読み出したカウンタjを入力として、マスクW=G(j,vij)を計算して出力する。
【0104】
そして、RSA暗号演算器204は、乱数発生器206によりランダムに発生させた乱数x1,x2 (x1,x2∈ZN*)とメモリ1034から読み出したRSA公開鍵(e,N)を入力として、暗号文y1=x1e mod Nと暗号文y2=x2e mod Nを計算して出力する。
【0105】
結合器208は、マスク生成器1002から生成されたマスクWと乱数発生器206により発生させた乱数x2とRSA暗号演算器204から出力された暗号文y1とメモリ1034から読み出したRSA公開鍵(e,N)を入力として、マスクによってスクランブルされた暗号文Z=y1・x2・W mod Nを計算して出力する。
【0106】
ユーザの端末装置702は、クライアントIDであるCと、メモリ1034から読み出したカウンタjと、結合器208により出力されたZと、RSA暗号演算器204により出力された暗号文y2とを、サーバの認証装置704へ送信する。
【0107】
続いて、マスター鍵生成器210は、サーバの認証装置704から受信した値Uと、乱数発生器206により発生させた乱数x1と、メモリ1034から読み出したRSA公開鍵(e,N)を入力として、マスター鍵k'=U/x1 mod Nとを計算して出力する。
【0108】
そして、認証結果判断部1012は、サーバの認証装置704から受信したVSiが正しく生成された認証子であるかどうかを判断する。認証結果判断部1012は、クライアントIDであるCと、i番目サーバIDであるSiと、メモリ1034から読み出したカウンタjと、結合器208により出力されたマスクによってスクランブルされた暗号文Zと、RSA暗号演算器204により出力された暗号文y2と、サーバの認証装置704から受信した値Uと、認証データ生成器1032から生成された認証データvijと、乱数発生器206により発生させた乱数x2と、マスター鍵生成器210により出力されたマスター鍵k'とを入力として、H(1‖Msg‖vij‖x2‖k')を計算してサーバの認証装置704から受信したVSiと比較する。ここで、Msg=C‖Sij‖Z‖y2‖Uである。ここで、Hの代わりにMAC(Message Authentication Code)を使ってもよい。
【0109】
認証結果判断部1012において、VSiとH(1‖Msg‖vij‖x2‖k')とが一致しない場合、認証結果判断部1012は、エラーメッセージ発生器214に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器214はエラーを発生して処理を中断する。一方、認証結果判断部1012においてVSiとH(1‖Msg‖vij‖x2‖k')が一致した場合は、サーバの認証装置704が正当な装置であるとして認証して、Msg‖vij‖x2‖k'を出力する。
【0110】
そして、認証子生成器1016は、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'から認証子VCを、VC=H(2‖Msg‖vij‖x2‖k')により計算して出力する。
【0111】
ユーザの端末装置702は、認証子生成器1016により出力された認証子VCをサーバの認証装置704へ送信する。
【0112】
セッション鍵生成器1018は、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'を入力として、セッション鍵SKをSK=H(3‖Msg‖vij‖x2‖k')により生成して出力する。
【0113】
そして、秘密値更新器1036は、メモリ1034から読み出した乱数sijと、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'とを入力として、j+1番目の乱数si(j+1)を、

により計算してカウンタj+1とともに出力する。
【0114】
ユーザの端末装置702は、メモリ1034に保持している現在のカウンタと乱数であるj,sijとを、秘密値更新器1036により出力された次のカウンタと乱数であるj+1,si(j+1) とに書き換える。

<サーバの認証装置704の動作>
【0115】
次に、図11を参照して、RSAをベースにした二要素認証システム700におけるサーバの認証装置704のj番目プロトコル実行の動作について説明する。この時サーバの認証装置704は、記録情報として、C,j,vij,(d,N)を装置内部にあるデータベース1102に保持している。
【0116】
まず、カウンタ判断部1132は、ユーザの端末装置702から受信したカウンタjが正しいかどうかを確認する。カウンタ判断部1132は、データベース1102から読み出したカウンタjをユーザの端末装置702から受信したカウンタjと比較して、一致しない場合、エラーメッセージ発生器1134に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器1134はエラーを発生して処理を中断する。
【0117】
一方、カウンタ判断部1132においてデータベース1102から読み出したカウンタjをユーザの端末装置702から受信したカウンタjと比較して、一致した場合は、続けて次の処理を行う。
【0118】
RSA復号演算器306は、ユーザの端末装置702から受信した暗号文y2と、データベース1102から読み出したRSA秘密鍵(d,N)とを入力として、乱数x2'を、x2'=y2d mod Nにより計算して出力する。
【0119】
また、RSA復号演算器306は、ユーザの端末装置702から受信したマスクによってスクランブルされた暗号文Zと、乱数x2'と、データベース1102から読み出したRSA秘密鍵(d,N)とを入力として、値Uを、U=(Z/x2')d mod Nにより計算して出力する。
【0120】
一方、マスク生成器1108は、データベース1102から読み出したカウンタjと、認証データvijとを入力として、マスクW=G(j,vij)を計算して出力する。
【0121】
そして、マスター鍵生成器310は、マスク生成器1108により生成されたマスクWと、データベース1102から読み出したRSA秘密鍵(d,N)とを入力として、マスター鍵kを、k=Wd mod Nにより計算して出力する。
【0122】
集合器1112は、クライアントIDであるCと、i番目サーバIDであるSiと、ユーザの端末装置702から受信したカウンタjと、マスクによってスクランブルされた暗号文Zと、もう一つの暗号文y2と、RSA復号演算器306により出力された値Uと、乱数x2'と、データベース1102から読み出した認証データvijと、マスター鍵生成器310から生成されたマスター鍵kとを入力として、Msg‖vij‖x2'‖kを出力する。ここで、Msg=C‖Si‖j‖Z‖y2‖Uである。
【0123】
そして、認証子生成器1114は、集合器1112から出力されたMsg‖vij‖x2'‖kを入力として、認証子VSiを、VSi=H(1‖Msg‖vij‖x2'‖k)により計算してMsg‖vij‖x2'‖kとともに出力する。
【0124】
サーバの認証装置704は、認証子生成器1114により計算して得られたVSiと、i番目サーバのIDであるSiと、RSA復号演算器306により出力された値Uをユーザの端末装置702へ送信する。
【0125】
続いて、認証結果判断部1116は、認証子生成器1114から出力されたMsg‖vij‖x2'‖kを入力として、H(2‖Msg‖vij‖x2'‖k)を計算してユーザの端末装置702から受信したVCと比較する。ここで、Hの代わりにMAC(Message Authentication Code)を使ってもよい。
【0126】
認証結果判断部1116においてVCとH(2‖Msg‖vij‖x2'‖k)が一致しない場合、認証結果判断部1116は、エラーメッセージ発生器318に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器318はエラーを発生して処理を中断する。
【0127】
一方、認証結果判断部1116において、VCとH(2‖Msg‖vij‖x2'‖k)が一致した場合は、ユーザの端末装置702が正当な装置として認証する。
【0128】
セッション鍵生成器1120は、認証子生成器1114から出力されたMsg‖vij‖x2'‖kを入力として、セッション鍵SKをSK=H(3‖Msg‖vij‖x2'‖k)により生成して出力する。
【0129】
そして、秘密値更新器1036は、データベース1102から読み出した認証データvijと、認証子生成器1114から入力されたMsg‖vij‖x2'‖kとを入力として、j+1番目の認証データvi(j+1)を、

により計算してカウンタj+1とともに出力する。
【0130】
サーバの認証装置704は、データベース1102に保持している現在のカウンタと認証データであるj,vijを、秘密値更新器1036により出力された次のカウンタと認証データであるj+1,vi(j+1)に書き換える。

〔実施例4:RSAをベースにした二要素認証システムの別の例〕
【0131】
図12は、パスワード認証システム100の応用である、RSAをベースにした二要素認証システム1200の構成を示すブロック図である。二要素認証システム1200は、第3実施例として説明したRSAをベースにした二要素認証システム700の変形例でもある。
【0132】
二要素認証システム1200は、二要素認証システム700と同様に、ユーザの端末装置1202とサーバの認証装置1204を備える。図12は、RSAをベースにした二要素認証システム1200のj番目プロトコル実行を表している。ユーザの端末装置1202はi番目サーバのIDであるSiとj番目記録情報CSjとを装置内部にあるメモリに保存していて、サーバの認証装置1204はクライアントのIDであるCとj番目認証データSSjを装置内部にあるデータベースに保持している。ここで、iとjはi,j≧1になるような整数である。
【0133】
この二要素認証システム1200のj番目プロトコル実行では、ユーザの端末装置1202はユーザから入力されたパスワードとメモリに保持された記録情報CSjに基づいてある演算を行い、ユーザの認証データである記録情報SSjを保持しているサーバの認証装置1204と、インターネットのようなオープンネットワーク106を通してお互いに相互認証して、その相互認証が成功した時、お互いに共有する同じセッション鍵を確保しながら各自の記録情報を次のセッションのために更新しておく。それにより、サーバの端末装置はユーザの認証データに対してパスワードを全数探索することができなくなり、ユーザの端末装置1202は記録情報が漏洩したとしても安全性が落ちることがない。

[1.二要素認証システム1200の初期化]
【0134】
二要素認証システム1200の初期化では、ユーザの端末装置1202はユーザから入力されたパスワードに基づいて、サーバの認証装置1204と安全な通信路(例えば、直接に渡したり、郵便で送付したり、あるいは電話で知らせるなど)を用いて初期化処理を行い、ユーザの端末装置1202は内蔵するメモリへ記録情報としてCS1を保存し、サーバの認証装置1204は内蔵するデータベースへ記録情報としてSS1を保存する。
【0135】
以下、図13および14を参照して、ユーザの端末装置1202およびサーバの認証装置1204において二要素認証システム1200のための初期化を行う作業を説明する。

<ユーザの端末装置1202における作業>
【0136】
図13を参照する。認証データ生成器1032は、乱数発生器206によりランダムに発生させた乱数si1(si1∈{0,1}k)と、クライアントIDであるCと、i番目サーバIDであるSiと、ユーザから入力されたパスワードpwとを入力として、認証データ:

を計算して出力する。
【0137】
そして、署名鍵生成器1542は、セキュリティパラメータl2を入力として、署名鍵生成アルゴリズムに従って署名鍵SigKと検証鍵VrfKの対(SigK,VrfK)を生成して出力する。
【0138】
ユーザの端末装置1202は、認証データ生成器1032から生成されたサーバ用の認証データvi1と、署名鍵生成器1542から生成された検証鍵VrfKとをサーバの認証装置1204へ送信する。
【0139】
ユーザの端末装置1202は、i番目サーバIDであるSiと、カウンタ1と、乱数発生器206により発生させた乱数si1と、サーバの認証装置1204から受信したRSA公開鍵(e,N)と、署名鍵生成器1542から生成された署名鍵SigKとを、ユーザの端末装置1202の内部にあるメモリ1534へ記録情報としてSi,1,si1,(e,N),SigKを保存する。

<サーバの認証装置1204における作業>
【0140】
次に、図14を参照してサーバの認証装置1204の初期化の動作について説明する。
【0141】
RSA鍵生成器304は、セキュリティパラメータl1を入力として、RSA鍵生成アルゴリズムに従ってRSA公開鍵(e,N)とRSA秘密鍵(d,N)を生成して出力する。
【0142】
サーバの認証装置1204は、RSA鍵生成器304から生成されたRSA公開鍵(e,N)をユーザの端末装置1202へ送信する。
【0143】
サーバの認証装置1204は、クライアントIDであるCと、カウンタ1と、ユーザの端末装置1202から受信した認証データvi1と、検証鍵VrfKと、RSA鍵生成器304により生成されたRSA秘密鍵(d,N)とを、サーバの認証装置1204の内部にあるデータベース1602へ記録情報としてC,1,vi1,(d,N),VrfKを保存する。

[2.二要素認証システム1200のj(j≧1)番目プロトコル実行]
【0144】
次に、図15および16を参照して、前述した初期化を行った後(j=1の時)の、あるいは二要素認証システム1200のj−1番目プロトコル実行を行った後(すなわち、CSj=(Si,j,sij,(e,N),[SigK])とSSj=(C,j,vij,(d,N),[VrfK])の時)の、RSAをベースにした二要素認証システム1200のj番目プロトコル実行を行う動作を、ユーザの端末装置1202とサーバの認証装置1204とに分けて説明する。

<ユーザの端末装置1202の動作>
【0145】
まず図15を参照し、二要素認証システム1200におけるユーザの端末装置1202のj番目プロトコル実行の動作について説明する。この時、ユーザの端末装置1202は記録情報としてSi,j,sij,(e,N),SigKを装置内部にあるメモリ1534に保持している。
【0146】
まず、認証データ生成器1032は、ユーザから入力されたパスワードpwと、クライアントIDであるCと、i番目サーバIDであるSiと、メモリ1534から読み出した乱数sijとを入力として、認証データ:

を計算して出力する。
【0147】
そして、マスク生成器1002は、認証データ生成器1032から生成された認証データvijと、メモリ1534から読み出したカウンタjとを入力として、マスクW=G(j,vij)を計算して出力する。
【0148】
そして、RSA暗号演算器204は、乱数発生器206によりランダムに発生させた乱数x1,x2(x1,x2∈ZN*)と、メモリ1534から読み出したRSA公開鍵(e,N)とを入力として、暗号文y1=x1e mod Nと、暗号文y2=x2e mod Nとを計算して出力する。
【0149】
結合器208は、マスク生成器1002から生成されたマスクWと、乱数発生器206により発生させた乱数x2と、RSA暗号演算器204から出力された暗号文y1と、メモリ1534から読み出したRSA公開鍵(e,N)とを入力として、マスクによってスクランブルされた暗号文Z=y1・x2・W mod Nを計算して出力する。
【0150】
ユーザの端末装置1202は、クライアントIDであるCと、メモリ1534から読み出したカウンタjと、結合器208により出力されたZと、RSA暗号演算器204により出力された暗号文y2とをサーバの認証装置1204へ送信する。
【0151】
続いて、マスター鍵生成器210は、サーバの認証装置1204から受信した値Uと、乱数発生器206により発生させた乱数x1と、メモリ1534から読み出したRSA公開鍵(e,N)とを入力として、マスター鍵k'=U/x1 mod Nを計算して出力する。
【0152】
そして、認証結果判断部1012は、サーバの認証装置1204から受信したVSiが正しく生成された認証子であるかどうかを判断する。認証結果判断部1012は、クライアントIDであるCと、i番目サーバIDであるSiと、メモリ1534から読み出したカウンタjと、結合器208により出力されたマスクによってスクランブルされた暗号文Zと、RSA暗号演算器204により出力された暗号文y2と、サーバの認証装置1204から受信した値Uと、認証データ生成器1032から生成された認証データvijと、乱数発生器206により発生させた乱数x2と、マスター鍵生成器210により出力されたマスター鍵k'とを入力として、H(1‖Msg‖vij‖x2‖k')を計算してサーバの認証装置1204から受信したVSiと比較する。ここで、Msg=C‖Si‖j‖Z‖y2‖Uである。ここで、Hの代わりにMAC(Message Authentication Code)を使ってもよい。
【0153】
認証結果判断部1012において、VSiとH(1‖Msg‖vij‖x2‖k')が一致しない場合、認証結果判断部1012は、エラーメッセージ発生器214に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器214はエラーを発生して処理を中断する。
【0154】
一方、認証結果判断部1012においてVSiとH(1‖Msg‖vij‖x2‖k')が一致した場合は、サーバの認証装置1204が正当な装置として認証して、Msg‖vij‖x2‖k'を出力する。
【0155】
そして、署名生成器1536は、メモリ1534から読み出した署名鍵SigKと、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'とを入力として、署名SigCを、SigC=SignSigK(VC)により計算して出力する。ここで、VC=H(2‖Msg‖vij‖x2‖k')である。
【0156】
ユーザの端末装置1202は、署名生成器1536により出力された署名SigCをサーバの認証装置1204へ送信する。
【0157】
セッション鍵生成器1018は、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'を入力として、セッション鍵SKをSK=H(3‖Msg‖vij‖x2‖k')により生成して出力する。そして、秘密値更新器1036は、メモリ1534から読み出した乱数sijと、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'とを入力として、j+1番目の乱数si(j+1)

により計算してカウンタj+1とともに出力する。
【0158】
ユーザの端末装置1202は、メモリ1534に保持している現在のカウンタと乱数であるj,sijを、秘密値更新器1036により出力された次のカウンタと乱数であるj+1,si(j+1)に書き換える。

<サーバの認証装置1204の動作>
【0159】
次に、図16を参照して、RSAをベースにした二要素認証システム1200におけるサーバの認証装置1204のj番目プロトコル実行の動作について説明する。この時、サーバの認証装置1204は記録情報としてC,j,vij,(d,N),VrfKを装置内部にあるデータベース1602に保持している。
【0160】
まず、カウンタ判断部1132は、ユーザの端末装置1202から受信したカウンタjが正しいかどうかを確認する。カウンタ判断部1132は、データベース1602から読み出したカウンタjをユーザの端末装置1202から受信したカウンタjと比較して一致しない場合、エラーメッセージ発生器1134に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器1134はエラーを発生して処理を中断する。
【0161】
一方、カウンタ判断部1132においてデータベース1602から読み出したカウンタjをユーザの端末装置1202から受信したカウンタjと比較して一致した場合は、続けて次の処理を行う。
【0162】
RSA復号演算器306は、ユーザの端末装置1202から受信した暗号文y2と、データベース1602から読み出したRSA秘密鍵(d,N)とを入力として、乱数x2'を、x2'=y2d mod Nにより計算して出力する。
【0163】
また、RSA復号演算器306は、ユーザの端末装置1202から受信したマスクによってスクランブルされた暗号文Zと、乱数x2'と、データベース1602から読み出したRSA秘密鍵(d,N)とを入力として、値Uを、U=(Z/x2')d mod Nにより計算して出力する。
【0164】
一方、マスク生成器1108は、データベース1602から読み出したカウンタjと、認証データvijとを入力として、マスクW=G(j,vij)を計算して出力する。
【0165】
そして、マスター鍵生成器310は、マスク生成器1108により生成されたマスクWと、データベース1602から読み出したRSA秘密鍵(d,N)とを入力として、マスター鍵kを、k=Wd mod Nにより計算して出力する。
【0166】
集合器1112は、クライアントIDであるCと、i番目サーバIDであるSiと、ユーザの端末装置1202から受信したカウンタjと、マスクによってスクランブルされた暗号文Zと、もう一つの暗号文y2と、RSA復号演算器306により出力された値Uと、乱数x2'と、データベース1602から読み出した認証データvijと、マスター鍵生成器310から生成されたマスター鍵kとを入力として、Msg‖vij‖x2'‖kを出力する。ここで、Msg=C‖Si‖j‖Z‖y2‖Uである。
【0167】
そして、認証子生成器1114は、集合器1112から出力されたMsg‖vij‖x2'‖kを入力として、認証子VSiを、VSi=H(1‖Msg‖vij‖x2'‖k)により計算してMsg‖vij‖x2'‖kとともに出力する。
【0168】
サーバの認証装置1204は、認証子生成器1114により計算して得られたVSiと、i番目サーバのIDであるSiと、RSA復号演算器306により出力された値Uとをユーザの端末装置1202へ送信する。
【0169】
続いて、署名検証判断部1616は、データベース1602から読み出した検証鍵VrfKと、認証子生成器1114から出力されたMsg‖vij‖x2'‖kとを入力として、署名SigCの検証を、VerVrfK(VC,SigC)により行う。ここで、VC=H(2‖Msg‖vij‖x2'‖k)である。
【0170】
署名検証判断部1616において署名SigCの検証が出来なかった場合、署名検証判断部1616は、エラーメッセージ発生器318に対して、検証できないことを通知する。これを受けて、エラーメッセージ発生器318はエラーを発生して処理を中断する。
【0171】
一方、署名検証判断部1616において、署名SigCの検証ができた場合は、ユーザの端末装置1202が正当な装置として認証する。
【0172】
セッション鍵生成器1120は、認証子生成器1114から出力されたMsg‖vij‖x2'‖kとを入力として、セッション鍵SKをSK=H(3‖Msg‖vij‖x2'‖k)により生成して出力する。
【0173】
そして、秘密値更新器1136は、データベース1602から読み出した認証データvijと、認証子生成器1114から入力されたMsg‖vij‖x2'‖kとを入力として、j+1番目の認証データvi(j+1)を、

により計算してカウンタj+1とともに出力する。
【0174】
サーバの認証装置1204は、データベース1602に保持している現在のカウンタと、認証データであるj,vijを、秘密値更新器1136により出力された次のカウンタと、認証データであるj+1,vi(j+1)に書き換える。
【0175】
以上、本発明者の提案の具現化形態のいくつかの例を説明したが、これらの例は本発明者のアイディアの具現化形態を限定する目的で挙げられたのではなく、あくまで本発明者が本願によって開示する新たな技術思想のより深い理解に資するために挙げられたものである。開示される技術思想の実施形態は上記の例に限定されるものではなく、その思想を逸脱することなく、様々な形態をとり得ることは言うまでもない。
【図面の簡単な説明】
【0176】
【図1】実施例1として説明される、RSAをベースにしたパスワード認証システム100の構成の概要を示すブロック図
【図2】パスワード認証システム100における、ユーザ端末装置102の構成及び動作を説明するための図
【図3】パスワード認証システム100における、サーバの認証装置104の構成及び動作を説明するための図
【図4】実施例2として説明される、RSAをベースにした匿名認証システム400の構成の概要を示すブロック図
【図5】匿名認証システム400における、ユーザ端末装置402の構成及び動作を説明するための図
【図6】匿名認証システム400における、サーバの認証装置404の構成及び動作を説明するための図
【図7】実施例3として説明される、RSAをベースにした二要素認証システム700の構成の概要を示すブロック図
【図8】二要素認証システム700における、ユーザ端末装置702の初期化の様子を説明するための図
【図9】二要素認証システム700における、サーバの認証装置704の初期化の様子を説明するための図
【図10】二要素認証システム700における、ユーザ端末装置702の構成及び動作を説明するための図
【図11】二要素認証システム700における、サーバの認証装置704の構成及び動作を説明するための図
【図12】実施例4として説明される、RSAをベースにした二要素認証システム1200の構成の概要を示すブロック図
【図13】二要素認証システム1200における、ユーザ端末装置1202の初期化の様子を説明するための図
【図14】二要素認証システム1200における、サーバの認証装置1204の初期化の様子を説明するための図
【図15】二要素認証システム1200における、ユーザ端末装置1202の構成及び動作を説明するための図
【図16】二要素認証システム1200における、サーバの認証装置1204の構成及び動作を説明するための図
【符号の説明】
【0177】
100 パスワード認証システム
102 ユーザ端末装置
104 サーバの認証装置
106 オープンネットワーク
202 マスク生成器
204 暗号演算器
206 乱数発生器
208 結合器
210 マスター鍵生成器
212 認証結果判断部
214 エラーメッセージ発生器
216 認証子生成器
218 セッション鍵生成器
302 データベース
304 鍵生成器
306 復号演算器
308 マスク生成器
310 マスター鍵生成器
312 集合器
314 認証子生成器
316 認証結果判断部
318 エラーメッセージ発生器
320 セッション鍵生成器
400 匿名認証システム
402 ユーザ端末装置
404 サーバの認証装置
502 マスク生成器
512 認証結果判断部
516 認証子生成器
518 セッション鍵生成器
520 復号用OTP生成器
522 マスター秘密値生成器
602 データベース
608 マスク生成器
610 マスター鍵生成器
612 集合器
614 認証子生成器
616 認証結果判断部
620 セッション鍵生成器
622 暗号用OTP生成器
624 暗号演算器
626 マスター秘密値発生器
700 二要素認証システム
702 ユーザ端末装置
704 サーバの認証装置
1002 マスク生成器
1012 認証結果判断部
1016 認証子生成器
1018 セッション鍵生成器
1032 認証データ生成器
1034 メモリ
1036 秘密値更新器
1102 データベース
1108 マスク生成器
1112 集合器
1114 認証子生成器
1116 認証結果判断部
1120 セッション鍵生成器
1132 カウンタ判断部
1134 エラーメッセージ発生器
1136 秘密値更新器
1200 二要素認証システム
1202 ユーザ端末装置
1204 サーバの認証装置
1534 メモリ
1536 署名生成器
1542 署名鍵生成器
1602 データベース
1616 署名検証判断部

【特許請求の範囲】
【請求項1】
RSA及びパスワードに基づく相互認証のための方法であって、
クライアントが、サーバが生成したRSA公開鍵(e, N)に基づいて生成した暗号文を、ユーザが入力したパスワードに基づいて生成した第1のマスクWでスクランブルした第1の認証情報Zを計算するステップと、
前記クライアントから、前記第1の認証情報Z及び前記クライアントの身元情報であるクライアントIDを、前記サーバへ送信するステップと、
前記サーバが、クライアントIDに対応付けられて前記サーバのデータベースに格納されている認証データ、及び、前記RSA公開鍵に対応するRSA秘密鍵(d, N)に基づいて、サーバ側マスター鍵kを計算するステップと、
前記サーバが、受信した前記第1の認証情報Zに基づく値に前記RSA秘密鍵を適用して情報Uを計算し、該情報Uを前記クライアントへ送信するステップと、
前記クライアントが、受信した前記情報U及び該クライアントが生成する乱数に基づき、クライアント側マスター鍵k'を計算するステップと、
を含む、方法。
【請求項2】
請求項1に記載の方法であって、さらに、
前記サーバが、前記サーバ側マスター鍵kに基づいて第2の認証情報Vsを計算し、該第2の認証情報Vsを前記クライアントへ送信するステップと、
前記クライアントが、受信した前記第2の認証情報Vsと、前記クライアント側マスター鍵k'に基づいて生成した第1の比較情報とを比較することによって、前記サーバを認証するステップと、
前記クライアントが、前記クライアント側マスター鍵k'に基づいて第3の認証情報Vcを計算し、該第3の認証情報Vcを前記サーバへ送信するステップと、
前記サーバが、受信した前記第3の認証情報Vcと、前記サーバ側マスター鍵kに基づいて生成した第2の比較情報とを比較することによって、前記クライアントを認証するステップと、
を含む、方法。
【請求項3】
請求項1または2に記載の方法であって、さらに、
前記クライアントが第1の乱数x1および第2の乱数x2を生成すると共に、前記第1の乱数x1を前記RSA公開鍵を用いて暗号化した第1の暗号文y1と、前記第2の乱数x2を前記RSA公開鍵を用いて暗号化した第2の暗号文y2とを計算するステップと、
前記クライアントが、前記第1の認証情報Zを、Z=y1・x2・W mod Nによって計算するステップと、
を含み、
・ 前記第1の認証情報Z及び前記クライアントの身元情報であるクライアントIDを前記サーバへ送信するステップにおいて、前記第2の暗号文y2も共に送信され、
・ 前記情報Uが、前記第2の暗号文y2を前記RSA秘密鍵で復号した第2の復号文x2'を用いて、U=(Z/x2')d mod Nによって計算される、
方法。
【請求項4】
請求項3に記載の方法のうち請求項2に従属する方法であって、さらに、
・ 前記第2の認証情報Vsが、前記第2の復号文x2'を利用して計算され、
・ 前記第1の比較情報が、前記第2の乱数x2を利用して計算され、
・ 前記第3の認証情報Vcが、前記第2の乱数x2を利用して計算され、
・ 前記第2の比較情報が、前記第2の復号文x2'を利用して計算される、
方法。
【請求項5】
前記RSA公開鍵(e, N)の指数eは80ビット以上の素数である、請求項1から4のいずれかに記載の方法。
【請求項6】
前記サーバは、前記クライアントから受信したクライアントIDに基づいて、前記データベースから前記受信したクライアントIDに対応する認証データを読み出す、請求項1から5のいずれかに記載の方法。
【請求項7】
前記サーバは、前記クライアントと通信を行う前に、前記データベースに格納されているクライアントIDと認証データの組に対して予め前記サーバ側マスター鍵kを計算しておく、請求項1から5のいずれかに記載の方法。
【請求項8】
前記データベースには、クライアントIDと認証データの組が複数個格納されており、前記サーバは、クライアントと通信を行う前に、前記複数個の組の少なくとも2個以上について、それぞれマスター鍵を計算しておく、請求項7に記載の方法。
【請求項9】
請求項8に記載の方法を用いた匿名認証のための方法であって、
前記サーバが、前記データベースに格納される複数のクライアントIDの各々について、暗号用OTPを計算するステップと、
前記サーバが、認証要求を送ったクライアントに対して、マスター鍵及び前記計算した暗号用OTPの集合から計算した暗号文を送信するステップと、
を含む、方法。
【請求項10】
前記サーバのデータベースに格納されている認証データはパスワードである、請求項1から9に記載の方法。
【請求項11】
前記第1のマスクWが、前記ユーザが入力したパスワード及び前記クライアントのメモリに格納されている秘密情報の二要素を用いて生成され、
前記サーバのデータベースに格納されている認証データは、前記秘密情報に対応して前記データベースに格納される認証データである、
請求項1から9に記載の方法。
【請求項12】
請求項11に記載の方法のうち、請求項2に記載の事項を含む方法であって、さらに、
前記クライアントが前記サーバを認証するステップにおいて、該認証が成功した場合、前記秘密情報を更新して前記メモリに格納するステップと、
前記サーバが前記クライアントを認証するステップにおいて、該認証が成功した場合、前記認証データを前記更新した秘密情報と対応がつくように更新し、該更新した認証データを前記データベースに格納するステップと、
をさらに含む、方法。
【請求項13】
請求項2から12に記載の方法であって、請求項2に記載の事項を含む方法において、
前記クライアントが、前記第3の認証情報Vcを、署名鍵SigKによって署名化した上で送信し、
前記サーバは、署名化された前記第3の認証情報Vcを、前記署名鍵SigKに対応して予め該サーバのデータベースに格納された検証鍵VrfKを用いて検証する、
方法。
【請求項14】
RSA及びパスワードに基づく相互認証方法であって、
クライアントが第1の乱数x1および第2の乱数x2を生成すると共に、前記第1の乱数x1をRSA公開鍵(e, N)を用いて暗号化した第1の暗号文y1と、前記第2の乱数x2を前記RSA公開鍵(e, N)を用いて暗号化した第2の暗号文y2とを計算ステップと、
前記クライアントが、ユーザが入力したパスワードに基づいて、マスクWを生成するステップと、
前記クライアントが、第1の認証情報Zを、Z=y1・x2・W mod Nによって計算するステップと、
前記クライアントが、前記第1の認証情報Zと、前記第2の暗号文y2と、前記クライアントの識別子であるクライアントIDとを、サーバへ送信するステップと、
を含む、方法。
【請求項15】
請求項14に記載の方法であって、さらに、
前記サーバが、前記第2の暗号文y2を前記RSA公開鍵に対応するRSA秘密鍵で復号した第2の復号文x2'と、該第2の復号文x2'及び前記第1の認証情報Zから前記RSA秘密鍵を用いて計算した値とを用いて、第2の認証情報Vsを形成するステップと、
前記クライアントが、前記第2の乱数x2を利用して前記第2の認証情報Vsを認証するステップと、
前記クライアントが、前記第2の乱数x2を用いて第3の認証情報Vcを形成するステップと、
前記サーバが、前記x2'を利用して前記第3の認証情報Vcを認証するステップと、
を含む、方法。
【請求項16】
RSA及びパスワードに基づく相互認証のための方法であって、
クライアントが、RSA公開鍵(e, N)に基づいて生成した暗号文と、ユーザが入力したパスワードと、前記クライアントのメモリに格納された秘密情報とに基づいて生成した第1の認証情報をサーバに送信するステップと、
前記サーバが、前記秘密情報に対応して前記サーバのデータベースに格納された認証データ及び前記第1の認証情報に基づいて第2の認証情報を生成し、該第2の認証情報を前記クライアントへ送信するステップと、
前記クライアントが、前記第2の認証情報を用いて前記サーバを認証するステップと、
前記クライアントが、前記サーバの認証が成功した場合に、第3の認証情報を前記サーバへ送信すると共に、前記秘密情報を更新して前記メモリに格納するステップと、
前記サーバが、前記第3の認証情報を用いて前記クライアントを認証すると共に、該認証が成功した場合、前記認証データを前記更新した秘密情報と対応がつくように更新し、該更新した認証データを前記データベースに格納するステップと、
を含む、方法。
【請求項17】
クライアントが、RSA公開鍵(e, N)に基づいて生成した暗号文、及び、ユーザが入力したパスワードに基づいて生成した第1の認証情報をサーバに送信するステップと、
前記サーバが、前記第1の認証情報に基づいて第2の認証情報を生成し、該第2の認証情報を前記クライアントへ送信するステップと、
前記クライアントが、前記第2の認証情報を用いて前記サーバを認証するステップと、
前記クライアントが、前記サーバの認証が成功した場合に、第3の認証情報を前記サーバへ送信するステップと、
前記サーバが、前記第3の認証情報を用いて前記クライアントを認証するステップと、
を含む、RSA及びパスワードに基づく相互認証のための方法であって、
・ 前記第3の認証情報を前記サーバへ送信するステップにおいて、該第3の認証情報は、クライアントに予め格納された署名鍵SigKによって署名化された上で送信され、
・ 前記クライアントを認証するステップは、前記署名化された前記第3の認証情報を、前記署名鍵SigKに対応して予め前記サーバに格納されている検証鍵VrfKを用いて検証することによって行われる、
方法。
【請求項18】
クライアント及びサーバを少なくとも含む、RSA及びパスワードに基づく相互認証システムあって、
前記クライアントは、
・ 前記サーバが生成したRSA公開鍵(e, N)に基づいて生成した暗号文を、ユーザが入力したパスワードに基づいて生成した第1のマスクWでスクランブルした第1の認証情報Zを計算し、
・ 前記第1の認証情報Z及び前記クライアントの身元情報であるクライアントIDを、前記サーバへ送信する、
ように構成され、
前記サーバは、
・ クライアントIDに対応付けられて前記サーバのデータベースに格納されている認証データ、及び、前記RSA公開鍵に対応するRSA秘密鍵(d, N)に基づいて、サーバ側マスター鍵kを計算し、
・ 受信した前記第1の認証情報Zに基づく値に前記RSA秘密鍵を適用して情報Uを計算し、
・ 該情報Uを前記クライアントへ送信する、
ように構成され、
さらに前記クライアントは、受信した前記情報U及び該クライアントが生成する乱数に基づき、クライアント側マスター鍵k'を計算するように構成される、
システム。
【請求項19】
請求項18に記載のシステムであって、さらに、
前記サーバが、前記サーバ側マスター鍵kに基づいて第2の認証情報Vsを計算し、該第2の認証情報Vsを前記クライアントへ送信するように構成され、
前記クライアントが、受信した前記第2の認証情報Vsと、前記クライアント側マスター鍵k'に基づいて生成した第1の比較情報とを比較することによって、前記サーバを認証するように構成され、
前記クライアントが、前記クライアント側マスター鍵k'に基づいて第3の認証情報Vcを計算し、該第3の認証情報Vcを前記サーバへ送信するように構成され、
前記サーバが、受信した前記第3の認証情報Vcと、前記サーバ側マスター鍵kに基づいて生成した第2の比較情報とを比較することによって、前記クライアントを認証するように構成される、
システム。
【請求項20】
請求項18または19に記載のシステムであって、さらに、
前記クライアントが、
・ 第1の乱数x1および第2の乱数x2を生成すると共に、前記第1の乱数x1を前記RSA公開鍵を用いて暗号化した第1の暗号文y1と、前記第2の乱数x2を前記RSA公開鍵を用いて暗号化した第2の暗号文y2とを計算し、
・ 前記第1の認証情報Zを、Z=y1・x2・W mod Nによって計算し、
・ 前記第1の認証情報Z及び前記クライアントの身元情報であるクライアントIDを前記サーバへ送信する際に、前記第2の暗号文y2も共に送信する、
ように構成され、ここで、前記情報Uが、前記第2の暗号文y2を前記RSA秘密鍵で復号した第2の復号文x2'を用いて、U=(Z/x2')d mod Nによって計算される、システム。
【請求項21】
請求項20に記載のシステムのうち請求項19に従属するシステムであって、さらに、
・ 前記第2の認証情報Vsが、前記第2の復号文x2'を利用して計算され、
・ 前記第1の比較情報が、前記第2の乱数x2を利用して計算され、
・ 前記第3の認証情報Vcが、前記第2の乱数x2を利用して計算され、
・ 前記第2の比較情報が、前記第2の復号文x2'を利用して計算される、
システム。
【請求項22】
前記RSA公開鍵(e, N)の指数eは80ビット以上の素数である、請求項18から21のいずれかに記載のシステム。
【請求項23】
前記サーバは、前記クライアントから受信したクライアントIDに基づいて、前記データベースから前記受信したクライアントIDに対応する認証データを読み出す、請求項18から22のいずれかに記載のシステム。
【請求項24】
前記サーバは、前記クライアントと通信を行う前に、前記データベースに格納されているクライアントIDと認証データの組に対して予め前記サーバ側マスター鍵kを計算しておく、請求項18から22のいずれかに記載のシステム。
【請求項25】
前記データベースには、クライアントIDと認証データの組が複数個格納されており、前記サーバは、クライアントと通信を行う前に、前記複数個の組の少なくとも2個以上について、それぞれマスター鍵を計算しておく、請求項24に記載のシステム。
【請求項26】
請求項25に記載のシステムを用いた匿名認証システムであって、前記サーバが、前記データベースに格納される複数のクライアントIDの各々について、暗号用OTPを計算し、認証要求を送ったクライアントに対して、マスター鍵及び前記計算した暗号用OTPの集合から計算した暗号文を送信するように構成される、
システム。
【請求項27】
前記サーバのデータベースに格納されている認証データはパスワードである、請求項18から26に記載のシステム。
【請求項28】
前記第1のマスクWが、前記ユーザが入力したパスワード及び前記クライアントのメモリに格納されている秘密情報の二要素を用いて生成され、
前記サーバのデータベースに格納されている認証データは、前記秘密情報に対応して前記データベースに格納される認証データである、
請求項18から26に記載のシステム。
【請求項29】
請求項18に記載のシステムのうち、請求項19に記載の事項を含むシステムであって、さらに、
前記クライアントが、前記サーバの認証が成功した場合に前記秘密情報を更新して前記メモリに格納するように構成され、
前記サーバが、前記クライアントの認証が成功した場合に前記認証データを前記更新した秘密情報と対応がつくように更新し、該更新した認証データを前記データベースに格納するように構成される、
システム。
【請求項30】
請求項19から30に記載のシステムであって、請求項19に記載の事項を含むシステムにおいて、
前記クライアントが、前記第3の認証情報Vcを、署名鍵SigKによって署名化した上で送信し、
前記サーバは、署名化された前記第3の認証情報Vcを、前記署名鍵SigKに対応して予め該サーバのデータベースに格納された検証鍵VrfKを用いて検証する、
システム。
【請求項31】
RSA及びパスワードに基づく相互認証処理をサーバとの間で遂行するクライアントであって、
第1の乱数x1および第2の乱数x2を生成する手段と、
前記第1の乱数x1をRSA公開鍵(e, N)を用いて暗号化した第1の暗号文y1と、前記第2の乱数x2を前記RSA公開鍵(e, N)を用いて暗号化した第2の暗号文y2とを計算する手段と、
ユーザが入力したパスワードに基づいて、マスクWを生成する手段と、
第1の認証情報Zを、Z=y1・x2・W mod Nによって計算する手段と、
前記第1の認証情報Zと、前記第2の暗号文y2と、前記クライアントの識別子であるクライアントIDとを、サーバへ送信する手段と、
を備える、クライアント。
【請求項32】
クライアント及びサーバを少なくとも含む、RSA及びパスワードに基づく相互認証システムであって、請求項31に記載のクライアントを含み、さらに、
サーバが、前記第2の暗号文y2を前記RSA公開鍵に対応するRSA秘密鍵で復号した第2の復号文x2'と、該第2の復号文x2'及び前記第1の認証情報Zから前記RSA秘密鍵を用いて計算した値とを用いて、第2の認証情報Vsを形成するように構成され、
前記クライアントが、前記第2の乱数x2を利用して前記第2の認証情報Vsを認証し、さらに、前記第2の乱数x2を用いて第3の認証情報Vcを形成するように構成され、
さらに前記サーバが、前記x2'を利用して前記第3の認証情報Vcを認証するように構成される、
システム。
【請求項33】
クライアント及びサーバを少なくとも含む、RSA及びパスワードに基づく相互認証システムあって、
クライアントが、RSA公開鍵(e, N)に基づいて生成した暗号文と、ユーザが入力したパスワードと、前記クライアントのメモリに格納された秘密情報とに基づいて生成した第1の認証情報をサーバに送信するように構成され、
前記サーバが、前記秘密情報に対応して前記サーバのデータベースに格納された認証データ及び前記第1の認証情報に基づいて第2の認証情報を生成し、該第2の認証情報を前記クライアントへ送信するように構成され、
前記クライアントが、さらに、前記第2の認証情報を用いて前記サーバを認証し、前記サーバの認証が成功した場合に、第3の認証情報を前記サーバへ送信すると共に、前記秘密情報を更新して前記メモリに格納するように構成され、
前記サーバが、さらに、前記第3の認証情報を用いて前記クライアントを認証すると共に、該認証が成功した場合、前記認証データを前記更新した秘密情報と対応がつくように更新し、該更新した認証データを前記データベースに格納するように構成される、
システム。
【請求項34】
クライアントが、RSA公開鍵(e, N)に基づいて生成した暗号文、及び、ユーザが入力したパスワードに基づいて生成した第1の認証情報をサーバに送信し、
前記サーバが、前記第1の認証情報に基づいて第2の認証情報を生成し、該第2の認証情報を前記クライアントへ送信し、
前記クライアントが、前記第2の認証情報を用いて前記サーバを認証し、
前記クライアントが、前記サーバの認証が成功した場合に、第3の認証情報を前記サーバへ送信し、
前記サーバが、前記第3の認証情報を用いて前記クライアントを認証する、
RSA及びパスワードに基づく相互認証のためのシテムであって、
・ 前記クライアントが、該第3の認証情報を、該クライアントに予め格納された署名鍵SigKによって署名化した上で前記サーバへ送信し、
・ 前記サーバが、前記署名化された前記第3の認証情報を、前記署名鍵SigKに対応して予め該サーバに格納されている検証鍵VrfKを用いて検証することによって前記クライアントを認証する、
ように構成される、システム。
【請求項35】
RSA及びパスワードに基づく相互認証処理をクライアントとの間で遂行するサーバにおいて実行される方法であって、
クライアントIDに対応付けられて前記サーバのデータベースに格納されている認証データ、及び、RSA秘密鍵(d, N)に基づいて、サーバ側マスター鍵kを計算するステップと、
クライアントから受信した第1の認証情報Zに基づく値に前記RSA秘密鍵を適用して情報Uを計算し、該情報Uを前記クライアントへ送信するステップと、
を含み、ここで前記第1の認証情報Zは、前記クライアントにおいて、前記RSA秘密鍵に対応するRSA公開鍵(e, N)に基づいて生成した暗号文を、ユーザが入力したパスワードに基づいて生成された第1のマスクWでスクランブルすることによって計算された情報であり、
さらに前記情報Uは、前記クライアントにおいてにおいて、該クライアントが生成する乱数と共にクライアント側マスター鍵k'を計算するために用いられる情報である、
方法。
【請求項36】
前記サーバ側マスター鍵kに基づいて第2の認証情報Vsを計算し、該第2の認証情報Vsを前記クライアントへ送信するステップと、
前記クライアントが、前記クライアント側マスター鍵k'に基づいて計算した第3の認証情報Vcと、前記サーバが前記サーバ側マスター鍵kに基づいて生成した第2の比較情報とを比較することによって、前記クライアントを認証するステップと、
をさらに含む、請求項35に記載の方法。
【請求項37】
前記第1の認証情報Zと共に暗号文y2を受信するステップと、
前記情報Uを、前記暗号文y2を前記RSA秘密鍵(d, N)で復号した復号文x2'を用いて、U=(Z/x2')d mod Nによって計算するステップと、
を含み、ここで、
・ 前記第1の認証情報Zが、前記クライアントにおいて、Z=y1・x2・W mod Nによって計算されたものであり、
・ y1は、前記クライアントにおいて生成された乱数x1を前記RSA公開鍵(e, N)を用いて暗号化した暗号文であり、
・ x2は、前記クライアントにおいて生成された、前記乱数x1とは別の乱数であり、
・ Wは前記第1のマスクWであり、
・ 前記y2は、前記乱数x2を前記RSA公開鍵(e, N)を用いて暗号化した暗号文である、
請求項35または36に記載の方法。
【請求項38】
前記RSA公開鍵(e, N)の指数eは80ビット以上の素数である請求項35から37のいずれかに記載の方法。
【請求項39】
前記サーバは、前記クライアントと通信を行う前に、前記データベースに格納されているクライアントIDと認証データの組に対して予め前記サーバ側マスター鍵kを計算しておく、請求項35から38のいずれかに記載の方法。
【請求項40】
前記データベースには、クライアントIDと認証データの組が複数個格納されており、前記サーバは、クライアントと通信を行う前に、前記複数個の組の少なくとも2個以上について、それぞれマスター鍵を計算しておく、請求項39に記載の方法。
【請求項41】
請求項40に記載の方法を用いた匿名認証処理のために、前記サーバで実行される方法であって、
前記データベースに格納される複数のクライアントIDの各々について、暗号用OTPを計算するステップと、
認証要求を送ったクライアントに対して、マスター鍵及び前記計算した暗号用OTPの集合から計算した暗号文を送信するステップと、
を含む、方法。
【請求項42】
前記データベースに格納されている認証データはパスワードである、請求項35から41に記載の方法。
【請求項43】
前記第1のマスクWが、前記ユーザが入力したパスワード及び前記クライアントのメモリに格納されている秘密情報の二要素を用いて生成されるものであり、
前記データベースに格納されている認証データは、前記秘密情報に対応して前記データベースに格納される認証データである、
請求項35から41に記載の方法。
【請求項44】
請求項43に記載の方法のうち、請求項36に記載の事項を含む方法であって、前記クライアントを認証するステップにおいて、該認証が成功した場合、前記認証データを前記クライアントにおいて更新された秘密情報と対応がつくように更新し、該更新した認証データを前記データベースに格納するステップをさらに含む、方法。
【請求項45】
請求項36から44に記載の方法であって、請求項36に記載の事項を含む方法において、
前記第3の認証情報Vcが、前記クライアントにおいて署名鍵SigKによって署名化されており、前記サーバは、署名化された前記第3の認証情報Vcを、前記署名鍵SigKに対応して予め該サーバのデータベースに格納された検証鍵VrfKを用いて検証する、方法。
【請求項46】
クライアント・サーバ間で遂行される、RSA及びパスワードに基づく相互認証処理のために、サーバで実行される方法であって、
クライアントから第1の認証情報Z及び暗号文y2を受信するステップと、
情報Uを、前記暗号文y2をRSA秘密鍵(d, N)で復号した復号文x2'を用いて、U=(Z/x2')d mod Nによって計算するステップと、
前記計算した情報Uを前記クライアントへ送信するステップと、
を含み、ここで、
・ 前記第1の認証情報Zが、前記クライアントにおいて、Z=y1・x2・W mod Nによって計算されたものであり、
・ y1は、前記クライアントにおいて生成された乱数x1を、前記RSA秘密鍵に対応するRSA公開鍵(e, N)を用いて暗号化した暗号文であり、
・ x2は、前記クライアントにおいて生成された、前記乱数x1とは別の乱数であり、
・ Wは前記第1のマスクWであり、
・ 前記y2は、前記乱数x2を前記RSA公開鍵(e, N)を用いて暗号化した暗号文である、
方法。
【請求項47】
RSA及びパスワードに基づく相互認証処理をクライアントとの間で遂行するサーバにおいて実行される方法であって、
RSA公開鍵(e, N)に基づいて生成した暗号文と、ユーザが入力したパスワードと、前記クライアントのメモリに格納された秘密情報とに基づいてクライアントが生成した第1の認証情報を、該クライアントから受信するステップと、
前記サーバが、前記秘密情報に対応して前記サーバのデータベースに格納された認証データ及び前記第1の認証情報に基づいて第2の認証情報を生成し、該第2の認証情報を前記クライアントへ送信するステップと、
前記クライアントにおける、前記第2の認証情報を用いた前記サーバの認証の成功に応じて、該クライアントで生成される第3の認証情報を、前記クライアントから受信するステップと、
前記第3の認証情報を用いて前記クライアントを認証すると共に、該認証が成功した場合、前記認証データを前記クライアントにおいて更新された秘密情報と対応がつくように更新し、該更新した認証データを前記データベースに格納するステップと、
を含む、方法。
【請求項48】
クライアントが、RSA公開鍵(e, N)に基づいて生成した暗号文、及び、ユーザが入力したパスワードに基づいて生成した第1の認証情報をサーバに送信するステップと、
前記サーバが、前記第1の認証情報に基づいて第2の認証情報を生成し、該第2の認証情報を前記クライアントへ送信するステップと、
前記クライアントが、前記第2の認証情報を用いて前記サーバを認証するステップと、
前記クライアントが、前記サーバの認証が成功した場合に、第3の認証情報を前記サーバへ送信するステップと、
前記サーバが、前記第3の認証情報を用いて前記クライアントを認証するステップと、
を含む、RSA及びパスワードに基づく相互認証処理において、前記サーバで実行される方法であって、前記第3の認証情報Vcが、前記クライアントにおいて署名鍵SigKによって署名化されており、前記サーバは、署名化された前記第3の認証情報Vcを、前記署名鍵SigKに対応して予め該サーバのデータベースに格納された検証鍵VrfKを用いて検証することを特徴とする、方法。
【請求項49】
CPUに、請求項35から48に記載の方法を実行されるようにプログラムされる、コンピュータ・プログラム。
【請求項50】
請求項49に記載のコンピュータ・プログラムを記憶手段に格納し、内蔵CPUを用いて該コンピュータ・プログラムを実行するように構成される、コンピュータ。
【請求項51】
RSA及びパスワードに基づく相互認証処理をサーバとの間で遂行するクライアントであって、
前記サーバが生成したRSA公開鍵(e, N)に基づいて生成した暗号文を、ユーザが入力したパスワードに基づいて生成した第1のマスクWでスクランブルした第1の認証情報Zを計算する手段と、
前記第1の認証情報Z及び前記クライアントの身元情報であるクライアントIDを、前記サーバへ送信する手段と、
前記第1の認証情報Zの送信に応じて前記サーバから受信した情報Uと、該クライアントが生成する乱数とに基づき、クライアント側マスター鍵k'を計算する手段と、
を備え、ここで前記情報Uは、前記サーバにおいて、前記第1の認証情報Zに基づく値に前記RSA秘密鍵を適用して計算されたものである、
クライアント。
【請求項52】
第1の乱数x1および第2の乱数x2を生成する手段と、
前記第1の乱数x1を前記RSA公開鍵を用いて暗号化した第1の暗号文y1と、前記第2の乱数x2を前記RSA公開鍵を用いて暗号化した第2の暗号文y2とを計算する手段と、
前記第1の認証情報Zを、Z=y1・x2・W mod Nによって計算する手段と、
を備え、
前記第1の認証情報Z及び前記クライアントIDを前記サーバへ送信する手段は、これらの情報と共に前記第2の暗号文y2を送信するように構成され、
前記情報Uは、前記第2の暗号文y2を前記RSA秘密鍵で復号した第2の復号文x2'を用いて、U=(Z/x2')d mod Nによって計算されるものである、
クライアント。
【請求項53】
前記RSA公開鍵(e, N)の指数eは80ビット以上の素数である、請求項51または52に記載のクライアント。
【請求項54】
前記第1のマスクWを、前記ユーザが入力したパスワード及び前記クライアントのメモリに格納されている秘密情報の二要素を用いて生成するように構成される、請求項51から53のいずれかに記載のクライアント。
【請求項55】
RSA及びパスワードに基づく相互認証処理をサーバとの間で遂行するクライアントであって、
・ RSA公開鍵(e, N)に基づいて生成した暗号文と、ユーザが入力したパスワードと、メモリから読み出した秘密情報とに基づいて、第1の認証情報を生成する手段と、
・ 前記第1の認証情報をサーバへ送信する手段と、
・ 前記第1の認証情報の送信に応じて前記サーバから受信した第2の認証情報を用いて前記サーバを認証する手段と、
・ 前記サーバの認証が成功した場合に、前記秘密情報を更新して前記メモリに格納する手段と、
を備える、クライアント。
【請求項56】
クライアントが、RSA公開鍵(e, N)に基づいて生成した暗号文、及び、ユーザが入力したパスワードに基づいて生成した第1の認証情報をサーバに送信するステップと、
前記サーバが、前記第1の認証情報に基づいて第2の認証情報を生成し、該第2の認証情報を前記クライアントへ送信するステップと、
前記クライアントが、前記第2の認証情報を用いて前記サーバを認証するステップと、
前記クライアントが、前記サーバの認証が成功した場合に、第3の認証情報を前記サーバへ送信するステップと、
前記サーバが、前記第3の認証情報を用いて前記クライアントを認証するステップと、
を含む、RSA及びパスワードに基づく相互認証処理を、サーバとの間で遂行するクライアントであって、前記第3の認証情報を、該クライアントに予め格納された署名鍵SigKによって署名化した上で前記サーバへ送信することを特徴とする、クライアント。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2009−267451(P2009−267451A)
【公開日】平成21年11月12日(2009.11.12)
【国際特許分類】
【出願番号】特願2008−110756(P2008−110756)
【出願日】平成20年4月21日(2008.4.21)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成19年度経済産業省委託研究「新世代情報セキュリティ研究開発事業(ユビキタスネットワーク向けセキュアアセットコントロール技術の研究開発及び情報漏えいに堅牢な認証・データ管理方式とそのソフトウェアによる安全な実装・検証手法に関する研究開発)」産業技術力強化法第19条の適用をうける特許出願
【出願人】(301021533)独立行政法人産業技術総合研究所 (6,529)
【Fターム(参考)】