JP5392741B2 - Rsaをベースとしたパスワード認証方式及びその応用 - Google Patents

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

Info

Publication number
JP5392741B2
JP5392741B2 JP2008110756A JP2008110756A JP5392741B2 JP 5392741 B2 JP5392741 B2 JP 5392741B2 JP 2008110756 A JP2008110756 A JP 2008110756A JP 2008110756 A JP2008110756 A JP 2008110756A JP 5392741 B2 JP5392741 B2 JP 5392741B2
Authority
JP
Japan
Prior art keywords
client
server
authentication
information
authentication information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008110756A
Other languages
English (en)
Other versions
JP2009267451A (ja
Inventor
星漢 辛
和邦 古原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Institute of Advanced Industrial Science and Technology AIST
Original Assignee
National Institute of Advanced Industrial Science and Technology AIST
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Institute of Advanced Industrial Science and Technology AIST filed Critical National Institute of Advanced Industrial Science and Technology AIST
Priority to JP2008110756A priority Critical patent/JP5392741B2/ja
Publication of JP2009267451A publication Critical patent/JP2009267451A/ja
Application granted granted Critical
Publication of JP5392741B2 publication Critical patent/JP5392741B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

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

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

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

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

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

<ユーザの端末装置の動作>
まず、図5を参照して、匿名認証システム400におけるユーザの端末装置402の機能構成と動作について説明する。なお、前述のユーザ端末装置102と全く同じ構成要素については同じ符号を付してそれを示している。
まず、マスク生成器202は、ユーザから入力されたパスワードpwiとクライアントIDであるCiとサーバIDであるSとを入力として、マスクWi=G(Ci, S, pwi)を計算して出力する。
そして、RSA暗号演算器204は、乱数発生器206によりランダムに発生させた乱数x1, x2 (x1, x2∈ZN *)とサーバの認証装置から受信したRSA公開鍵(e, N)とを入力として、暗号文y1=x1 e mod Nと暗号文y2=x2 e mod Nを計算して出力する。
結合器208は、マスク生成器202から生成されたマスクWiと乱数発生器206により発生させた乱数x2とRSA暗号演算器204から出力された暗号文y1とサーバの認証装置404から受信したRSA公開鍵(e, N)とを入力として、マスクによってスクランブルされた暗号文Z=y1・x2・Wi mod Nを計算して出力する。
ユーザの端末装置402は、クライアントIDの集合であるC={C1, C2, …, Cn-1, Cn}と、結合器208により出力されたZと、RSA暗号演算器204により出力された暗号文y2とをサーバの認証装置404へ送信する。
続いて、マスター鍵生成器210は、サーバの認証装置404から受信した値Uと乱数発生器206により発生させた乱数x1とサーバの認証装置404から受信したRSA公開鍵(e, N)とを入力として、マスター鍵Ki=U/x1 mod Nを計算して出力する。
そして、復号用OTP生成器520は、クライアントIDであるCiと、マスク生成器502から生成されたマスクWiと、マスター鍵生成器から生成されたマスター鍵Kiとを入力として、復号用OTPであるF(Ci, Wi, Ki)を計算して出力する。
そして、マスター秘密値生成器522は、復号用OTP生成器520から生成された復号用OTPであるF(Ci, Wi, Ki)と、サーバの認証装置404から受信したi番目のOTP暗号文Ti=iとを入力として、マスター秘密値:
Figure 0005392741
を計算して出力する。
認証結果判断部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)を使ってもよい。
認証結果判断部512において、VSとH(1‖Msg‖x2‖MS')が一致しない場合、認証結果判断部は、エラーメッセージ発生器に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器はエラーを発生して処理を中断する。
一方、認証結果判断部512においてVSとH(1‖Msg‖x2‖MS')が一致した場合はサーバの認証装置404が正当な装置として認証して、Msg‖x2‖MS'を出力する。
そして、認証子生成器516は、認証結果判断部512から入力されたMsg‖x2‖MS'から、認証子VCを、VCi=H(2‖Msg‖x2‖MS')により計算して出力する。
ユーザの端末装置402は、認証子生成器516により出力された認証子VCiをサーバの認証装置404へ送信する。
セッション鍵生成器518は、認証結果判断部512から入力されたMsg‖x2‖MS'を入力として、セッション鍵SKを、SK=H(3‖Msg‖x2‖MS')により生成して出力する。

