WO2010005071A1 - パスワード認証方法 - Google Patents

パスワード認証方法 Download PDF

Info

Publication number
WO2010005071A1
WO2010005071A1 PCT/JP2009/062578 JP2009062578W WO2010005071A1 WO 2010005071 A1 WO2010005071 A1 WO 2010005071A1 JP 2009062578 W JP2009062578 W JP 2009062578W WO 2010005071 A1 WO2010005071 A1 WO 2010005071A1
Authority
WO
WIPO (PCT)
Prior art keywords
server
client
authentication
information
mod
Prior art date
Application number
PCT/JP2009/062578
Other languages
English (en)
French (fr)
Inventor
星漢 辛
和邦 古原
Original Assignee
独立行政法人産業技術総合研究所
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 独立行政法人産業技術総合研究所 filed Critical 独立行政法人産業技術総合研究所
Priority to JP2010519823A priority Critical patent/JP5224481B2/ja
Publication of WO2010005071A1 publication Critical patent/WO2010005071A1/ja
Priority to US12/987,599 priority patent/US8422670B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • H04L9/3273Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response for mutual authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • H04L9/0844Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

 KCI攻撃等パブリックネットワーク上の様々な攻撃に安全である認証方法であり、必要とされる計算量を従来に比べて減少させうる認証方法が提供される。この認証方法においては、Diffie-Hellman型鍵交換を利用する相互認証処理技術を、サーバにおけるマスター秘密Ksの計算を、Ks=gによって行うように変形する。ここで、yはサーバで発生した乱数である(y∈(Z/qZ))。これらの方法において、位数qの群を(G,・)とし、その集合Gの生成元をg、U,W∈Gとする。”・”はG上の二項演算子である。

Description

パスワード認証方法
 本発明は、パスワードを用いた認証方法に関し、特に、パスワードのみを用いてクライアント・サーバ間の相互認証を行う認証方法に関する。
 これまでパスワードのみを用いて認証を行う認証方法はいくつか提案されている。その中には攻撃者の通信盗聴によりパスワードの辞書攻撃が可能なものもある。より高い安全性を達するためには、パスワードのみを用いた認証方法では、インターネットのようなパブリックネットワーク上のあらゆる攻撃(通信盗聴、リプレイ攻撃、メッセージ改ざん、成りすまし、man-in-the-middle攻撃など)に耐性を有することが好ましい。かかる要求に関しては、離散対数問題に安全性の根拠をもつ認証方式であって、パブリックネットワーク上のあらゆる攻撃だけではなく、攻撃者がサーバの記録情報を用いてクライアントのなりすましを行うKCI(Key Compromise Impersonation)攻撃にも安全な認証方式が知られている。しかし、このような安全性を有する従来の認証方式における問題点は、クライアント及びサーバともに計算量(すなわち、べき乗剰余演算の回数)を最低限に抑えられないことである。クライアント側においては、ユーザの端末装置が小型の遅い装置、旧世代のパーソナルコンピュータ、スマートカード、あるいは携帯型個人情報端末(PDA)である場合があるため、計算量はできるだけ抑えることが望ましい。サーバ側においても、非常に多くのユーザを管理する必要があり、また計算能力が高くない場合もあるため、やはり計算量はできるだけ低いほうが望ましい。
 特許文献1に記載される方法では、Diffie-Hellman型鍵交換を利用し、パスワードのみを共有する二者間で、データネットワークを通じて安全に相互認証を行っている。しかしながら、特許文献1の図2及び図3の実施例はKCI攻撃に安全ではないし、図4及び図5のパスワードベリファイアを利用した実施例は、KCI攻撃に安全であるものの、本発明者の提案による認証方法に比べてクライアントもサーバも多くの計算量を必要とする。
 特許文献2に記載される方法は、特許文献1の図2に記載される方式の計算効率を改善したものであり、クライアント側の計算量を少なくとも半分に低減することができる。しかしながら、この方法はKCI攻撃に対して安全ではない。また、KCI攻撃に対して安全にするために、特許文献1に記載された方式(図4及び図5のパスワードベリファイアを利用した実施例)のように、特許文献2の方法を変形することはできるものの、本発明者の提案による認証方法に比べてクライアントもサーバも多くの計算量を必要とする。
 特許文献3に記載される方法では、端末と認証サーバが予めパスワードと暗号鍵を共有し、端末はパスワードを暗号鍵で暗号化して認証サーバへ送信することで認証を行い、認証が成功した場合は従来方式でデータ通信用暗号鍵を交換する。しかしながら、端末は暗号鍵を安全に保存するためにデバイスの耐タンパー性が必要となり、暗号鍵が漏えいした場合は、以前に通信した暗号文からパスワードを取り出すことができる。つまり、本発明者の提案による認証方法に比べて安全性が落ちるといえる。
特開2001-313634号公報 特開2002-335238号公報 特開2006-197065号公報
"AMP", IEEE P1363-2, Standard specifications for password-based public key cryptographic techniques "KAM-3", ISO/IEC SC27 FCD 11770-4, Information technology - Security techniques - Key management - Part 4: Mechanisms based on weak secrets
 本発明は、KCI攻撃を含めてパブリックネットワーク上の様々な攻撃に対して安全である認証方法であって、必要とされる計算量を従来に比べて減少させうる認証方法を提案しようとして生まれたものである。
 本発明の認証方法は、認証処理を実行する時点においてはパスワード入力のみをユーザに要求するタイプの相互認証処理技術の認証方法であり、また、Diffie-Hellman型鍵交換を利用する相互認証処理技術の改良であると位置づけられる。
 Diffie-Hellman鍵交換技術では、一般に、クライアントが乱数u(u∈(Z/qZ))に基づいて、値U=gを計算し、サーバへ送信すると共に、サーバも乱数y(y∈(Z/qZ))に基づいて、値Y=gを計算し、クライアントへ送信する。その後、クライアント・サーバ共に、マスター秘密Kを、
   K=guy ……(式1)
によって計算し、この秘密Kに基づいてセッション鍵を生成する。
 Diffie-Hellman型鍵交換に基づく相互認証処理技術は、非特許文献1および非特許文献2に記載されているように、効率よく且つKCI攻撃に対して安全であるとして従来から知られている。これらの文献による認証技術では、クライアント・サーバ共に、マスター秘密Kを、
   K=gy(u+r’) ……(式2)
により計算している。
ここで、
r’=H(C∥S∥U∥Y)あるいはr’=1;
U=g
Y=Uy・r・W
r=H(C∥S∥U);
W=gH1(C∥S∥pw)
C:クライアント装置の識別子;
S:サーバ装置の識別子;
pw:ユーザが覚えているパスワード
である。
 これらの認証方法において、位数qの群を(G,・)とし、その集合Gの生成元をgとし、U,W∈Gとする。また、”・”はG上の二項演算子であり、g,g∈Gとして、g・gをgとして表記し、g・gをg として表記し、g ・g をg i+jとして表記している。パスワードpw及びパスワード認証データWを利用することにより、KCI攻撃等に対する安全性が確保されている。
 ところで、本発明者は、サーバにおけるマスター秘密Ksの計算式を、次のように修正しても、KCI攻撃に対して安全となりうることを見出した。
   Ks=g ……(式3)
 ここで、yは前述の非特許文献1および非特許文献2の場合と同様であり、yはサーバで発生した乱数である(y∈(Z/qZ))。前述の場合と同様に、これらの認証方法においては、位数qの群を(G,・)とし、その集合Gの生成元をgとし、U,W∈Gとする。また、”・”はG上の二項演算子であり、g,g∈Gとして、g・gをgとして表記し,g・gをg として表記し,g ・g をg i+jとして表記している。
 上記の(式2)と(式3)を比べると分かるように、(式3)においては(u+r’)のべき乗剰余演算が不要となっている。これは、サーバで遂行すべきマスター秘密Ksの計算量に著しい違いをもたらす。(式3)を用いることにより、サーバにおける計算量を大幅に減少させることができる。
 さらに、(式3)においてはマスター秘密Ksの計算に、クライアントから供給される情報であるu,U,Cが不要であるため、マスター秘密Ksを事前に計算しておくことが可能である。すなわち、認証を受けるべく、クライアントがサーバに接続してくる前に、予めマスター秘密Ksを計算しておくことができる。従って、クライアントが接続してきてからのサーバの計算量が少なくてすみ、短時間に認証処理を終えることができる。
 従来、Diffie-Hellman鍵交換技術に基づく認証方法においては、安全性を確保するために、uに関するべき乗計算は必須であると考えられていた。これに対して本発明者は、uに関するべき乗計算を除いても、安全性を確保しうる認証方法を発明するに至った。本発明に基づけば、KCI攻撃等に対して安全な認証処理を、従来に比べて少ない計算量で実現することができ、且つ従来よりも短時間に処理を完了することを実現することができる。
 本発明によれば、(式3)によってサーバ側マスター秘密Ksを計算する場合、クライアントからの値Uの受信に応答してサーバが返信する値Yは、次のように計算される。
   Y=U・Wy・r ……(式4)又は
   Y=Uy・r・W ……(式4’)
 ここで、rは関数H()にU(あるいはUとほかの情報)を入力として求めた値であり、例えば、非特許文献1における方法と同様に、
   r=H (C∥S∥U)
として計算することができる。ここで、Cはクライアント装置の識別子であり、Sはサーバ装置の識別子である。Wはクライアント識別子Cに対応してサーバの記憶装置に格納されるパスワード認証データ(パスワードベリファイア)であり、同様に、
   W=gH1(C∥S∥pw)
などによって計算することができる。Wは予め計算しておき、サーバの記憶装置に格納しておくことができる。
 また、クライアントにおけるマスター秘密KCの計算は、次の式によって行うことができる。
   K=Y(1/b mod q) ……(式5)
ただし、
b=u+PW×r mod q(Y=U・Wy・rである場合) ……(式6)又は
b=u×r+PW mod q(Y=Uy・r・Wである場合) ……(式6’)
である。ここで、PWは、ユーザが入力するパスワードpw(あるいはpwとほかの情報)を関数H()に入力して求めた値であり、例えば、
   PW=H(C∥S∥pw)
で計算することができる。なお、pwは上記Wの計算の基礎になったパスワードと同じパスワードである。また、rは(式4)に関して説明したと同様に、関数H()にU(あるいはUとほかの情報)を入力として求めた値であり、例えば、
   r=H(C∥S∥U)
として計算することができる。
 上述のYやbの計算式において、(式4’)及び(式6’)は非特許文献1や2にも現れているが、(式4)及び(式6)は、本発明者の発明によるものである。
 式5に示されるクライアント側マスター秘密KCの計算量は、これまで知られていたDiffie-Hellman型鍵交換に基づく相互認証処理技術において、最も計算量が少なかった非特許文献1と2に係る方法と同じ計算量である。従って、本明細書に開示される認証処理技術は、サーバ装置だけでなく、クライアント装置についても、計算量が極めて少ない方式であると言える。
 さて、(式3)に示すとおりにマスター秘密に関わる計算量を減少させながら、KCI攻撃に安全になることができる理由を説明する。はじめに(式4)から説明する。まず、攻撃者がサーバの記憶装置に格納されているパスワード認証データWを取得したと仮定する。KCI攻撃は、サーバの認証情報を得た攻撃者が、パスワードの辞書攻撃をせずに、クライアントになりすまして行う攻撃である。その攻撃を一般化して説明すると、攻撃者はサーバにUを以下のように計算して送信する。
U=g・gPW・d
ここで、cとdは攻撃者が生成した乱数(c,d∈(Z/qZ))である。また、W=gPWであり、PW=H(C∥S∥pw)である。このUを受信したサーバは以下のようにYを計算して返す。
Y=U・Wy・r
攻撃者がKCI攻撃を成功させるためには、Y=Kになるようなaを探さなければならない。つまり、
(c+PW×d+PW×r)y×a=y mod q
を解かなければならない。上の式は以下のように簡単になる。
(c+PW(d+r))a=1 mod q
上の式の解は
c×a=1と(d+r)a=0
になる。ここで、攻撃者はパスワードの辞書攻撃をやらずにKCI攻撃を行うため、PWに係る項が0になる必要がある。c×a=1で、aは0ではないので、(d+r)a=0でd+r=0になるしかない。要するに、攻撃者はUを計算する時に、dとして「-r mod q」のような値を使わなければならない。ところがrはUにより決まる(一方向性関数の)ハッシュした値であるため、dを求めることはできない。言い換えると、KCI攻撃ができないということである。(式4’)についても同じように説明ができるが、ここでは省略する。
 本発明によれば、認証処理に関わるCPUの負荷を低下させることができ、処理能力の低い端末装置や、大量のクライアント装置からの要求を処理しなければならないサーバ装置などにとって、特に有益である。また、サーバにおいては、上述のようにマスター秘密を予め計算しておくことが可能になるため、クライアントからの認証要求を受けてからの処理を極めて短時間に完了することが可能となる。本発明は、ユーザやサーバ認証を必要とするサービスやアプリケーションにおいて広く利用することができ、例えばサーバやネットワークへのログイン、さらには電子商取引などで利用することができる。
 本発明は、パスワードのみを用いた認証方式のみならず、他の認証手段を追加した認証方式にも応用することができ、例えば、二要素認証方式へ応用することができる。本発明の応用である二要素認証方式は、ユーザの端末装置が耐タンパモジュールなどを備えていない場合はユビキタス環境での認証方式として適しているし、ユーザの端末装置が耐タンパモジュールを用いる場合はもっと高い安全性を要求するインターネットバンキングなどに使うことができる。
 本発明者の提案に基づく好適な具現化形態のいくつかは、添付の請求の範囲に特定されている。しかしながら、その具現化形態は、請求の範囲や明細書及び図面に明示的に記載されるものに限定されず、明細書に開示される発明の範囲を逸脱することなく、様々な態様を呈することが可能である。明細書に開示される発明の具現化形態は、請求の範囲や明細書及び図面に明示的に開示されるか否かにかかわらず、これらの書類から教示されうるあらゆる新規かつ有益な構成やそれらの組み合わせを、その範囲に含むものである。
実施例1の概要を説明するための図 実施例1における初期化段階を説明するための図 実施例1におけるクライアント装置の構成及び機能を説明するための図 実施例1におけるサーバ装置の構成及び機能を説明するための図 実施例2の概要を説明するための図 実施例2における初期化段階を説明するための図 実施例2におけるクライアント装置の構成及び機能を説明するための図 実施例2におけるサーバ装置の構成及び機能を説明するための図 実施例3の概要を説明するための図 実施例3における初期化段階を説明するための図 実施例3におけるクライアント装置の構成及び機能を説明するための図 実施例3におけるサーバ装置の構成及び機能を説明するための図 実施例4の概要を説明するための図 実施例4における初期化段階を説明するための図 実施例4におけるクライアント装置の構成及び機能を説明するための図 実施例4におけるサーバ装置の構成及び機能を説明するための図 実施例4におけるj番目プロトコル終了後の処理について説明するための図
 本発明の実施形態は、クライアント・サーバ間における次のような相互認証方法を含む。この方法は、
サーバが実行する処理が、
(a)上記サーバで生成した乱数y(y∈(Z/qZ))に基づいて、サーバ側マスター秘密Ksを、式:
   Ks=g  ……(式7)
によって計算するステップと、
(b)上記クライアントで計算された第1クライアント情報Uを、第1識別情報(C,WID,id)と共に該クライアントから受信するステップと、
(c)上記受信した第1クライアント情報U及び第1識別情報を利用して、第1サーバ情報Yを、式:
   Y=U・Wy・r  ……(式8)、又は
   Y=Uy・r・W  ……(式8’)
によって計算するステップと、
(d)上記計算した第1サーバ情報Yを上記クライアントへ送信するステップと、
(e)上記サーバ側マスター秘密Ksを用いて、上記クライアントから受信したクライアント認証情報Vcを認証するステップと、
(f)上記サーバ側マスター秘密Ksを用いて、サーバ認証情報Vsを生成し、上記Vsをクライアントに送信するステップと、
を含み、
ただし、上の記載において、qは群(G,・)の位数を表し、gはその集合Gの生成元を表し、”・”は上記G上の二項演算子を表し、
式(8)及び式(8’)における記号Wはパスワードpwに関する情報を含む部分を表し、上記クライアントが生成したパスワード情報vに基づいて
   W=g  ……(式9)、
又は上記クライアントが生成したパスワード情報vと上記クライアントが生成した乱数tのコミット値Tに基づいて
   W=T=gt×v ……(式9’)