<サーバの認証装置404の動作>
次に、図6を参照して、RSAをベースにした匿名認証システム400におけるサーバの認証装置404の機能要素及び動作について説明する。サーバの認証装置404はn個のクライアントのIDであるCjとそのユーザのパスワードであるpwjの対((Cj,pwj),1≦j≦n)を装置内部にあるデータベース602に保持している。
まず、RSA鍵生成器304は、セキュリティパラメータlを入力として、RSA鍵生成アルゴリズムに従ってRSA公開鍵(e,N)とRSA秘密鍵(d,N)を生成して出力する。
マスク生成器608は、各クライアントIDであるCjとサーバのIDであるSとデータベースから読み出した各ユーザのパスワードpwjを入力として、マスクWj=G(Cj,S,pwj)を計算して、その集合である{Wj}1≦j≦nを{Cj}1≦j≦nとともに出力する。
そして、マスター鍵生成器610は、マスク生成器608により生成されたマスクの集合{Wj}1≦j≦nとRSA鍵生成器304により生成されたRSA秘密鍵(d,N)を入力として、マスター鍵Kjを、Kj=Wj d mod Nにより計算して、その集合である{Kj}1≦j≦nを出力する。
そして、暗号用OTP生成器622は、マスク生成器608から出力された各クライアントIDであるCjと各マスクWjとマスター鍵生成器610から生成されたマスター鍵Kjを入力として、暗号用OTPであるF(Cj,Wj,Kj)を計算して、その集合である{F(Cj,Wj,Kj)}1≦j≦nを出力する。
そして、OTP暗号演算器624は、暗号用OTP生成器622から生成された暗号用OTPの集合である{F(Cj,Wj,Kj)}1≦j≦nとマスター秘密値発生器626によりランダムに発生させたマスター秘密値MS(MS∈{0,1}k)を入力として、OTP暗号文:
Figure 0005392741
を計算して、その集合である{Tj}1≦j≦nを出力する。
サーバの認証装置404において、これまでの計算はユーザの端末装置402と通信をする前に、予め済ませておくことができる。
続いてサーバの認証装置404は、RSA鍵生成器304により生成されたRSA公開鍵(e,N)をユーザの端末装置402へ送信する。
そして、RSA復号演算器306は、ユーザの端末装置402から受信した暗号文y2とRSA鍵生成器304により生成されたRSA秘密鍵(d,N)を入力として、乱数x2'を、x2'=y2 d mod Nにより計算して出力する。
また、RSA復号演算器306は、ユーザの端末装置402から受信したマスクによってスクランブルされた暗号文Zと乱数x2'とRSA鍵生成器304により生成されたRSA秘密鍵(d,N)とを入力として、値Uを、U=(Z/x2')d mod Nにより計算して出力する。
一方、集合器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である。
そして、認証子生成器614は、集合器612から出力されたMsg‖x2'とマスター秘密値発生器626にランダムに発生させたマスター秘密値MSを入力として、認証子VSを、VS=H(1‖Msg‖x2'‖MS)により計算してMsg‖x2'‖MSとともに出力する。
サーバの認証装置404は、認証子生成器614により計算して得られたVSとサーバのIDであるSとRSA復号演算器306により出力された値UとOTP暗号演算器624により出力されたOTP暗号文の集合である{Tj}1≦j≦nをユーザの端末装置402へ送信する。
続いて、認証結果判断部616は、認証子生成器614から出力されたMsg‖x2'‖MSを入力として、H(2‖Msg‖x2'‖MS)を計算してユーザの端末装置402から受信したVCiと比較する。ここで、Hの代わりにMAC(Message Authentication Code)を使ってもよい。
認証結果判断部616においてVCiとH(2‖Msg‖x2'‖MS)が一致しない場合、認証結果判断部616は、エラーメッセージ発生器318に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器318はエラーを発生して処理を中断する。
一方、認証結果判断部616において、VCiとH(2‖Msg‖x2'‖MS)が一致した場合は、ユーザの端末装置402が正当な装置として認証する。
セッション鍵生成器620は、認証子生成器614から出力されたMsg‖x2'‖MSを入力として、セッション鍵SKをSK=H(3‖Msg‖x2'‖MS)により生成して出力する。

〔実施例3:RSAをベースにした二要素認証システム〕
図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になるような整数である。
この二要素認証システム700のj番目プロトコル実行では、ユーザの端末装置702はユーザから入力されたパスワードとメモリに保持された記録情報CSjに基づいてある演算を行い、ユーザの認証データである記録情報SSjを保持しているサーバの認証装置704と、インターネットのようなオープンネットワーク106を通してお互いに相互認証して、その相互認証が成功した時、お互いに共有する同じセッション鍵を確保しながら各自の記録情報を次のセッションのために更新しておく。それにより、サーバの端末装置はユーザの認証データに対してパスワードを全数探索することができなくなり、ユーザの端末装置702は記録情報が漏洩したとしても安全性が落ちることがない。

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

<ユーザの端末装置702における作業>
図8を参照する。認証データ生成器1032は、乱数発生器206によりランダムに発生させた乱数si1(si1∈{0,1}k)と、クライアントIDであるCと、i番目サーバIDであるSiと、ユーザから入力されたパスワードpwとを入力として、認証データ:
Figure 0005392741
を計算して出力する。
ユーザの端末装置702は、認証データ生成器1032から生成されたサーバ用の認証データvi1をサーバの認証装置704へ送信する。ユーザの端末装置702は、i番目サーバIDであるSiと、カウンタ1 と、乱数発生器206により発生させた乱数si1と、サーバの認証装置704から受信したRSA公開鍵(e,N)をユーザの端末装置702が内蔵するメモリ1034へ記録情報としてSi,1,si1,(e,N)を保存する。

<サーバの認証装置704における作業>
次に、図9を参照して、サーバの認証装置704の初期化の作業について説明する。
RSA鍵生成器304は、セキュリティパラメータlを入力として、RSA鍵生成アルゴリズムに従ってRSA公開鍵(e,N)とRSA秘密鍵(d,N)を生成して出力する。
サーバの認証装置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)番目プロトコル実行]
次に、図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の動作>
まず図10を参照し、二要素認証システム700におけるユーザの端末装置702のj番目プロトコル実行の動作について説明する。この時、ユーザの端末装置702は記録情報としてSi,j,sij,(e,N)を装置内部にあるメモリ1034に保持している。
まず、認証データ生成器1032は、ユーザから入力されたパスワードpwと、クライアントIDであるCと、i番目サーバIDであるSiと、メモリ1034から読み出した乱数sijとを入力として、認証データ:
Figure 0005392741
を計算して出力する。
そして、マスク生成器1002は、認証データ生成器1032から生成された認証データvijとメモリ1034から読み出したカウンタjを入力として、マスクW=G(j,vij)を計算して出力する。
そして、RSA暗号演算器204は、乱数発生器206によりランダムに発生させた乱数x1,x2 (x1,x2∈ZN *)とメモリ1034から読み出したRSA公開鍵(e,N)を入力として、暗号文y1=x1 e mod Nと暗号文y2=x2 e mod Nを計算して出力する。
結合器208は、マスク生成器1002から生成されたマスクWと乱数発生器206により発生させた乱数x2とRSA暗号演算器204から出力された暗号文y1とメモリ1034から読み出したRSA公開鍵(e,N)を入力として、マスクによってスクランブルされた暗号文Z=y1・x2・W mod Nを計算して出力する。
ユーザの端末装置702は、クライアントIDであるCと、メモリ1034から読み出したカウンタjと、結合器208により出力されたZと、RSA暗号演算器204により出力された暗号文y2とを、サーバの認証装置704へ送信する。
続いて、マスター鍵生成器210は、サーバの認証装置704から受信した値Uと、乱数発生器206により発生させた乱数x1と、メモリ1034から読み出したRSA公開鍵(e,N)を入力として、マスター鍵k'=U/x1 mod Nとを計算して出力する。
そして、認証結果判断部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)を使ってもよい。
認証結果判断部1012において、VSiとH(1‖Msg‖vij‖x2‖k')とが一致しない場合、認証結果判断部1012は、エラーメッセージ発生器214に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器214はエラーを発生して処理を中断する。一方、認証結果判断部1012においてVSiとH(1‖Msg‖vij‖x2‖k')が一致した場合は、サーバの認証装置704が正当な装置であるとして認証して、Msg‖vij‖x2‖k'を出力する。
そして、認証子生成器1016は、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'から認証子VCを、VC=H(2‖Msg‖vij‖x2‖k')により計算して出力する。
ユーザの端末装置702は、認証子生成器1016により出力された認証子VCをサーバの認証装置704へ送信する。
セッション鍵生成器1018は、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'を入力として、セッション鍵SKをSK=H(3‖Msg‖vij‖x2‖k')により生成して出力する。
そして、秘密値更新器1036は、メモリ1034から読み出した乱数sijと、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'とを入力として、j+1番目の乱数si(j+1)を、
Figure 0005392741
により計算してカウンタj+1とともに出力する。
ユーザの端末装置702は、メモリ1034に保持している現在のカウンタと乱数であるj,sijとを、秘密値更新器1036により出力された次のカウンタと乱数であるj+1,si(j+1) とに書き換える。

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

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

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

<ユーザの端末装置1202における作業>
図13を参照する。認証データ生成器1032は、乱数発生器206によりランダムに発生させた乱数si1(si1∈{0,1}k)と、クライアントIDであるCと、i番目サーバIDであるSiと、ユーザから入力されたパスワードpwとを入力として、認証データ:
Figure 0005392741
を計算して出力する。
そして、署名鍵生成器1542は、セキュリティパラメータl2を入力として、署名鍵生成アルゴリズムに従って署名鍵SigKと検証鍵VrfKの対(SigK,VrfK)を生成して出力する。
ユーザの端末装置1202は、認証データ生成器1032から生成されたサーバ用の認証データvi1と、署名鍵生成器1542から生成された検証鍵VrfKとをサーバの認証装置1204へ送信する。
ユーザの端末装置1202は、i番目サーバIDであるSiと、カウンタ1と、乱数発生器206により発生させた乱数si1と、サーバの認証装置1204から受信したRSA公開鍵(e,N)と、署名鍵生成器1542から生成された署名鍵SigKとを、ユーザの端末装置1202の内部にあるメモリ1534へ記録情報としてSi,1,si1,(e,N),SigKを保存する。

<サーバの認証装置1204における作業>
次に、図14を参照してサーバの認証装置1204の初期化の動作について説明する。
RSA鍵生成器304は、セキュリティパラメータl1を入力として、RSA鍵生成アルゴリズムに従ってRSA公開鍵(e,N)とRSA秘密鍵(d,N)を生成して出力する。
サーバの認証装置1204は、RSA鍵生成器304から生成されたRSA公開鍵(e,N)をユーザの端末装置1202へ送信する。
サーバの認証装置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)番目プロトコル実行]
次に、図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の動作>
まず図15を参照し、二要素認証システム1200におけるユーザの端末装置1202のj番目プロトコル実行の動作について説明する。この時、ユーザの端末装置1202は記録情報としてSi,j,sij,(e,N),SigKを装置内部にあるメモリ1534に保持している。
まず、認証データ生成器1032は、ユーザから入力されたパスワードpwと、クライアントIDであるCと、i番目サーバIDであるSiと、メモリ1534から読み出した乱数sijとを入力として、認証データ:
Figure 0005392741
を計算して出力する。
そして、マスク生成器1002は、認証データ生成器1032から生成された認証データvijと、メモリ1534から読み出したカウンタjとを入力として、マスクW=G(j,vij)を計算して出力する。
そして、RSA暗号演算器204は、乱数発生器206によりランダムに発生させた乱数x1,x2(x1,x2∈ZN *)と、メモリ1534から読み出したRSA公開鍵(e,N)とを入力として、暗号文y1=x1 e mod Nと、暗号文y2=x2 e mod Nとを計算して出力する。
結合器208は、マスク生成器1002から生成されたマスクWと、乱数発生器206により発生させた乱数x2と、RSA暗号演算器204から出力された暗号文y1と、メモリ1534から読み出したRSA公開鍵(e,N)とを入力として、マスクによってスクランブルされた暗号文Z=y1・x2・W mod Nを計算して出力する。
ユーザの端末装置1202は、クライアントIDであるCと、メモリ1534から読み出したカウンタjと、結合器208により出力されたZと、RSA暗号演算器204により出力された暗号文y2とをサーバの認証装置1204へ送信する。
続いて、マスター鍵生成器210は、サーバの認証装置1204から受信した値Uと、乱数発生器206により発生させた乱数x1と、メモリ1534から読み出したRSA公開鍵(e,N)とを入力として、マスター鍵k'=U/x1 mod Nを計算して出力する。
そして、認証結果判断部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)を使ってもよい。
認証結果判断部1012において、VSiとH(1‖Msg‖vij‖x2‖k')が一致しない場合、認証結果判断部1012は、エラーメッセージ発生器214に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器214はエラーを発生して処理を中断する。
一方、認証結果判断部1012においてVSiとH(1‖Msg‖vij‖x2‖k')が一致した場合は、サーバの認証装置1204が正当な装置として認証して、Msg‖vij‖x2‖k'を出力する。
そして、署名生成器1536は、メモリ1534から読み出した署名鍵SigKと、認証結果判断部1012から入力されたMsg‖vij‖x2‖k'とを入力として、署名SigCを、SigC=SignSigK(VC)により計算して出力する。ここで、VC=H(2‖Msg‖vij‖x2‖k')である。
ユーザの端末装置1202は、署名生成器1536により出力された署名SigCをサーバの認証装置1204へ送信する。
セッション鍵生成器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)
Figure 0005392741
により計算してカウンタj+1とともに出力する。
ユーザの端末装置1202は、メモリ1534に保持している現在のカウンタと乱数であるj,sijを、秘密値更新器1036により出力された次のカウンタと乱数であるj+1,si(j+1)に書き換える。