により得ることができる部分であり、該パスワード情報vは、上記パスワードpwを少なくとも入力とする関数H()の出力から計算される値であり、×は整数上の掛け算であり、式(8)及び式(8’)における記号rは、上記クライアントが上記第1クライアント情報Uを計算するより前の時刻に知ることのできない値であると共に、上記サーバ及び上記クライアントのいずれにおいても計算可能な値を表し、
U,W,Y,T,g∈Gであり、
クライアントが実行する処理が、
(a’)上記クライアントで生成した乱数u(u∈(Z/qZ))に基づき、上記第1クライアント情報Uを、U=gu によって計算するステップと、
(b’)上記計算した第1クライアント情報Uを、上記第1識別情報と共に上記サーバに送信するステップと、
(c’)上記第1クライアント情報Uの送信に応じて、上記サーバから上記第1サーバ情報Yを受信するステップと、
(d’)上記 W=g(式9)の場合に、
ブラインド値bを、上記パスワード情報v及び上記値rに基づいて、次の計算式:
b=u+v×r mod q(Y=U・Wy・rである場合) ……(式10)、又は
b=u×r+v mod q(Y=Uy・r・Wである場合) ……(式10’)
によって計算するステップ、又は
上記 W=T=gt×v(式9’)の場合に、
上記クライアントが生成したパスワード情報vと上記クライアントが生成した乱数tに基づいて、前記ブラインド値bを、次の計算式:
b=u+t×v×r mod q(Y=U・Wy・rである場合)……(式11)、又は
b=u×r+t×v mod q(Y=Uy・r・Wである場合)……(式11’)
によって計算するステップと、
(e’)受信した上記第1サーバ情報Yに基づいて、クライアント側マスター秘密Kを、
 K=Y(1/b mod q)
によって計算するステップと、
(f’)上記クライアント側マスター秘密Kを利用してクライアント認証情報Vcを生成し、上記サーバに送信するステップと
(g’)上記サーバから受信した上記サーバ認証情報Vsを、上記クライアント側マスター秘密Kcを利用して認証するステップと、
を含む。ただし、「1/b mod q」は「a×b≡1 mod q」を満たす1以上q未満の整数aを示す。
 実施形態によっては、上記値rは、上記第1クライアント情報Uがクライアントから送信された後にサーバからクライアントに送信される乱数、又は、少なくとも上記第1クライアント情報Uを一方向性関数F()の入力として得られた出力より計算できる値であることができる。
 実施形態によっては、上記パスワード情報vは、上記パスワードpwを少なくとも入力とする一方向性関数F()の出力より計算できる値であることができる。
 実施形態によっては、上記パスワード情報vは、上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力と乱数sとを少なくとも結合した値、又は、上記パスワードpwと上記乱数sとを少なくとも結合した値であることができる。
 実施形態によっては、上記パスワード情報vは、
v=s+hpw mod q 又は
v=s×hpw mod q 又は
v=s(+)hpw 又は
上記パスワードpwと上記乱数sを少なくとも入力とする関数H()又は一方向性関数F()の出力より計算できる値と表記可能である。ただし、hpwは、上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力より計算できる値であり、(+)は排他的論理和である。
 実施形態によっては、上記部分W又は上記パスワード情報vが、上記第1識別情報(C,WID)に関連づけられて上記サーバの記憶装置に予め格納されており、上記サーバが、上記受信した第1識別情報に基づいて該記憶装置から上記部分W(上記部分Wが格納されている場合)又は、上記パスワード情報v(上記パスワード情報vが格納されている場合)を検索するステップを有することができる。
 実施形態によっては、上記部分W又は上記パスワード情報vが、上記第1識別情報(C,WID)を少なくとも入力に含む一方向性関数H()の出力から計算される第2識別情報に関連づけられて上記サーバの記憶装置に予め格納されており、上記サーバが、上記受信した第1識別情報(C,WID)を少なくとも入力に含む一方向性関数H()の出力から計算した上記第2識別情報により該記憶装置から上記部分W(上記部分Wが格納されている場合)又は、上記パスワード情報v(上記パスワード情報vが格納されている場合)を検索するステップを有することができる。
 実施形態によっては、上記クライアントがクライアント側改ざん検出子生成鍵、クライアント側改ざん検出子検証鍵を持ち、上記サーバが、上記第1識別情報又は上記第2識別情報と共に、上記クライアント側改ざん検出子生成鍵により生成された改ざん検出子を検証するためのサーバ側改ざん検出子検証鍵と、上記クライアント側改ざん検出子検証鍵で検証できる改ざん検出子を生成できるサーバ側改ざん検出子生成鍵を持ち、
(a)上記クライアントが、少なくとも上記U(あるいは、上記Uと上記サーバから受信した乱数)に対して上記クライアント側改ざん検出子生成鍵を用いて改ざん検出子mac1を生成し、それを上記サーバに送信するステップと、
(b)上記サーバが、上記クライアントから受け取った改ざん検出子mac1を上記サーバ側改ざん検出子検証鍵を用いて検証し、それが検証されなかった場合に、該クライアント・サーバ間の相互認証を中断するステップと、
(c)同じく、上記サーバが、上記クライアントから受け取った改ざん検出子mac1を上記サーバ側改ざん検出子検証鍵を用いて検証し、それが検証された場合に、少なくとも上記Uと上記Yの組をログリストPs’に記録すると共に、少なくとも上記Uと上記Yに対して上記サーバ側改ざん検出子生成鍵を用いて改ざん検出子mac2を生成し、それを上記クライアントに送信するステップと、
(d)上記クライアントが、該サーバから送られてきた改ざん検出子mac2の検証に失敗した場合に、上記クライアント認証情報Vcを送信せず該クライアント・サーバ間の相互認証を中断するステップと、
(e)同じく上記クライアントが、該サーバから送られてきた改ざん検出子mac2の検証に成功した場合には、少なくとも上記Yと上記クライアント認証情報Vcに対して該クライアント側改ざん検出子生成鍵を用いて改ざん検出子mac3を生成し、その改ざん検出子を該サーバに送信すると共に、少なくとも上記Uと上記Yの組をログリストPcに記録するステップと、
(f)該サーバが、該クライアントから送られてきた改ざん検出子mac3の検証に失敗した場合に、該クライアント・サーバ間の相互認証を中断するステップと、
(g)同じく該サーバが、該クライアントから送られてきた改ざん検出子mac3の検証に成功し、かつ、該クライアントから送られてきた上記クライアント認証情報Vcの検証に失敗した場合に、少なくとも上記Uと上記Yの組をログリストPsに記録し、該クライアント・サーバ間の相互認証を中断するステップと、
(h)該クライアント・サーバ間の相互認証が正常に終了した際には、前回該クライアント・サーバ間の相互認証ステップが正常に終了した以降に該サーバと該クライアントが該クライアント・サーバ間の相互認証処理中に記録し続けたログリストPs、Pc、Ps’中の少なくともUとYの組を第三者に改ざんされない方法で比較するステップと、
を有することができる。
 この実施形態では、Pc中のUとYの組からPs’中のUとYの組に一致するエントリを取り除いた残りエントリ数がサーバ側からのオンライン全数探索の数とみなし、Ps中のUとYの組からPc中のUとYの組に一致するエントリを取り除いた残りエントリ数がクライアント側からのオンライン全数探索の数とみなすことができる。これによって、改ざん検出を用いたパスワードのオンライン全数探索検知機能を提供することができる。
 実施形態によっては、上記サーバ側及び上記クライアント側の少なくとも一方における上記改ざん検出子生成鍵及び上記検出子検証鍵をMAC(Message Authentication Code)鍵とすることができる。
 実施形態によっては、上記サーバ側及び上記クライアント側の両方の改ざん検出子生成鍵及び検出子検証鍵をMAC(Message Authentication Code)鍵とすることができる。この場合、
上記サーバ側の改ざん検出子生成鍵、
上記サーバ側の改ざん検出子検証鍵、
上記クライアント側の改ざん検出子生成鍵、
上記クライアント側の改ざん検出子検証鍵、
は全て同じ鍵とし、
上記クライアントと上記サーバが同じMAC鍵を使っても異なる改ざん検出子を生成できるように、上記クライアントと上記サーバとで、異なるMAC生成アルゴリズム、又は、異なるメッセージフォーマットを用いることとすることができる。
 実施形態によっては、上記改ざん検出子生成鍵を電子署名生成鍵、上記検出子検証鍵を電子署名検証鍵とすることができる。
 実施形態によっては、上記クライアントがクライアント側データ鍵cdkを持ち、上記サーバがサーバ側データ鍵sdkを第1識別情報又は第2識別情報と共に持ち、上記クライアント・サーバ間の相互認証ステップが正常に終了した際に、
(a)該サーバが、該クライアント・サーバ間の相互認証ステップにより生成された上記サーバ側マスター秘密Ksに依存して生成される暗号化鍵を使って暗号化されたサーバ側データ鍵sdkを該クライアントに送信するステップと、
(b)該クライアントが、該サーバから送信された暗号化されたデータ鍵sdkを該クライアント・サーバ間の相互認証ステップにより生成された該クライアント側マスター秘密KCに依存して生成される暗号化鍵を使って復号するステップと、
(c)該クライアントが上記クライアント側データ鍵cdkと上記サーバ側データ鍵sdkからデータdkを復元するステップを持つ
こととすることができる。
 実施形態によっては、上記クライアントがクライアント側データ鍵cdkを持ち、上記サーバがサーバ側データ鍵sdkを第1識別情報又は第2識別情報と共に持ち、上記クライアント・サーバ間の相互認証ステップが正常に終了した際に、
(a’)該クライアントが、該クライアント・サーバ間の相互認証ステップにより生成された上記クライアント側マスター秘密Kcに依存して生成される暗号化鍵を使って暗号化されたクライアント側データ鍵cdkを該サーバに送信するステップと、
(b’)該サーバが、該クライアントから送信された暗号化されたクライアント側データ鍵cdkを該クライアント・サーバ間の相互認証ステップにより生成された該サーバ側マスター秘密Ksに依存して生成される暗号化鍵を使って復号するステップと、
(c’)該サーバが上記クライアント側データ鍵cdkと上記サーバ側データ鍵sdkからデータdkを復元するステップを持つ
こととすることができる。
 実施形態によっては、上記データdkは、
dk’=cdk(+)sdk 又は
dk’=cdk+sdk mod q 又は
dk’=cdk×sdk mod q
とし、
dk=dk’ 又は
dk=(dk’)(+)hpw 又は
dk=(dk’)+hpw mod q 又は
dk=(dk’)×hpw mod q 又は
少なくともdk’とhpwを入力とする関数H()の出力から計算できる値
により復元できることとすることができる。ここで、(dk’)はdk’の値を最初に計算するというステップを示しており、hpw は、上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力より計算できる値であり、(+)は排他的論理和である。
 実施形態によっては、上記クライアント・サーバ間の相互認証のために、上記クライアントが利用する可能性のある情報である、上記乱数t、上記第1識別情報の全てあるいは一部を、該クライアントの記録装置に予め保存し、該クライアントが上記クライアント・サーバ間の相互認証を実行する祭に、上記クライアント・サーバ間の相互認証の要求に応じて呼び出すこととすることができる。
 実施形態によっては、上記クライアント・サーバ間の相互認証が成功した場合、
 その相互認証で利用した該サーバの該記憶装置に記録されている情報である、上記第1識別情報、上記部分W又は上記パスワード情報v、クライアントが生成した乱数tのコミット値T、の全てあるいは一部、並びに、
 該クライアントの該記憶装置に記録されている情報である、上記乱数t、上記第1識別情報、の全てあるいは一部を、
 該クライアントと該サーバとの間でやりとりされた値、又は、該認証ステップで共有された上記マスター秘密KC(クライアント側)Ks(サーバ側)、又は上記マスター秘密と上記該サーバと該クライアントの間でやりとりされた値の両方を使って更新するステップを有することとすることができる。
 実施形態によっては、上記パスワード情報vが、上記パスワードpwと乱数sに基づいて、次の計算式:
「v=s+hpw mod q」または「v=s×hpw mod q」
により計算することができ、
上記更新するステップにおいて、上記サーバは、
「W’=W・gud」または「W’=Wud
と表記されうるように上記部分WをW’に更新し、上記クライアントは、
「s’=s+ud mod q」または「s’=s×ud mod q」
と表記されうるように上記乱数sをs’に更新することとすることができる。
 実施形態によっては、上記パスワード情報vが、上記パスワードpwと乱数sに基づいて、次の計算式:
「v=s+hpw mod q」
により計算することができ、
上記更新するステップにおいて、上記サーバは、
「v’=v+ud mod q」
と表記されうるように上記パスワード情報vをv’に更新し、上記クライアントは、
「s’=s+ud mod q」
と表記されうるように上記乱数sをs’に更新することとすることができる。
 実施形態によっては、上記パスワード情報vが、上記パスワードpwと乱数sに基づいて、次の計算式:
v=s(+)hpw
により計算することができ、
上記更新するステップにおいて、上記サーバは、
v’=v(+)ud
と表記されうるように上記パスワード情報vをv’に更新し、上記クライアントは、
s’=s(+)ud
と表記されうるように上記乱数sをs’に更新することとすることができる。
 実施形態によっては、上記パスワード情報vが、上記パスワードpwと乱数sに基づいて、次の計算式:
v=s×hpw mod q
により計算することができ、
上記更新するステップにおいて、上記サーバは、
v’=v×ud mod q
と表記されうるように上記パスワード情報vをv’に更新し、上記クライアントは、
s’=s×ud mod q
と表記されうるように上記乱数sをs’に更新することとすることができる。なお、上記において、hpw は上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力であり、ud は上記サーバと上記クライアントが共有している上記マスター秘密Ks(サーバ側)Kc(クライアント側)から生成される値である。
 実施形態によっては、上記クライアント・サーバ間の相互認証が成功した場合、
 その相互認証で利用した該サーバの該記憶装置に記録されている情報である、該サーバ側の改ざん検出子生成鍵、該サーバ側の改ざん検出子検証鍵の全てあるいは一部、及び、該クライアントの該記憶装置に記録されている情報である、上記クライアント側の改ざん検出子生成鍵、上記クライアント側の改ざん検出子検証鍵の全てあるいは一部を、該クライアントと該サーバとの間でやりとりされた値、又は、該認証処理で共有された上記マスター秘密Kc(クライアント側)Ks(サーバ側)、又は上記マスター秘密と上記該サーバと該クライアントの間でやりとりされた値の両方を使って更新するステップを有し、
 上記サーバと上記クライアントが同じ上記MAC鍵MacKを用いる場合、上記サーバと上記クライアントがそれぞれ上記MAC鍵MacKをMacK’に更新するステップは、
MacK’=MacK(+)ud 又は
MacK’=MacK+ud mod q 又は
MacK’=MacK×ud mod q 又は
と表記可能である。ただし、ud は上記サーバと上記クライアントが共有している上記マスター秘密Ks(サーバ側)Kc(クライアント側)から生成される値である。
 実施形態によっては、上記クライアント・サーバ間の相互認証が成功した場合、
 その相互認証で利用した該サーバの該記憶装置に記録されている情報である上記サーバ側データ鍵sdk及び、
 該クライアントの該記憶装置に記録されている情報である上記クライアント側データ鍵cdkを、
 該クライアントと該サーバとの間でやりとりされた値、又は、該認証処理で共有された上記マスター秘密Kc(クライアント側)Ks(サーバ側)、又は上記マスター秘密と上記該サーバと該クライアントの間でやりとりされた値の両方を使って更新するステップを有し、
 上記クライアントが上記クライアント側データ鍵cdkを持ち、上記サーバが上記サーバ側データ鍵sdkを持つ場合、上記サーバと上記クライアントがそれぞれcdkとsdkをcdk’とsdk’に更新するステップは、