<サーバの認証装置1204の動作>
次に、図16を参照して、RSAをベースにした二要素認証システム1200におけるサーバの認証装置1204のj番目プロトコル実行の動作について説明する。この時、サーバの認証装置1204は記録情報としてC,j,vij,(d,N),VrfKを装置内部にあるデータベース1602に保持している。
まず、カウンタ判断部1132は、ユーザの端末装置1202から受信したカウンタjが正しいかどうかを確認する。カウンタ判断部1132は、データベース1602から読み出したカウンタjをユーザの端末装置1202から受信したカウンタjと比較して一致しない場合、エラーメッセージ発生器1134に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器1134はエラーを発生して処理を中断する。
一方、カウンタ判断部1132においてデータベース1602から読み出したカウンタjをユーザの端末装置1202から受信したカウンタjと比較して一致した場合は、続けて次の処理を行う。
RSA復号演算器306は、ユーザの端末装置1202から受信した暗号文y2と、データベース1602から読み出したRSA秘密鍵(d,N)とを入力として、乱数x2'を、x2'=y2 d mod Nにより計算して出力する。
また、RSA復号演算器306は、ユーザの端末装置1202から受信したマスクによってスクランブルされた暗号文Zと、乱数x2'と、データベース1602から読み出したRSA秘密鍵(d,N)とを入力として、値Uを、U=(Z/x2')d mod Nにより計算して出力する。
一方、マスク生成器1108は、データベース1602から読み出したカウンタjと、認証データvijとを入力として、マスクW=G(j,vij)を計算して出力する。
そして、マスター鍵生成器310は、マスク生成器1108により生成されたマスクWと、データベース1602から読み出したRSA秘密鍵(d,N)とを入力として、マスター鍵kを、k=Wd mod Nにより計算して出力する。
集合器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である。
そして、認証子生成器1114は、集合器1112から出力されたMsg‖vij‖x2'‖kを入力として、認証子VSiを、VSi=H(1‖Msg‖vij‖x2'‖k)により計算してMsg‖vij‖x2'‖kとともに出力する。
サーバの認証装置1204は、認証子生成器1114により計算して得られたVSiと、i番目サーバのIDであるSiと、RSA復号演算器306により出力された値Uとをユーザの端末装置1202へ送信する。
続いて、署名検証判断部1616は、データベース1602から読み出した検証鍵VrfKと、認証子生成器1114から出力されたMsg‖vij‖x2'‖kとを入力として、署名SigCの検証を、VerVrfK(VC,SigC)により行う。ここで、VC=H(2‖Msg‖vij‖x2'‖k)である。
署名検証判断部1616において署名SigCの検証が出来なかった場合、署名検証判断部1616は、エラーメッセージ発生器318に対して、検証できないことを通知する。これを受けて、エラーメッセージ発生器318はエラーを発生して処理を中断する。
一方、署名検証判断部1616において、署名SigCの検証ができた場合は、ユーザの端末装置1202が正当な装置として認証する。
セッション鍵生成器1120は、認証子生成器1114から出力されたMsg‖vij‖x2'‖kとを入力として、セッション鍵SKをSK=H(3‖Msg‖vij‖x2'‖k)により生成して出力する。
そして、秘密値更新器1136は、データベース1602から読み出した認証データvijと、認証子生成器1114から入力されたMsg‖vij‖x2'‖kとを入力として、j+1番目の認証データvi(j+1)を、
Figure 0005392741
により計算してカウンタj+1とともに出力する。
サーバの認証装置1204は、データベース1602に保持している現在のカウンタと、認証データであるj,vijを、秘密値更新器1136により出力された次のカウンタと、認証データであるj+1,vi(j+1)に書き換える。
以上、本発明者の提案の具現化形態のいくつかの例を説明したが、これらの例は本発明者のアイディアの具現化形態を限定する目的で挙げられたのではなく、あくまで本発明者が本願によって開示する新たな技術思想のより深い理解に資するために挙げられたものである。開示される技術思想の実施形態は上記の例に限定されるものではなく、その思想を逸脱することなく、様々な形態をとり得ることは言うまでもない。
実施例1として説明される、RSAをベースにしたパスワード認証システム100の構成の概要を示すブロック図 パスワード認証システム100における、ユーザ端末装置102の構成及び動作を説明するための図 パスワード認証システム100における、サーバの認証装置104の構成及び動作を説明するための図 実施例2として説明される、RSAをベースにした匿名認証システム400の構成の概要を示すブロック図 匿名認証システム400における、ユーザ端末装置402の構成及び動作を説明するための図 匿名認証システム400における、サーバの認証装置404の構成及び動作を説明するための図 実施例3として説明される、RSAをベースにした二要素認証システム700の構成の概要を示すブロック図 二要素認証システム700における、ユーザ端末装置702の初期化の様子を説明するための図 二要素認証システム700における、サーバの認証装置704の初期化の様子を説明するための図 二要素認証システム700における、ユーザ端末装置702の構成及び動作を説明するための図 二要素認証システム700における、サーバの認証装置704の構成及び動作を説明するための図 実施例4として説明される、RSAをベースにした二要素認証システム1200の構成の概要を示すブロック図 二要素認証システム1200における、ユーザ端末装置1202の初期化の様子を説明するための図 二要素認証システム1200における、サーバの認証装置1204の初期化の様子を説明するための図 二要素認証システム1200における、ユーザ端末装置1202の構成及び動作を説明するための図 二要素認証システム1200における、サーバの認証装置1204の構成及び動作を説明するための図
符号の説明
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 署名検証判断部