上記dk’が
dk’=cdk(+)sdk
と表記可能な場合、
cdk’=cdk(+)ud
sdk’=sdk(+)ud
と表記可能であり、
上記dk’が
dk’=cdk+sdk mod q
と表記可能な場合、
cdk’=cdk+ud mod q
sdk’=sdk-ud mod q
又は
cdk’=cdk-ud mod q
sdk’=sdk+ud mod q
と表記可能であり、
上記dk’が
dk’=cdk×sdk mod q
と表記可能な場合、
cdk’=cdk×ud mod q
sdk’=sdk/ud mod q
又は
cdk’=cdk/ud mod q
sdk’=sdk×ud mod q
と表記可能である。ただし、ud は上記サーバと上記クライアントが共有している上記マスター秘密Ks(サーバ側)Kc(クライアント側)から生成される値であり、-は整数上の引き算、「a=c/b mod q」はcが0でない場合「a×b≡c mod q」を満たす1以上q未満の整数aを示す。
 本発明の実施形態は、クライアント装置とサーバ装置から構成されるシステムであって、該クライアント装置と該サーバ装置が上記の相互認証方法を実行するように構成される、システムを含む。
 本発明の実施形態は、上記の相互認証方法における、クライアント側で実行される処理を遂行しうるように構成される、コンピュータ装置を含む。
 本発明の実施形態は、上記の相互認証方法における、サーバ側で実行される処理を遂行しうるように構成される、コンピュータ装置を含む。
 本発明の実施形態は、コンピュータ装置のCPUで実行されることにより、該コンピュータ装置に、上記の相互認証方法における、クライアント側で実行される処理を遂行させる、コンピュータ・プログラムを含む。
 本発明の実施形態は、コンピュータ装置のCPUで実行されることにより、該コンピュータ装置に、上記の相互認証方法における、サーバ側で実行される処理を遂行させる、コンピュータ・プログラムを含む。
 以下、本発明の理解に資するために、本発明の更なる実施形態の例をいくつか説明する。ただし、これらの実施例は、本発明の請求の範囲を限定する意図で説明するものではなく、あくまで本発明の理解を深めるために説明するものであることを留意されたい。
 パスワードのみを用いた認証システム及びその応用システムの実施例を説明する前に、以下の説明において用いる背景知識と記号についてまず説明しておく。
 以下の方法において位数qの群を(G,・)とし、その集合Gの生成元をg、U,W∈Gとする。また、”・”はG上の二項演算子でありg,g∈Gとして、g・gをgと表記し、g・gをg と表記し、g ・g をg i+jと表記している。本発明は、離散対数問題を解くことが困難な様々な群を用いて実施可能であるため、以下の説明および請求の範囲において、素体の群及びある種の楕円曲線群に限定されないことに留意してほしい。
 ハッシュ関数Hのセキュリティパラメータをkとする。ただし、1/2は無視できるほど小さいと仮定する。また、{0,1}は有限の2進数のストリングの集合を、{0,1}は長さkの2進数のストリングの集合を表す。ハッシュ関数Hは{0,1}の入力から{0,1}の出力を出す安全な一方向関数であり、FDH(Full-Domain Hash)関数HとHは{0,1}の入力から(Z/qZ)の出力を出す安全な一方向関数である。ここで、(Z/qZ)は{1,2,…,q}の集合(部分群)を表す。また、乱数発生器から発生される乱数はR∈(Z/qZ)を無作為に生成する。また、∥は値を連結(concatenation)するという意味である。また、CとS(あるいはS)はそれぞれユーザとサーバ(あるいは、多数のサーバの中でi番目のサーバ)を表すIDである。
〔実施例1:パスワードのみを用いた認証システム〕
 図1は、実施例1として以下に説明する、パスワードのみを用いて認証を行う認証システム100の全体構成を説明するための図である。認証システム100は、ユーザの端末装置300とサーバの認証装置400とで構成される。ユーザの端末装置300は、ユーザから入力されたパスワードに基づいて、ある特徴的な演算を行う。サーバの認証装置400は、そのデータベース402にユーザのIDとパスワード認証データとを保持している。認証システム100において、ユーザの端末装置300は、サーバの認証装置400とインターネットのようなパブリックネットワークを通じてお互いに相互認証し、その相互認証が成功した場合のみ、お互いに同じセッション鍵を確保する。共有されたセッション鍵はユーザの端末装置300とサーバの認証装置400が後で行う通信内容を保護するために使われる。
 なお、以下の全ての図において、そこに描かれる機能要素のそれぞれは、専用のハードウェアによって実現されることもできるが、CPUとコンピュータ・プログラムを用いたソフトウェア処理によって実現されることができる場合がある。従って、以下の全ての図において、例えば「乱数発生器」のように「器」「装置」のような用語が用いられているとしても、その実現手段はハードウェアに限定されるものではなく、ソフトウェア処理による手段によっても実装可能であることに注意されたい。また、2つ以上の機能要素を1つのハードウェア回路にまとめたり、あるいは2つ以上の機能要素をそれぞれサブプログラムとして含んだ1つのプログラムにまとめたりすることも可能である。例えば、以下の実施例で紹介されるユーザの端末装置やサーバの認証装置の機能の全部又は一部を、プロセッサとメモリとプログラムコードを用いて実現することも可能である。また、各機能要素をFPGAのようなプログラマブルな回路を用いて実現することも可能である。当業者であれば、当然ながら、実施形態の具体的要求に応じて、適切な実装手段を選択することができるだろう。
[1.パスワードのみを用いた認証システム100の初期化]
 次に、図2を参照して、認証システム100における初期化処理について説明する。この初期化処理において、ユーザの端末装置300は、ユーザから入力されたパスワードに基づいて、サーバの認証装置400と安全な通信路(例えば、直接に登録したり、郵便で送付したり、あるいは電話で知らせるなど)を用いて初期化処理を行い、サーバの認証装置400は内部にあるメモリあるいはデータベース402へユーザのIDとパスワード認証データを保存する。
<ユーザの端末装置300における作業>
 図2に描かれるように、ユーザの端末装置300は、パスワード認証データ生成器302を有している。端末装置300における初期化処理において、パスワード認証データ生成器302は、ユーザから入力されたパスワードpwを入力として、パスワード認証データWを計算式:
W=gH1(C∥S∥pw)
により計算して出力する。その後端末装置300は、ユーザのIDとパスワード認証データ「C,W」とをサーバの認証装置400へ送信する。
<サーバの認証装置400における作業>
 図2に示すように、サーバの認証装置400における初期化処理において、認証装置400は、ユーザの端末装置300から受信したユーザのIDとパスワード認証データ「C,W」を、認証装置400の内部にあるメモリあるいはデータベース402へ格納する。
[2.パスワードのみを用いた認証システム100のプロトコル実行]
 次に、図3および図4を参照して、パスワードのみを用いた認証システム100におけるプロトコル実行処理について説明する。このプロトコル実行処理は、図2を用いて説明した初期化処理が完了した後に行われる。当該プロトコル実行処理において、ユーザの端末装置300は、ユーザから入力されたパスワードに基づいてある特徴的な演算を行い、サーバの認証装置400とインターネットのようなパブリックネットワークを通じてお互いに相互認証する。前述のようにサーバの認証装置400は、ユーザのID及びパスワード認証データをデータベース402などに保持している。ユーザの端末装置300とサーバの認証装置400は、相互認証が成功した時のみ、互いに同じセッション鍵を確保する。
<ユーザの端末装置300の動作>
 図3は、認証システム100のプロトコル実行を行うユーザの端末装置300の機能構成及び動作を説明するためのブロック図である。まず、この図を参照して、端末装置300における認証システム100のプロトコル実行処理について説明する。
 公開値演算器304は、乱数発生器306によりランダムに発生させた乱数u(u∈(Z/qZ))を入力として、公開値Uを計算式:
U=g
により計算して出力する。ブラインド生成器308は、ユーザから入力されたパスワードpwと乱数発生器306によりランダムに発生させた乱数uと公開値演算器304により出力された公開値Uとを入力として、ブラインドbを計算式:
b=u+H(C∥S∥pw)×r mod q
により計算して出力する。ここで、
r=H(C∥S∥U)
である。逆ブラインド演算器310は、ブラインド生成器308により出力されたブラインドbを入力として、逆ブラインドb-1を計算式:
-1 mod q
により計算して出力する。ユーザの端末装置300は、図示しない通信処理部を介して、サーバの認証装置400に対して、ユーザのIDであるCと公開値演算器304により出力された公開値Uを送信する。
 しばらくすると、ユーザの端末装置300は、サーバの認証装置400からメッセージ「S,Y」を受信する。マスター秘密生成器312は、サーバの認証装置400から受信した値Yと、逆ブラインド演算器310により出力された逆ブラインドb-1を入力として、マスター秘密Kを計算式:
K=Y(1/b mod q)
により計算して出力する。
 続いて、認証子生成器314は、公開値演算器304により出力された公開値Uとサーバの認証装置400から受信した値Yとマスター秘密生成器312により出力されたマスター秘密Kを入力として、認証子Vcを計算式:
Vc=H(1∥C∥S∥U∥Y∥K)」
により計算、入力メッセージInputMsgとともに出力する。ここで、入力メッセージは
InputMsg=C∥S∥U∥Y∥K
である。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。ユーザの端末装置300は、図示しない通信処理部を介して、認証子生成器314により出力された認証子Vcをサーバの認証装置400へ送信する。
 しばらくすると、ユーザの端末装置300は、サーバの認証装置400からメッセージ「Vs」を受信する。認証子判断部316は、サーバの認証装置400から受信した認証子Vsが正しく生成された値であるかどうかを確認する。認証子判断部316は、認証子生成器314から入力された入力メッセージInputMsgに基づいてハッシュ関数H(2∥InputMsg)を計算し、サーバの認証装置400から受信した認証子Vsと比較する。認証子判断部316の判断処理において、認証子Vsとハッシュ関数H(2∥InputMsg)が一致しない場合、認証子判断部316は、エラーメッセージ発生器318に対して一致しないことを通知する。これを受けて、エラーメッセージ発生器318はエラーメッセージを生成して処理を中断する。一方、認証子判断部316は、認証子Vsとハッシュ関数H(2∥InputMsg)が一致しているとを判断した場合は、サーバの認証装置400は正当な装置であるとして認証し、セッション鍵生成器320へその旨を通知する。セッション鍵生成器320は、認証子生成器314から供給されるメッセージInputMsgを入力として、セッション鍵SKを計算式:
SK=H(3∥InputMsg)」
により計算して出力する。
<サーバの認証装置400の動作>
 図4は、認証システム100のプロトコル実行を行うサーバの認証装置400の機能構成及び動作を説明するためのブロック図である。次に、この図を参照して、サーバの認証装置400における認証システム100のプロトコル実行処理について説明する。
 サーバの認証装置400は、プロトコル実行のためのユーザのIDとパスワード認証データ「C,W」を格納装置の内部にあるメモリあるいはデータベース402に保持している。
 まず、マスター秘密生成器412は、乱数発生器406によりランダムに発生させた乱数y(y∈(Z/qZ))を入力として、マスター秘密Kを計算式:
K=g
により計算して出力する。
 しばらくすると、サーバの認証装置400は、ユーザの端末装置300からメッセージ「C,U」を受信する。第1ブラインド生成器404は、端末装置300から受信した公開値Uとデータベース402から読み出したパスワード認証データWと乱数発生器406によりランダムに発生させた乱数yとを入力として、第1ブラインドWy・rを計算式:
y・r
により計算して出力する。ここで、
r=H(C∥S∥U)
である。別の方法としてrをサーバが生成してからクライアントに送ってもよい。第2ブラインド生成器405は、ユーザの端末装置300から受信した公開値Uと乱数発生器406によりランダムに発生させた乱数yとを入力として、第2ブラインドUを計算式:

により計算して出力する。
 マスク演算器408は、第1ブラインド生成器404により出力された第1ブラインドWy・rと第2ブラインド生成器405により出力された第2ブラインドUを入力として、値Yを
Y=U・Wy・r
により計算して出力する。サーバの認証装置400は、図示しない通信処理部を介して、ユーザの端末装置300に対して、サーバのIDであるSとマスク演算器408により出力された値Yを送信する。
 続いて、入力メッセージ集合器414は、ユーザの端末装置300から受信した公開値Uとマスク演算器408により出力された値Yとマスター秘密生成器412により出力されたマスター秘密Kとを入力として、入力メッセージInputMsgを出力する。ここで、入力メッセージは
InputMsg=C∥S∥U∥Y∥K
である。
 しばらくすると、サーバの認証装置400は、ユーザの端末装置300からメッセージ「Vc」を受信する。認証子判断部416は、ユーザの端末装置300から受信した認証子Vcが正しく生成された値であるかどうかを確認する。認証子判断部416は、入力メッセージ集合器414から供給された入力メッセージInputMsgに基づいてハッシュ関数H(1∥InputMsg)を計算し、ユーザの端末装置300から受信した認証子Vcと比較する。認証子判断部416の判断処理において、認証子Vcとハッシュ関数H(1∥InputMsg)が一致しない場合、認証子判断部416は、エラーメッセージ発生器418に対して一致しないことを通知する。これを受けて、エラーメッセージ発生器418はエラーメッセージを生成して処理を中断する。
 一方、認証子判断部416の判断処理において、認証子Vcとハッシュ関数H(1∥InputMsg)が一致したと判断された場合は、ユーザの端末装置300が正当な装置として認証される。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。認証子生成器420は、入力メッセージ集合器414から供給された入力メッセージInputMsgを入力として、認証子Vsを計算式:
Vs=H(2∥InputMsg)
により計算して出力する。サーバの認証装置400は、図示しない通信処理部を介して、ユーザの端末装置300に対して、認証子生成器420により出力された認証子Vsを送信する。セッション鍵生成器422は、入力メッセージ集合器414から入力された入力メッセージInputMsgを入力として、セッション鍵SKを計算式:
SK=H(3∥InputMsg)
により計算して出力する。
[3.認証システム100の変形例]
 認証システム100において、サーバの認証装置400の第1ブラインド生成器404及び第2ブラインド生成器405は、第1ブラインド及び第2ブラインドをWy・r,Uによって計算していた。しかしながら、これらは次のように計算してもよい。
第1ブラインド:W
第2ブラインド:Uy・r (ただしr=H(C∥S∥U))
すなわち、はじめの例ではrがパスワード認証データWに関するべき乗計算に用いられていたのに対し、この変形例ではrが公開値Uに関するべき乗計算に用いられている。
 第1ブラインド及び第2ブラインドの計算方法の変形に伴い、マスク演算器408で計算される値Yの計算も、次のように変形される。
Y=Uy・r・W
 かかる変形例の場合、ユーザの端末装置300のブラインド生成器308におけるブラインドbの計算式も、次のように変形される。
b=u×r+H(C∥S∥pw) mod q(ただしr=H(C∥S∥U))
 すなわち、はじめの例ではrがパスワードpwに関する項に乗じられていたのに対し、この変形例ではrが乱数uに乗じられている。
 実施例1に係る認証システム100では、サーバにおけるマスター秘密の計算を、式:
K=g
で行うことができるため、guyのべき乗計算が必要な従来技術よりも、サーバの計算量を大きく抑えることができる。また、クライアントにおけるマスター秘密の計算も、式:
K=Y(1/b mod q)
で行うことができるため、guyのべき乗計算が必要な従来技術よりも、やはり計算量を抑えることができる。これらの利点は上述の変形例においても失われない。パスワード及びパスワード認証データWを用いたことによる安全性と相まって、認証システム100は、KCI攻撃などパブリックネットワーク上の様々な攻撃に対して安全であり、且つクライアント及びサーバの計算量を従来方式に比べて減少させることに成功している。
〔実施例2:実施例1のシステムの応用〕
 次に、実施例1で紹介したパスワードのみを用いた認証方式を、二要素認証方式に応用した例を説明する。図5は、この応用例を説明するために例示として用いる認証システム500の全体構成を描いている。
 認証システム500は、ユーザの端末装置700とサーバの認証装置800とで構成される。認証システム500において、ユーザの端末装置700はユーザから入力されたパスワードに加えてメモリ702などに保持されている記録情報に基づき、ある特徴的な演算を行う。サーバの認証装置800は、識別子WIDと認証データをデータベース802などに保持している。識別子WIDは、例えば端末装置700の識別子とカウント値とを含むものであることができる。端末装置700とサーバの認証装置800はインターネットのようなパブリックネットワークを通じてお互いに相互認証し、その相互認証が成功した時のみ、お互いに同じセッション鍵を確保すると共に、各自の記録情報を次のセッションのために更新していく。それにより、サーバの認証装置800は、ユーザの認証データに対してパスワードを全数探索することができなくなり、ユーザの端末装置700は記録情報が漏洩したとしても安全性が落ちることがない。
[1.その認証システム500の初期化]
 初めに、図6を参照して、認証システム500における初期化処理について説明する。図6は、認証システム500の初期化処理に係る、ユーザの端末装置700とサーバの認証装置800の機能構成及び動作を説明するためのブロック図である。認証システム500の初期化処理において、ユーザの端末装置700は、ユーザから入力されたパスワードに基づいて、サーバの認証装置800と安全な通信路(例えば、直接に登録したり、郵便で送付したり、あるいは電話で知らせるなど)を用いて初期化処理を行い、ユーザの端末装置700は内部にあるメモリ702へ記録情報としてCS1を保存し、サーバの認証装置800は内部にあるメモリあるいはデータベース802へ記録情報としてSS1を保存する。