Claims (56)

  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. 前記第3の認証情報Vc又は前記第3の認証情報は、クライアントに予め格納された署名鍵SigKによって署名化された上で前記サーバへ送信され、
    前記サーバは、前記署名化された前記第3の認証情報Vc又は前記第3の認証情報を、前記署名鍵SigKに対応して予め前記サーバに格納されている検証鍵VrfKを用いて検証する、請求項15又は請求項16に記載の方法。
  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から29に記載のシステムであって、請求項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. 前記クライアントは、前記第3の認証情報Vc又は前記第3の認証情報を、前記クライアントに予め格納された署名鍵SigKによって署名化した上で前記サーバへ送信し、
    前記サーバが、前記署名化された前記第3の認証情報Vc又は前記第3の認証情報を、前記署名鍵SigKに対応して予め前記サーバに格納されている検証鍵VrfKを用いて検証する、請求項32又は請求項33に記載のシステム。
  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のマスクであり
    ・ 前記y2は、前記乱数x2を前記RSA公開鍵(e, N)を用いて暗号化した暗号文である、
    方法。
  47. RSA及びパスワードに基づく相互認証処理をクライアントとの間で遂行するサーバにおいて実行される方法であって、
    RSA公開鍵(e, N)に基づいて生成した暗号文と、ユーザが入力したパスワードと、前記クライアントのメモリに格納された秘密情報とに基づいてクライアントが生成した第1の認証情報を、該クライアントから受信するステップと、
    前記サーバが、前記秘密情報に対応して前記サーバのデータベースに格納された認証データ及び前記第1の認証情報に基づいて第2の認証情報を生成し、該第2の認証情報を前記クライアントへ送信するステップと、
    前記クライアントにおける、前記第2の認証情報を用いた前記サーバの認証の成功に応じて、該クライアントで生成される第3の認証情報を、前記クライアントから受信するステップと、
    前記第3の認証情報を用いて前記クライアントを認証すると共に、該認証が成功した場合、前記認証データを前記クライアントにおいて更新された秘密情報と対応がつくように更新し、該更新した認証データを前記データベースに格納するステップと、
    を含む、方法。
  48. 前記第3の認証情報は、前記クライアントにおいて署名鍵SigKによって署名化されており、前記サーバは、署名化された前記第3の認証情報を、前記署名鍵SigKに対応して予め該サーバのデータベースに格納された検証鍵VrfKを用いて検証する、請求項47に記載の方法。
  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. 前記サーバの認証が成功した場合には、前記クライアントに予め格納された署名鍵SigKによって署名化した第3の認証情報を前記サーバへ送信することにより、前記サーバに対して前記クライアントを認証させる手段、をさらに備えた請求項55に記載のクライアント。