<ユーザの端末装置700における作業>
 図6に示すように、ユーザの端末装置700における初期化処理では、結合器704は、ユーザから入力されたパスワードpwと乱数発生器706によりランダムに発生させた乱数si1(si1∈(Z/qZ))を入力として、結合値vi1を計算式:
i1=si1+H(C∥S∥pw) mod q
により計算して出力する。ここで、Sはi番目のサーバを表す。二要素認証データ生成器708は、結合器704により出力された結合値vi1を入力として、認証データWi1を計算式:
i1=gvi1
により計算して出力し、識別子WIDと認証データ「WID,Wi1」をサーバの認証装置800へ送信する。ユーザの端末装置700は、サーバのIDと識別子WIDと乱数発生器706により発生させた乱数si1を、ユーザの端末装置700の内部にあるメモリ702へ記録情報「CS1」として「S,WID,si1」を保存する。
<サーバの認証装置800における作業>
 図6に示すように、サーバの認証装置800における初期化処理において、サーバの認証装置800は、ユーザの端末装置700から受信した識別子WIDと認証データ「WID,Wi1」を、サーバの認証装置800の内部にあるメモリあるいはデータベース802へ記録情報「SS1」として「WID,Wi1」を保存する。
[2.認証システム500のj番目プロトコル実行]
 次に、図7および図8を参照して、認証システム500におけるj番目プロトコル実行処理について説明する。図7および図8は、認証システム500のj番目プロトコル実行を行う、ユーザの端末装置700とサーバの認証装置800の機能構成及び動作を、それぞれ説明するためのブロック図である。図7および図8において、jはj≧1になるような整数である。認証システム500のj番目プロトコル実行において、ユーザの端末装置700は、ユーザから入力されたパスワードpwとメモリ702に保持している記録情報CSjとに基づいて、ある特徴的な演算を行う。そして、記録情報SSjをデータベースなどに保持しているサーバの認証装置800と、インターネットのようなパブリックネットワークを通じてお互いに相互認証し、その相互認証が成功した時のみ、お互いに同じセッション鍵を確保する。以下に説明される番目プロトコル実行は、認証システム500の初期化が完了した後(j=1の時)、あるいは認証システム500のj-1番目プロトコル実行が終了した後(すなわち、CSj=(S,WID,sij)とSSj=(WID,Wij)の時)に、ユーザの端末装置700及びサーバの認証装置800によって実行される。
<ユーザの端末装置700における作業>
 まず、図7を参照して、ユーザの端末装置700における認証システム500のj番目プロトコル実行処理について説明する。前述した認証システム500の初期化処理の後、認証システム500のj番目プロトコル実行の前には、ユーザの端末装置700は、記録情報「CSj」として「S,WID,sij」を内蔵するメモリ702に保持している。
 結合器704は、ユーザから入力されたパスワードpwとメモリ702から読み出した乱数sijとを入力として、結合値vijを計算式:
ij=sij+H(C∥S∥pw) mod q
により計算して出力する。公開値演算器712は、乱数発生器706によりランダムに発生させた乱数u(u∈(Z/qZ))を入力として、公開値Uを計算式:
U=g
により計算して出力する。
 ブラインド生成器714は、結合器704により出力された結合値vijと乱数発生器706によりランダムに発生させた乱数uと、公開値演算器712により出力された公開値Uとを入力として、ブラインドbを計算式:
b=u+vij×r mod q
により計算して出力する。ここで、rは:
r=H(C∥S∥U)
である。逆ブラインド演算器716は、ブラインド生成器714により出力されたブラインドbを入力として、逆ブラインドb-1を計算式:
-1 mod q
により計算して出力する。
 ユーザの端末装置700は、サーバの認証装置800に対して、メモリ702から読み出した識別子WIDと公開値演算器712により出力された公開値Uを、図示しない通信処理部を介して送信する。
 しばらくすると、ユーザの端末装置700は、サーバの認証装置800からメッセージ「S,Y」を受信する。マスター秘密生成器718は、サーバの認証装置800から受信した値Yと、逆ブラインド演算器716により出力された逆ブラインドb-1を入力として、マスター秘密Kを計算式:
K=Y(1/b mod q)
により計算して出力する。
 続いて、認証子生成器720は、メモリ702から読み出した識別子WIDと公開値演算器712により出力された公開値Uとサーバの認証装置800から受信した値Yとマスター秘密生成器718により出力されたマスター秘密Kとを入力として、認証子Vcを計算式:
Vc=H(1∥WID∥S∥U∥Y∥K)
により計算して入力メッセージInputMsgとともに出力する。ここで、入力メッセージは
InputMsg=WID∥S∥U∥Y∥K
である。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。ユーザの端末装置700は、図示しない通信処理部を介して、認証子生成器720により出力された認証子Vcをサーバの認証装置800へ送信する。
 しばらくすると、ユーザの端末装置700は、サーバの認証装置800からメッセージ「VSi」を受信する。認証子判断部722は、サーバの認証装置800から受信した認証子VSiが正しく生成された値であるかどうかを確認する。認証子判断部722は、認証子生成器720から入力された入力メッセージInputMsgに基づいて、サーバの認証装置800から受信した認証子VSiと比較する。この比較処理において、認証子VSiとハッシュ関数H(2∥InputMsg)が一致しない場合、認証子判断部722は、エラーメッセージ発生器724に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器724はエラーメッセージを生成して処理を中断する。
 一方、認証子判断の判断処理において、認証子VSiとハッシュ関数H(2∥InputMsg)が一致したことを判断した場合は、サーバの認証装置800が正当な装置として認証して、続けて次の処理を行う。セッション鍵生成器726は、認証子生成器720から入力された入力メッセージInputMsgを入力として、セッション鍵SKijを計算式:
SKij=H(3∥InputMsg)
により計算して出力する。秘密値更新器728は、メモリ702から読み出した識別子WIDと乱数sijと認証子生成器720から入力された入力メッセージInputMsgを入力として、j+1番目の識別子WIDと乱数si(j+1)を計算式:
WID=H(WID∥InputMsg)
i(j+1)=sij+H(InputMsg) mod q
により計算して出力する。ユーザの端末装置700は、メモリ702に保持している現在の識別子WIDと乱数との組である「WID,sij」を、秘密値更新器728により出力された次の識別子WIDと乱数の組である「WID,si(j+1)」に書き換える。
 生成したセッション鍵SKは、ユーザの端末装置300がクライアント側のデータ鍵cdkを暗号化してサーバの認証装置400へ送信するために用いることができる。また、サーバの認証装置400がユーザの端末装置300へ暗号化して送信してくる、サーバの認証装置400が暗号化されたサーバ側のデータ鍵sdkを復号するためにも用いることができる。
 セッション鍵SKが生成されると、ユーザの端末装置300は、データ鍵cdkをセッション鍵SKを用いて暗号化し、サーバの認証装置400へ送信する。或いは、サーバの認証装置400は、認証装置400が生成したセッション鍵を用いてサーバ側データ鍵sdkを暗号化し、ユーザの端末装置300へ送信する。ユーザの端末装置300は、自身で生成したセッション鍵SKを用いて受信したサーバ側データ鍵sdkを復号する。成功すると、ユーザの端末装置300は、データ鍵dkをcdkとsdkとを用いて復元することができる。
 上記データdkは、
dk’=cdk(+)sdk 又は
dk’=cdk+sdk mod q 又は
dk’=cdk×sdk mod q
とし、
dk=dk’ 又は
dk=(dk’)(+)hpw 又は
dk=(dk’)+hpw mod q 又は
dk=(dk’)×hpw mod q 又は
少なくともdk’とhpwを入力とする関数H()の出力から計算できる値
により復元できる。
 ここで、(dk’)はdk’の値を最初に計算するというステップを示しており、
hpwは、上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力より計算できる値であり、(+)は排他的論理和である。
<サーバの認証装置800における作業>
 次に、図8を参照して、サーバの認証装置800における認証システム500のj番目プロトコル実行処理について説明する。前述した認証システム500の初期化処理の後、認証システム500のj番目プロトコル実行の前には、サーバの認証装置800は、記録情報「SSj」として「WID,Wij」を格納装置の内部にあるメモリあるいはデータベース802に保持している。
 まず、サーバの認証装置800は、ユーザの端末装置700からメッセージ「WID,U」を受信する。WID判断部804は、ユーザの端末装置700から受信した識別子WIDの正確性を確認する。WID判断部804は、データベースから読み出した識別子WIDを、ユーザの端末装置700から受信した識別子WIDと比較して一致しない場合、エラーメッセージ発生器806に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器806はエラーメッセージを生成して処理を中断する。一方、WID判断部804の判断処理において、データベースから読み出した識別子WIDをユーザの端末装置700から受信した識別子WIDと比較して、一致した場合には、続けて次の処理を行う。
 マスター秘密生成器808は、乱数発生器810によりランダムに発生させた乱数y(y∈(Z/qZ))を入力として、マスター秘密Kを計算式:
K=g
により計算して出力する。
 第1ブラインド生成器812は、ユーザの端末装置700から受信した公開値Uとデータベースから読み出した認証データWijと乱数発生器810によりランダムに発生させた乱数yとを入力として、第1ブラインドWij y・rを計算式:
ij y・r
により計算して出力する。ここで、rは
r=H(C∥S∥U)
である。第2ブラインド生成器814は、ユーザの端末装置700から受信した公開値Uと乱数発生器810によりランダムに発生させた乱数yとを入力として、第2ブラインドUを計算式:

により計算して出力する。マスク演算器816は、第1ブラインド生成器812により出力された第1ブラインドWij y・rと第2ブラインド生成器814により出力された第2ブラインドUとを入力として、値Yを
Y=U・Wij y・r
により計算して出力する。サーバの認証装置800は、図示しない通信処理部を介して、ユーザの端末装置700に対して、サーバのIDであるSiとマスク演算器816により出力された値Yを送信する。
 続いて、入力メッセージ集合器818が、ユーザの端末装置700から受信した識別子WIDと公開値Uとマスク演算器816により出力された値Yとマスター秘密生成器808により出力されたマスター秘密Kとを入力として、入力メッセージInputMsgを出力する。ここで、入力メッセージは
InputMsg=WID∥Si∥U∥Y∥K
である。しばらくすると、サーバの認証装置800は、ユーザの端末装置700からメッセージ「Vc」を受信する。
 認証子判断部820は、ユーザの端末装置700から受信した認証子Vcが正しく生成された値であるかどうかを確認する。認証子判断部820は、入力メッセージ集合器818から入力された入力メッセージInputMsgに基づいて、ユーザの端末装置700から受信した認証子Vcとハッシュ関数H(1∥InputMsg)との比較処理を行う。この比較処理において、認証子Vcとハッシュ関数H(1∥InputMsg)が一致しない場合、認証子判断部820は、エラーメッセージ発生器822に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器822はエラーメッセージを生成して処理を中断する。一方、上記比較処理において、受信した認証子Vcとハッシュ関数H(1∥InputMsg)が一致すると判断された場合は、ユーザの端末装置700が正当な装置として認証されるので、続けて次の処理が行われる。なおここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。
 認証子生成器824は、入力メッセージ集合器818から入力された入力メッセージInputMsgを入力として、認証子VSiを計算式:
Si=H(2∥InputMsg)
により計算して出力する。サーバの認証装置800は、図示しない通信処理部を介して、ユーザの端末装置700に対して、認証子生成器824により出力された認証子VSiを送信する。
 セッション鍵生成器826は、入力メッセージ集合器818から入力された入力メッセージInputMsgを入力として、セッション鍵SKijを計算式:
SKij=H(3∥InputMsg)
により計算して出力する。秘密値更新器828は、データベース802から読み出した識別子WIDと認証データWijと入力メッセージ集合器818から入力された入力メッセージInputMsgを入力として、j+1番目の識別子WIDと認証データWi(j+1)を計算式:
WID=H(WID∥InputMsg)
i(j+1)=Wij・gH1(InputMsg)
により計算して出力する。サーバの認証装置800は、データベース802に保持している現在の識別子WIDと認証データの組である「WID,Wij」を、秘密値更新器828により出力された次の識別子WIDと認証データの組である「WID,Wi(j+1)」に書き換える。
 生成したセッション鍵SKは、サーバの認証装置400がサーバ側のデータ鍵sdkを暗号化してユーザの端末装置300へ送信するために用いることができる。また、ユーザの端末装置300がサーバの認証装置400へ暗号化して送信してくる、端末装置300が暗号化されたクライアント側のデータ鍵cdkを復号するためにも用いることができる。
 セッション鍵SKが生成されると、サーバの認証装置400は、データ鍵sdkをセッション鍵SKを用いて暗号化し、ユーザの端末装置300へ送信する。或いは、ユーザの端末装置300は、端末装置300が生成したセッション鍵を用いてクライアント側データ鍵cdkを暗号化し、サーバの認証装置400へ送信する。サーバの認証装置400は、自身で生成したセッション鍵SKを用いて受信したクライアント側データ鍵cdkを復号する。成功すると、サーバの認証装置400は、データ鍵dkをcdkとsdkとを用いて復元することができる。
[3.認証システム500の変形例]
 実施例1に係る認証システム100の場合と同様に、実施例2に係る認証システム500においても、サーバの認証装置800のマスク演算器816における値Yの計算方法を以下のように変形することができる。この変形においては、第1ブラインド及び第2ブラインドが次のように計算される。
第1ブラインド:Wij
第2ブラインド:Uy・r(ただしr=H(C∥S∥U))
 すなわち、はじめの例ではrがパスワード認証データWijに関するべき乗計算に用いられていたのに対し、この変形例ではrが公開値Uに関するべき乗計算に用いられている。そして、マスク演算器816で得られる値Yは、次のように求められる。
Y=Uy・r・Wij
 これらの変形に伴い、ユーザの端末装置700のブラインド生成器714におけるブラインドbの計算式も、次のように変形される。
b=u×r+vij mod q (ただしr=H(C∥S∥U))
 すなわち、はじめの例ではrが結合値vijに関する項に乗じられていたのに対し、この変形例ではrが乱数uに乗じられる。
[4.認証システム500の更なる変形例]
 実施例2に係る認証システム500を次のように変形することにより、攻撃者のパスワードオンライン攻撃を検出する機能を付加することができる。
 前述した認証システム500の初期化処理に加えて、ユーザの端末装置700は、MAC(Message Authentication Code)生成用の鍵MacKを、安全な通信路を通じてサーバの認証装置800へ送信する。ユーザの端末装置700は、内部にあるメモリ702に他の記録情報とともに鍵MacKを保存する。サーバの認証装置800は、ユーザの端末装置700から受信した鍵MacKを、内部にあるメモリあるいはデータベース802に他の記録情報とともに保存する。
 前述した認証システム500のj番目プロトコル実行処理に加えて、ユーザの端末装置700は、サーバの認証装置800へ送信するメッセージに対して、内部にあるメモリ702から読み出した鍵MacKを用いてMACを生成し、メッセージとともにMACをサーバの認証装置800へ送信する。同じように、サーバの認証装置800も、ユーザの端末装置700へ送信するメッセージに対して、内部にあるメモリあるいはデータベース802から読み出した鍵MacKを用いてMACを生成し、メッセージとともにMACをユーザの端末装置700へ送信する。送信されたMACは、クライアント及びサーバの各々において、各々に保存されている鍵MacKを用いてそれぞれ検証される。
 認証システム500のj番目プロトコル実行処理において、MACの検証が失敗した場合など何かのエラーが発生して処理が中断された場合は、ユーザの端末装置700とサーバの認証装置800は各自のメモリあるいはデータベースに、その時送受信したメッセージと他の情報(例えば、時間、IPアドレスなど)をログとして保存する。
 認証システム500のj番目プロトコル終了後、ユーザの端末装置700とサーバの認証装置800がお互いに認証してセッション鍵を共有した場合、サーバの認証装置800は、内部にあるメモリあるいはデータベース802に保存していたこれまでのログ情報を、セッション鍵により保護される安全な通信路を通じて、ユーザの端末装置700へ送信するとともにそれらのログ情報を削除する。ユーザの端末装置700は、サーバの認証装置800から受信したログ情報と内部にあるメモリ702に保存していたこれまでのログ情報を比較することで攻撃者のパスワードに関するオンライン辞書攻撃の回数をユーザに表示させる。ユーザの端末装置700は内部にあるメモリ702にこれまで保存していたログ情報を削除する。
 上記の認証システム500のオンライン辞書攻撃検出機能は、MACの代わりに署名(Digital Signature)を使ってもよい。
 実施例2に係る認証システム500も、実施例1に係る認証システム100と同様に、サーバにおけるマスター秘密の計算を、式:
K=g
で行うことができるため、guyのべき乗計算が必要な従来技術よりも、サーバの計算量を大きく抑えることができる。また、クライアントにおけるマスター秘密の計算も、式:
K=Y(1/b mod q)
で行うことができるため、guyのべき乗計算が必要な従来技術よりも、やはり計算量を抑えることができる。これらの利点は上述の変形例においても失われない。パスワード及びパスワード認証データWに加えて二要素認証方式を用いたことによる安全性と相まって、認証システム100は、KCI攻撃を含めてパブリックネットワーク上の様々な攻撃に対して非常に高度の安全性を提供することができ、且つクライアント及びサーバの計算量を従来方式に比べて減少させることに成功している。
〔実施例3:実施例1のシステムの別の応用例〕
 次に、実施例1で紹介したパスワードのみを用いた認証方式を、二要素認証方式に応用した別の例を説明する。図9は、この応用例を説明するために例示として用いる認証システム500’の全体構成を描いている。
 認証システム500’は、ユーザの端末装置900とサーバの認証装置1000とで構成される。認証システム500’において、ユーザの端末装置900はユーザから入力されたパスワードに加えてメモリ902などに保持されている記録情報に基づき、ある特徴的な演算を行う。サーバの認証装置1000は、識別子WIDと認証データと公開値Tをデータベース1002などに保持している。識別子WIDは、例えば、端末装置700の識別子とカウント値とを含むものであることができる。端末装置900とサーバの認証装置1000はインターネットのようなパブリックネットワークを通じてお互いに相互認証し、その相互認証が成功した時のみ、お互いに同じセッション鍵を確保すると共に、各自の記録情報を次のセッションのために更新していく。それにより、サーバの認証装置1000は、ユーザの認証データに対してパスワードを全数探索することができなくなり、ユーザの端末装置900は記録情報が漏洩したとしても安全性が落ちることがない。
[1.認証システム500’の初期化]
 初めに図10を参照して、認証システム500’における初期化処理について説明する。図10は、認証システム500’の初期化処理に係る、ユーザの端末装置900とサーバの認証装置1000の機能構成及び動作を説明するためのブロック図である。認証システム500’の初期化処理において、ユーザの端末装置900は、ユーザから入力されたパスワードに基づいて、サーバの認証装置1000と安全な通信路(例えば、直接に登録したり、郵便で送付したり、あるいは電話で知らせるなど)を用いて初期化処理を行い、ユーザの端末装置900は内部にあるメモリ902へ記録情報としてCS1を保存し、サーバの認証装置1000は内部にあるメモリあるいはデータベース1002へ記録情報としてSS1を保存する。
<ユーザの端末装置900における作業>
 図10に示すように、ユーザの端末装置900における初期化処理では、結合器904は、ユーザから入力されたパスワードpwと乱数発生器906によりランダムに発生させた乱数si1(si1∈(Z/qZ))を入力として、結合値vi1を計算式:
i1=si1+H(C∥S∥pw) mod q
により計算して出力する。ここで、Sはi番目のサーバを表す。公開値演算器912は、乱数発生器906によりランダムに発生させた乱数t(t∈(Z/qZ))を入力として、公開値Tを計算式:
T=g
により計算して出力し、識別子WIDと認証データと公開値「WID,vi1,T」をサーバの認証装置1000へ送信する。ユーザの端末装置900は、サーバのIDと識別子WIDと乱数発生器906により発生させた乱数si1とtを、ユーザの端末装置900の内部にあるメモリ902へ記録情報「CS1」として「S,WID,si1,t」を保存する。
<サーバの認証装置1000における作業>
 図10に示すように、サーバの認証装置1000における初期化処理において、サーバの認証装置1000は、ユーザの端末装置900から受信した識別子WIDと認証データと公開値「WID,vi1,T」を、サーバの認証装置1000の内部にあるメモリあるいはデータベース1002へ記録情報「SS1」として「WID,vi1,T」を保存する。
[2.認証システム500’のj番目プロトコル実行]
 次に、図11および図12を参照して、認証システム500’におけるj番目プロトコル実行処理について説明する。図11および図12は、認証システム500’のj番目プロトコル実行を行う、ユーザの端末装置900とサーバの認証装置1000の機能構成及び動作を、それぞれ説明するためのブロック図である。図11および図12において、jはj≧1になるような整数である。認証システム500’のj番目プロトコル実行において、ユーザの端末装置900は、ユーザから入力されたパスワードpwとメモリ902に保持している記録情報CSjとに基づいて、ある特徴的な演算を行う。そして、記録情報SSjをデータベースなどに保持しているサーバの認証装置1000と、インターネットのようなパブリックネットワークを通じてお互いに相互認証し、その相互認証が成功した時のみ、お互いに同じセッション鍵を確保する。以下に説明されるj番目プロトコル実行は、認証システム500’の初期化が完了した後(j=1の時)、あるいは認証システム500’のj-1番目プロトコル実行が終了した後(すなわち、CSj=(S,WID,sij,t)とSSj=(WID,vij,T)の時)に、ユーザの端末装置900及びサーバの認証装置1000によって実行される。
<ユーザの端末装置900における作業>
 まず、図11を参照して、ユーザの端末装置900における認証システム500’のj番目プロトコル実行処理について説明する。前述した認証システム500’の初期化処理の後、認証システム500’のj番目プロトコル実行に先だって、ユーザの端末装置900は、記録情報「CSj」として「S,WID,sij,t」を内蔵するメモリ902に予め保持している。
 結合器904は、ユーザから入力されたパスワードpwとメモリ902から読み出した乱数sijとを入力として、結合値vijを計算式:
ij=sij+H(C∥S∥pw) mod q
により計算して出力する。公開値演算器912は、乱数発生器906によりランダムに発生させた乱数u(u∈(Z/qZ))を入力として、公開値Uを計算式:
U=g
により計算して出力する。
 ブラインド生成器914は、結合器904により出力された結合値vijと乱数発生器906によりランダムに発生させた乱数uとメモリ902から読み出した乱数tと、公開値演算器912により出力された公開値Uとを入力として、ブラインドbを計算式:
b=u+t×vij×r mod q
により計算して出力する。ここで、rは:
r=H(C∥S∥U)
である。逆ブラインド演算器916は、ブラインド生成器914により出力されたブラインドbを入力として、逆ブラインドb-1を計算式:
-1 mod q
により計算して出力する。
 ユーザの端末装置900は、サーバの認証装置1000に対して、メモリ902から読み出した識別子WIDと公開値演算器912により出力された公開値Uを、図示しない通信処理部を介して送信する。
 しばらくすると、ユーザの端末装置900は、サーバの認証装置1000からメッセージ「S,Y」を受信する。マスター秘密生成器918は、サーバの認証装置1000から受信した値Yと、逆ブラインド演算器916により出力された逆ブラインドb-1を入力として、マスター秘密Kを計算式:
K=Y(1/b mod q)
により計算して出力する。
 続いて、認証子生成器920は、メモリ902から読み出した識別子WIDと公開値演算器912により出力された公開値Uとサーバの認証装置1000から受信した値Yと結合器904により出力された結合値vijとマスター秘密生成器918により出力されたマスター秘密Kとを入力として、認証子Vcを計算式:
Vc=H(1∥WID∥S∥U∥Y∥vij∥K)
により計算して入力メッセージInputMsgとともに出力する。ここで、入力メッセージは
InputMsg=WID∥S∥U∥Y∥vij∥K
である。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。ユーザの端末装置900は、図示しない通信処理部を介して、認証子生成器920により出力された認証子Vcをサーバの認証装置1000へ送信する。
 しばらくすると、ユーザの端末装置900は、サーバの認証装置1000からメッセージ「VSi」を受信する。認証子判断部922は、サーバの認証装置1000から受信した認証子VSiが正しく生成された値であるかどうかを確認する。認証子判断部922は、認証子生成器920から入力された入力メッセージInputMsgに基づいて、サーバの認証装置1000から受信した認証子VSiと比較する。この比較処理において、認証子VSiとハッシュ関数H(2∥InputMsg)が一致しない場合、認証子判断部922は、エラーメッセージ発生器924に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器924はエラーメッセージを生成して処理を中断する。
 一方、認証子判断の判断処理において、認証子VSiとハッシュ関数H(2∥InputMsg)が一致したことを判断した場合は、サーバの認証装置1000が正当な装置として認証して、続けて次の処理を行う。セッション鍵生成器926は、認証子生成器920から入力された入力メッセージInputMsgを入力として、セッション鍵SKijを計算式:
SKij=H(3∥InputMsg)
により計算して出力する。秘密値更新器928は、メモリ902から読み出した識別子WIDと乱数sijと認証子生成器920から入力された入力メッセージInputMsgを入力として、j+1番目の識別子WIDと乱数si(j+1)を計算式:
WID=H(WID∥InputMsg)
i(j+1)=sij+H(InputMsg) mod q
により計算して出力する。ユーザの端末装置900は、メモリ902に保持している現在の識別子WIDと乱数との組である「WID,sij」を、秘密値更新器928により出力された次の識別子WIDと乱数の組である「WID,si(j+1)」に書き換える。
<サーバの認証装置1000における作業>
 次に、図12を参照して、サーバの認証装置1000における認証システム500’のj番目プロトコル実行処理について説明する。前述した認証システム500’の初期化処理の後、認証システム500’のj番目プロトコル実行の前には、サーバの認証装置1000は、記録情報「SSj」として「WID,vij,T」を格納装置の内部にあるメモリあるいはデータベース1002に保持している。
 まず、サーバの認証装置1000は、ユーザの端末装置900からメッセージ「WID,U」を受信する。WID判断部1004は、ユーザの端末装置900から受信した識別子WIDの正確性を確認する。WID判断部1004は、データベースから読み出した識別子WIDを、ユーザの端末装置900から受信した識別子WIDと比較して一致しない場合、エラーメッセージ発生器1006に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器1006はエラーメッセージを生成して処理を中断する。一方、WID判断部1004の判断処理において、データベースから読み出した識別子WIDをユーザの端末装置900から受信した識別子WIDと比較して、一致した場合には、続けて次の処理を行う。
 マスター秘密生成器1008は、乱数発生器1010によりランダムに発生させた乱数y(y∈(Z/qZ))を入力として、マスター秘密Kを計算式:
K=g
により計算して出力する。
 第1ブラインド生成器1012は、ユーザの端末装置900から受信した公開値Uとデータベースから読み出した認証データvijと公開値Tと乱数発生器1010によりランダムに発生させた乱数yとを入力として、第1ブラインドTy・vij・rを計算式:
y・vij・r
により計算して出力する。ここで、rは
r=H(C∥S∥U)
である。第2ブラインド生成器1014は、ユーザの端末装置900から受信した公開値Uと乱数発生器1010によりランダムに発生させた乱数yとを入力として、第2ブラインドUを計算式:

により計算して出力する。マスク演算器1016は、第1ブラインド生成器1012により出力された第1ブラインドTy・vij・rと第2ブラインド生成器1014により出力された第2ブラインドUとを入力として、値Yを
Y=U・Ty・vij・r
により計算して出力する。サーバの認証装置1000は、図示しない通信処理部を介して、ユーザの端末装置900に対して、サーバのIDであるSiとマスク演算器1016により出力された値Yを送信する。
 続いて、入力メッセージ集合器1018が、ユーザの端末装置900から受信した識別子WIDと公開値Uとマスク演算器1016により出力された値Yとデータベースから読み出した認証データvijとマスター秘密生成器1008により出力されたマスター秘密Kとを入力として、入力メッセージInputMsgを出力する。ここで、入力メッセージは
InputMsg=WID∥S∥U∥Y∥vij∥K
である。しばらくすると、サーバの認証装置1000は、ユーザの端末装置900からメッセージ「Vc」を受信する。
 認証子判断部1020は、ユーザの端末装置900から受信した認証子Vcが正しく生成された値であるかどうかを確認する。認証子判断部1020は、入力メッセージ集合器1018から入力された入力メッセージInputMsgに基づいて、ユーザの端末装置900から受信した認証子Vcとハッシュ関数H(1∥InputMsg)との比較処理を行う。この比較処理において、認証子Vcとハッシュ関数H(1∥InputMsg)が一致しない場合、認証子判断部1020は、エラーメッセージ発生器1022に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器1022はエラーメッセージを生成して処理を中断する。一方、上記比較処理において、認証子Vcとハッシュ関数H(1∥InputMsg)が一致すると判断された場合は、ユーザの端末装置900が正当な装置として認証されるので、続けて次の処理が行われる。なおここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。
 認証子生成器1024は、入力メッセージ集合器1018から入力された入力メッセージInputMsgを入力として、認証子VSiを計算式:
Si=H(2∥InputMsg)
により計算して出力する。サーバの認証装置1000は、図示しない通信処理部を介して、ユーザの端末装置900に対して、認証子生成器1024により出力された認証子VSiを送信する。
 セッション鍵生成器1026は、入力メッセージ集合器1018から入力された入力メッセージInputMsgを入力として、セッション鍵SKijを計算式:
SKij=H(3∥InputMsg)
により計算して出力する。
 秘密値更新器1028は、データベース1002から読み出した識別子WIDと認証データvijと入力メッセージ集合器1018から入力された入力メッセージInputMsgを入力として、j+1番目の識別子WIDと認証データvi(j+1)を計算式:
WID=H1(WID∥InputMsg)
i(j+1)=vij+H(InputMsg) mod q
により計算して出力する。サーバの認証装置1000は、データベース1002に保持している現在の識別子WIDと認証データの組である「WID,vij」を、秘密値更新器1028により出力された次の識別子WIDと認証データの組である「WID,vi(j+1)」に書き換える。
[3.認証システム500’の変形例1]
 実施例1に係る認証システム100の場合と同様に、実施例3に係る認証システム500’においても、サーバの認証装置1000のマスク演算器1016における値Yの計算方法を以下のように変形することができる。この変形においては、第1ブラインド及び第2ブラインドが次のように計算される。
第1ブラインド:Ty・vij
第2ブラインド:Uy・r (ただしr=H(C∥S∥U))
 すなわち、はじめの例ではrが公開値Tに関するべき乗計算に用いられていたのに対し、この変形例ではrが公開値Uに関するべき乗計算に用いられている。そして、マスク演算器1016で得られる値Yは、次のように求められる。
Y=Uy・r・Ty・vij
 これらの変形に伴い、ユーザの端末装置900のブラインド生成器914におけるブラインドbの計算式も、次のように変形される。
b=u×r+t×vij mod q (ただしr=H(C∥S∥U))
 すなわち、はじめの例ではrが結合値vijに関する項に乗じられていたのに対し、この変形例ではrが乱数uに乗じられる。
[4.認証システム500’の変形例2]
 次に、実施例3に係る認証システム500’において、サーバの認証装置1000のマスク演算器1016における値Yの計算方法を以下のように変形することができる。この変形においては、第1ブラインド及び第2ブラインドが次のように計算される。
第1ブラインド:Ty・r (ただしr=H(C∥S∥U∥vij))
第2ブラインド:U
 すなわち、はじめの例ではrがr=H(C∥S∥U)で計算されていたのに対し、この変形例ではrがr=H(C∥S∥U∥vij)で計算されている。そして、マスク演算器1016で得られる値Yは、次のように求められる。
Y=U・Ty・r
 これらの変形に伴い、ユーザの端末装置900のブラインド生成器914におけるブラインドbの計算式も、次のように変形される。