JP2008110756A 2008-04-21 2008-04-21 Rsaをベースとしたパスワード認証方式及びその応用 Active JP5392741B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008110756A JP5392741B2 (ja) 2008-04-21 2008-04-21 Rsaをベースとしたパスワード認証方式及びその応用

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008110756A JP5392741B2 (ja) 2008-04-21 2008-04-21 Rsaをベースとしたパスワード認証方式及びその応用

Publications (2)

Publication Number Publication Date
JP2009267451A JP2009267451A (ja) 2009-11-12
JP5392741B2 true JP5392741B2 (ja) 2014-01-22

Family

ID=41392804

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008110756A Active JP5392741B2 (ja) 2008-04-21 2008-04-21 Rsaをベースとしたパスワード認証方式及びその応用

Country Status (1)

Country Link
JP (1) JP5392741B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018042203A (ja) 2016-09-09 2018-03-15 株式会社東芝 情報処理装置、サーバ装置、情報処理システム、移動体、および情報処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005041474A1 (ja) * 2003-10-28 2005-05-06 The Foundation For The Promotion Of Industrial Science 認証システム及び遠隔分散保存システム
JP5004086B2 (ja) * 2007-10-29 2012-08-22 独立行政法人産業技術総合研究所 短い系列を用いた認証システム

Also Published As

Publication number Publication date
JP2009267451A (ja) 2009-11-12

Similar Documents

Publication Publication Date Title
US9853816B2 (en) Credential validation
JP5201136B2 (ja) 匿名認証システムおよび匿名認証方法
US8437473B2 (en) Small public-key based digital signatures for authentication
US9628273B2 (en) Cryptographic method and system for secure authentication and key exchange
CN110247757B (zh) 基于国密算法的区块链处理方法、装置及系统
TWI233739B (en) Systems, methods and computer readable recording medium for remote password authentication using multiple servers
CN104270249B (zh) 一种从无证书环境到基于身份环境的签密方法
US8589693B2 (en) Method for two step digital signature
CN114730420A (zh) 用于生成签名的系统和方法
JP5224481B2 (ja) パスワード認証方法
CN104301108B (zh) 一种从基于身份环境到无证书环境的签密方法
JP2004015241A (ja) 暗号通信システム、その端末装置及びサーバ並びに復号方法
KR100989185B1 (ko) Rsa기반 패스워드 인증을 통한 세션키 분배방법
JP2019537349A (ja) 複合デジタル署名
Tsai et al. An ECC-based blind signcryption scheme for multiple digital documents
CN111669275B (zh) 一种无线网络环境下可选择从节点的主从协作签名方法
KR20080005344A (ko) 인증서버가 사용자단말기를 인증하는 시스템
KR20070035342A (ko) 패스워드 기반의 경량화된 상호 인증 방법
JP5004086B2 (ja) 短い系列を用いた認証システム
JP5392741B2 (ja) Rsaをベースとしたパスワード認証方式及びその応用
CN113014376B (zh) 一种用户与服务器之间安全认证的方法
JP5099771B2 (ja) 二要素認証システム
Adams et al. Digital signatures for mobile users
Surya et al. Single sign on mechanism using attribute based encryption in distributed computer networks
Tan A communication and computation‐efficient three‐party authenticated key agreement protocol

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131008

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131009

R150 Certificate of patent or registration of utility model

Ref document number: 5392741

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250