b=u+t×r mod q (ただしr=H(C∥S∥U∥vij))
すなわち、はじめの例ではrがr=H(C∥S∥U)で計算されていたのに対し、この変形例ではrがr=H(C∥S∥U∥vij)で計算されている。
[5.認証システム500’のオンライン辞書攻撃検出機能]
 次に、実施例3に係る認証システム500’において、攻撃者のパスワードオンライン攻撃を検出する機能について説明する。
 前述した認証システム500’の初期化処理に加えて、ユーザの端末装置900は、MAC(Message Authentication Code)生成用の鍵MacKを、安全な通信路を通じてサーバの認証装置1000へ送信する。ユーザの端末装置900は、内部にあるメモリ902に他の記録情報とともに鍵MacKを保存する。サーバの認証装置1000は、ユーザの端末装置900から受信した鍵MacKを、内部にあるメモリあるいはデータベース1002に他の記録情報とともに保存する。
 前述した認証システム500’のj番目プロトコル実行処理に加えて、ユーザの端末装置900は、サーバの認証装置1000へ送信するメッセージに対して、内部にあるメモリ902から読み出した鍵MacKを用いてMACを生成し、メッセージとともにMACをサーバの認証装置1000へ送信する。同じように、サーバの認証装置1000も、ユーザの端末装置900へ送信するメッセージに対して、内部にあるメモリあるいはデータベース1002から読み出した鍵MacKを用いてMACを生成し、メッセージとともにMACをユーザの端末装置900へ送信する。認証システム500’のj番目プロトコル実行処理で、MACの検証が失敗した場合など何かのエラーが発生して処理が中断された場合は、ユーザの端末装置900とサーバの認証装置1000は各自のメモリあるいはデータベースに、その時送受信したメッセージと他の情報(例えば、時間、IPアドレスなど)をログとして保存する。
 認証システム500’のj番目プロトコル終了後、ユーザの端末装置900とサーバの認証装置1000がお互いに認証してセッション鍵を共有した場合、サーバの認証装置1000は、内部にあるメモリあるいはデータベース1002に保存していたこれまでのログ情報を、セッション鍵により保護される安全な通信路を通じて、ユーザの端末装置900へ送信するとともにそれらのログ情報を削除する。ユーザの端末装置900は、サーバの認証装置1000から受信したログ情報と内部にあるメモリ902に保存していたこれまでのログ情報を比較することで、攻撃者のパスワードに関するオンライン辞書攻撃の回数をユーザに表示させる。ユーザの端末装置900は内部にあるメモリ902にこれまで保存していたログ情報を削除する。
 上記の認証システム500’のオンライン辞書攻撃検出機能は、MACの代わりに署名(Digital Signature)を使ってもよい。
〔実施例4:実施例1のシステムの更に別の応用例〕
 次に、実施例1で紹介したパスワードのみを用いた認証方式を、二要素認証方式に応用した、更に別の例を説明する。図13は、この応用例を説明するために例示として用いる認証システム500”の全体構成を描いている。
 認証システム500”は、ユーザの端末装置1100とサーバの認証装置1200とで構成される。認証システム500”において、ユーザの端末装置1100はユーザから入力されたパスワードに加えてメモリ1102などに保持されている記録情報に基づき、ある特徴的な演算を行う。サーバの認証装置1200は、ハッシュされた一時IDと認証データをデータベース1202などに保持している。端末装置1100とサーバの認証装置1200はインターネットのようなパブリックネットワークを通じてお互いに相互認証し、その相互認証が成功した時のみ、お互いに同じセッション鍵を確保すると共に、各自の記録情報を次のセッションのために更新していく。それにより、サーバの認証装置1200は、ユーザの認証データに対してパスワードを全数探索することができなくなり、ユーザの端末装置1100は記録情報が漏洩したとしても安全性が落ちることがない。
[1.認証システム500”の初期化]
 初めに図14を参照して、認証システム500”における初期化処理について説明する。図14は、認証システム500”の初期化処理に係る、ユーザの端末装置1100とサーバの認証装置1200の機能構成及び動作を説明するためのブロック図である。認証システム500”の初期化処理において、ユーザの端末装置1100は、ユーザから入力されたパスワードに基づいて、サーバの認証装置1200と安全な通信路(例えば、直接に登録したり、郵便で送付したり、あるいは電話で知らせるなど)を用いて初期化処理を行い、ユーザの端末装置1100は内部にあるメモリ1102へ記録情報としてCS1を保存し、サーバの認証装置1200は内部にあるメモリあるいはデータベース1202へ記録情報としてSS1を保存する。
<ユーザの端末装置1100における作業>
 図14に示すように、ユーザの端末装置1100における初期化処理では、結合器1104は、ユーザから入力されたパスワードpwと乱数発生器1106によりランダムに発生させた乱数si1(si1∈(Z/qZ))を入力として、結合値vi1を計算式:
i1=si1+H(C∥S∥pw) mod q
により計算して出力する。ここで、Sはi番目のサーバを表す。HID生成器1107は、ID用乱数発生器1105によりランダムに発生させたID値idi1(idi1∈{0,1})を入力として、HID値hidi1を計算式:
hidi1=H(4∥idi1
により計算して出力し、HID値と認証データ「hidi1,vi1」をサーバの認証装置1200へ送信する。ユーザの端末装置1100は、サーバのIDとID用乱数発生器1105により発生させたID値と乱数発生器1106により発生させた乱数si1を、ユーザの端末装置1100の内部にあるメモリ1102へ記録情報「CS1」として「S,idi1,si1」を保存する。
<サーバの認証装置1200における作業>
 図14に示すように、サーバの認証装置1200における初期化処理において、サーバの認証装置1200は、ユーザの端末装置1100から受信したHID値と認証データ「hidi1,vi1」を、サーバの認証装置1200の内部にあるメモリあるいはデータベース1202へ記録情報「SS1」として「hidi1,vi1」を保存する。
[2.認証システム500”のj番目プロトコル実行]
 次に、図15および図16を参照して、認証システム500”におけるj番目プロトコル実行処理について説明する。図15および図16は、認証システム500”のj番目プロトコル実行を行う、ユーザの端末装置1100とサーバの認証装置1200の機能構成及び動作を、それぞれ説明するためのブロック図である。図15および図16において、jはj≧1になるような整数である。認証システム500”のj番目プロトコル実行において、ユーザの端末装置1100は、ユーザから入力されたパスワードpwとメモリ1102に保持している記録情報CSjとに基づいて、ある特徴的な演算を行う。そして、記録情報SSjをデータベースなどに保持しているサーバの認証装置1200と、インターネットのようなパブリックネットワークを通じてお互いに相互認証し、その相互認証が成功した時のみ、お互いに同じセッション鍵を確保する。以下に説明されるj番目プロトコル実行は、認証システム500”の初期化が完了した後(j=1の時)、あるいは認証システム500”のj-1番目プロトコル実行が終了した後(すなわち、CSj=(S,idij,sij)とSSj=(hidij,vij)の時)に、ユーザの端末装置1100及びサーバの認証装置1200によって実行される。
<ユーザの端末装置1100における作業>
 まず、図15を参照して、ユーザの端末装置1100における認証システム500”のj番目プロトコル実行処理について説明する。前述した認証システム500”の初期化処理の後、認証システム500”のj番目プロトコル実行の前には、ユーザの端末装置1100は、記録情報「CSj」として「S,idij,sij」を内蔵するメモリ1102に保持している。
 結合器1104は、ユーザから入力されたパスワードpwとメモリ1102から読み出した乱数sijとを入力として、結合値vijを計算式:
ij=sij+H(C∥S∥pw) mod q
により計算して出力する。公開値演算器1112は、乱数発生器1106によりランダムに発生させた乱数u(u∈(Z/qZ))を入力として、公開値Uを計算式:
U=g
により計算して出力する。HID生成器1107は、メモリ1102から読み出したID値idijを入力として、HID値を計算式:
hidij=H(4∥idij
により計算して出力する。
 ブラインド生成器1114は、結合器1104により出力された結合値vijと乱数発生器1106によりランダムに発生させた乱数uとHID生成器1107により出力されたHID値hidijと、公開値演算器1112により出力された公開値Uとを入力として、ブラインドbを計算式:
b=u+vij×r mod q
により計算して出力する。ここで、rは:
r=H(hidij∥S∥U)
である。逆ブラインド演算器1116は、ブラインド生成器1114により出力されたブラインドbを入力として、逆ブラインドb-1を計算式:
-1 mod q
により計算して出力する。
 ユーザの端末装置1100は、サーバの認証装置1200に対して、メモリ1102から読み出したID値idijと公開値演算器1112により出力された公開値Uを、図示しない通信処理部を介して送信する。
 しばらくすると、ユーザの端末装置1100は、サーバの認証装置1200からメッセージ「S,Y」を受信する。マスター秘密生成器1118は、サーバの認証装置1200から受信した値Yと、逆ブラインド演算器1116により出力された逆ブラインドb-1を入力として、マスター秘密Kを計算式:
K=Y(1/b mod q)
により計算して出力する。
 続いて、認証子生成器1120は、HID生成器1107により出力されたHID値hidijと公開値演算器1112により出力された公開値Uとサーバの認証装置1200から受信した値Yと結合器1104により出力された結合値vijとマスター秘密生成器1118により出力されたマスター秘密Kとを入力として、認証子Vcを計算式:
Vc=H(1∥hidij∥S∥U∥Y∥vij∥K)
により計算して入力メッセージInputMsgとともに出力する。ここで、入力メッセージは
InputMsg=hidij∥S∥U∥Y∥vij∥K
である。ここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。ユーザの端末装置1100は、図示しない通信処理部を介して、認証子生成器1120により出力された認証子Vcをサーバの認証装置1200へ送信する。
 しばらくすると、ユーザの端末装置1100は、サーバの認証装置1200からメッセージ「VSi」を受信する。認証子判断部1122は、サーバの認証装置1200から受信した認証子VSiが正しく生成された値であるかどうかを確認する。認証子判断部1122は、認証子生成器1120から入力された入力メッセージInputMsgに基づいて、サーバの認証装置1200から受信した認証子VSiと比較する。この比較処理において、認証子VSiとハッシュ関数H(2∥InputMsg)が一致しない場合、認証子判断部1122は、エラーメッセージ発生器1124に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器1124はエラーメッセージを生成して処理を中断する。
 一方、認証子判断の判断処理において、認証子VSiとハッシュ関数H(2∥InputMsg)が一致したことを判断した場合は、サーバの認証装置1200が正当な装置として認証して、続けて次の処理を行う。セッション鍵生成器1126は、認証子生成器1120から入力された入力メッセージInputMsgを入力として、セッション鍵SKijを計算式:
SKij=H(3∥InputMsg)
により計算して出力する。秘密値更新器1128は、メモリ1102から読み出した乱数sijと認証子生成器1120から入力された入力メッセージInputMsgを入力として、j+1番目の乱数si(j+1)を計算式:
i(j+1)=sij+H(InputMsg) mod q
により計算して出力する。ユーザの端末装置1100は、メモリ1102に保持している現在の乱数である「sij」を、秘密値更新器1128により出力された次の乱数である「si(j+1)」に書き換える。
<サーバの認証装置1200における作業>
 次に、図16を参照して、サーバの認証装置1200における認証システム500”のj番目プロトコル実行処理について説明する。前述した認証システム500”の初期化処理の後、認証システム500”のj番目プロトコル実行の前には、サーバの認証装置1200は、記録情報「SSj」として「hidij,vij」を格納装置の内部にあるメモリあるいはデータベース1202に保持している。
 まず、サーバの認証装置1200は、ユーザの端末装置1100からメッセージ「idij,U」を受信する。HID生成器1207は、ユーザの端末装置1100から受信したID値idijを入力として、HID値hidijを計算式:
hidij=H(4∥idij
により計算して出力する。HID判断部1204は、データベースから読み出したHID値hidijを、HID生成器1207により出力されたHID値と比較して一致しない場合、エラーメッセージ発生器1206に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器1206はエラーメッセージを生成して処理を中断する。一方、HID判断部1204の判断処理において、データベースから読み出したHID値hidijをHID生成器1207により出力されたHID値hidijと比較して、一致した場合には、続けて次の処理を行う。
 マスター秘密生成器1208は、乱数発生器1210によりランダムに発生させた乱数y(y∈(Z/qZ))を入力として、マスター秘密Kを計算式:
K=g
により計算して出力する。
 第1ブラインド生成器1212は、ユーザの端末装置1100から受信した公開値Uとデータベースから読み出したHID値hidijと認証データvijと乱数発生器1210によりランダムに発生させた乱数yとを入力として、第1ブラインドgy・vij・rを計算式:
y・vij・r
により計算して出力する。ここで、rは
r=H(hidij∥S∥U)
である。第2ブラインド生成器1214は、ユーザの端末装置1100から受信した公開値Uと乱数発生器1210によりランダムに発生させた乱数yとを入力として、第2ブラインドUを計算式:

により計算して出力する。マスク演算器1216は、第1ブラインド生成器1212により出力された第1ブラインドgy・vij・rと第2ブラインド生成器1214により出力された第2ブラインドUとを入力として、値Yを
Y=U・gy・vij・r
により計算して出力する。サーバの認証装置1200は、図示しない通信処理部を介して、ユーザの端末装置1100に対して、サーバのIDであるSとマスク演算器1216により出力された値Yを送信する。
 続いて、入力メッセージ集合器1218が、ユーザの端末装置1100から受信した公開値Uとマスク演算器1216により出力された値Yとデータベースから読み出したHID値hidijと認証データvijとマスター秘密生成器1208により出力されたマスター秘密Kとを入力として、入力メッセージInputMsgを出力する。ここで、入力メッセージは
InputMsg=hidij∥S∥U∥Y∥vij∥K
である。しばらくすると、サーバの認証装置1200は、ユーザの端末装置1100からメッセージ「Vc」を受信する。
 認証子判断部1220は、ユーザの端末装置1100から受信した認証子Vcが正しく生成された値であるかどうかを確認する。認証子判断部1220は、入力メッセージ集合器1218から入力された入力メッセージInputMsgに基づいて、ユーザの端末装置1100から受信した認証子Vcとハッシュ関数H(1∥InputMsg)との比較処理を行う。この比較処理において、認証子Vcとハッシュ関数H(1∥InputMsg)が一致しない場合、認証子判断部1220は、エラーメッセージ発生器1222に対して、一致しないことを通知する。これを受けて、エラーメッセージ発生器1222はエラーメッセージを生成して処理を中断する。一方、上記比較処理において、認証子Vcとハッシュ関数H(1∥InputMsg)が一致すると判断された場合は、ユーザの端末装置1100が正当な装置として認証されるので、続けて次の処理が行われる。なおここで、ハッシュ関数Hの代わりにMAC(Message Authentication Code)を使ってもよい。
 認証子生成器1224は、入力メッセージ集合器1218から入力された入力メッセージInputMsgを入力として、認証子VSiを計算式:
Si=H(2∥InputMsg)
により計算して出力する。サーバの認証装置1200は、図示しない通信処理部を介して、ユーザの端末装置1100に対して、認証子生成器1224により出力された認証子VSiを送信する。
 セッション鍵生成器1226は、入力メッセージ集合器1218から入力された入力メッセージInputMsgを入力として、セッション鍵SKijを計算式:
SKij=H(3∥InputMsg)
により計算して出力する。秘密値更新器1228は、データベース1202から読み出した認証データvijと入力メッセージ集合器1218から入力された入力メッセージInputMsgを入力として、j+1番目の認証データvi(j+1)を計算式:
i(j+1)=vij+H(InputMsg) mod q
により計算して出力する。サーバの認証装置1200は、データベース1202に保持している現在の認証データである「vij」を、秘密値更新器1228により出力された次の認証データである「vi(j+1)」に書き換える。
[3.認証システム500”のj番目プロトコル終了後]
 次に図17を参照して、認証システム500”におけるj番目プロトコル終了後の処理について説明する。図17は、認証システム500”のj番目プロトコル終了後の処理に係る、ユーザの端末装置1100とサーバの認証装置1200の機能構成及び動作を説明するためのブロック図である。認証システム500”のj番目プロトコル終了後の処理において、ユーザの端末装置1100は、セッション鍵生成器1126により出力されたセッション鍵SKijを用いて、次のセッションのためのHID値hidi(j+1)を、サーバの認証装置1200へ安全に送信し、ユーザの端末装置1100は内部にあるメモリ1102へ次のID値であるidi(j+1)を保存し、サーバの認証装置1200は内部にあるメモリあるいはデータベース1202へ次のHID値であるhidi(j+1)を保存する。
<ユーザの端末装置1100における作業>
 図17に示すように、ユーザの端末装置1100におけるj番目プロトコル終了後の処理では、HID生成器1107は、ID用乱数発生器1105によりランダムに発生させたID値idi(j+1)(idi(j+1)∈{0,1})を入力として、j+1番目のHID値hidi(j+1)を計算式:
hidi(j+1)=H(4∥idi(j+1)
により計算して出力し、HID値「hidi(j+1)」をサーバの認証装置1200へ送信する。ユーザの端末装置1100は、ユーザの端末装置1100の内部にあるメモリ1102に保持している現在のID値である「idij」を、ID用乱数発生器1105により発生させた次のID値である「idi(j+1)」に書き換える。
<サーバの認証装置1200における作業>
 図17に示すように、サーバの認証装置1200におけるj番目プロトコル終了後の処理において、サーバの認証装置1200は、サーバの認証装置1200の内部にあるメモリあるいはデータベース1202に保持している現在のHID値である「hidij」を、ユーザの端末装置1100から受信したj+1番目のHID値である「hidi(j+1)」に書き換える。
[4.認証システム500”の変形例]
 実施例1に係る認証システム100の場合と同様に、実施例4に係る認証システム500”においても、サーバの認証装置1200のマスク演算器1216における値Yの計算方法を以下のように変形することができる。この変形においては、第1ブラインド及び第2ブラインドが次のように計算される。
第1ブラインド:gy・vij
第2ブラインド:Uy・r (ただしr=H(hidij∥S∥U))
 すなわち、はじめの例ではrがgに関するべき乗計算に用いられていたのに対し、この変形例ではrが公開値Uに関するべき乗計算に用いられている。そして、マスク演算器1216で得られる値Yは、次のように求められる。
Y=Uy・r・gy・vij
 これらの変形に伴い、ユーザの端末装置1100のブラインド生成器1114におけるブラインドbの計算式も、次のように変形される。
b=u×r+vij mod q (ただしr=H(hidij∥S∥U))
すなわち、はじめの例ではrが結合値vijに関する項に乗じられていたのに対し、この変形例ではrが乱数uに乗じられる。
[5.認証システム500”のオンライン辞書攻撃検出機能]
 次に、実施例4に係る認証システム500”において、攻撃者のパスワードオンライン攻撃を検出する機能について説明する。
 前述した認証システム500”の初期化処理に加えて、ユーザの端末装置1100は、MAC(Message Authentication Code)生成用の鍵MacKを、安全な通信路を通じてサーバの認証装置1200へ送信する。ユーザの端末装置1100は、内部にあるメモリ1102に他の記録情報とともに鍵MacKを保存する。サーバの認証装置1200は、ユーザの端末装置1100から受信した鍵MacKを、内部にあるメモリあるいはデータベース1202に他の記録情報とともに保存する。
 前述した認証システム500”のj番目プロトコル実行処理に加えて、ユーザの端末装置1100は、サーバの認証装置1200へ送信するメッセージに対して、内部にあるメモリ1102から読み出した鍵MacKを用いてMACを生成し、メッセージとともにMACをサーバの認証装置1200へ送信する。同じように、サーバの認証装置1200も、ユーザの端末装置1100へ送信するメッセージに対して、内部にあるメモリあるいはデータベース1202から読み出した鍵MacKを用いてMACを生成し、メッセージとともにMACをユーザの端末装置1100へ送信する。認証システム500”のj番目プロトコル実行処理で、MACの検証が失敗した場合など何かのエラーが発生して処理が中断された場合は、ユーザの端末装置1100とサーバの認証装置1200は各自のメモリあるいはデータベースに、その時送受信したメッセージと他の情報(例えば、時間、IPアドレスなど)をログとして保存する。
 前述した認証システム500”のj番目プロトコル終了後の処理に加えて、ユーザの端末装置1100とサーバの認証装置1200がお互いに認証してセッション鍵を共有した場合、サーバの認証装置1200は、内部にあるメモリあるいはデータベース1202に保存していたこれまでのログ情報を、セッション鍵により保護される安全な通信路を通じて、ユーザの端末装置1100へ送信するとともにそれらのログ情報を削除する。ユーザの端末装置1100は、サーバの認証装置1200から受信したログ情報と内部にあるメモリ1102に保存していたこれまでのログ情報を比較することで攻撃者のパスワードに関するオンライン辞書攻撃の回数をユーザに表示させる。ユーザの端末装置1100は内部にあるメモリ1102にこれまで保存していたログ情報を削除する。
 上記の認証システム500”のオンライン辞書攻撃検出機能は、MACの代わりに署名(Digital Signature)を使ってもよい。
 以上、本発明の具現化形態のいくつかの例を説明したが、これらの例は本発明のアイディアの具現化形態を限定する目的で挙げられたのではなく、あくまで本発明によって開示される新たな技術思想のより深い理解に資するために挙げられたものである。ここで開示される技術思想の実施形態は上記の例に限定されるものではなく、その思想を逸脱することなく、様々な形態をとり得ることは言うまでもない。
100 認証システム
300 端末装置
302 パスワード認証データ生成器
304 公開値演算器
306 乱数発生器
308 ブラインド生成器
310 逆ブラインド演算器
312 マスター秘密生成器
314 認証子生成器
316 認証子判断部
318 エラーメッセージ発生器
320 セッション鍵生成器
400 認証装置
402 データベース
404 第1ブラインド生成器
405 第2ブラインド生成器
406 乱数発生器
408 マスク演算器
412 マスター秘密生成器
414 メッセージ集合器
416 認証子判断部
418 エラーメッセージ発生器
420 認証子生成器
422 セッション鍵生成器
500 認証システム
500’ 認証システム
500” 認証システム
700 端末装置
702 メモリ
704 結合器
706 乱数発生器
708 二要素認証データ生成器
712 公開値演算器
714 ブラインド生成器
716 逆ブラインド演算器
718 マスター秘密生成器
720 認証子生成器
722 認証子判断部
724 エラーメッセージ発生器
726 セッション鍵生成器
728 秘密値更新器
800 認証装置
802 データベース
804 WID判断部
806 エラーメッセージ発生器
808 マスター秘密生成器
810 乱数発生器
812 第1ブラインド生成器
814 第2ブラインド生成器
816 マスク演算器
818 メッセージ集合器
820 認証子判断部
822 エラーメッセージ発生器
824 認証子生成器
826 セッション鍵生成器
828 秘密値更新器
900 端末装置
902 メモリ
904 結合器
906 乱数発生器
912 公開値演算器
914 ブラインド生成器
916 逆ブラインド演算器
918 マスター秘密生成器
920 認証子生成器
922 認証子判断部
924 エラーメッセージ発生器
926 セッション鍵生成器
928 秘密値更新器
1000 認証装置
1002 データベース
1004 WID判断部
1006 エラーメッセージ発生器
1008 マスター秘密生成器
1010 乱数発生器
1012 第1ブラインド生成器
1014 第2ブラインド生成器
1016 マスク演算器
1018 メッセージ集合器
1020 認証子判断部
1022 エラーメッセージ発生器
1024 認証子生成器
1026 セッション鍵生成器
1028 秘密値更新器
1100 端末装置
1102 メモリ
1104 結合器
1105 ID用乱数発生器
1106 乱数発生器
1107 生成器
1112 公開値演算器
1114 ブラインド生成器
1116 逆ブラインド演算器
1118 マスター秘密生成器
1120 認証子生成器
1122 認証子判断部
1124 エラーメッセージ発生器
1126 セッション鍵生成器
1128 秘密値更新器
1200 認証装置
1202 データベース
1204 判断部
1206 エラーメッセージ発生器
1207 生成器
1208 マスター秘密生成器
1210 乱数発生器
1212 第1ブラインド生成器
1214 第2ブラインド生成器
1216 マスク演算器
1218 メッセージ集合器
1220 認証子判断部
1222 エラーメッセージ発生器
1224 認証子生成器
1226 セッション鍵生成器
1228 秘密値更新器

Claims (27)

  1.  クライアント・サーバ間の相互認証方法であって、
    上記サーバが実行する処理が、
    (a)上記サーバで生成した乱数y(y∈(Z/qZ))に基づいて、サーバ側マスター秘密Ksを、式:
       Ks=g     ……(式1)
    によって計算するステップと、
    (b)上記クライアントで計算された第1クライアント情報Uを、第1識別情報(C,WID,id)と共に該クライアントから受信するステップと、
    (c)上記受信した第1クライアント情報U及び第1識別情報を利用して、第1サーバ情報Yを、式:
       Y=U・Wy・r  ……(式2)又は
       Y=Uy・r・W  ……(式2’)
    によって計算するステップと、
    (d)上記計算した第1サーバ情報Yを上記クライアントへ送信するステップと、
    (e)上記サーバ側マスター秘密Ksを用いて、上記クライアントから受信したクライアント認証情報Vcを認証するステップと、
    (f)上記サーバ側マスター秘密Ksを用いて、サーバ認証情報Vsを生成し上記Vsをクライアントに送信するステップと、
    を含み、
    ただし上の記載において、qは群(G,・)の位数を表し、gはその集合Gの生成元を表し、”・”は上記G上の二項演算子を表し、
    式(2)及び式(2’)における記号Wはパスワードpwに関する情報を含む部分を表し、上記クライアントが生成したパスワード情報vに基づいて
       W=g      ……(式3)、
    又は上記クライアントが生成したパスワード情報vと上記クライアントが生成した乱数tのコミット値Tに基づいて
       W=T=gt×v  ……(式3’)
    により得ることができる部分であり、該パスワード情報vは、上記パスワードpwを少なくとも入力とする関数H()の出力から計算される値であり、×は整数上の掛け算であり、式(2)及び式(2’)における記号rは、上記クライアントが上記第1クライアント情報Uを計算するより前の時刻に知ることのできない値であると共に、上記サーバ及び上記クライアントのいずれにおいても計算可能な値を表し、U,W,Y,T,g∈Gであり、
    上記クライアントが実行する処理が、
    (a’)上記クライアントで生成した乱数u(u∈(Z/qZ))に基づき、上記第1クライアント情報Uを、
    U=g
    によって計算するステップと、
    (b’)上記計算した第1クライアント情報Uを、上記第1識別情報と共に上記サーバに送信するステップと、
    (c’)上記第1クライアント情報Uの送信に応じて、上記サーバから上記第1サーバ情報Yを受信するステップと、
    (d’)上記W=g …(式3)の場合に、
    ブラインド値bを、上記パスワード情報v及び上記値rに基づいて、次の計算式:
    b=u+v×r mod q(Y=U・Wy・rである場合) ……(式4)又は
    b=u×r+v mod q(Y=Uy・r・Wである場合) ……(式4’)
    によって計算するステップ、又は
    上記 W=T=gt×v …(式3’)の場合に、
    上記クライアントが生成したパスワード情報vと上記クライアントが生成した乱数tに基づいて、前記ブラインド値bを、次の計算式:
    b=u+t×v×r mod q(Y=U・Wy・rである場合) ……(式5)又は
    b=u×r+t×v mod q(Y=Uy・r・Wである場合) ……(式5’)
    によって計算するステップと、
    (e’)受信した上記第1サーバ情報Yに基づいて、クライアント側マスター秘密Kcを、
    Kc=Y(1/b mod q)
    によって計算するステップと、
    (f’)上記クライアント側マスター秘密Kcを利用してクライアント認証情報Vcを生成し、上記サーバに送信するステップと
    (g’)上記サーバから受信した上記サーバ認証情報Vsを、上記クライアント側マスター秘密Kcを利用して認証するステップと、
    を含む、方法。ただし、
    「1/b mod q」は「a×b≡1 mod q」を満たす1以上q未満の整数aを示す。
  2.  上記値rは、上記第1クライアント情報Uがクライアントから送信された後にサーバからクライアントに送信される乱数、又は、少なくとも上記第1クライアント情報Uを一方向性関数F()の入力として得られた出力より計算できる値である、
    請求項1に記載の方法。
  3.  上記パスワード情報vは、上記パスワードpwを少なくとも入力とする一方向性関数F()の出力より計算できる値である、
    請求項1、2のいずれかに記載の方法。
  4.  上記パスワード情報vは、上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力と乱数sとを少なくとも結合した値、又は、上記パスワードpwと上記乱数sとを少なくとも結合した値である、
    請求項1、2のいずれかに記載の方法。
  5.  上記パスワード情報vは
      v=s+hpw mod q 又は
      v=s×hpw mod q 又は
      v=s(+)hpw 又は
    上記パスワードpwと上記乱数sを少なくとも入力とする関数H()又は一方向性関数F()の出力より計算できる値
    と表記可能である、
    請求項1、2、4のいずれかに記載の方法。
     ここで、hpwは、上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力より計算できる値であり、(+)は排他的論理和である。
  6.  上記部分W又は上記パスワード情報vが、上記第1識別情報(C,WID)に関連づけられて上記サーバの記憶装置に予め格納されており、
     上記サーバが、上記受信した第1識別情報に基づいて該記憶装置から上記部分W(上記部分Wが格納されている場合)又は、上記パスワード情報v(上記パスワード情報vが格納されている場合)を検索するステップを有する、
    請求項1から5のいずれかに記載の方法。
  7.  上記部分W又は上記パスワード情報vが、上記第1識別情報(C,WID)を少なくとも入力に含む一方向性関数H()の出力から計算される第2識別情報に関連づけられて上記サーバの記憶装置に予め格納されており、
     上記サーバが、上記受信した第1識別情報(C,WID)を少なくとも入力に含む一方向性関数H()の出力から計算した上記第2識別情報により該記憶装置から上記部分W(上記部分Wが格納されている場合)又は、上記パスワード情報v(上記パスワード情報vが格納されている場合)を検索するステップを有する、
    請求項1から5のいずれかに記載の方法。
  8.  上記クライアントがクライアント側改ざん検出子生成鍵、クライアント側改ざん検出子検証鍵を持ち、上記サーバが、上記第1識別情報又は上記第2識別情報と共に、上記クライアント側改ざん検出子生成鍵により生成された改ざん検出子を検証するためのサーバ側改ざん検出子検証鍵と、上記クライアント側改ざん検出子検証鍵で検証できる改ざん検出子を生成できるサーバ側改ざん検出子生成鍵を持ち、
    上記クライアント・サーバ間の相互認証において、
    (a)上記サーバが、上記クライアントから上記Uを受け取った場合に、少なくとも上記Uと上記Yの組をログリストPs’に記録すると共に、少なくとも上記Uと上記Yに対して上記サーバ側改ざん検出子生成鍵を用いて改ざん検出子mac2を生成し、それを上記クライアントに送信するステップと、
    (b)上記クライアントが、該サーバから送られてきた改ざん検出子mac2の検証に失敗した場合に、上記クライアント認証情報Vcを送信せず該クライアント・サーバ間の相互認証を中断するステップと、
    (c)同じく上記クライアントが、該サーバから送られてきた改ざん検出子mac2の検証に成功した場合には、少なくとも上記Yと上記クライアント認証情報Vcに対して該クライアント側改ざん検出子生成鍵を用いて改ざん検出子mac3を生成し、その改ざん検出子を該サーバに送信すると共に、少なくとも上記Uと上記Yの組をログリストPcに記録するステップと、
    (d)該サーバが、該クライアントから送られてきた改ざん検出子mac3の検証に失敗した場合に、該クライアント・サーバ間の相互認証を中断するステップと、
    (e)同じく該サーバが、該クライアントから送られてきた改ざん検出子mac3の検証に成功し、かつ、該クライアントから送られてきた上記クライアント認証情報Vcの検証に失敗した場合に、少なくとも上記Uと上記Yの組をログリストPsに記録し、該クライアント・サーバ間の相互認証を中断するステップと、
    (f)該クライアント・サーバ間の相互認証が正常に終了した際には、前回該クライアント・サーバ間の相互認証ステップが正常に終了した以降に該サーバと該クライアントが該クライアント・サーバ間の相互認証処理中に記録し続けたログリストPs、Pc、Ps’中の少なくともUとYの組を第三者に改ざんされない方法で比較するステップと、
    を有する、請求項1から7のいずれかに記載の方法。
  9.  上記サーバ側及び上記クライアント側の少なくとも一方における上記改ざん検出子生成鍵及び上記検出子検証鍵をMAC(Message Authentication Code)鍵とする請求項8に記載の方法。
  10.  上記サーバ側及び上記クライアント側の両方の改ざん検出子生成鍵及び検出子検証鍵をMAC(Message Authentication Code)鍵とする場合、
    上記サーバ側の改ざん検出子生成鍵、
    上記サーバ側の改ざん検出子検証鍵、
    上記クライアント側の改ざん検出子生成鍵、
    上記クライアント側の改ざん検出子検証鍵、
    は全て同じ鍵とし、
     上記クライアントと上記サーバが同じMAC鍵を使っても異なる改ざん検出子を生成できるように、上記クライアントと上記サーバとで、異なるMAC生成アルゴリズム、又は、異なるメッセージフォーマットを用いる、請求項9に記載の方法。
  11.  上記改ざん検出子生成鍵を電子署名生成鍵、上記検出子検証鍵を電子署名検証鍵とする請求項8に記載の方法。
  12.  上記クライアントがクライアント側データ鍵cdkを持ち、上記サーバがサーバ側データ鍵sdkを第1識別情報又は第2識別情報と共に持ち、上記クライアント・サーバ間の相互認証ステップが正常に終了した際に、
    (a)該サーバが、該クライアント・サーバ間の相互認証ステップにより生成された上記サーバ側マスター秘密Ksに依存して生成される暗号化鍵を使って暗号化されたサーバ側データ鍵sdkを該クライアントに送信するステップと、
    (b)該クライアントが、該サーバから送信された暗号化されたデータ鍵sdkを該クライアント・サーバ間の相互認証ステップにより生成された該クライアント側マスター秘密KCに依存して生成される暗号化鍵を使って復号するステップと、
    (c)該クライアントが上記クライアント側データ鍵cdkと上記サーバ側データ鍵sdkからデータdkを復元するステップを持つ
    請求項1から11のいずれかに記載の方法。
  13.  上記クライアントがクライアント側データ鍵cdkを持ち、上記サーバがサーバ側データ鍵sdkを第1識別情報又は第2識別情報と共に持ち、上記クライアント・サーバ間の相互認証ステップが正常に終了した際に、
    (a’)該クライアントが、該クライアント・サーバ間の相互認証ステップにより生成された上記クライアント側マスター秘密Kcに依存して生成される暗号化鍵を使って暗号化されたクライアント側データ鍵cdkを該サーバに送信するステップと、
    (b’)該サーバが、該クライアントから送信された暗号化されたクライアント側データ鍵cdkを該クライアント・サーバ間の相互認証ステップにより生成された該サーバ側マスター秘密Ksに依存して生成される暗号化鍵を使って復号するステップと、
    (c’)該サーバが上記クライアント側データ鍵cdkと上記サーバ側データ鍵sdkからデータdkを復元するステップを持つ
    請求項1から12のいずれかに記載の方法。
  14.  上記データdkは、
    dk’=cdk(+)sdk 又は
    dk’=cdk+sdk mod q 又は
    dk’=cdk×sdk mod q
    とし、
    dk=dk’  又は
    dk=(dk’)(+)hpw 又は
    dk=(dk’)+hpw mod q 又は
    dk=(dk’)×hpw mod q 又は
    少なくともdk’とhpwを入力とする関数H()の出力から計算できる値
    により復元できる、
    請求項11または11’に記載の方法。
     ここで、(dk’)はdk’の値を最初に計算するというステップを示しており、
    hpwは、上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力より計算できる値であり、(+)は排他的論理和である。
  15.  上記クライアント・サーバ間の相互認証のために、上記クライアントが利用する可能性のある情報である、上記乱数t、上記第1識別情報の全てあるいは一部を、該クライアントの記録装置に予め保存し、該クライアントが上記クライアント・サーバ間の相互認証を実行する祭に、上記クライアント・サーバ間の相互認証の要求に応じて呼び出す
    請求項1から14のいずれかに記載の方法。
  16.  上記クライアント・サーバ間の相互認証が成功した場合、
     その相互認証で利用した該サーバの該記憶装置に記録されている情報である、上記第1識別情報、上記部分W又は上記パスワード情報v、クライアントが生成した乱数tのコミット値T、の全てあるいは一部、並びに、
     該クライアントの該記憶装置に記録されている情報である、上記乱数t、上記第1識別情報、の全てあるいは一部を、
     該クライアントと該サーバとの間でやりとりされた値、又は、該認証ステップで共有された上記マスター秘密KC(クライアント側)Ks(サーバ側)、又は上記マスター秘密と上記該サーバと該クライアントの間でやりとりされた値の両方を使って更新するステップを有する、
    請求項1から15のいずれかに記載の方法。
  17.  上記パスワード情報vが、上記パスワードpwと乱数sに基づいて、次の計算式:
      v=s+hpw mod q または
      v=s×hpw mod q
    により計算することができ、
     上記更新するステップにおいて、上記サーバは、
      W’=W・gud または
      W’=Wud
    と表記されうるように上記部分WをW’に更新し、上記クライアントは、
      s’=s+ud mod q または
      s’=s×ud mod q
    と表記されうるように上記乱数sをs’に更新する、請求項16に記載の方法。
     ただし、hpwは上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力であり、udは上記サーバと上記クライアントが共有している上記マスター秘密Ks(サーバ側)Kc(クライアント側)から生成される値である。
  18.  上記パスワード情報vが、上記パスワードpwと乱数sに基づいて、次の計算式:
      v=s+hpw mod q
    により計算することができ、
     上記更新するステップにおいて、上記サーバは、
      v’=v+ud  mod q
    と表記されうるように上記パスワード情報vをv’に更新し、上記クライアントは、
      s’=s+ud  mod q
    と表記されうるように上記乱数sをs’に更新する、請求項16に記載の方法。
     ただし、hpwは上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力であり、udは上記サーバと上記クライアントが共有している上記マスター秘密Ks(サーバ側)Kc(クライアント側)から生成される値である。
  19.  上記パスワード情報vが、上記パスワードpwと乱数sに基づいて、次の計算式:
      v=s(+)hpw
    により計算することができ、
     上記更新するステップにおいて、上記サーバは、
      v’=v(+)ud
    と表記されうるように上記パスワード情報vをv’に更新し、上記クライアントは、
      s’=s(+)ud
    と表記されうるように上記乱数sをs’に更新する、請求項16に記載の方法。
     ただし、hpwは上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力であり、udは上記サーバと上記クライアントが共有している上記マスター秘密Ks(サーバ側)Kc(クライアント側)から生成される値であり、(+)は排他的論理和を表す。
  20.  上記パスワード情報vが、上記パスワードpwと乱数sに基づいて、次の計算式:
      v=s×hpw mod q
    により計算することができ、
     上記更新するステップにおいて、上記サーバは、
      v’=v×ud mod q
    と表記されうるように上記パスワード情報vをv’に更新し、上記クライアントは、
      s’=s×ud mod q
    と表記されうるように上記乱数sをs’に更新する、請求項16に記載の方法。
     ただし、hpwは上記パスワードpwを少なくとも入力とする関数H()又は一方向性関数F()の出力であり、udは上記サーバと上記クライアントが共有している上記マスター秘密Ks(サーバ側)Kc(クライアント側)から生成される値である。
  21.  上記クライアント・サーバ間の相互認証が成功した場合、
    その相互認証で利用した該サーバの該記憶装置に記録されている情報である、該サーバ側の改ざん検出子生成鍵、該サーバ側の改ざん検出子検証鍵の全てあるいは一部、及び、
     該クライアントの該記憶装置に記録されている情報である、上記クライアント側の改ざん検出子生成鍵、上記クライアント側の改ざん検出子検証鍵の全てあるいは一部を、
     該クライアントと該サーバとの間でやりとりされた値、又は、該認証処理で共有された上記マスター秘密KC(クライアント側)Ks(サーバ側)、又は上記マスター秘密と上記該サーバと該クライアントの間でやりとりされた値の両方を使って更新するステップを有し、
     上記サーバと上記クライアントが同じ上記MAC鍵MacKを用いる場合、上記サーバと上記クライアントがそれぞれ上記MAC鍵MacKをMacK’に更新するステップは、
      MacK’=MacK(+)ud 又は
      MacK’=MacK+ud mod q 又は
      MacK’=MacK×ud mod q 又は
    と表記可能である、
    請求項10に記載の方法。
     ただし、udは上記サーバと上記クライアントが共有している上記マスター秘密Ks(サーバ側)Kc(クライアント側)から生成される値である。
  22.  上記クライアント・サーバ間の相互認証が成功した場合、
     その相互認証で利用した該サーバの該記憶装置に記録されている情報である上記サーバ側データ鍵sdk及び、
     該クライアントの該記憶装置に記録されている情報である上記クライアント側データ鍵cdkを、
     該クライアントと該サーバとの間でやりとりされた値、又は、該認証処理で共有された上記マスター秘密KC(クライアント側)Ks(サーバ側)、又は上記マスター秘密と上記該サーバと該クライアントの間でやりとりされた値の両方を使って更新するステップを有し、
     上記クライアントが上記クライアント側データ鍵cdkを持ち、上記サーバが上記サーバ側データ鍵sdkを持つ場合、上記サーバと上記クライアントがそれぞれcdkとsdkをcdk’とsdk’に更新するステップは、
     上記dk’が
      dk’=cdk(+)sdk
    と表記可能な場合、
      cdk’=cdk(+)ud
      sdk’=sdk(+)ud
    と表記可能であり、
    上記dk’が
      dk’=cdk+sdk mod q
    と表記可能な場合、
      cdk’=cdk+ud mod q
      sdk’=sdk-ud mod q
    又は
      cdk’=cdk-ud mod q
      sdk’=sdk+ud mod q
    と表記可能であり、
    上記dk’が
      dk’=cdk×sdk mod q
    と表記可能な場合、
      cdk’=cdk×ud mod q
      sdk’=sdk / ud mod q
    又は
      cdk’=cdk / ud mod q
      sdk’=sdk×ud mod q
    と表記可能である、
    請求項14に記載の方法。
     ただし、udは上記サーバと上記クライアントが共有している上記マスター秘密Ks(サーバ側)Kc(クライアント側)から生成される値であり、-は整数上の引き算、「a=c/b mod q」はcが0でない場合に、「a×b≡c mod q」を満たす1以上q未満の整数aを示す。
  23.  クライアント装置とサーバ装置から構成されるシステムであって、該クライアント装置と該サーバ装置が請求項1から22のいずれかに記載の相互認証方法を実行するように構成される、システム。
  24.  請求項1から22のいずれかに記載の相互認証方法における、クライアント側で実行される処理を遂行しうるように構成される、コンピュータ装置。
  25.  請求項1から22のいずれかに記載の相互認証方法における、サーバ側で実行される処理を遂行しうるように構成される、コンピュータ装置。
  26.  コンピュータ装置のCPUで実行されることにより、該コンピュータ装置に、請求項1から22のいずれかに記載の相互認証方法における、クライアント側で実行される処理を遂行させる、コンピュータ・プログラム。
  27.  コンピュータ装置のCPUで実行されることにより、該コンピュータ装置に、請求項1から22のいずれかに記載の相互認証方法における、サーバ側で実行される処理を遂行させる、コンピュータ・プログラム。
PCT/JP2009/062578 2008-07-10 2009-07-10 パスワード認証方法 WO2010005071A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010519823A JP5224481B2 (ja) 2008-07-10 2009-07-10 パスワード認証方法
US12/987,599 US8422670B2 (en) 2008-07-10 2011-01-10 Password authentication method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008-179670 2008-07-10
JP2008179670 2008-07-10

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/987,599 Continuation US8422670B2 (en) 2008-07-10 2011-01-10 Password authentication method

Publications (1)

Publication Number Publication Date
WO2010005071A1 true WO2010005071A1 (ja) 2010-01-14

Family

ID=41507181

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/062578 WO2010005071A1 (ja) 2008-07-10 2009-07-10 パスワード認証方法

Country Status (3)

Country Link
US (1) US8422670B2 (ja)
JP (1) JP5224481B2 (ja)
WO (1) WO2010005071A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8694548B2 (en) * 2011-01-02 2014-04-08 Cisco Technology, Inc. Defense-in-depth security for bytecode executables
US8789154B2 (en) * 2011-06-30 2014-07-22 Qualcomm Incorporated Anti-shoulder surfing authentication method
JP5981761B2 (ja) * 2012-05-01 2016-08-31 キヤノン株式会社 通信装置、制御方法、プログラム
US9787672B1 (en) 2013-03-15 2017-10-10 Symantec Corporation Method and system for smartcard emulation
US9166970B1 (en) 2013-03-15 2015-10-20 Symantec Corporation Dynamic framework for certificate application configuration
US9122888B2 (en) 2013-07-22 2015-09-01 Dell Products, Lp System and method to create resilient site master-key for automated access
KR102182894B1 (ko) 2014-02-28 2020-11-26 삼성전자주식회사 패스워드 기반의 인증을 수행하는 사용자 장치 및 그것의 패스워드 등록 방법 및 인증 방법
KR102370286B1 (ko) * 2015-10-28 2022-03-03 에스케이플래닛 주식회사 무선 메시 네트워크 인증 방법 및 이를 위한 장치, 이를 수행하는 컴퓨터 프로그램을 기록한 기록 매체
US10397206B2 (en) 2016-01-26 2019-08-27 Red Hat, Inc. Symmetric encryption key generation/distribution
WO2019031627A1 (ko) 2017-08-09 2019-02-14 주식회사 센스톤 가상코드제공시스템, 가상코드생성장치, 가상코드검증장치, 가상코드제공방법 및 가상코드제공프로그램
CN110572257B (zh) * 2019-07-16 2023-04-14 如般量子科技有限公司 基于身份的数据来源鉴别方法和系统
CN111639325B (zh) * 2020-05-28 2023-09-19 中国建设银行股份有限公司 基于开放平台的商户认证方法、装置、设备和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7047408B1 (en) * 2000-03-17 2006-05-16 Lucent Technologies Inc. Secure mutual network authentication and key exchange protocol
US7076656B2 (en) * 2001-04-05 2006-07-11 Lucent Technologies Inc. Methods and apparatus for providing efficient password-authenticated key exchange
JP4774492B2 (ja) * 2003-10-28 2011-09-14 財団法人生産技術研究奨励会 認証システム及び遠隔分散保存システム
JP2006197065A (ja) 2005-01-12 2006-07-27 Matsushita Electric Ind Co Ltd 端末装置および認証装置
JP5004086B2 (ja) * 2007-10-29 2012-08-22 独立行政法人産業技術総合研究所 短い系列を用いた認証システム
JP5099771B2 (ja) * 2008-04-30 2012-12-19 独立行政法人産業技術総合研究所 二要素認証システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TAEKYOUNG KWON: "Password-Based Public-Key Cryptography: Submissions and Research Contributions", REVISION OF AMP IN IEEE P1363.2 AND ISO/IEC 11770-4, 8 June 2005 (2005-06-08), Retrieved from the Internet <URL:http://grouper.ieee.org/groups/1363/passwdPK/contributions.html#Kwon05> [retrieved on 20090723] *

Also Published As

Publication number Publication date
US20110145579A1 (en) 2011-06-16
JPWO2010005071A1 (ja) 2012-01-05
US8422670B2 (en) 2013-04-16
JP5224481B2 (ja) 2013-07-03

Similar Documents

Publication Publication Date Title
CN111639361B (zh) 一种区块链密钥管理方法、多人共同签名方法及电子装置
JP5224481B2 (ja) パスワード認証方法
Challa et al. Design and analysis of authenticated key agreement scheme in cloud-assisted cyber–physical systems
Wazid et al. Design of secure key management and user authentication scheme for fog computing services
CN108292402B (zh) 用于信息的安全交换的公共秘密的确定和层级确定性密钥
Frymann et al. Asynchronous remote key generation: An analysis of yubico's proposal for W3C webauthn
Tbatou et al. A New Mutuel Kerberos Authentication Protocol for Distributed Systems.
Hossain et al. ICAS: Two-factor identity-concealed authentication scheme for remote-servers
JP2017524306A (ja) 暗号化操作における悪意のある変更に対する保護
Gong et al. LCDMA: Lightweight cross-domain mutual identity authentication scheme for Internet of Things
US8954728B1 (en) Generation of exfiltration-resilient cryptographic keys
Yao et al. An inter-domain authentication scheme for pervasive computing environment
Dowlatshah et al. A secure and robust smart card-based remote user authentication scheme
Long et al. Energy-efficient and intrusion-resilient authentication for ubiquitous access to factory floor information
Truong et al. Improved Chebyshev polynomials-based authentication scheme in client-server environment
Naganuma et al. New secret key management technology for blockchains from biometrics fuzzy signature
Li et al. A secure two-factor authentication scheme from password-protected hardware tokens
Chhikara et al. Construction of elliptic curve cryptography‐based authentication protocol for internet of things
Salvakkam et al. Design of fully homomorphic multikey encryption scheme for secured cloud access and storage environment
Srinivas et al. An authentication framework for roaming service in global mobility networks
Ashraf et al. Lightweight and authentic symmetric session key cryptosystem for client–server mobile communication
JP5099771B2 (ja) 二要素認証システム
Chen et al. The RFID mutual authentication scheme based on ECC and OTP authentication
Lai et al. A hybrid quantum key distribution protocol for tele-care medicine information systems
JP2009111594A (ja) 短い系列を用いた認証システム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09794515

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2010519823

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09794515

Country of ref document: EP

Kind code of ref document: A1