JP2004282295A - ワンタイムidの生成方法、認証方法、認証システム、サーバ、クライアントおよびプログラム - Google Patents
ワンタイムidの生成方法、認証方法、認証システム、サーバ、クライアントおよびプログラム Download PDFInfo
- Publication number
- JP2004282295A JP2004282295A JP2003069375A JP2003069375A JP2004282295A JP 2004282295 A JP2004282295 A JP 2004282295A JP 2003069375 A JP2003069375 A JP 2003069375A JP 2003069375 A JP2003069375 A JP 2003069375A JP 2004282295 A JP2004282295 A JP 2004282295A
- Authority
- JP
- Japan
- Prior art keywords
- time
- random number
- client
- server
- shared key
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
【課題】盗聴が困難で安全性に優れたワンタイムIDの生成方法、上記ワンタイムIDを用いた認証方法、認証システム、サーバ、クライアントおよびプログラムを提供する。
【解決手段】複数の装置間またはアプリケーション間の認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法である。認証を行う装置またはアプリケーションの各々において、認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵を引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにした。
【選択図】 図4
【解決手段】複数の装置間またはアプリケーション間の認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法である。認証を行う装置またはアプリケーションの各々において、認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵を引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにした。
【選択図】 図4
Description
【0001】
【発明の属する技術分野】
本発明は、複数の装置間またはアプリケーション間における認証に用いて好適なワンタイムIDの生成方法、上記ワンタイムIDを用いた認証方法、認証システム、サーバ、クライアントおよびプログラムに関するものである。
【0002】
【従来の技術】
従来より、ネットワークを介してコンピュータ間(例えば、クライアント・サーバ間)で通信を行う際には、不正なアクセス等を排除するために、サービス等の提供に先立って認証が行われる。この認証においては、第三者が知り得ない所定の秘密情報(例えば、IDやパスワード、乱数、或いはそれら情報を引数とする関数値など)を予め双方が共有し、その秘密情報に基づいて各々の正当性を相互に検証するのが一般的である。
【0003】
他方、IETF(Internet Engineering Task Force)が公式に発行するRFC(Request For Comments)においては、インターネットでIPパケットの暗号化と認証を行なうセキュリティプロトコルとして、IPsec(Security Architecture for Internet Protocol)が規定されている。このIPsecでは、暗号・認証のパラメータを動的に生成して交換するIKE(Internet Key Exchange)という自動鍵交換のプロトコルが標準的に採用されている(例えば、特許文献1参照)。
そして、近年では、このIKEの方式にワンタイムIDを導入して、既知共有鍵を用いたIKEの方式で問題となっていた、ID情報保護、DoS(Denial of Service attack)攻撃防止、リモートアクセスなどを実現したP−SIGMAと呼ばれる鍵交換・認証方式が提案されている。
【0004】
このP−SIGMAにおいては、例えば、図13に示すような手順で鍵交換および認証が行われている。
先ず、クライアントが、SA(Security Association)の提案、乱数Rc、DH(Diffie−Hellman)公開値gx 、OID(ワンタイムID)をサーバに対して送信する。なお、SAの提案には、暗号アルゴリズムや認証方式、鍵交換に使用するパラメータ等に関する提案が含まれている。
【0005】
次いで、サーバが、受け取ったOIDからクライアントを識別し、識別できない場合には、通信を拒否する。識別できる場合には、受諾したSA、乱数Rs、DH公開値gy 、HASHs、セッション鍵eで暗号化したIDs(サーバID)をクライアントに対して送信する。なお、セッション鍵eは、既知共有鍵、乱数Rs、乱数RcおよびDH共通鍵gxyを引数とする鍵付きハッシュ関数の関数値であり、HASHsは、既知共有鍵、乱数Rs、乱数Rc、DH公開値gx 、gy およびIDsを引数とする疑似乱数関数の関数値である。
【0006】
次いで、クライアントが、受け取ったHASHsを検証し、このHASHsに基づいてサーバの正当性を確認する。HASHsが正しければ、HASHc、セッション鍵eで暗号化したIDc(クライアントID)をサーバに対して送信する。ここで、HASHcは、既知共有鍵、乱数Rs、乱数Rc、DH公開値gx 、gy およびIDcを引数とする疑似乱数関数の関数値である。
次いで、サーバが、受け取ったHASHcを検証し、このHASHcに基づいてクライアントの正当性を確認する。HASHcが正しければ、当該プロトコルを終了する。
【0007】
このP−SIGMAにおいて、OID(ワンタイムID)は、次のように定義されている。
【0008】
【数1】
OID1 =prf(K、1)
OID2 =prf(K、2)
・・・
OIDn =prf(K、n)
【0009】
この定義式において、OIDn はn番目のSA確立時に用いられるワンタイムID、prfは疑似乱数関数、Kは既知共有鍵、若しくは既知共有鍵から生成された値である。
【0010】
このため、上記P−SIGMAによれば、OIDを導入したことにより、第三者が送信者・受信者を特定できなくなる一方で、正当な送信者・受信者であればOIDを識別情報として把握できるといった効果が得られるとともに、クライアント・サーバ間で通信が行われる度(すなわち、SAの生成または更新毎)にOIDが変更されるため、第三者が次回のOIDを予測することができないといった効果が得られる。
【0011】
【特許文献1】
特開2002−374238号公報(段落番号0002〜0009)
【0012】
【発明が解決しようとする課題】
しかしながら、上記P−SIGMAにおいては、既知共有鍵がひとたび知られてしまうと、すべてのOIDが予測されてしまい、その結果、OIDの将来にわたる安全性(すなわち、PFS:Perfect Forward Security)を保証できなくなるといった問題点があった。
【0013】
以上、具体例として、P−SIGMAと呼ばれる鍵交換・認証方式について述べてきたが、一般に、ワンタイムIDを用いて複数の装置間またはアプリケーション間における認証を行う認証方式では、特定の秘密情報に基づいてすべてのワンタイムIDの生成を行っており、上記同様の問題点を有している。
【0014】
本発明は、かかる事情に鑑みてなされたもので、盗聴が困難で安全性に優れたワンタイムIDの生成方法、上記ワンタイムIDを用いた認証方法、認証システム、サーバ、クライアントおよびプログラムを提供することを目的とする。
【0015】
【課題を解決するための手段】
請求項1に記載の発明は、複数の装置間またはアプリケーション間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法であって、上記認証を行う装置またはアプリケーションの各々において、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵を引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0016】
ここで、一方向関数とは、引数から結果(関数値)を求めるのは簡単であるが、結果から引数を求めるのは難しい関数のことを云い、この一方向関数には、例えば、ハッシュ関数、疑似乱数関数などが含まれる。
所定の通信単位としては、例えば、IPsecにおいてSAが確立されてから当該SAが無効になるまでの間にクライアント・サーバ間で行われる一連の通信を、所定の通信単位として設定することも可能であるし、装置間またはアプリケーション間で行われる1回のデータ送受信を所定の通信単位として設定することも可能である。
可変共有鍵は、上記所定の通信単位毎に変化し、且つ認証を行う装置間またはアプリケーション間で共有される、第三者が知り得ない秘密情報であれば、如何なる鍵であってもよい。
【0017】
認証とは、一方の装置(または一方のアプリケーション)が他方の装置(または他方のアプリケーション)にアクセスする際に、他方の装置が一方の装置の正当性を確認することを云い、識別情報とは、上記認証において少なくとも一方の装置から他方の装置に送信されて当該他方の装置が一方の装置を識別するのに用いる情報(ID)のことを云う。
また、上記認証には、一方の装置が他方の装置の認証を行う一方向認証と、双方の装置で相互に認証を行う相互認証とが含まれる。例えば、上記認証においてワンタイムIDを使用する方法としては、双方の装置でワンタイムIDを生成するとともに、一方の装置が他方の装置にワンタイムIDを送信し、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、一方の装置を識別或いは認証する方法が挙げられる。
【0018】
請求項2に記載の発明は、複数の装置間またはアプリケーション間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法であって、上記認証を行う装置またはアプリケーションの各々において、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵と通信順序または回数に関する情報とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0019】
請求項3に記載の発明は、複数の装置間またはアプリケーション間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法であって、上記認証を行う装置またはアプリケーションの各々において、上記認証が必要な所定の通信単位内で乱数を生成するとともに、この乱数と所定の共有鍵とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0020】
請求項4に記載の発明は、一方の装置と他方の装置間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを双方の装置で生成するとともに、一方の装置が他方の装置にワンタイムIDを送信して、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、他方の装置を識別或いは認証する場合において、一方の装置および他方の装置がワンタイムIDを生成する方法であって、一方の装置および他方の装置は、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵を引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0021】
請求項5に記載の発明は、一方の装置と他方の装置間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを双方の装置で生成するとともに、一方の装置が他方の装置にワンタイムIDを送信して、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、他方の装置を識別或いは認証する場合において、一方の装置および他方の装置がワンタイムIDを生成する方法であって、一方の装置および他方の装置は、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵と通信順序または回数に関する情報とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0022】
請求項6に記載の発明は、一方の装置と他方の装置間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを双方の装置で生成するとともに、一方の装置が他方の装置にワンタイムIDを送信して、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、他方の装置を識別或いは認証する場合において、一方の装置および他方の装置がワンタイムIDを生成する方法であって、一方の装置および他方の装置は、上記認証が必要な所定の通信単位内で乱数を生成するとともに、この乱数と所定の共有鍵とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0023】
請求項7に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )を用いて、第一装置と第二装置間における認証を行う認証方法であって、上記第一装置が、上記第二装置との間で予め共有化された可変共有鍵を用いて上記ワンタイムIDを生成するとともに、この生成したワンタイムIDと、当該第一装置に予め設定されたIDを少なくとも引数とする一方向関数Fcの関数値と、当該第一装置に予め記憶されたDiffie−Hellman公開値の一方とを上記第二装置に対して送信するステップと、上記第二装置が、上記ワンタイムIDおよび上記一方向関数Fcの関数値を演算により求め、この演算結果と、上記第一装置から受信したワンタイムIDおよび一方向関数Fcの関数値との照合により、上記第一装置の正当性を判定するステップと、上記第二装置が、上記第一装置を正当であると判定した場合に、当該第二装置に予め設定されたIDを少なくとも引数とする一方向関数Fsの関数値と、当該第二装置に予め記憶されたDiffie−Hellman公開値の他方とを上記第一装置に対して送信するステップと、上記第一装置が、上記一方向関数Fsの関数値を演算により求め、この演算結果と、上記第二装置から受信した一方向関数Fsの関数値との照合により、上記第二装置の正当性を判定するステップとを有することを特徴とするものである。
【0024】
請求項8に記載の発明は、請求項7に記載の認証方法において、上記一方向関数Fcとして、所定の共有鍵、上記Diffie−Hellman公開値の一方、上記第一装置に予め設定されたID、上記ワンタイムIDを引数とする疑似乱数関数を用いるとともに、上記一方向関数Fsとして、上記所定の共有鍵、上記Diffie−Hellman公開値の一方、上記Diffie−Hellman公開値の他方、上記第二装置に予め設定されたID、上記ワンタイムIDを引数とする疑似乱数関数を用いるようにしたことを特徴とするものである。
【0025】
請求項9に記載の発明は、請求項2または請求項5に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証を行う認証方法であって、上記第一装置が、上記第二装置との間で予め共有化された第一の可変共有鍵と当該第一装置の通信順序に関する情報とを引数とする一方向関数の関数値を第一のワンタイムID(SIGNALn、j )として生成するとともに、上記第一の可変共有鍵を用いて、当該第一装置に予め設定されたID、上記第二装置に予め設定されたID、当該第一装置に予め記憶されたDiffie−Hellman公開値の一方および上記第一のワンタイムIDを暗号化し、この暗号化データと上記第一のワンタイムIDとを上記第二装置に対して送信するステップと、上記第二装置が、上記第一のワンタイムIDを演算により求め、この演算結果と、上記第一装置から受信した上記第一のワンタイムIDとの照合により、上記第一装置を識別するステップと、上記第二装置が、上記第一装置を識別できた場合に、上記第一の可変共有鍵を用いて上記暗号化データを復号し、この復号したデータに含まれる、上記第一装置に予め設定されたID、当該第二装置に予め設定されたIDおよび上記第一のワンタイムIDに基づいて、上記第一装置の正当性を判定するステップと、上記第二装置が、上記第一装置を正当であると判定した場合に、上記第一の可変共有鍵と当該第二装置の通信順序に関する情報とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNAL’n、1 )として生成するとともに、上記第一装置から受信したDiffie−Hellman公開値の一方と当該第二装置に予め記憶されたDiffie−Hellman公開値の他方とからDiffie−Hellman共通鍵を第二の可変共有鍵として生成し、この第二の可変共有鍵、上記第一装置に予め設定されたID、当該第二装置に予め設定されたIDおよび上記第二のワンタイムIDを引数とする一方向関数hの関数値と、上記Diffie−Hellman公開値の他方と、上記第二のワンタイムIDとを上記第一装置に対して送信するステップと、上記第一装置が、上記第二のワンタイムIDを演算により求め、この演算結果と、上記第二装置から受信した上記第二のワンタイムIDとの照合により、上記第二装置を識別するステップと、上記第一装置が、上記第二装置を識別できた場合に、上記第二装置から受信した上記Diffie−Hellman公開値の他方と当該第一装置に予め記憶された上記Diffie−Hellman公開値の一方とからDiffie−Hellman共通鍵を上記第二の可変共有鍵として生成するとともに、この第二の可変共有鍵を用いて上記一方向関数hの関数値を演算により求め、この演算結果と、上記第二装置から受信した一方向関数hの関数値との照合により、上記第二装置の正当性を判定するステップとを有することを特徴とするものである。
【0026】
請求項10に記載の発明は、請求項9に記載の認証方法において、上記第二のワンタイムIDを生成する一方向関数として、上記第一のワンタイムIDを生成する一方向関数とは異なる一方向関数を用いるようにしたことを特徴とするものである。
【0027】
請求項11に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証(相互認証)を行う認証方法であって、上記第一装置が、第一の乱数を生成するとともに、上記第二装置との間で予め共有化された第一の共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として求め、この第一のワンタイムIDと上記第一の乱数とを上記第二装置に対して送信するステップと、上記第二装置が、第二の乱数を生成するとともに、上記第一の乱数と上記第一の共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として求め、この第二のワンタイムIDと上記第二の乱数とを上記第一装置に対して送信するステップと、上記第一装置が、上記第一の乱数および上記第一の共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記第二装置から受信した上記第二のワンタイムIDとの比較により、上記第二装置の正当性を判定するステップと、上記第一装置が、上記第一の乱数および上記第二の乱数に基づいて第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として求め、この第三のワンタイムIDを上記第二装置に対して送信するステップと、上記第二装置が、上記第一の乱数および上記第二の乱数に基づいて上記第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記第一装置から受信した上記第三のワンタイムIDとの比較により、上記第一装置の正当性を判定するステップとを有することを特徴とするものである。
【0028】
請求項12に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証(相互認証)を行う認証方法であって、上記第一装置が、第一の乱数を生成するとともに、上記第二装置との間で予め共有化された共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として求め、この第一のワンタイムIDと上記第一の乱数を上記第二装置に対して送信するステップと、上記第二装置が、第二の乱数を生成するとともに、上記第一の乱数と上記共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として求め、この第二のワンタイムIDと上記第二の乱数を上記第一装置に対して送信するステップと、上記第一装置が、上記第一の乱数および上記共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記第二装置から受信した上記第二のワンタイムIDとの比較により、上記第二装置の正当性を判定するステップと、上記第一装置が、上記第一の乱数、上記第二の乱数および上記共有鍵を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として求め、この第三のワンタイムIDを上記第二装置に対して送信するステップと、上記第二装置が、上記第一の乱数、上記第二の乱数および上記共有鍵に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記第一装置から受信した上記第三のワンタイムIDとの比較により、上記第一装置の正当性を判定するステップとを有することを特徴とするものである。
【0029】
請求項13に記載の発明は、請求項11または請求項12に記載の認証方法において、上記第一の乱数と上記第二の乱数を、上記第一装置と上記第二装置との間で予め共有化された共有鍵で暗号化した状態で、送信するようにしたことを特徴とするものである。
【0030】
請求項14に記載の発明は、請求項11〜請求項13の何れかに記載の認証方法において、上記第二装置が上記第二のワンタイムIDと上記第二の乱数とを上記第一装置に対して送信するステップにおいて、上記第二装置は、上記第一装置との間で予め共有化された乱数を初期乱数として、この初期乱数と上記第一の乱数を引数とする所定の演算を行い、この演算結果を上記第一装置に対して送信する一方、上記第一装置は、上記第二装置の正当性の判定材料として、上記第二装置から受信した上記演算結果を、上記第二のワンタイムIDとともに用いることを特徴とするものである。
【0031】
請求項15に記載の発明は、請求項11〜請求項14の何れかに記載の認証方法において、上記第一装置が上記第三のワンタイムIDを上記第二装置に対して送信するステップにおいて、上記第一装置は、上記第一の乱数と上記第二の乱数を引数とする所定の演算を行い、この演算結果を上記第二装置に対して送信する一方、上記第二装置は、上記第一装置の正当性の判定材料として、上記第一装置から受信した上記演算結果を、上記第三のワンタイムIDとともに用いることを特徴とするものである。
【0032】
請求項16に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証を行う認証方法であって、上記第一装置が、第一の乱数を生成するとともに、上記第二装置との間で予め共有化された共有鍵、第一の記憶乱数および第二の記憶乱数を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALci)として求め、当該第一装置に予め設定されたID、上記第二装置に予め設定されたIDおよび上記第一の乱数を上記共有鍵で暗号化した第一の暗号化データと、上記第一のワンタイムIDとを上記第二装置に対して送信するステップと、上記第二装置が、上記第一のワンタイムIDを演算により求め、この演算結果と、上記第一装置から受信した上記第一のワンタイムIDとの照合により、上記第一装置を識別するステップと、上記第二装置が、上記第一装置を識別できた場合に、上記共有鍵を用いて上記第一の暗号化データを復号し、この復号したデータに含まれる、上記第一装置に予め設定されたIDおよび当該第二装置に予め設定されたIDに基づいて、上記第一装置の正当性を判定するステップと、上記第二装置が、上記第一装置を正当であると判定した場合に、第二の乱数を生成するとともに、上記第一の乱数、上記第二の記憶乱数および上記共有鍵を引数とする一方向関数の関数値を第二のワンタイムID(SIGNALsi)として求め、上記第一装置に予め設定されたID、当該第二装置に予め設定されたIDおよび上記第二の乱数を上記共有鍵で暗号化した第二の暗号化データと、上記第二のワンタイムIDとを上記第一装置に対して送信するステップと、上記第二装置が、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換するステップと、上記第一装置が、上記第二のワンタイムIDを演算により求め、この演算結果と、上記第二装置から受信した上記第二のワンタイムIDとの照合により、上記第二装置を識別するステップと、上記第一装置が、上記第二装置を識別できた場合に、上記共有鍵を用いて上記第二の暗号化データを復号し、この復号したデータに含まれる、上記第二装置に予め設定されたIDおよび当該第一装置に予め設定されたIDに基づいて、上記第二装置の正当性を判定するステップと、上記第一装置が、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換するステップとを有することを特徴とするものである。
【0033】
請求項17に記載の発明は、請求項16に記載の認証方法において、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換した後に、これら第一の記憶乱数および第二の記憶乱数に基づいて上記共有鍵を生成することにより、当該共有鍵を変化させるようにしたことを特徴とするものである。
【0034】
請求項18に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )を用いてクライアントとの間で認証を行うサーバであって、上記クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値と、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方と、上記ワンタイムIDとを上記クライアントから受信する受信手段と、上記一方向関数の関数値Fcおよび上記ワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記ワンタイムIDおよび上記一方向関数Fcの関数値との比較により、上記クライアントの正当性を判定する判定手段と、上記判定手段が上記クライアントを正当であると判定した場合に、当該サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、当該サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記クライアントに対して送信する送信手段とを備えることを特徴とするものである。
【0035】
請求項19に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )を用いてサーバとの間で認証を行うクライアントであって、上記サーバとの間で予め共有化された可変共有鍵を用いて上記ワンタイムIDを生成するとともに、当該クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値を演算により求め、これらワンタイムIDおよび一方向関数Fcの関数値と、当該クライアントに予め記憶されたDiffie−Hellman公開値の一方とを上記サーバに対して送信する送信手段と、上記サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記サーバから受信する受信手段と、上記一方向関数Fsの関数値を演算により求め、この演算結果と、上記サーバから受信した上記一方向関数Fsの関数値との比較により、上記サーバの正当性を判定する判定手段とを備えることを特徴とするものである。
【0036】
請求項20に記載の本発明に係る認証システムは、請求項18に記載のサーバと、請求項19に記載のクライアントとを備えてなることを特徴とするものである。
【0037】
請求項21に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )に基づいてクライアントとの間で認証を行うサーバに実行させるプログラムであって、上記クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値と、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方と、上記ワンタイムIDとを上記クライアントから受信する処理と、上記一方向関数の関数値Fcおよび上記ワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記ワンタイムIDおよび上記一方向関数Fcの関数値との比較により、上記クライアントの正当性を判定する処理と、上記クライアントが正当であると判定された場合に、上記サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記クライアントに対して送信する処理とを上記サーバに実行させることを特徴とするものである。
【0038】
請求項22に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )に基づいてサーバとの間で認証を行うクライアントに実行させるプログラムであって、上記サーバとの間で予め共有化された可変共有鍵を用いて上記ワンタイムIDを生成するとともに、上記クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値を演算により求め、これらワンタイムIDおよび一方向関数Fcの関数値と、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方とを上記サーバに対して送信する処理と、上記サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記サーバから受信する処理と、上記一方向関数Fsの関数値を演算により求め、この演算結果と、上記サーバから受信した上記一方向関数Fsの関数値との比較により、上記サーバの正当性を判定する処理とを上記クライアントに実行させることを特徴とするものである。
【0039】
請求項23に記載の発明は、請求項2または請求項5に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で認証を行うサーバであって、上記クライアントとの間で予め共有化された第一の可変共有鍵と上記クライアントの通信順序に関する情報とを引数とする一方向関数の関数値を第一のワンタイムID(SIGNALn、j )として、この第一のワンタイムID、上記クライアントに予め設定されたクライアントID、当該サーバに予め設定されたサーバID、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方を上記第一の可変共有鍵で暗号化した暗号化データと、上記第一のワンタイムIDとを上記クライアントから受信する受信手段と、上記第一のワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記第一のワンタイムIDとの照合により、上記クライアントを識別し、上記クライアントを識別できた場合に、上記第一の可変共有鍵を用いて上記暗号化データを復号し、この復号したデータに含まれる、上記クライアントID、上記サーバIDおよび上記第一のワンタイムIDに基づいて、上記クライアントの正当性を判定する判定手段と、上記判定手段が上記クライアントを正当であると判定した場合に、上記第一の可変共有鍵と当該サーバの通信順序に関する情報とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNAL’n、1 )として生成するとともに、上記クライアントから受信したDiffie−Hellman公開値の一方と当該サーバに予め記憶されたDiffie−Hellman公開値の他方とからDiffie−Hellman共通鍵を第二の可変共有鍵として生成し、この第二の可変共有鍵、上記クライアントID、上記サーバIDおよび上記第二のワンタイムIDを引数とする一方向関数hの関数値と、上記Diffie−Hellman公開値の他方と、上記第二のワンタイムIDとを上記クライアントに対して送信する送信手段とを備えることを特徴とするものである。
【0040】
請求項24に記載の発明は、請求項2または請求項5に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で認証を行うクライアントであって、上記サーバとの間で予め共有化された第一の可変共有鍵と当該クライアントの通信順序に関する情報とを引数とする一方向関数の関数値を第一のワンタイムID(SIGNALn、j )として生成するとともに、上記第一の可変共有鍵を用いて、当該クライアントに予め設定されたクライアントID、上記サーバに予め設定されたサーバID、当該クライアントに予め記憶されたDiffie−Hellman公開値の一方および上記第一のワンタイムIDを暗号化し、この暗号化データと上記第一のワンタイムIDとを上記サーバに対して送信する送信手段と、上記第一の可変共有鍵と上記サーバの通信順序に関する情報とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNAL’n、1 )とし、Diffie−Hellman共通鍵を第二の可変共有鍵として、上記第二のワンタイムID、上記第二の可変共有鍵、上記クライアントIDおよび上記サーバIDを引数とする一方向関数hの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方と、上記第二のワンタイムIDとを上記サーバから受信する受信手段と、上記第二のワンタイムIDを演算により求め、この演算結果と、上記サーバから受信した上記第二のワンタイムIDとの照合により、上記サーバを識別し、上記サーバを識別した場合に、上記サーバから受信した上記Diffie−Hellman公開値の他方と当該クライアントに予め記憶された上記Diffie−Hellman公開値の一方とからDiffie−Hellman共通鍵を上記第二の可変共有鍵として生成するとともに、この第二の可変共有鍵を用いて上記一方向関数hの関数値を演算により求め、この演算結果と、上記サーバから受信した一方向関数hの関数値との照合により、上記サーバの正当性を判定する判定手段とを備えることを特徴とするものである。
【0041】
請求項25に記載の本発明に係る認証システムは、請求項23に記載のサーバと、請求項24に記載のクライアントとを備えてなることを特徴とするものである。
【0042】
請求項26に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で相互に認証を行うサーバであって、上記クライアントとの間で予め共有化された第一の共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として、この第一のワンタイムIDと、上記クライアントで生成された第一の乱数とを上記クライアントから受信する第一受信手段と、第二の乱数を生成するとともに、上記第一の乱数と上記第一の共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として求め、この第二のワンタイムIDと上記第二の乱数とを上記クライアントに対して送信する送信手段と、上記第一の乱数、上記第二の乱数および第二の共有鍵を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として、この第三のワンタイムIDを上記クライアントから受信する第二受信手段と、上記第一の乱数および上記第二の乱数に基づいて上記第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記クライアントから受信した上記第三のワンタイムIDとの比較により、上記クライアントの正当性を判定する判定手段とを備えることを特徴とするものである。
【0043】
請求項27に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で相互に認証を行うクライアントであって、第一の乱数を生成するとともに、上記サーバとの間で予め共有化された第一の共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として求め、この第一のワンタイムIDと上記第一の乱数とを上記サーバに対して送信する第一送信手段と、上記第一の乱数と上記第一の共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として、この第二のワンタイムIDと、上記サーバで生成された第二の乱数とを上記サーバから受信する受信手段と、上記第一の乱数および上記第一の共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記サーバから受信した上記第二のワンタイムIDとの比較により、上記サーバの正当性を判定する判定手段と、上記判定手段により上記サーバが正当であると判定された場合に、上記第一の乱数および上記第二の乱数に基づいて第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として求め、この第三のワンタイムIDを上記サーバに対して送信する第二送信手段とを備えることを特徴とするものである。
【0044】
請求項28に記載の本発明に係る認証システムは、請求項26に記載のサーバと、請求項27に記載のクライアントとを備えてなることを特徴とするものである。
【0045】
請求項29に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で相互に認証を行うサーバであって、上記クライアントとの間で予め共有化された共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として、この第一のワンタイムIDと、上記クライアントで生成された第一の乱数とを上記クライアントから受信する第一受信手段と、第二の乱数を生成するとともに、上記第一の乱数と上記共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として求め、この第二のワンタイムIDと上記第二の乱数を上記クライアントに対して送信する送信手段と、上記共有鍵、上記第一の乱数および上記第二の乱数を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として、この第三のワンタイムIDを上記クライアントから受信する第二受信手段と、上記第一の乱数、上記第二の乱数および上記共有鍵に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記クライアントから受信した上記第三のワンタイムIDとの比較により、上記クライアントの正当性を判定する判定手段とを備えることを特徴とするものである。
【0046】
請求項30に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で相互に認証を行うクライアントであって、第一の乱数を生成するとともに、上記サーバとの間で予め共有化された共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として求め、この第一のワンタイムIDと上記第一の乱数を上記サーバに対して送信する第一送信手段と、上記第一の乱数と上記共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として、この第二のワンタイムIDと、上記サーバで生成された第二の乱数とを上記サーバから受信する受信手段と、上記第一の乱数および上記共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記サーバから受信した上記第二のワンタイムIDとの比較により、上記サーバの正当性を判定する判定手段と、上記判定手段により上記サーバが正当であると判定された場合に、上記第一の乱数、上記第二の乱数および上記共有鍵を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として求め、この第三のワンタイムIDを上記サーバに対して送信する第二送信手段とを備えることを特徴とするものである。
【0047】
請求項31に記載の本発明に係る認証システムは、請求項29に記載のサーバと、請求項30に記載のクライアントとを備えてなることを特徴とするものである。
【0048】
請求項32に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で相互に認証を行うサーバであって、上記クライアントとの間で予め共有化された共有鍵、第一の記憶乱数および第二の記憶乱数を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALci)として、この第一のワンタイムIDを上記クライアントから受信するとともに、上記クライアントで生成された第一の乱数、上記クライアントに予め設定されたクライアントID、当該サーバに予め設定されたサーバIDを上記共有鍵で暗号化した第一の暗号化データを上記クライアントから受信する受信手段と、上記第一のワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記第一のワンタイムIDとの照合により、上記クライアントを識別し、上記クライアントを識別できた場合に、上記共有鍵を用いて上記第一の暗号化データを復号し、この復号したデータに含まれる上記クライアントIDおよび上記サーバIDに基づいて、上記クライアントの正当性を判定する判定手段と、上記判定手段が上記クライアントを正当であると判定した場合に、第二の乱数を生成するとともに、上記第一の乱数、上記第二の記憶乱数および上記共有鍵を引数とする一方向関数の関数値を第二のワンタイムID(SIGNALsi)として求め、上記クライアントID、上記サーバIDおよび上記第二の乱数を上記共有鍵で暗号化した第二の暗号化データと、上記第二のワンタイムIDとを上記クライアントに対して送信する送信手段と、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換する置換手段とを備えることを特徴とするものである。
【0049】
請求項33に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で相互に認証を行うクライアントであって、第一の乱数を生成するとともに、上記サーバとの間で予め共有化された共有鍵、第一の記憶乱数および第二の記憶乱数を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALci)として求め、当該クライアントに予め設定されたクライアントID、上記サーバに予め設定されたサーバIDおよび上記第一の乱数を上記共有鍵で暗号化した第一の暗号化データと、上記第一のワンタイムIDとを上記サーバに対して送信する送信手段と、上記第一の乱数、上記第二の記憶乱数および上記共有鍵を引数とする一方向関数の関数値を第二のワンタイムID(SIGNALsi)として、この第二のワンタイムIDを上記サーバから受信するとともに、上記サーバで生成された第二の乱数、上記クライアントIDおよび上記サーバIDを上記共有鍵で暗号化した第二の暗号化データを上記サーバから受信する受信手段と、上記第二のワンタイムIDを演算により求め、この演算結果と、上記サーバから受信した上記第二のワンタイムIDとの照合により、上記サーバを識別し、上記サーバを識別できた場合に、上記共有鍵を用いて上記第二の暗号化データを復号し、この復号したデータに含まれる上記サーバIDおよび上記クライアントIDに基づいて、上記サーバの正当性を判定する判定手段と、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換する置換手段とを備えることを特徴とするものである。
【0050】
請求項34に記載の本発明に係る認証システムは、請求項32に記載のサーバと、請求項33に記載のクライアントとを備えてなることを特徴とするものである。
【0051】
請求項35に記載の発明は、請求項34に記載の認証システムにおいて、上記サーバおよび上記クライアントは、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換した後で、これら第一の記憶乱数および第二の記憶乱数に基づいて上記共有鍵を生成することにより、当該共有鍵を変化させるようになっていることを特徴とするものである。
【0052】
請求項1または請求項4に記載の発明によれば、可変共有鍵を引数とする一方向関数の関数値を求め、この関数値からワンタイムIDを生成するようにしたため、例えば、可変共有鍵が第三者に漏れたとしても、所定の通信単位毎に可変共有鍵が変化することとなるので、漏れた可変共有鍵を用いて生成されたワンタイムID以外のワンタイムIDを予測することはできない。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0053】
請求項2または請求項5に記載の発明によれば、可変共有鍵と通信順序または回数に関する情報とを引数とする一方向関数の関数値を求め、この関数値からワンタイムIDを生成するようにしたため、例えば、可変共有鍵が第三者に漏れたとしても、所定の通信単位毎に可変共有鍵が変化するとともに、各通信毎に通信順序または回数に関する情報も変化することとなるので、漏れた可変共有鍵を用いて生成されたワンタイムID以外のワンタイムIDを予測することは事実上不可能となり、また漏れた可変共有鍵を用いて生成されたワンタイムIDの予測自体も非常に困難なものとなる。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0054】
請求項3または請求項6に記載の発明によれば、所定の通信単位内で生成された乱数と所定の共有鍵とを引数とする一方向関数の関数値を求め、この関数値からワンタイムIDを生成するようにしたため、例えば、共有鍵が第三者に漏れたとしても、乱数によって一方向関数の関数値が所定の通信単位毎に変化することとなるので、所定の通信単位内で生成される乱数がわからない限り、ワンタイムIDを予測することはできない。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0055】
請求項7〜請求項35の何れかに記載の発明によれば、請求項1〜請求項6の何れかに記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、装置間(クライアント・サーバ間)における認証を行うようにしたので、第三者(攻撃者)が送信者・受信者を特定できなくなる一方で、正当な送信者・受信者であればワンタイムIDを識別情報として把握することができる。
したがって、DoS攻撃やなりすまし等に対する耐性を強化することができ、オープンなネットワーク環境下においても、ID情報の保護を図り、通信の安全性を向上させることができる。また、リモートアクセスが可能になり、利便性の向上を図ることができる。
【0056】
請求項8に記載の発明によれば、第一装置の正当性を判定するのに用いる一方向関数Fcとして、所定の共有鍵、Diffie−Hellman公開値の一方、第一装置に予め設定されたID、ワンタイムIDを引数とする疑似乱数関数を用いるとともに、第二装置の正当性を判定するのに用いる一方向関数Fsとして、所定の共有鍵、Diffie−Hellman公開値の一方、Diffie−Hellman公開値の他方、第二装置に予め設定されたID、ワンタイムIDを引数とする疑似乱数関数を用いるようにしたので、従来の鍵交換・認証方式では3回必要であった通信回数を2回に低減することが可能になり、迅速かつ安全な認証および鍵交換を実現することが可能になる。
【0057】
【発明の実施の形態】
[第1の実施形態]
図1は、本発明に係る認証システムの一実施形態を示す概略構成図である。この認証システムは、公衆回線網やインターネット等のネットワーク40を介して相互に接続されたサーバ(第二装置)10とクライアント(第一装置)20とにより概略構成されている。この実施形態では、種々のサービスを提供する複数のサーバA、B、C、…がサーバ10に接続され、当該サーバ10が、サーバA、B、C、…へのアクセスの可否を決定する認証サーバとして機能するようになっている。
【0058】
サーバ10は、図2に示すように、CPU11、RAM12、記憶装置13、入力装置14、表示装置15および通信装置16等により構成され、各部はバス17により接続されている。
【0059】
CPU(Central Processing Unit )11は、記憶装置13の記憶領域に格納されている各種処理プログラム、入力装置14や通信装置16から入力される各種指示、あるいは指示に対応する各種データ等をRAM12に格納し、それら入力指示および各種データに応じてRAM12に格納した各種処理プログラムに従って各種処理を実行し、その処理結果をRAM12に一時的に記憶するとともに、表示装置15等に出力する。
【0060】
このCPU11は、当該サーバ10における受信手段および判定手段を構成しており、クライアントIDを引数とする一方向関数(一方向関数Fc)の関数値であるHASHc、ワンタイムID(SIGNAL)、DH公開値gx (Diffie−Hellman公開値の一方)をクライアント20から受信した場合(すなわち、クライアント20からアクセスの要求を受けた場合)に、クライアント20から受信した受信データと記憶装置13に記憶されている記憶データを用いてワンタイムIDおよびHASHcを演算により求め、この演算結果と、クライアント20から受信したワンタイムIDおよびHASHcとの比較により、クライアント20の正当性を判定する処理を実行する。
【0061】
また、CPU11は、当該サーバ10における送信手段を構成しており、クライアント20が正当であると判定される場合に、上記受信データおよび上記記憶データを用いて、サーバIDを引数とする一方向関数(一方向関数Fs)の関数値であるHASHsを演算により求め、このHASHsと、記憶装置13に記憶されているDH公開値gy (Diffie−Hellman公開値の他方)とをクライアント20に対して送信する処理を実行する。
【0062】
なお、上記ワンタイムID(SIGNAL)は、サーバ・クライアント間における認証において一回限り使用可能な識別情報であり、このワンタイムIDを生成する場合には、所定の通信単位毎に変化する暗号化鍵K(可変共有鍵)を記憶装置13から読み込んで、この暗号化鍵Kを引数とするハッシュ関数(一方向関数)の関数値を求め、この関数値から上記ワンタイムIDを生成する。
【0063】
RAM(Random Access Memory)12は、クライアント20等との間で送受信されるデータなど、認証に関する各種データを一時記憶する記憶領域や、CPU11の作業領域などを備えている。
【0064】
記憶装置13は、プログラムやデータ等が記憶される記憶媒体13aを有し、この記憶媒体13aは磁気的、光学的記録媒体、若しくは半導体メモリで構成されている。この記憶媒体13aは記憶装置13に固定的に設けたもの、若しくは着脱自在に装着するものであり、CPU11により実行される各種処理プログラムや制御データ等を記憶する記憶領域、認証に関する各種データ(例えば、クライアント20やID発行管理サーバ30(後述)から取得したデータ、認証の処理過程で生成されたデータなど)を格納する記憶領域などを備えている。なお、この記憶媒体13aに記憶するプログラムやデータなどは、その一部若しくは全部を他のサーバ等からネットワーク40を介して受信して記憶する構成とすることも可能である。この記憶媒体13aには、サーバID、DH公開値gy 、クライアント20との間で共有化された乱数Rなどが、認証処理を開始する前段階で予め格納された状態となっている。
【0065】
入力装置14は、キーボードやポインティングデバイス等により構成され、入力指示信号をCPU11に対して出力する。
表示装置15は、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等により構成され、CPU11から入力される表示データを表示する。
通信装置16は、モデムやルータ、ブリッジ等により構成され、ネットワーク40を介してクライアント20等より受信したデータをCPU11に出力するとともに、CPU11より受信したデータをネットワーク40を介してクライアント20等に対して出力する。
【0066】
一方、クライアント20は、図3に示すように、CPU21、RAM22、記憶装置23、入力装置24、表示装置25および通信装置26等により構成され、各部はバス27により接続されている。具体的に、クライアント20としては、例えば、パーソナルコンピュータや、PDA(Personal Digital Assistance)等の携帯情報端末、インターネット接続サービスを利用可能な携帯電話などが挙げられる。なお、このクライアント20の各構成要素は、前述したサーバ10の各構成要素とほぼ同様であるので、相違点のみを以下に説明する。
【0067】
すなわち、クライアント20のCPU21は、当該クライアント20における送信手段を構成しており、入力装置24からの指示入力等に基づいて、ワンタイムID(SIGNAL)を生成するとともに、クライアントIDを引数とする一方向関数(一方向関数Fc)の関数値であるHASHcを求め、これらワンタイムIDおよびHASHcと、記憶装置23に予め記憶されたDH公開値gx (Diffie−Hellman公開値の一方)とをサーバ10に対して送信する処理を実行する。
【0068】
また、CPU21は、当該クライアント20における受信手段および判定手段を構成しており、サーバIDを引数とする一方向関数(一方向関数Fs)の関数値であるHASHsと、DH公開値gy (Diffie−Hellman公開値の他方)とをサーバ10から受信した場合(すなわち、サーバ10によってクライアント20が正当であると判定された場合)に、サーバ10から受信した受信データと記憶装置23に記憶されている記憶データを用いてHASHsを演算により求め、この演算結果と、サーバ10から受信したHASHsとの比較により、サーバ10の正当性を判定する処理を実行する。
【0069】
記憶装置23は、プログラムやデータ等が記憶される記憶媒体23aを有し、この記憶媒体23aは、上記CPU21により実行される各種処理プログラムや制御データ等を記憶する記憶領域、認証に関する各種データ(例えば、サーバ10やID発行管理サーバ30(後述)から取得したデータ、認証の処理過程で生成されたデータなど)を格納する記憶領域などを備えている。この記憶媒体23aには、クライアントID、DH公開値gx 、サーバ10との間で共有化された乱数Rなどが、認証処理を開始する前段階で予め格納された状態となっている。
【0070】
ID発行管理サーバ30は、クライアント・サーバ間で共有化される秘密情報(例えば、ワンタイムIDの初期値を生成するのに用いられる乱数Rなど)や、クライアントID、サーバIDなどを発行・管理するためのサーバである。このID発行管理サーバ30は、クライアント20を利用するユーザのID(例えば、クレジットNo、住基ネットID、社員No、学生No、特定会員Noなど)に上記秘密情報やパスワードなどを対応付けた状態で格納するデータベースを有している。また、ID発行管理サーバ30は、一定の周期で上記データベース内の秘密情報を更新し、この更新した秘密情報をオンライン(例えば、電子メールなど)またはオフライン(例えば、郵送など)で、クライアント20とサーバ10の双方に配布するようになっている。なお、上記秘密情報の発行は、クライアント20またはサーバ10からの発行依頼に基づくものであってもよい。
【0071】
次に、上記構成からなる認証システムによって行われる認証方法の第1の実施形態について、図4に基づいて説明する。この方法は、RFC2409において規定されたIKEの方式に、本発明に係るワンタイムID(SIGNAL)を適用したものである。
【0072】
先ず、ステップS1では、IKEによるSA生成に際してイニシエータとなるクライアント20が、ワンタイムID(SIGNAL)を生成するとともに、HASHcを演算により求め、これらワンタイムIDおよびHASHcと、記憶装置23に記憶されたDH公開値gx とをSAの提案とともに、レスポンダとなるサーバ10に対して送信する処理を実行する。
【0073】
ここで、ワンタイムIDであるSIGNALは、例えば、ハッシュ関数を用いて、次のように生成される。
【0074】
【数2】
SIGNAL1 =R
SIGNAL2 =hash(K1 )
SIGNAL3 =hash(K2 )
・・・
SIGNALn =hash(Kn−1 )
【0075】
上記SIGNALの定義式において、hashはハッシュ関数、RはID発行管理サーバ30からサーバ10とクライアント20の双方に発行されて両者間で共有化された乱数、Ki はi番目のセッションで生成されたサーバ・クライアント共有の暗号化鍵(可変共有鍵)である。なお、上記セッションは、SAを確立してから当該SAが無効になるまでの通信単位を示している。
【0076】
すなわち、上記SIGNALの定義式によれば、前回のセッションで生成された上記暗号化鍵Kを引数とするハッシュ関数の関数値を求め、この関数値を今回のセッションのSIGNALとして用いるようにしている。また、最初のセッションでは、サーバ・クライアント間で予め共有化された乱数RをSIGNALの初期値として用いるようにしている。また、上記暗号化鍵Ki は、例えば、次式(1)から求められる。
【0077】
Ki =prf(共有鍵、gxy、SIGNALi ) ・・ (1)
【0078】
この式(1)において、gxyはDH共通鍵であり、共有鍵は、サーバ・クライアント間の任意の共有鍵である。
【0079】
一方、HASHcは、次式(2)に示すように、共有鍵、DH公開値gx 、IDc(クライアントID)およびSIGNALを引数とする疑似乱数関数(鍵付きハッシュ関数)の関数値として求められる。
【0080】
HASHc=prf(共有鍵、gx 、IDc、SIGNAL) ・・ (2)
【0081】
次いで、ステップS2では、サーバ10が、SIGNALとHASHcを演算により求め、これら演算結果と、クライアント20から受信したSIGNALおよびHASHcとの比較により、クライアント20の正当性を判定する処理を実行する。
【0082】
上記判定の結果、受信データと演算結果とが一致して、クライアント20が正当であると判定される場合には、HASHsを演算により求め、このHASHsと、記憶装置13に記憶されているDH公開値gy とを、受諾したSAとともにクライアント20に対して送信する処理を実行する(ステップS3)。一方、受信データと演算結果とが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0083】
ここで、HASHsは、次式(3)に示すように、共有鍵、DH公開値gx 、gy 、IDs(サーバID)およびSIGNALを引数とする疑似乱数関数(鍵付きハッシュ関数)の関数値として求められる。
【0084】
HASHs=prf(共有鍵、gx 、gy 、IDs、SIGNAL) ・・ (3)
【0085】
また、このステップS3においては、記憶装置13に記憶されているDH公開値gy と、クライアント20から受信したDH公開値gx とからDH共通鍵gxyを生成して、DH共通鍵gxyを記憶装置13に格納する処理も併せて行う。
【0086】
次いで、ステップS4では、クライアント20が、HASHsを演算により求め、この演算結果と、サーバ10から受信したHASHsとの比較により、サーバ10の正当性を判定する処理を実行する。
【0087】
上記判定の結果、受信データと演算結果とが一致して、サーバ10が正当であると判定される場合には、記憶装置23に記憶されているDH公開値gx と、サーバ10から受信したDH公開値gy とからDH共通鍵gxyを生成して記憶装置23に格納した後、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと演算結果とが一致せず、サーバ10が正当でないと判定される場合には、サーバ10へのアクセスを中止して、当該認証処理を終了する。
【0088】
以上のように、この第1の実施形態によれば、セッション毎に変化する暗号化鍵K(可変共有鍵)を引数とするハッシュ関数の関数値をワンタイムID(SIGNAL)として用いるようにしたので、例えば、暗号化鍵Kが第三者に漏れたとしても、セッション毎に暗号化鍵Kが変化することとなるので、漏れた暗号化鍵Kを用いて生成されたワンタイムID以外のワンタイムIDを予測できなくなる。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0089】
また、上記ワンタイムID(SIGNAL)を用いて、クライアント・サーバ間における認証を行うようにしたので、第三者が送信者・受信者を特定できなくなる一方で、正当な送信者・受信者であればワンタイムIDを識別情報として把握することができる。
したがって、DoS攻撃やなりすまし等に対する耐性を強化することができ、オープンなネットワーク環境下においても、ID情報の保護を図り、通信の安全性を向上させることができる。また、リモートアクセスが可能になり、利便性の向上を図ることもできる。
【0090】
また、この実施形態では、クライアント20の正当性を判定するのに用いる一方向関数Fcとして、共有鍵、DH公開値gx 、IDc(クライアントID)およびSIGNALを引数とする疑似乱数関数を用いるとともに、サーバ10の正当性を判定するのに用いる一方向関数Fsとして、共有鍵、DH公開値gx 、gy 、IDs(サーバID)およびSIGNALを引数とする疑似乱数関数を用いるようにしたので、従来の鍵交換・認証方式では3回必要であった通信回数を2回に低減することが可能になり、迅速かつ安全な認証および鍵交換を実現することが可能になる。
【0091】
[第2の実施形態]
前述した第1の実施形態では、前回のセッションで生成された暗号化鍵(可変共有鍵)を引数とするハッシュ関数の関数値を求め、この関数値を今回のセッションのワンタイムID(SIGNAL)として用いるようにしたが、この第2の実施形態では、前回のセッションで生成された共有鍵と、当該セッションにおける通信順序とを引数とするハッシュ関数の関数値を求め、この関数値を今回のセッションの各通信時におけるワンタイムIDとして用いるようにしている。この第2の実施形態特有の部分以外は、第1の実施形態におけると同様である。この第2の実施形態において、第1の実施形態と同一部分には同一符号を付し、その説明を省略する。
【0092】
図5は本発明に係る認証方法の第2の実施形態を説明する図である。この第2の実施形態では、先ず、ステップP1において、クライアント20が、SIGNALn、1 (第一のワンタイムID)を生成するとともに、IDc(クライアントID)、IDs(サーバID)、DH公開値gxnおよびSIGNALn、1 を共有鍵Kn−1 (第一の可変共有鍵)で暗号化し、この暗号化データとSIGNALn、1 とをサーバ10に対して送信する処理を実行する。
【0093】
ここで、SIGNALは、i番目のセッションにおけるクライアント20のj番目の通信で利用するSIGNALをSIGNALi、j 、i番目のセッションにおけるサーバ10のj番目の通信で利用するSIGNALをSIGNAL’i、j とした場合、次のように生成される。
【0094】
【数3】
SIGNAL1、j =hash(R、j) i=1
SIGNALi、j =hash(Ki−1 、j) i≧2
SIGNAL’1、j =hash’(R、j) i=1
SIGNAL’i、j =hash’(Ki−1 、j) i≧2
【0095】
上記SIGNALの定義式において、hashとhash’は互いに異なるハッシュ関数、RはID発行管理サーバ30からサーバ10とクライアント20の双方に発行されて両者間で共有化された乱数、Ki はi番目のセッションで共有したDH共通鍵gxiyi(共有鍵)である。
【0096】
すなわち、上記SIGNALの定義式によれば、前回のセッションで生成された共有鍵Ki−1 と今回のセッションにおける通信順序jとを引数とするハッシュ関数の関数値を求め、この関数値を今回のセッションのj番目の通信に用いるSIGNALとしている。ただし、最初のセッション(i=1)では、サーバ・クライアント間で予め共有化された乱数Rと当該セッションにおける通信順序jとを引数とするハッシュ関数の関数値を求め、この関数値を最初のセッションのj番目の通信に用いるSIGNALとしている。
【0097】
次いで、ステップP2では、サーバ10が、SIGNALn、1 を演算により求め、この演算結果と、クライアント20から受信したSIGNALn、1 との照合により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、共有鍵Ki−1 を用いて暗号化データを復号し、この復号したデータに含まれる、IDc、IDsおよびSIGNALn、1 に基づいて、クライアント20の正当性を判定する処理を実行する。
【0098】
上記判定の結果、受信データと、サーバ10に予め格納された記憶データとが一致して、クライアント20が正当であると判定される場合には、前述したSIGNALの定義式に従ってSIGNAL’n、1 (第二のワンタイムID)を生成するとともに、クライアント20から受信したDH公開値gxnと当該サーバ10に予め記憶されたDH公開値gynとからDH共通鍵gxnynを共有鍵Kn (第二の可変共有鍵)として生成し、この共有鍵Kn 、IDc、IDsおよびSIGNAL’n、1 を引数とするハッシュ関数hの関数値と、DH公開値gynと、SIGNAL’n、1 とをクライアント20に対して送信する処理を実行する(ステップP3)。一方、受信データと記憶データとが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0099】
次いで、ステップP4では、クライアント20が、SIGNAL’n、1 を演算により求め、この演算結果と、サーバ10から受信したSIGNAL’n、1 との照合により、サーバ10を識別し、識別できない場合には、通信を拒否する。識別できる場合には、サーバ10から受信したDH公開値gynと当該クライアント20に予め記憶されたDH公開値gxnとからDH共通鍵gxnynを共有鍵Kn として生成するとともに、この共有鍵Kn を用いてハッシュ関数hの関数値を演算により求め、この演算結果と、サーバ10から受信したハッシュ関数hの関数値との照合により、サーバ10の正当性を判定する処理を実行する。
【0100】
上記判定の結果、受信データと演算結果とが一致して、サーバ10が正当であると判定される場合には、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと演算結果とが一致せず、サーバ10が正当でないと判定される場合には、サーバ10へのアクセスを中止して、当該認証処理を終了する。
【0101】
なお、クライアント20が共有鍵Ki を共有したことをサーバ10側で確認する必要がある場合には、このステップP4でクライアント20がサーバ10の正当性を判定した後に、共有鍵Kn 、IDc、IDsを引数とするハッシュ関数hの関数値をサーバ10に対して送信するようにすればよい。
【0102】
以上のように、この第2の実施形態によれば、前回のセッションで生成された共有鍵Ki−1 (可変共有鍵)と今回のセッションにおける通信順序jとを引数とするハッシュ関数の関数値を求め、この関数値を当該セッションのj番目の通信にのみ有効なワンタイムID(SIGNAL)として用いるようにしたので、例えば、n番目のセッションで生成した共有鍵Kn が第三者に漏れたとしても、セッション毎に共有鍵Kn が変化することとなるので、漏れた共有鍵Kn を用いて生成されたワンタイムID(SIGNALn+1、j 、SIGNAL’n+1、j )以外のワンタイムIDを予測できなくなる。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0103】
また、上記ワンタイムID(SIGNAL)を用いて、クライアント・サーバ間における認証を行うようにしたので、前述した第1の実施形態と同様、大量の計算要求・応答要求などによる計算量やメモリへのDoS攻撃を防止することができ、オープンなネットワーク環境下においても、ID情報の保護を図り、通信の安全性を向上させることができる。
【0104】
なお、DoS攻撃を防止する手法の一つとして、クッキー(乱数)を用いた手法が一般に知られている。この方法によれば、IPアドレスとクッキー生成者しか知らない秘密を組み合わせことにより、同一IPアドレスからのDoS攻撃を防ぐことができる。これに対して、本実施形態のSIGNALの場合には、DH共通鍵を知らない限り、次回有効となるSIGNALを予測することができない。よって、毎回の通信にSIGNALを利用することにより、クッキーと同様の効果が得られる。さらに、クッキーの場合はセッション中にIPアドレスが変わることを許さないが、SIGNALは変わっても良い。また、クッキーを用いた場合IPアドレスを偽造したDoS攻撃を防ぐことができないが、ワンタイムIDではIPアドレスが関係ないためこのような攻撃も防ぐことができる。
【0105】
また、本実施形態において、例えば、クライアント20がプロトコルの最初のメッセージを送り(ステップP1)、サーバ10がそれに対応してDH鍵交換の計算を行い(ステップP2)、2番目のメッセージを送った(ステップP3)場合を考える。もし、サーバ10のメッセージが途中で消失、もしくは攻撃者に横取りされ、クライアント20が受け取ることができなかった場合、クライアント20はもう一度最初のメッセージを送信する必要がある。このとき、サーバ10は正しいクライアント20が通信を送りなおしてきたのか、攻撃者が最初のメッセージを読み取りリプレイ攻撃を行っているのか、判断することができない。そこで、クライアント20はもう一度最初のメッセージを送りなおす場合、最初のチャレンジの際に送ったメッセージと同一の内容のものを送ることにし、サーバ10も以前返信したメッセージのコピーをそのまま送ることにする。これにより、無駄なDH鍵交換の計算を避けることができ、リプレイ攻撃によるDoS攻撃を防ぐことができる。
【0106】
なお、この実施形態では、前回のセッションで生成された共有鍵(DH共通鍵)Ki−1 と今回のセッションにおける通信順序jとを引数とするハッシュ関数の関数値を求め、この関数値を当該セッションのj番目の通信にのみ有効なワンタイムID(SIGNAL)として生成するようにしたが、例えば、次のようにSIGNALを生成することも可能である。
【0107】
【数4】
SSj =h1(Ki−1 )
SIGNALi、j =hash(SSi 、j)
SIGNAL’i、j =hash’(SSi 、j)
【0108】
上記SIGNALの定義式において、SSi は(i−1)番目のセッションで共有したDH共通鍵Ki−1 を引数とするハッシュ関数の関数値である。
また、この場合には、i番目のセッションで用いられる認証用鍵をAKi 、暗号化鍵をSKi として、これら鍵を、例えば、AKi =h2(Ki−1 )、SKi =h3(Ki−1 )という式から求めるようにしてもよい。なお、h1、h2、h3は、衝突のない一方向性ハッシュ関数である。
【0109】
このようにSSi から認証用鍵および暗号化鍵を生成する場合には、前述したステップP1において、クライアント20が、IDc、IDs、DH公開値gxnおよびSIGNALn、1 を暗号化してサーバ10に対して送信する際に、認証用鍵AKn を用いるようにする。また、ステップP3において、サーバ10がクライアント20に対して送信するハッシュ関数hに、暗号化鍵SKn 、IDc、IDsおよびSIGNAL’n、1 を引数とするハッシュ関数を用いるようにする。
【0110】
そうすることで、攻撃者が、仮に、SSi 、AKi 、SKi の何れか1つの値を知ることができたとしても、その他の値を計算することはできない。よって、攻撃者がi番目のセッションにおいて正規ユーザに成りすまし、鍵交換を行うためには、AKi 、SIGNAL、正規ユーザのID情報(IDs、IDc)が必要となり、暗号通信するためには、SKi SIGNAL、正規ユーザのID情報、通信回数の情報が必要となる。
また、n番目のセッションにおけるクライアント20のDH公開値gxnは、認証鍵AKi (h2(Ki−1 ))を用いて暗号化される。よって、AKi を知らない攻撃者はgxnを知ることができない。そのため、本方式で生成・共有されるDiffie−Hellman共通鍵は計算量的、かつ情報論的に安全である。
【0111】
[第3の実施形態]
前述した第1および第2の実施形態では、認証と同時にDiffie−Hellman鍵交換を行うようにしたが、この第3の実施形態では、Diffie−Hellman鍵交換を省略するようにしている。この第3の実施形態特有の部分以外は、第1の実施形態におけると同様である。この第3の実施形態において、第1の実施形態と同一部分には同一符号を付し、その説明を省略する。
【0112】
図6は本発明に係る認証方法の第3の実施形態を説明する図である。この第3の実施形態では、先ず、クライアント20が、乱数Rc(第一の乱数)を生成するとともに、サーバ10との間で予め共有化された共有鍵K1(第一の共有鍵)および乱数R0(初期乱数)を引数とする疑似乱数関数prf(K1、R0)の関数値をSIGNALc1(第一のワンタイムID)として求め(ステップS11)、このSIGNALc1と、共有鍵K1で暗号化した乱数Rcとをサーバ10に対して送信する処理を実行する(ステップS12)。
【0113】
次いで、サーバ10が、乱数Rs(第二の乱数)を生成するとともに、共有鍵K1で復号した乱数Rcと共有鍵K1とを引数とする疑似乱数関数prf(K1、Rc)の関数値をSIGNALs1(第二のワンタイムID)として求め(ステップS13)、このSIGNALs1と、共有鍵K1で暗号化した乱数Rsと、乱数R0+Rc(乱数R0、Rcを引数とする所定の演算結果、例えば、両者の排他的論理和など)とをクライアント20に対して送信する処理を実行する(ステップS14)。
【0114】
次いで、クライアント20が、乱数Rcと共有鍵K1に基づいてSIGNALs1を演算により求め、この演算結果とサーバ10から受信したSIGNALs1との比較により、サーバ10を識別するとともに、乱数R0+Rcの受信データと演算結果との比較により、サーバ10の正当性を判定する処理を実行する(ステップS15)。
【0115】
上記判定の結果、各々の受信データと演算結果とが一致して、サーバ10が正当であると判定される場合には、クライアント20が、乱数Rcおよび乱数Rsに基づいて共有鍵K2(第二の共有鍵)を生成するとともに、この共有鍵K2、乱数Rsおよび乱数Rcを引数とする疑似乱数関数prf(K2、Rs、Rc)の関数値をSIGNALc2(第三のワンタイムID)として求め、このSIGNALc2と、乱数Rc+Rs(乱数Rc、Rsを引数とする所定の演算結果)とをサーバ10に対して送信する処理を実行する(ステップS16)。一方、受信データと演算結果とが一致せず、サーバ10が正当でないと判定される場合には、サーバ10へのアクセスを中止して、当該認証処理を終了する。
【0116】
サーバ10は、クライアント20からSIGNALc2を受信すると、乱数Rcおよび乱数Rsに基づいて共有鍵K2を生成するとともに、共有鍵K2、乱数Rsおよび乱数Rcに基づいてSIGNALc2を演算により求め、この演算結果とクライアント20から受信したSIGNALc2との比較により、クライアント20を識別するとともに、乱数Rc+Rsの受信データと演算結果との比較により、クライアント20の正当性を判定する処理を実行する(ステップS17)。
【0117】
上記判定の結果、各々の受信データと演算結果とが一致して、クライアント20が正当であると判定される場合には、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと演算結果とが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0118】
以上のように、この第3の実施形態によれば、相互認証の過程で生成された乱数と、相互認証の過程で変化する共有鍵Kとを引数とする疑似乱数関数prfの関数値をワンタイムIDとして用いるようにしたので、前述した第1の実施形態と同様、ワンタイムIDの安全性を高めることができ、迅速かつ安全な相互認証を実現することができる。
【0119】
[第4の実施形態]
前述した第3の実施形態では、ワンタイムID(SIGNAL)の生成に用いる共有鍵を相互認証の過程で変化させるようにしたが、この第4の実施形態では、上記共有鍵を固定するようにしている。
【0120】
すなわち、この第4の実施形態では、図7に示すように、先ず、クライアント20が、乱数Rc(第一の乱数)を生成するとともに、サーバ10との間で予め共有化された共有鍵Kおよび乱数R0(初期乱数)を引数とする疑似乱数関数prf(K、R0)の関数値をSIGNALc1(第一のワンタイムID)として求め(ステップS21)、このSIGNALc1と、共有鍵Kで暗号化した乱数Rcとをサーバ10に対して送信する処理を実行する(ステップS22)。
【0121】
次いで、サーバ10が、乱数Rs(第二の乱数)を生成するとともに、共有鍵Kで復号した乱数Rcと共有鍵Kとを引数とする疑似乱数関数prf(K、Rc)の関数値をSIGNALs1(第二のワンタイムID)として求め(ステップS23)、このSIGNALs1と、共有鍵Kで暗号化した乱数Rsと、乱数R0+Rc(乱数R0、Rcを引数とする所定の演算結果)とをクライアント20に対して送信する処理を実行する(ステップS24)。
【0122】
次いで、クライアント20が、乱数Rcおよび共有鍵Kに基づいてSIGNALs1を演算により求め、この演算結果とサーバ10から受信したSIGNALs1との比較により、サーバ10を識別するとともに、乱数R0+Rcの受信データと演算結果との比較により、サーバ10の正当性を判定する処理を実行する(ステップS25)。
【0123】
上記判定の結果、各々の受信データと演算結果とが一致して、サーバ10が正当であると判定される場合には、クライアント20が、乱数Rc、乱数Rsおよび共有鍵Kを引数とする疑似乱数関数prf(K、Rs、Rc)の関数値をSIGNALc2(第三のワンタイムID)として求め、このSIGNALc2と、乱数Rc+Rs(乱数Rc、Rsを引数とする所定の演算結果)とをサーバ10に対して送信する処理を実行する(ステップS26)。一方、受信データと演算結果とが一致せず、サーバ10が正当でないと判定される場合には、サーバ10へのアクセスを中止して、当該認証処理を終了する。
【0124】
サーバ10は、クライアント20からSIGNALc2を受信すると、乱数Rc、乱数Rsおよび共有鍵Kに基づいてSIGNALc2を演算により求め、この演算結果とクライアント20から受信したSIGNALc2との比較により、クライアント20を識別するとともに、乱数Rc+Rsの受信データと演算結果との比較により、クライアント20の正当性を判定する処理を実行する(ステップS27)。
【0125】
上記判定の結果、各々の受信データと演算結果とが一致して、クライアント20が正当であると判定される場合には、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと演算結果とが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0126】
以上のように、この第4の実施形態によれば、相互認証の過程で生成された乱数と共有鍵Kとを引数とする疑似乱数関数prfの関数値をワンタイムIDとして用いるようにしたため、例えば、共有鍵Kが第三者に漏れたとしても、乱数によって疑似乱数関数prfの関数値が相互認証の過程で順次変化することとなるので、相互認証の過程で生成される乱数がわからない限り、ワンタイムIDを予測することができない。したがって、前述した第1〜第3の実施形態と同様、ワンタイムIDの安全性を高めることができ、迅速かつ安全な相互認証を実現することができる。
【0127】
[第5の実施形態]
図8は本発明に係る認証方法の第5の実施形態を説明する図である。この第5の実施形態では、先ず、クライアント20が、乱数Rci(第一の乱数)を生成するとともに、サーバ10との間で予め共有化された共有鍵Ki 、乱数Rci−1(第一の記憶乱数)および乱数Rsi−1(第二の記憶乱数)を引数とする疑似乱数関数prf(Ki 、Rci−1、Rsi−1)の関数値をSIGNALci(第一のワンタイムID)として求める処理を実行する(ステップS31)。
【0128】
なお、Rciはi番目のセッションでクライアント20により生成された乱数、Rsiはi番目のセッションでサーバ10により生成された乱数、Ki はi番目のセッションで使用する可変共有鍵をそれぞれ示している。また、前回(i−1番目)のセッションで生成された乱数Rci−1、Rsi−1は、サーバ10とクライアント20の各記憶装置13、23の記憶領域に格納されており、これら乱数Rci−1、Rsi−1に基づいて、共有鍵Ki が生成されるようになっている。
【0129】
そして、クライアント20は、SIGNALciを生成した後、IDc(クライアントID)、IDs(サーバID)および乱数Rciを共有鍵Ki で暗号化した暗号化データEKi(IDc、IDs、Rci)と、SIGNALciとをサーバ10に対して送信する処理を実行する(ステップS32)。
【0130】
サーバ10は、クライアント20からSIGNALciを受信すると、共有鍵Ki 、乱数Rci−1および乱数Rsi−1に基づいてSIGNALciを演算により求め、この演算結果とクライアント20から受信したSIGNALciとの比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、共有鍵Ki を用いて暗号化データEKi(IDc、IDs、Rci)を復号し、この復号したデータに含まれるIDcおよびIDsに基づいて、クライアント20の正当性を判定する処理を実行する。
【0131】
上記判定の結果、受信データと、サーバ10に予め格納された記憶データとが一致して、クライアント20が正当であると判定される場合には、乱数Rsi(第二の乱数)を生成するとともに、乱数Rci、乱数Rsi−1および共有鍵Ki を引数とする疑似乱数関数prf(Ki 、Rci、Rsi−1)の関数値をSIGNALsi(第二のワンタイムID)として求める。そして、乱数Rci−1、Rsi−1を格納していた記憶領域に、乱数Rci、Rsiをそれぞれ格納するとともに、これら乱数Rci、Rsiに基づき共有鍵Ki+1 を生成して記憶する処理を実行する(ステップS33)。
【0132】
次いで、サーバ10は、IDc、IDsおよび乱数Rsiを共有鍵Ki で暗号化した暗号化データEKi(IDs、IDc、Rsi)と、SIGNALsiとをクライアント20に対して送信する処理を実行する(ステップS34)。
一方、受信データと記憶データとが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0133】
クライアント20は、サーバ10からSIGNALsiを受信すると、共有鍵Ki 、乱数Rciおよび乱数Rsi−1に基づいてSIGNALsiを演算により求め、この演算結果とクライアント20から受信したSIGNALsiとの比較により、サーバ10を識別し、識別できない場合には、通信を拒否する。一方、識別できる場合には、共有鍵Ki を用いて暗号化データEKi(IDs、IDc、Rsi)を復号し、この復号したデータに含まれるIDcおよびIDsに基づいて、サーバ10の正当性を判定する処理を実行する。サーバ10を識別できる場合、通信相手を特定できるだけでなく、サーバ10が乱数Rciを受け取ったことも確認することができる。
【0134】
そして、上記判定の結果、受信データと、クライアント20に予め格納された記憶データとが一致して、サーバ10が正当であると判定される場合には、乱数Rci−1、Rsi−1を格納していた記憶領域に、乱数Rci、Rsiをそれぞれ格納して、これら乱数Rci、Rsiに基づき共有鍵Ki+1 を生成・記憶した後(ステップS35)、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと記憶データとが一致せず、サーバ10が正当でないと判定される場合には、サーバ10からのアクセスを拒否して、当該認証処理を終了する。
【0135】
以上のように、この第5の実施形態によれば、前述した第3の実施形態と同様の作用・効果が得られるのに加えて、IDc、IDsおよび乱数Rsiを共有鍵Ki で暗号化した暗号化データEKi(IDs、IDc、Rsi)を通信相手に送信するようにしたことにより、例えば、攻撃者によって暗号化データが書き換えられた場合においても、暗号化データに含まれるID情報(IDs、IDc)が正しく復号されないために、このデータを受け取ったサーバ10またはクライアント20は、送られてきた暗号化データが誤ったものであることを容易に検出でき、乱数を受け取らずに廃棄することが可能となる。また、SIGNALciの値が他の複数のクライアントと重複した場合においても、暗号化データに含まれるID情報(IDs、IDc)を参照することによって、通信相手を容易に特定することができる。
【0136】
さらに、この第5の実施形態によれば、通信相手がサーバ・クライアントのID情報(IDs、IDc)を正しく暗号化できているか否かを確認することによって、通信相手の正当性を判定するようにしたので、前述した第3の実施形態では3回必要であった通信回数を2回に低減することが可能となり、より効率的な認証が可能となる。
【0137】
[第6の実施形態]
図9は本発明に係る認証方法の第6の実施形態を説明する図である。この第6の実施形態では、先ず、クライアント20が、乱数Rci(第一の乱数)を生成するとともに、サーバ10との間で予め共有化された固定共有鍵K、乱数Rci−1(第一の記憶乱数)および乱数Rsi−1(第二の記憶乱数)を引数とする疑似乱数関数prf(K、Rci−1、Rsi−1)の関数値をSIGNALci(第一のワンタイムID)として求める処理を実行する(ステップS41)。
【0138】
なお、Rciはi番目のセッションでクライアント20により生成された乱数、Rsiはi番目のセッションでサーバ10により生成された乱数をそれぞれ示している。また、前回(i−1番目)のセッションで生成された乱数Rci−1、Rsi−1は、サーバ10とクライアント20の各記憶装置13、23の記憶領域に格納されている。
【0139】
そして、クライアント20は、SIGNALciを生成した後、IDc(クライアントID)、IDs(サーバID)および乱数Rciを共有鍵Kで暗号化した暗号化データEK (IDc、IDs、Rci)と、SIGNALciとをサーバ10に対して送信する処理を実行する(ステップS42)。
【0140】
サーバ10は、クライアント20からSIGNALciを受信すると、共有鍵K、乱数Rci−1および乱数Rsi−1に基づいてSIGNALciを演算により求め、この演算結果とクライアント20から受信したSIGNALciとの比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、共有鍵Kを用いて暗号化データEK (IDc、IDs、Rci)を復号し、この復号したデータに含まれるIDcおよびIDsに基づいて、クライアント20の正当性を判定する処理を実行する。
【0141】
上記判定の結果、受信データと、サーバ10に予め格納された記憶データとが一致して、クライアント20が正当であると判定される場合には、乱数Rsi(第二の乱数)を生成するとともに、乱数Rci、乱数Rsi−1および共有鍵Kを引数とする疑似乱数関数prf(K、Rci、Rsi−1)の関数値をSIGNALsi(第二のワンタイムID)として求める。そして、乱数Rci−1、Rsi−1を格納していた記憶領域に、乱数Rci、Rsiをそれぞれ格納する処理を実行する(ステップS43)。
【0142】
次いで、サーバ10は、IDc、IDsおよび乱数Rsiを共有鍵Kで暗号化した暗号化データEK (IDs、IDc、Rsi)と、SIGNALsiとをクライアント20に対して送信する処理を実行する(ステップS44)。
一方、受信データと記憶データとが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0143】
クライアント20は、サーバ10からSIGNALsiを受信すると、共有鍵K、乱数Rciおよび乱数Rsi−1に基づいてSIGNALsiを演算により求め、この演算結果とクライアント20から受信したSIGNALsiとの比較により、サーバ10を識別し、識別できない場合には、通信を拒否する。一方、識別できる場合には、共有鍵Kを用いて暗号化データEK (IDs、IDc、Rsi)を復号し、この復号したデータに含まれるIDcおよびIDsに基づいて、サーバ10の正当性を判定する処理を実行する。サーバ10を識別できる場合、通信相手を特定できるだけでなく、サーバ10が乱数Rciを受け取ったことも確認することができる。
【0144】
そして、上記判定の結果、受信データと、クライアント20に予め格納された記憶データとが一致して、サーバ10が正当であると判定される場合には、乱数Rci−1、Rsi−1を格納していた記憶領域に、乱数Rci、Rsiをそれぞれ格納して、これら乱数Rci、Rsiに基づき共有鍵Kを生成・記憶した後(ステップS45)、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと記憶データとが一致せず、サーバ10が正当でないと判定される場合には、サーバ10からのアクセスを拒否して、当該認証処理を終了する。
【0145】
以上のように、この第6の実施形態によれば、前述した第4の実施形態と同様の作用・効果が得られるのに加えて、例えば、攻撃者によって暗号化データが書き換えられた場合においても、データを受け取ったサーバ10またはクライアント20は、送られてきた暗号化データが誤ったものであることを容易に検出でき、乱数を受け取らずに廃棄することが可能となる。また、SIGNALciの値が他の複数のクライアントと重複した場合においても、暗号化データに含まれるID情報(IDs、IDc)を参照することによって、通信相手を容易に特定することができる。さらに、この第6の実施形態によれば、前述した第4の実施形態では3回必要であった通信回数を2回に低減することが可能となり、より効率的な認証が可能となる。
【0146】
[第7の実施形態]
この第7の実施形態では、ワンタイムIDを用いたリプレイ攻撃の防止方法について説明する。リプレイ攻撃とは、過去に正式な通信者が送信したときに有効であった通信情報を攻撃者(第三者)が盗聴し、再利用する攻撃のことである。
【0147】
先ず、OSPA(Optimal Strong Password Authentication)と呼ばれるパスワードを利用した認証方式(Chun−Li LIN, Hung−Min SUN, Tzonelih HWANG, Attacks and Solutions on Strong− Password Authentication, IEICE TRANS. COMMUN., VOL.E84−B, NO.9, September 2001.)について、図10に基づいて説明する。
当該認証に先立って、クライアント20には、ハッシュ関数hおよびパスワードPが予め記憶保持されており、サーバ10には、ハッシュ関数h、セッション回数n、IDc(クライアントID)および検証用情報h2 (P@n )が予め記憶保持されている。検証用情報h2 (P@n)は、クライアント20の正当性を検証するための情報であって、パスワードPと通信回数nの排他的論理和を用いてハッシュ関数hにより生成された情報である。なお、h2 (P@n)は、ハッシュ関数hの計算を2回行うこと、つまりh(h(P@n))を示しており、この数式中の@は排他的論理和を示している。
【0148】
この認証方式では、先ず、クライアント20がサーバ10に対してIDcを送信する(ステップS51)。
サーバ10は、クライアント20からIDcを受信すると、この受信したIDcと、予め記憶しているIDcとの比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、サーバ10に対してセッション回数nを送信する(ステップS52)。
【0149】
クライアント20は、サーバ10からセッション回数nを受信すると、この受信したセッション回数n、予め記憶しているハッシュ関数hおよびパスワードPを用いて、第1〜第3の認証用情報C1、C2、C3を生成し(ステップS53)、これらC1、C2、C3をサーバ10に対して送信する(ステップS54)。ここで、C1=h(P@n)@h2 (P@n)、C2=h2 (P@(n+1))@h(P@n)、C3=h3 (P@(n+1))である。
【0150】
サーバ10は、クライアント20からC1、C2、C3を受信すると、先ず、受信したC1≠C2であることを確認する。これは、C1=h(P@n)@h2 (P@n)、C2=h(P@n)@h2 (P@n)、C3=h3 (P@n)と計算して送った場合においても、サーバ10がクライアント20を認証してしまい、次の検証用情報として、h2 (P@(n+1) )ではなくh2 (P@n)を記憶してしまう不具合が発生する可能性があることから、このような不具合の発生を防ぐために行われるものである。
【0151】
次いで、サーバ10は、C1、C2から、h(P@n)、h2 (P@(n+1))を演算により求める。すなわち、受信したC1と、予め記憶している検証用情報h2 (P@n )との排他的論理和を求めることでh(P@n)を導き出し、このh(P@n)と受信したC2との排他的論理和を求めることでh2 (P@(n+1))を導き出す。
【0152】
次いで、予め記憶しているハッシュ関数hを用いて、求めたh(P@n)からh(h(P@n))を計算し、このh(h(P@n))が、予め記憶している検証用情報h2 (P@n )と一致するか否かを検証する。同時に、求めたh2 (P@(n+1))から上記ハッシュ関数hを用いてh(h2 (P@(n+1)))を計算し、このh(h2 (P@(n+1)))が、受信したC3と一致するか否かを検証する(ステップS55)。
【0153】
これら検証の結果、何れもが一致して、クライアント20が正当であると判定される場合には、検証用情報をh2 (P@n )からh2 (P@(n+1) )に更新し、セッション回数をnからn+1に更新した後、クライアント20からのアクセスを承諾して、当該認証処理を終了する。一方、上記検証の結果、少なくとも何れか一方が一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0154】
上記認証方式によれば、盗聴者に対して安全な認証を行うことができるとともに、セッション毎に検証用情報をh2 (P@n )からh2 (P@(n+1) )へと更新することができるという利点がある。
しかしながら、上記認証方式にあっては、一度使用された認証情報C1、C2、C3をもう一度利用することによるリプレイ攻撃を防止することができないという問題点があった。
【0155】
そこで、本発明者等は、このような問題点を解決する認証方式として、次のような認証方式を開発した。
図11は、本発明に係る認証方法の第7の実施形態を説明する図である。この図11に示すように、クライアント20に、ハッシュ関数hおよびパスワードPが予め記憶保持され、サーバ10に、ハッシュ関数h、セッション回数n、IDcおよび検証用情報h2 (P@n )が予め記憶保持されている場合には、先ず、クライアント20がサーバ10に対してIDcを送信する(ステップS61)。
【0156】
サーバ10は、クライアント20からIDcを受信すると、この受信したIDcと、予め記憶しているIDcとの比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、サーバ10に対してセッション回数nを送信する(ステップS62)。
【0157】
クライアント20は、サーバ10からセッション回数nを受信すると、この受信したセッション回数n、予め記憶しているハッシュ関数hおよびパスワードPを用いて、第1〜第3の認証用情報C1、C2、C3、SIGNALn を生成し(ステップS63)、これらC1、C2、C3、SIGNALn をサーバ10に対して送信する(ステップS64)。ここで、C1=h(P@n)@h2 (P@n)、C2=h2 (P@(n+1))@h(P@n)、C3=h3 (P@(n+1))、SIGNALn =h(h2 (P@n)、n)である。すなわち、n番目のセッションで使用するワンタイムIDであるSIGNALn が、検証用情報h2 (P@n )およびセッション回数nを引数とするハッシュ関数hの関数値となっている。
【0158】
サーバ10は、クライアント20からC1、C2、C3、SIGNALn を受信すると、先ず、予め記憶している検証用情報h2 (P@n )とセッション回数nとに基づいてSIGNALn を演算により求め、この演算結果とクライアント20から受信したSIGNALn との比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、受信したC1≠C2であることを確認した後、C1およびC2からh(P@n)、h2 (P@(n+1))を演算により求める。
【0159】
次いで、サーバ10は、予め記憶しているハッシュ関数hを用いて、求めたh(P@n)からh(h(P@n))を計算し、このh(h(P@n))が、予め記憶している検証用情報h2 (P@n )と一致するか否かを検証する。同時に、求めたh2 (P@(n+1))から上記ハッシュ関数hを用いてh(h2 (P@(n+1)))を計算し、このh(h2 (P@(n+1)))が、受信したC3と一致するか否かを検証する(ステップS65)。
【0160】
これら検証の結果、何れもが一致して、クライアント20が正当であると判定される場合には、検証用情報をh2 (P@n )からh2 (P@(n+1) )に更新し、セッション回数をnからn+1に更新した後、クライアント20からのアクセスを承諾して、当該認証処理を終了する。一方、上記検証の結果、少なくとも何れか一方が一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0161】
上記認証方式によれば、検証用情報であるh2 (P@n )が攻撃者に知られる虞がないので、次のセッションのSIGNALが攻撃者に予測されることはない。しかも、SIGNALは他のセッションで使用できないので、攻撃者によるリプレイ攻撃を効果的に防ぐことができる。
【0162】
なお、図12に示すように、ハッシュ関数hおよびパスワードPに加えて、予めセッション回数nもクライアント20に記憶保持されている場合には、前述したステップS61、S62の処理を省略することが可能である。したがって、この場合には、ID情報(IDc)の盗聴に対する保護を図りつつも、攻撃者によるリプレイ攻撃を効果的に防ぐことが可能である。
【0163】
なお、以上の各実施形態においては、複数の装置間の認証にワンタイムIDを用いるようにしたが、一装置内の複数のアプリケーション間の認証にワンタイムIDを用いることも可能である。また、以上の各実施形態においては、本発明に係る認証方法をクライアントサーバシステムに適用した場合について例示したが、これに限られるものではなく、例えば、P2P(Peer to Peer)システムに本発明に係る認証方法を適用することも可能である。
【0164】
また、本発明に係る認証方法をユーザによるアクセス毎に利用することも可能であり、その場合には、ユーザによるパスワードの入力を促して、パスワード、若しくはパスワードから生成した値(ワンタイムパスワードを含む。)をワンタイムIDとともに認証用のデータとして用いることが可能である。
【0165】
【発明の効果】
以上説明したように、請求項1〜請求項6の何れかに記載の発明によれば、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能となり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能となる。
【0166】
請求項7〜請求項35の何れかに記載の発明によれば、請求項1〜請求項6の何れかに記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、装置間(クライアント・サーバ間)の認証を行うようにしたので、第三者が送信者・受信者を特定できなくなる一方で、正当な送信者・受信者であればワンタイムIDを識別情報として把握できるようになる。
したがって、DoS攻撃やなりすまし等に対する耐性を強化することができ、オープンなネットワーク環境下においても、ID情報の保護を図り、通信の安全性を向上させることができる。また、リモートアクセスが可能になり、利便性の向上を図ることもできる。
【0167】
請求項8に記載の発明によれば、従来の鍵交換・認証方式では3回必要であった通信回数を2回に低減することが可能になり、迅速かつ安全な認証および鍵交換を実現することが可能になる。
【図面の簡単な説明】
【図1】本発明に係る認証システムの一実施形態を示す概略構成図である。
【図2】図1のサーバの概略構成を示すブロック図である。
【図3】図1のクライアントの概略構成を示すブロック図である。
【図4】本発明に係る認証方法の第1の実施形態を説明する図である。
【図5】本発明に係る認証方法の第2の実施形態を説明する図である。
【図6】本発明に係る認証方法の第3の実施形態を説明する図である。
【図7】本発明に係る認証方法の第4の実施形態を説明する図である。
【図8】本発明に係る認証方法の第5の実施形態を説明する図である。
【図9】本発明に係る認証方法の第6の実施形態を説明する図である。
【図10】OSPAと呼ばれる従来の認証方法を説明する図である。
【図11】本発明に係る認証方法の第7の実施形態を説明する図である。
【図12】図11の変形例を説明する図である。
【図13】P−SIGMAと呼ばれる従来の認証方法を説明する図である。
【符号の説明】
10 サーバ(第二装置)
20 クライアント(第一装置)
11、21 CPU
【発明の属する技術分野】
本発明は、複数の装置間またはアプリケーション間における認証に用いて好適なワンタイムIDの生成方法、上記ワンタイムIDを用いた認証方法、認証システム、サーバ、クライアントおよびプログラムに関するものである。
【0002】
【従来の技術】
従来より、ネットワークを介してコンピュータ間(例えば、クライアント・サーバ間)で通信を行う際には、不正なアクセス等を排除するために、サービス等の提供に先立って認証が行われる。この認証においては、第三者が知り得ない所定の秘密情報(例えば、IDやパスワード、乱数、或いはそれら情報を引数とする関数値など)を予め双方が共有し、その秘密情報に基づいて各々の正当性を相互に検証するのが一般的である。
【0003】
他方、IETF(Internet Engineering Task Force)が公式に発行するRFC(Request For Comments)においては、インターネットでIPパケットの暗号化と認証を行なうセキュリティプロトコルとして、IPsec(Security Architecture for Internet Protocol)が規定されている。このIPsecでは、暗号・認証のパラメータを動的に生成して交換するIKE(Internet Key Exchange)という自動鍵交換のプロトコルが標準的に採用されている(例えば、特許文献1参照)。
そして、近年では、このIKEの方式にワンタイムIDを導入して、既知共有鍵を用いたIKEの方式で問題となっていた、ID情報保護、DoS(Denial of Service attack)攻撃防止、リモートアクセスなどを実現したP−SIGMAと呼ばれる鍵交換・認証方式が提案されている。
【0004】
このP−SIGMAにおいては、例えば、図13に示すような手順で鍵交換および認証が行われている。
先ず、クライアントが、SA(Security Association)の提案、乱数Rc、DH(Diffie−Hellman)公開値gx 、OID(ワンタイムID)をサーバに対して送信する。なお、SAの提案には、暗号アルゴリズムや認証方式、鍵交換に使用するパラメータ等に関する提案が含まれている。
【0005】
次いで、サーバが、受け取ったOIDからクライアントを識別し、識別できない場合には、通信を拒否する。識別できる場合には、受諾したSA、乱数Rs、DH公開値gy 、HASHs、セッション鍵eで暗号化したIDs(サーバID)をクライアントに対して送信する。なお、セッション鍵eは、既知共有鍵、乱数Rs、乱数RcおよびDH共通鍵gxyを引数とする鍵付きハッシュ関数の関数値であり、HASHsは、既知共有鍵、乱数Rs、乱数Rc、DH公開値gx 、gy およびIDsを引数とする疑似乱数関数の関数値である。
【0006】
次いで、クライアントが、受け取ったHASHsを検証し、このHASHsに基づいてサーバの正当性を確認する。HASHsが正しければ、HASHc、セッション鍵eで暗号化したIDc(クライアントID)をサーバに対して送信する。ここで、HASHcは、既知共有鍵、乱数Rs、乱数Rc、DH公開値gx 、gy およびIDcを引数とする疑似乱数関数の関数値である。
次いで、サーバが、受け取ったHASHcを検証し、このHASHcに基づいてクライアントの正当性を確認する。HASHcが正しければ、当該プロトコルを終了する。
【0007】
このP−SIGMAにおいて、OID(ワンタイムID)は、次のように定義されている。
【0008】
【数1】
OID1 =prf(K、1)
OID2 =prf(K、2)
・・・
OIDn =prf(K、n)
【0009】
この定義式において、OIDn はn番目のSA確立時に用いられるワンタイムID、prfは疑似乱数関数、Kは既知共有鍵、若しくは既知共有鍵から生成された値である。
【0010】
このため、上記P−SIGMAによれば、OIDを導入したことにより、第三者が送信者・受信者を特定できなくなる一方で、正当な送信者・受信者であればOIDを識別情報として把握できるといった効果が得られるとともに、クライアント・サーバ間で通信が行われる度(すなわち、SAの生成または更新毎)にOIDが変更されるため、第三者が次回のOIDを予測することができないといった効果が得られる。
【0011】
【特許文献1】
特開2002−374238号公報(段落番号0002〜0009)
【0012】
【発明が解決しようとする課題】
しかしながら、上記P−SIGMAにおいては、既知共有鍵がひとたび知られてしまうと、すべてのOIDが予測されてしまい、その結果、OIDの将来にわたる安全性(すなわち、PFS:Perfect Forward Security)を保証できなくなるといった問題点があった。
【0013】
以上、具体例として、P−SIGMAと呼ばれる鍵交換・認証方式について述べてきたが、一般に、ワンタイムIDを用いて複数の装置間またはアプリケーション間における認証を行う認証方式では、特定の秘密情報に基づいてすべてのワンタイムIDの生成を行っており、上記同様の問題点を有している。
【0014】
本発明は、かかる事情に鑑みてなされたもので、盗聴が困難で安全性に優れたワンタイムIDの生成方法、上記ワンタイムIDを用いた認証方法、認証システム、サーバ、クライアントおよびプログラムを提供することを目的とする。
【0015】
【課題を解決するための手段】
請求項1に記載の発明は、複数の装置間またはアプリケーション間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法であって、上記認証を行う装置またはアプリケーションの各々において、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵を引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0016】
ここで、一方向関数とは、引数から結果(関数値)を求めるのは簡単であるが、結果から引数を求めるのは難しい関数のことを云い、この一方向関数には、例えば、ハッシュ関数、疑似乱数関数などが含まれる。
所定の通信単位としては、例えば、IPsecにおいてSAが確立されてから当該SAが無効になるまでの間にクライアント・サーバ間で行われる一連の通信を、所定の通信単位として設定することも可能であるし、装置間またはアプリケーション間で行われる1回のデータ送受信を所定の通信単位として設定することも可能である。
可変共有鍵は、上記所定の通信単位毎に変化し、且つ認証を行う装置間またはアプリケーション間で共有される、第三者が知り得ない秘密情報であれば、如何なる鍵であってもよい。
【0017】
認証とは、一方の装置(または一方のアプリケーション)が他方の装置(または他方のアプリケーション)にアクセスする際に、他方の装置が一方の装置の正当性を確認することを云い、識別情報とは、上記認証において少なくとも一方の装置から他方の装置に送信されて当該他方の装置が一方の装置を識別するのに用いる情報(ID)のことを云う。
また、上記認証には、一方の装置が他方の装置の認証を行う一方向認証と、双方の装置で相互に認証を行う相互認証とが含まれる。例えば、上記認証においてワンタイムIDを使用する方法としては、双方の装置でワンタイムIDを生成するとともに、一方の装置が他方の装置にワンタイムIDを送信し、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、一方の装置を識別或いは認証する方法が挙げられる。
【0018】
請求項2に記載の発明は、複数の装置間またはアプリケーション間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法であって、上記認証を行う装置またはアプリケーションの各々において、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵と通信順序または回数に関する情報とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0019】
請求項3に記載の発明は、複数の装置間またはアプリケーション間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法であって、上記認証を行う装置またはアプリケーションの各々において、上記認証が必要な所定の通信単位内で乱数を生成するとともに、この乱数と所定の共有鍵とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0020】
請求項4に記載の発明は、一方の装置と他方の装置間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを双方の装置で生成するとともに、一方の装置が他方の装置にワンタイムIDを送信して、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、他方の装置を識別或いは認証する場合において、一方の装置および他方の装置がワンタイムIDを生成する方法であって、一方の装置および他方の装置は、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵を引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0021】
請求項5に記載の発明は、一方の装置と他方の装置間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを双方の装置で生成するとともに、一方の装置が他方の装置にワンタイムIDを送信して、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、他方の装置を識別或いは認証する場合において、一方の装置および他方の装置がワンタイムIDを生成する方法であって、一方の装置および他方の装置は、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵と通信順序または回数に関する情報とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0022】
請求項6に記載の発明は、一方の装置と他方の装置間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを双方の装置で生成するとともに、一方の装置が他方の装置にワンタイムIDを送信して、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、他方の装置を識別或いは認証する場合において、一方の装置および他方の装置がワンタイムIDを生成する方法であって、一方の装置および他方の装置は、上記認証が必要な所定の通信単位内で乱数を生成するとともに、この乱数と所定の共有鍵とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするものである。
【0023】
請求項7に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )を用いて、第一装置と第二装置間における認証を行う認証方法であって、上記第一装置が、上記第二装置との間で予め共有化された可変共有鍵を用いて上記ワンタイムIDを生成するとともに、この生成したワンタイムIDと、当該第一装置に予め設定されたIDを少なくとも引数とする一方向関数Fcの関数値と、当該第一装置に予め記憶されたDiffie−Hellman公開値の一方とを上記第二装置に対して送信するステップと、上記第二装置が、上記ワンタイムIDおよび上記一方向関数Fcの関数値を演算により求め、この演算結果と、上記第一装置から受信したワンタイムIDおよび一方向関数Fcの関数値との照合により、上記第一装置の正当性を判定するステップと、上記第二装置が、上記第一装置を正当であると判定した場合に、当該第二装置に予め設定されたIDを少なくとも引数とする一方向関数Fsの関数値と、当該第二装置に予め記憶されたDiffie−Hellman公開値の他方とを上記第一装置に対して送信するステップと、上記第一装置が、上記一方向関数Fsの関数値を演算により求め、この演算結果と、上記第二装置から受信した一方向関数Fsの関数値との照合により、上記第二装置の正当性を判定するステップとを有することを特徴とするものである。
【0024】
請求項8に記載の発明は、請求項7に記載の認証方法において、上記一方向関数Fcとして、所定の共有鍵、上記Diffie−Hellman公開値の一方、上記第一装置に予め設定されたID、上記ワンタイムIDを引数とする疑似乱数関数を用いるとともに、上記一方向関数Fsとして、上記所定の共有鍵、上記Diffie−Hellman公開値の一方、上記Diffie−Hellman公開値の他方、上記第二装置に予め設定されたID、上記ワンタイムIDを引数とする疑似乱数関数を用いるようにしたことを特徴とするものである。
【0025】
請求項9に記載の発明は、請求項2または請求項5に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証を行う認証方法であって、上記第一装置が、上記第二装置との間で予め共有化された第一の可変共有鍵と当該第一装置の通信順序に関する情報とを引数とする一方向関数の関数値を第一のワンタイムID(SIGNALn、j )として生成するとともに、上記第一の可変共有鍵を用いて、当該第一装置に予め設定されたID、上記第二装置に予め設定されたID、当該第一装置に予め記憶されたDiffie−Hellman公開値の一方および上記第一のワンタイムIDを暗号化し、この暗号化データと上記第一のワンタイムIDとを上記第二装置に対して送信するステップと、上記第二装置が、上記第一のワンタイムIDを演算により求め、この演算結果と、上記第一装置から受信した上記第一のワンタイムIDとの照合により、上記第一装置を識別するステップと、上記第二装置が、上記第一装置を識別できた場合に、上記第一の可変共有鍵を用いて上記暗号化データを復号し、この復号したデータに含まれる、上記第一装置に予め設定されたID、当該第二装置に予め設定されたIDおよび上記第一のワンタイムIDに基づいて、上記第一装置の正当性を判定するステップと、上記第二装置が、上記第一装置を正当であると判定した場合に、上記第一の可変共有鍵と当該第二装置の通信順序に関する情報とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNAL’n、1 )として生成するとともに、上記第一装置から受信したDiffie−Hellman公開値の一方と当該第二装置に予め記憶されたDiffie−Hellman公開値の他方とからDiffie−Hellman共通鍵を第二の可変共有鍵として生成し、この第二の可変共有鍵、上記第一装置に予め設定されたID、当該第二装置に予め設定されたIDおよび上記第二のワンタイムIDを引数とする一方向関数hの関数値と、上記Diffie−Hellman公開値の他方と、上記第二のワンタイムIDとを上記第一装置に対して送信するステップと、上記第一装置が、上記第二のワンタイムIDを演算により求め、この演算結果と、上記第二装置から受信した上記第二のワンタイムIDとの照合により、上記第二装置を識別するステップと、上記第一装置が、上記第二装置を識別できた場合に、上記第二装置から受信した上記Diffie−Hellman公開値の他方と当該第一装置に予め記憶された上記Diffie−Hellman公開値の一方とからDiffie−Hellman共通鍵を上記第二の可変共有鍵として生成するとともに、この第二の可変共有鍵を用いて上記一方向関数hの関数値を演算により求め、この演算結果と、上記第二装置から受信した一方向関数hの関数値との照合により、上記第二装置の正当性を判定するステップとを有することを特徴とするものである。
【0026】
請求項10に記載の発明は、請求項9に記載の認証方法において、上記第二のワンタイムIDを生成する一方向関数として、上記第一のワンタイムIDを生成する一方向関数とは異なる一方向関数を用いるようにしたことを特徴とするものである。
【0027】
請求項11に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証(相互認証)を行う認証方法であって、上記第一装置が、第一の乱数を生成するとともに、上記第二装置との間で予め共有化された第一の共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として求め、この第一のワンタイムIDと上記第一の乱数とを上記第二装置に対して送信するステップと、上記第二装置が、第二の乱数を生成するとともに、上記第一の乱数と上記第一の共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として求め、この第二のワンタイムIDと上記第二の乱数とを上記第一装置に対して送信するステップと、上記第一装置が、上記第一の乱数および上記第一の共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記第二装置から受信した上記第二のワンタイムIDとの比較により、上記第二装置の正当性を判定するステップと、上記第一装置が、上記第一の乱数および上記第二の乱数に基づいて第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として求め、この第三のワンタイムIDを上記第二装置に対して送信するステップと、上記第二装置が、上記第一の乱数および上記第二の乱数に基づいて上記第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記第一装置から受信した上記第三のワンタイムIDとの比較により、上記第一装置の正当性を判定するステップとを有することを特徴とするものである。
【0028】
請求項12に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証(相互認証)を行う認証方法であって、上記第一装置が、第一の乱数を生成するとともに、上記第二装置との間で予め共有化された共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として求め、この第一のワンタイムIDと上記第一の乱数を上記第二装置に対して送信するステップと、上記第二装置が、第二の乱数を生成するとともに、上記第一の乱数と上記共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として求め、この第二のワンタイムIDと上記第二の乱数を上記第一装置に対して送信するステップと、上記第一装置が、上記第一の乱数および上記共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記第二装置から受信した上記第二のワンタイムIDとの比較により、上記第二装置の正当性を判定するステップと、上記第一装置が、上記第一の乱数、上記第二の乱数および上記共有鍵を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として求め、この第三のワンタイムIDを上記第二装置に対して送信するステップと、上記第二装置が、上記第一の乱数、上記第二の乱数および上記共有鍵に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記第一装置から受信した上記第三のワンタイムIDとの比較により、上記第一装置の正当性を判定するステップとを有することを特徴とするものである。
【0029】
請求項13に記載の発明は、請求項11または請求項12に記載の認証方法において、上記第一の乱数と上記第二の乱数を、上記第一装置と上記第二装置との間で予め共有化された共有鍵で暗号化した状態で、送信するようにしたことを特徴とするものである。
【0030】
請求項14に記載の発明は、請求項11〜請求項13の何れかに記載の認証方法において、上記第二装置が上記第二のワンタイムIDと上記第二の乱数とを上記第一装置に対して送信するステップにおいて、上記第二装置は、上記第一装置との間で予め共有化された乱数を初期乱数として、この初期乱数と上記第一の乱数を引数とする所定の演算を行い、この演算結果を上記第一装置に対して送信する一方、上記第一装置は、上記第二装置の正当性の判定材料として、上記第二装置から受信した上記演算結果を、上記第二のワンタイムIDとともに用いることを特徴とするものである。
【0031】
請求項15に記載の発明は、請求項11〜請求項14の何れかに記載の認証方法において、上記第一装置が上記第三のワンタイムIDを上記第二装置に対して送信するステップにおいて、上記第一装置は、上記第一の乱数と上記第二の乱数を引数とする所定の演算を行い、この演算結果を上記第二装置に対して送信する一方、上記第二装置は、上記第一装置の正当性の判定材料として、上記第一装置から受信した上記演算結果を、上記第三のワンタイムIDとともに用いることを特徴とするものである。
【0032】
請求項16に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証を行う認証方法であって、上記第一装置が、第一の乱数を生成するとともに、上記第二装置との間で予め共有化された共有鍵、第一の記憶乱数および第二の記憶乱数を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALci)として求め、当該第一装置に予め設定されたID、上記第二装置に予め設定されたIDおよび上記第一の乱数を上記共有鍵で暗号化した第一の暗号化データと、上記第一のワンタイムIDとを上記第二装置に対して送信するステップと、上記第二装置が、上記第一のワンタイムIDを演算により求め、この演算結果と、上記第一装置から受信した上記第一のワンタイムIDとの照合により、上記第一装置を識別するステップと、上記第二装置が、上記第一装置を識別できた場合に、上記共有鍵を用いて上記第一の暗号化データを復号し、この復号したデータに含まれる、上記第一装置に予め設定されたIDおよび当該第二装置に予め設定されたIDに基づいて、上記第一装置の正当性を判定するステップと、上記第二装置が、上記第一装置を正当であると判定した場合に、第二の乱数を生成するとともに、上記第一の乱数、上記第二の記憶乱数および上記共有鍵を引数とする一方向関数の関数値を第二のワンタイムID(SIGNALsi)として求め、上記第一装置に予め設定されたID、当該第二装置に予め設定されたIDおよび上記第二の乱数を上記共有鍵で暗号化した第二の暗号化データと、上記第二のワンタイムIDとを上記第一装置に対して送信するステップと、上記第二装置が、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換するステップと、上記第一装置が、上記第二のワンタイムIDを演算により求め、この演算結果と、上記第二装置から受信した上記第二のワンタイムIDとの照合により、上記第二装置を識別するステップと、上記第一装置が、上記第二装置を識別できた場合に、上記共有鍵を用いて上記第二の暗号化データを復号し、この復号したデータに含まれる、上記第二装置に予め設定されたIDおよび当該第一装置に予め設定されたIDに基づいて、上記第二装置の正当性を判定するステップと、上記第一装置が、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換するステップとを有することを特徴とするものである。
【0033】
請求項17に記載の発明は、請求項16に記載の認証方法において、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換した後に、これら第一の記憶乱数および第二の記憶乱数に基づいて上記共有鍵を生成することにより、当該共有鍵を変化させるようにしたことを特徴とするものである。
【0034】
請求項18に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )を用いてクライアントとの間で認証を行うサーバであって、上記クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値と、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方と、上記ワンタイムIDとを上記クライアントから受信する受信手段と、上記一方向関数の関数値Fcおよび上記ワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記ワンタイムIDおよび上記一方向関数Fcの関数値との比較により、上記クライアントの正当性を判定する判定手段と、上記判定手段が上記クライアントを正当であると判定した場合に、当該サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、当該サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記クライアントに対して送信する送信手段とを備えることを特徴とするものである。
【0035】
請求項19に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )を用いてサーバとの間で認証を行うクライアントであって、上記サーバとの間で予め共有化された可変共有鍵を用いて上記ワンタイムIDを生成するとともに、当該クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値を演算により求め、これらワンタイムIDおよび一方向関数Fcの関数値と、当該クライアントに予め記憶されたDiffie−Hellman公開値の一方とを上記サーバに対して送信する送信手段と、上記サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記サーバから受信する受信手段と、上記一方向関数Fsの関数値を演算により求め、この演算結果と、上記サーバから受信した上記一方向関数Fsの関数値との比較により、上記サーバの正当性を判定する判定手段とを備えることを特徴とするものである。
【0036】
請求項20に記載の本発明に係る認証システムは、請求項18に記載のサーバと、請求項19に記載のクライアントとを備えてなることを特徴とするものである。
【0037】
請求項21に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )に基づいてクライアントとの間で認証を行うサーバに実行させるプログラムであって、上記クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値と、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方と、上記ワンタイムIDとを上記クライアントから受信する処理と、上記一方向関数の関数値Fcおよび上記ワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記ワンタイムIDおよび上記一方向関数Fcの関数値との比較により、上記クライアントの正当性を判定する処理と、上記クライアントが正当であると判定された場合に、上記サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記クライアントに対して送信する処理とを上記サーバに実行させることを特徴とするものである。
【0038】
請求項22に記載の発明は、請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムID(SIGNALn )に基づいてサーバとの間で認証を行うクライアントに実行させるプログラムであって、上記サーバとの間で予め共有化された可変共有鍵を用いて上記ワンタイムIDを生成するとともに、上記クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値を演算により求め、これらワンタイムIDおよび一方向関数Fcの関数値と、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方とを上記サーバに対して送信する処理と、上記サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記サーバから受信する処理と、上記一方向関数Fsの関数値を演算により求め、この演算結果と、上記サーバから受信した上記一方向関数Fsの関数値との比較により、上記サーバの正当性を判定する処理とを上記クライアントに実行させることを特徴とするものである。
【0039】
請求項23に記載の発明は、請求項2または請求項5に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で認証を行うサーバであって、上記クライアントとの間で予め共有化された第一の可変共有鍵と上記クライアントの通信順序に関する情報とを引数とする一方向関数の関数値を第一のワンタイムID(SIGNALn、j )として、この第一のワンタイムID、上記クライアントに予め設定されたクライアントID、当該サーバに予め設定されたサーバID、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方を上記第一の可変共有鍵で暗号化した暗号化データと、上記第一のワンタイムIDとを上記クライアントから受信する受信手段と、上記第一のワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記第一のワンタイムIDとの照合により、上記クライアントを識別し、上記クライアントを識別できた場合に、上記第一の可変共有鍵を用いて上記暗号化データを復号し、この復号したデータに含まれる、上記クライアントID、上記サーバIDおよび上記第一のワンタイムIDに基づいて、上記クライアントの正当性を判定する判定手段と、上記判定手段が上記クライアントを正当であると判定した場合に、上記第一の可変共有鍵と当該サーバの通信順序に関する情報とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNAL’n、1 )として生成するとともに、上記クライアントから受信したDiffie−Hellman公開値の一方と当該サーバに予め記憶されたDiffie−Hellman公開値の他方とからDiffie−Hellman共通鍵を第二の可変共有鍵として生成し、この第二の可変共有鍵、上記クライアントID、上記サーバIDおよび上記第二のワンタイムIDを引数とする一方向関数hの関数値と、上記Diffie−Hellman公開値の他方と、上記第二のワンタイムIDとを上記クライアントに対して送信する送信手段とを備えることを特徴とするものである。
【0040】
請求項24に記載の発明は、請求項2または請求項5に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で認証を行うクライアントであって、上記サーバとの間で予め共有化された第一の可変共有鍵と当該クライアントの通信順序に関する情報とを引数とする一方向関数の関数値を第一のワンタイムID(SIGNALn、j )として生成するとともに、上記第一の可変共有鍵を用いて、当該クライアントに予め設定されたクライアントID、上記サーバに予め設定されたサーバID、当該クライアントに予め記憶されたDiffie−Hellman公開値の一方および上記第一のワンタイムIDを暗号化し、この暗号化データと上記第一のワンタイムIDとを上記サーバに対して送信する送信手段と、上記第一の可変共有鍵と上記サーバの通信順序に関する情報とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNAL’n、1 )とし、Diffie−Hellman共通鍵を第二の可変共有鍵として、上記第二のワンタイムID、上記第二の可変共有鍵、上記クライアントIDおよび上記サーバIDを引数とする一方向関数hの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方と、上記第二のワンタイムIDとを上記サーバから受信する受信手段と、上記第二のワンタイムIDを演算により求め、この演算結果と、上記サーバから受信した上記第二のワンタイムIDとの照合により、上記サーバを識別し、上記サーバを識別した場合に、上記サーバから受信した上記Diffie−Hellman公開値の他方と当該クライアントに予め記憶された上記Diffie−Hellman公開値の一方とからDiffie−Hellman共通鍵を上記第二の可変共有鍵として生成するとともに、この第二の可変共有鍵を用いて上記一方向関数hの関数値を演算により求め、この演算結果と、上記サーバから受信した一方向関数hの関数値との照合により、上記サーバの正当性を判定する判定手段とを備えることを特徴とするものである。
【0041】
請求項25に記載の本発明に係る認証システムは、請求項23に記載のサーバと、請求項24に記載のクライアントとを備えてなることを特徴とするものである。
【0042】
請求項26に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で相互に認証を行うサーバであって、上記クライアントとの間で予め共有化された第一の共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として、この第一のワンタイムIDと、上記クライアントで生成された第一の乱数とを上記クライアントから受信する第一受信手段と、第二の乱数を生成するとともに、上記第一の乱数と上記第一の共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として求め、この第二のワンタイムIDと上記第二の乱数とを上記クライアントに対して送信する送信手段と、上記第一の乱数、上記第二の乱数および第二の共有鍵を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として、この第三のワンタイムIDを上記クライアントから受信する第二受信手段と、上記第一の乱数および上記第二の乱数に基づいて上記第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記クライアントから受信した上記第三のワンタイムIDとの比較により、上記クライアントの正当性を判定する判定手段とを備えることを特徴とするものである。
【0043】
請求項27に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で相互に認証を行うクライアントであって、第一の乱数を生成するとともに、上記サーバとの間で予め共有化された第一の共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として求め、この第一のワンタイムIDと上記第一の乱数とを上記サーバに対して送信する第一送信手段と、上記第一の乱数と上記第一の共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として、この第二のワンタイムIDと、上記サーバで生成された第二の乱数とを上記サーバから受信する受信手段と、上記第一の乱数および上記第一の共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記サーバから受信した上記第二のワンタイムIDとの比較により、上記サーバの正当性を判定する判定手段と、上記判定手段により上記サーバが正当であると判定された場合に、上記第一の乱数および上記第二の乱数に基づいて第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として求め、この第三のワンタイムIDを上記サーバに対して送信する第二送信手段とを備えることを特徴とするものである。
【0044】
請求項28に記載の本発明に係る認証システムは、請求項26に記載のサーバと、請求項27に記載のクライアントとを備えてなることを特徴とするものである。
【0045】
請求項29に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で相互に認証を行うサーバであって、上記クライアントとの間で予め共有化された共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として、この第一のワンタイムIDと、上記クライアントで生成された第一の乱数とを上記クライアントから受信する第一受信手段と、第二の乱数を生成するとともに、上記第一の乱数と上記共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として求め、この第二のワンタイムIDと上記第二の乱数を上記クライアントに対して送信する送信手段と、上記共有鍵、上記第一の乱数および上記第二の乱数を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として、この第三のワンタイムIDを上記クライアントから受信する第二受信手段と、上記第一の乱数、上記第二の乱数および上記共有鍵に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記クライアントから受信した上記第三のワンタイムIDとの比較により、上記クライアントの正当性を判定する判定手段とを備えることを特徴とするものである。
【0046】
請求項30に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で相互に認証を行うクライアントであって、第一の乱数を生成するとともに、上記サーバとの間で予め共有化された共有鍵を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALc1)として求め、この第一のワンタイムIDと上記第一の乱数を上記サーバに対して送信する第一送信手段と、上記第一の乱数と上記共有鍵とを引数とする一方向関数の関数値を第二のワンタイムID(SIGNALs1)として、この第二のワンタイムIDと、上記サーバで生成された第二の乱数とを上記サーバから受信する受信手段と、上記第一の乱数および上記共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記サーバから受信した上記第二のワンタイムIDとの比較により、上記サーバの正当性を判定する判定手段と、上記判定手段により上記サーバが正当であると判定された場合に、上記第一の乱数、上記第二の乱数および上記共有鍵を引数とする一方向関数の関数値を第三のワンタイムID(SIGNALc2)として求め、この第三のワンタイムIDを上記サーバに対して送信する第二送信手段とを備えることを特徴とするものである。
【0047】
請求項31に記載の本発明に係る認証システムは、請求項29に記載のサーバと、請求項30に記載のクライアントとを備えてなることを特徴とするものである。
【0048】
請求項32に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で相互に認証を行うサーバであって、上記クライアントとの間で予め共有化された共有鍵、第一の記憶乱数および第二の記憶乱数を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALci)として、この第一のワンタイムIDを上記クライアントから受信するとともに、上記クライアントで生成された第一の乱数、上記クライアントに予め設定されたクライアントID、当該サーバに予め設定されたサーバIDを上記共有鍵で暗号化した第一の暗号化データを上記クライアントから受信する受信手段と、上記第一のワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記第一のワンタイムIDとの照合により、上記クライアントを識別し、上記クライアントを識別できた場合に、上記共有鍵を用いて上記第一の暗号化データを復号し、この復号したデータに含まれる上記クライアントIDおよび上記サーバIDに基づいて、上記クライアントの正当性を判定する判定手段と、上記判定手段が上記クライアントを正当であると判定した場合に、第二の乱数を生成するとともに、上記第一の乱数、上記第二の記憶乱数および上記共有鍵を引数とする一方向関数の関数値を第二のワンタイムID(SIGNALsi)として求め、上記クライアントID、上記サーバIDおよび上記第二の乱数を上記共有鍵で暗号化した第二の暗号化データと、上記第二のワンタイムIDとを上記クライアントに対して送信する送信手段と、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換する置換手段とを備えることを特徴とするものである。
【0049】
請求項33に記載の発明は、請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で相互に認証を行うクライアントであって、第一の乱数を生成するとともに、上記サーバとの間で予め共有化された共有鍵、第一の記憶乱数および第二の記憶乱数を引数とする一方向関数の関数値を第一のワンタイムID(SIGNALci)として求め、当該クライアントに予め設定されたクライアントID、上記サーバに予め設定されたサーバIDおよび上記第一の乱数を上記共有鍵で暗号化した第一の暗号化データと、上記第一のワンタイムIDとを上記サーバに対して送信する送信手段と、上記第一の乱数、上記第二の記憶乱数および上記共有鍵を引数とする一方向関数の関数値を第二のワンタイムID(SIGNALsi)として、この第二のワンタイムIDを上記サーバから受信するとともに、上記サーバで生成された第二の乱数、上記クライアントIDおよび上記サーバIDを上記共有鍵で暗号化した第二の暗号化データを上記サーバから受信する受信手段と、上記第二のワンタイムIDを演算により求め、この演算結果と、上記サーバから受信した上記第二のワンタイムIDとの照合により、上記サーバを識別し、上記サーバを識別できた場合に、上記共有鍵を用いて上記第二の暗号化データを復号し、この復号したデータに含まれる上記サーバIDおよび上記クライアントIDに基づいて、上記サーバの正当性を判定する判定手段と、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換する置換手段とを備えることを特徴とするものである。
【0050】
請求項34に記載の本発明に係る認証システムは、請求項32に記載のサーバと、請求項33に記載のクライアントとを備えてなることを特徴とするものである。
【0051】
請求項35に記載の発明は、請求項34に記載の認証システムにおいて、上記サーバおよび上記クライアントは、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換した後で、これら第一の記憶乱数および第二の記憶乱数に基づいて上記共有鍵を生成することにより、当該共有鍵を変化させるようになっていることを特徴とするものである。
【0052】
請求項1または請求項4に記載の発明によれば、可変共有鍵を引数とする一方向関数の関数値を求め、この関数値からワンタイムIDを生成するようにしたため、例えば、可変共有鍵が第三者に漏れたとしても、所定の通信単位毎に可変共有鍵が変化することとなるので、漏れた可変共有鍵を用いて生成されたワンタイムID以外のワンタイムIDを予測することはできない。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0053】
請求項2または請求項5に記載の発明によれば、可変共有鍵と通信順序または回数に関する情報とを引数とする一方向関数の関数値を求め、この関数値からワンタイムIDを生成するようにしたため、例えば、可変共有鍵が第三者に漏れたとしても、所定の通信単位毎に可変共有鍵が変化するとともに、各通信毎に通信順序または回数に関する情報も変化することとなるので、漏れた可変共有鍵を用いて生成されたワンタイムID以外のワンタイムIDを予測することは事実上不可能となり、また漏れた可変共有鍵を用いて生成されたワンタイムIDの予測自体も非常に困難なものとなる。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0054】
請求項3または請求項6に記載の発明によれば、所定の通信単位内で生成された乱数と所定の共有鍵とを引数とする一方向関数の関数値を求め、この関数値からワンタイムIDを生成するようにしたため、例えば、共有鍵が第三者に漏れたとしても、乱数によって一方向関数の関数値が所定の通信単位毎に変化することとなるので、所定の通信単位内で生成される乱数がわからない限り、ワンタイムIDを予測することはできない。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0055】
請求項7〜請求項35の何れかに記載の発明によれば、請求項1〜請求項6の何れかに記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、装置間(クライアント・サーバ間)における認証を行うようにしたので、第三者(攻撃者)が送信者・受信者を特定できなくなる一方で、正当な送信者・受信者であればワンタイムIDを識別情報として把握することができる。
したがって、DoS攻撃やなりすまし等に対する耐性を強化することができ、オープンなネットワーク環境下においても、ID情報の保護を図り、通信の安全性を向上させることができる。また、リモートアクセスが可能になり、利便性の向上を図ることができる。
【0056】
請求項8に記載の発明によれば、第一装置の正当性を判定するのに用いる一方向関数Fcとして、所定の共有鍵、Diffie−Hellman公開値の一方、第一装置に予め設定されたID、ワンタイムIDを引数とする疑似乱数関数を用いるとともに、第二装置の正当性を判定するのに用いる一方向関数Fsとして、所定の共有鍵、Diffie−Hellman公開値の一方、Diffie−Hellman公開値の他方、第二装置に予め設定されたID、ワンタイムIDを引数とする疑似乱数関数を用いるようにしたので、従来の鍵交換・認証方式では3回必要であった通信回数を2回に低減することが可能になり、迅速かつ安全な認証および鍵交換を実現することが可能になる。
【0057】
【発明の実施の形態】
[第1の実施形態]
図1は、本発明に係る認証システムの一実施形態を示す概略構成図である。この認証システムは、公衆回線網やインターネット等のネットワーク40を介して相互に接続されたサーバ(第二装置)10とクライアント(第一装置)20とにより概略構成されている。この実施形態では、種々のサービスを提供する複数のサーバA、B、C、…がサーバ10に接続され、当該サーバ10が、サーバA、B、C、…へのアクセスの可否を決定する認証サーバとして機能するようになっている。
【0058】
サーバ10は、図2に示すように、CPU11、RAM12、記憶装置13、入力装置14、表示装置15および通信装置16等により構成され、各部はバス17により接続されている。
【0059】
CPU(Central Processing Unit )11は、記憶装置13の記憶領域に格納されている各種処理プログラム、入力装置14や通信装置16から入力される各種指示、あるいは指示に対応する各種データ等をRAM12に格納し、それら入力指示および各種データに応じてRAM12に格納した各種処理プログラムに従って各種処理を実行し、その処理結果をRAM12に一時的に記憶するとともに、表示装置15等に出力する。
【0060】
このCPU11は、当該サーバ10における受信手段および判定手段を構成しており、クライアントIDを引数とする一方向関数(一方向関数Fc)の関数値であるHASHc、ワンタイムID(SIGNAL)、DH公開値gx (Diffie−Hellman公開値の一方)をクライアント20から受信した場合(すなわち、クライアント20からアクセスの要求を受けた場合)に、クライアント20から受信した受信データと記憶装置13に記憶されている記憶データを用いてワンタイムIDおよびHASHcを演算により求め、この演算結果と、クライアント20から受信したワンタイムIDおよびHASHcとの比較により、クライアント20の正当性を判定する処理を実行する。
【0061】
また、CPU11は、当該サーバ10における送信手段を構成しており、クライアント20が正当であると判定される場合に、上記受信データおよび上記記憶データを用いて、サーバIDを引数とする一方向関数(一方向関数Fs)の関数値であるHASHsを演算により求め、このHASHsと、記憶装置13に記憶されているDH公開値gy (Diffie−Hellman公開値の他方)とをクライアント20に対して送信する処理を実行する。
【0062】
なお、上記ワンタイムID(SIGNAL)は、サーバ・クライアント間における認証において一回限り使用可能な識別情報であり、このワンタイムIDを生成する場合には、所定の通信単位毎に変化する暗号化鍵K(可変共有鍵)を記憶装置13から読み込んで、この暗号化鍵Kを引数とするハッシュ関数(一方向関数)の関数値を求め、この関数値から上記ワンタイムIDを生成する。
【0063】
RAM(Random Access Memory)12は、クライアント20等との間で送受信されるデータなど、認証に関する各種データを一時記憶する記憶領域や、CPU11の作業領域などを備えている。
【0064】
記憶装置13は、プログラムやデータ等が記憶される記憶媒体13aを有し、この記憶媒体13aは磁気的、光学的記録媒体、若しくは半導体メモリで構成されている。この記憶媒体13aは記憶装置13に固定的に設けたもの、若しくは着脱自在に装着するものであり、CPU11により実行される各種処理プログラムや制御データ等を記憶する記憶領域、認証に関する各種データ(例えば、クライアント20やID発行管理サーバ30(後述)から取得したデータ、認証の処理過程で生成されたデータなど)を格納する記憶領域などを備えている。なお、この記憶媒体13aに記憶するプログラムやデータなどは、その一部若しくは全部を他のサーバ等からネットワーク40を介して受信して記憶する構成とすることも可能である。この記憶媒体13aには、サーバID、DH公開値gy 、クライアント20との間で共有化された乱数Rなどが、認証処理を開始する前段階で予め格納された状態となっている。
【0065】
入力装置14は、キーボードやポインティングデバイス等により構成され、入力指示信号をCPU11に対して出力する。
表示装置15は、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等により構成され、CPU11から入力される表示データを表示する。
通信装置16は、モデムやルータ、ブリッジ等により構成され、ネットワーク40を介してクライアント20等より受信したデータをCPU11に出力するとともに、CPU11より受信したデータをネットワーク40を介してクライアント20等に対して出力する。
【0066】
一方、クライアント20は、図3に示すように、CPU21、RAM22、記憶装置23、入力装置24、表示装置25および通信装置26等により構成され、各部はバス27により接続されている。具体的に、クライアント20としては、例えば、パーソナルコンピュータや、PDA(Personal Digital Assistance)等の携帯情報端末、インターネット接続サービスを利用可能な携帯電話などが挙げられる。なお、このクライアント20の各構成要素は、前述したサーバ10の各構成要素とほぼ同様であるので、相違点のみを以下に説明する。
【0067】
すなわち、クライアント20のCPU21は、当該クライアント20における送信手段を構成しており、入力装置24からの指示入力等に基づいて、ワンタイムID(SIGNAL)を生成するとともに、クライアントIDを引数とする一方向関数(一方向関数Fc)の関数値であるHASHcを求め、これらワンタイムIDおよびHASHcと、記憶装置23に予め記憶されたDH公開値gx (Diffie−Hellman公開値の一方)とをサーバ10に対して送信する処理を実行する。
【0068】
また、CPU21は、当該クライアント20における受信手段および判定手段を構成しており、サーバIDを引数とする一方向関数(一方向関数Fs)の関数値であるHASHsと、DH公開値gy (Diffie−Hellman公開値の他方)とをサーバ10から受信した場合(すなわち、サーバ10によってクライアント20が正当であると判定された場合)に、サーバ10から受信した受信データと記憶装置23に記憶されている記憶データを用いてHASHsを演算により求め、この演算結果と、サーバ10から受信したHASHsとの比較により、サーバ10の正当性を判定する処理を実行する。
【0069】
記憶装置23は、プログラムやデータ等が記憶される記憶媒体23aを有し、この記憶媒体23aは、上記CPU21により実行される各種処理プログラムや制御データ等を記憶する記憶領域、認証に関する各種データ(例えば、サーバ10やID発行管理サーバ30(後述)から取得したデータ、認証の処理過程で生成されたデータなど)を格納する記憶領域などを備えている。この記憶媒体23aには、クライアントID、DH公開値gx 、サーバ10との間で共有化された乱数Rなどが、認証処理を開始する前段階で予め格納された状態となっている。
【0070】
ID発行管理サーバ30は、クライアント・サーバ間で共有化される秘密情報(例えば、ワンタイムIDの初期値を生成するのに用いられる乱数Rなど)や、クライアントID、サーバIDなどを発行・管理するためのサーバである。このID発行管理サーバ30は、クライアント20を利用するユーザのID(例えば、クレジットNo、住基ネットID、社員No、学生No、特定会員Noなど)に上記秘密情報やパスワードなどを対応付けた状態で格納するデータベースを有している。また、ID発行管理サーバ30は、一定の周期で上記データベース内の秘密情報を更新し、この更新した秘密情報をオンライン(例えば、電子メールなど)またはオフライン(例えば、郵送など)で、クライアント20とサーバ10の双方に配布するようになっている。なお、上記秘密情報の発行は、クライアント20またはサーバ10からの発行依頼に基づくものであってもよい。
【0071】
次に、上記構成からなる認証システムによって行われる認証方法の第1の実施形態について、図4に基づいて説明する。この方法は、RFC2409において規定されたIKEの方式に、本発明に係るワンタイムID(SIGNAL)を適用したものである。
【0072】
先ず、ステップS1では、IKEによるSA生成に際してイニシエータとなるクライアント20が、ワンタイムID(SIGNAL)を生成するとともに、HASHcを演算により求め、これらワンタイムIDおよびHASHcと、記憶装置23に記憶されたDH公開値gx とをSAの提案とともに、レスポンダとなるサーバ10に対して送信する処理を実行する。
【0073】
ここで、ワンタイムIDであるSIGNALは、例えば、ハッシュ関数を用いて、次のように生成される。
【0074】
【数2】
SIGNAL1 =R
SIGNAL2 =hash(K1 )
SIGNAL3 =hash(K2 )
・・・
SIGNALn =hash(Kn−1 )
【0075】
上記SIGNALの定義式において、hashはハッシュ関数、RはID発行管理サーバ30からサーバ10とクライアント20の双方に発行されて両者間で共有化された乱数、Ki はi番目のセッションで生成されたサーバ・クライアント共有の暗号化鍵(可変共有鍵)である。なお、上記セッションは、SAを確立してから当該SAが無効になるまでの通信単位を示している。
【0076】
すなわち、上記SIGNALの定義式によれば、前回のセッションで生成された上記暗号化鍵Kを引数とするハッシュ関数の関数値を求め、この関数値を今回のセッションのSIGNALとして用いるようにしている。また、最初のセッションでは、サーバ・クライアント間で予め共有化された乱数RをSIGNALの初期値として用いるようにしている。また、上記暗号化鍵Ki は、例えば、次式(1)から求められる。
【0077】
Ki =prf(共有鍵、gxy、SIGNALi ) ・・ (1)
【0078】
この式(1)において、gxyはDH共通鍵であり、共有鍵は、サーバ・クライアント間の任意の共有鍵である。
【0079】
一方、HASHcは、次式(2)に示すように、共有鍵、DH公開値gx 、IDc(クライアントID)およびSIGNALを引数とする疑似乱数関数(鍵付きハッシュ関数)の関数値として求められる。
【0080】
HASHc=prf(共有鍵、gx 、IDc、SIGNAL) ・・ (2)
【0081】
次いで、ステップS2では、サーバ10が、SIGNALとHASHcを演算により求め、これら演算結果と、クライアント20から受信したSIGNALおよびHASHcとの比較により、クライアント20の正当性を判定する処理を実行する。
【0082】
上記判定の結果、受信データと演算結果とが一致して、クライアント20が正当であると判定される場合には、HASHsを演算により求め、このHASHsと、記憶装置13に記憶されているDH公開値gy とを、受諾したSAとともにクライアント20に対して送信する処理を実行する(ステップS3)。一方、受信データと演算結果とが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0083】
ここで、HASHsは、次式(3)に示すように、共有鍵、DH公開値gx 、gy 、IDs(サーバID)およびSIGNALを引数とする疑似乱数関数(鍵付きハッシュ関数)の関数値として求められる。
【0084】
HASHs=prf(共有鍵、gx 、gy 、IDs、SIGNAL) ・・ (3)
【0085】
また、このステップS3においては、記憶装置13に記憶されているDH公開値gy と、クライアント20から受信したDH公開値gx とからDH共通鍵gxyを生成して、DH共通鍵gxyを記憶装置13に格納する処理も併せて行う。
【0086】
次いで、ステップS4では、クライアント20が、HASHsを演算により求め、この演算結果と、サーバ10から受信したHASHsとの比較により、サーバ10の正当性を判定する処理を実行する。
【0087】
上記判定の結果、受信データと演算結果とが一致して、サーバ10が正当であると判定される場合には、記憶装置23に記憶されているDH公開値gx と、サーバ10から受信したDH公開値gy とからDH共通鍵gxyを生成して記憶装置23に格納した後、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと演算結果とが一致せず、サーバ10が正当でないと判定される場合には、サーバ10へのアクセスを中止して、当該認証処理を終了する。
【0088】
以上のように、この第1の実施形態によれば、セッション毎に変化する暗号化鍵K(可変共有鍵)を引数とするハッシュ関数の関数値をワンタイムID(SIGNAL)として用いるようにしたので、例えば、暗号化鍵Kが第三者に漏れたとしても、セッション毎に暗号化鍵Kが変化することとなるので、漏れた暗号化鍵Kを用いて生成されたワンタイムID以外のワンタイムIDを予測できなくなる。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0089】
また、上記ワンタイムID(SIGNAL)を用いて、クライアント・サーバ間における認証を行うようにしたので、第三者が送信者・受信者を特定できなくなる一方で、正当な送信者・受信者であればワンタイムIDを識別情報として把握することができる。
したがって、DoS攻撃やなりすまし等に対する耐性を強化することができ、オープンなネットワーク環境下においても、ID情報の保護を図り、通信の安全性を向上させることができる。また、リモートアクセスが可能になり、利便性の向上を図ることもできる。
【0090】
また、この実施形態では、クライアント20の正当性を判定するのに用いる一方向関数Fcとして、共有鍵、DH公開値gx 、IDc(クライアントID)およびSIGNALを引数とする疑似乱数関数を用いるとともに、サーバ10の正当性を判定するのに用いる一方向関数Fsとして、共有鍵、DH公開値gx 、gy 、IDs(サーバID)およびSIGNALを引数とする疑似乱数関数を用いるようにしたので、従来の鍵交換・認証方式では3回必要であった通信回数を2回に低減することが可能になり、迅速かつ安全な認証および鍵交換を実現することが可能になる。
【0091】
[第2の実施形態]
前述した第1の実施形態では、前回のセッションで生成された暗号化鍵(可変共有鍵)を引数とするハッシュ関数の関数値を求め、この関数値を今回のセッションのワンタイムID(SIGNAL)として用いるようにしたが、この第2の実施形態では、前回のセッションで生成された共有鍵と、当該セッションにおける通信順序とを引数とするハッシュ関数の関数値を求め、この関数値を今回のセッションの各通信時におけるワンタイムIDとして用いるようにしている。この第2の実施形態特有の部分以外は、第1の実施形態におけると同様である。この第2の実施形態において、第1の実施形態と同一部分には同一符号を付し、その説明を省略する。
【0092】
図5は本発明に係る認証方法の第2の実施形態を説明する図である。この第2の実施形態では、先ず、ステップP1において、クライアント20が、SIGNALn、1 (第一のワンタイムID)を生成するとともに、IDc(クライアントID)、IDs(サーバID)、DH公開値gxnおよびSIGNALn、1 を共有鍵Kn−1 (第一の可変共有鍵)で暗号化し、この暗号化データとSIGNALn、1 とをサーバ10に対して送信する処理を実行する。
【0093】
ここで、SIGNALは、i番目のセッションにおけるクライアント20のj番目の通信で利用するSIGNALをSIGNALi、j 、i番目のセッションにおけるサーバ10のj番目の通信で利用するSIGNALをSIGNAL’i、j とした場合、次のように生成される。
【0094】
【数3】
SIGNAL1、j =hash(R、j) i=1
SIGNALi、j =hash(Ki−1 、j) i≧2
SIGNAL’1、j =hash’(R、j) i=1
SIGNAL’i、j =hash’(Ki−1 、j) i≧2
【0095】
上記SIGNALの定義式において、hashとhash’は互いに異なるハッシュ関数、RはID発行管理サーバ30からサーバ10とクライアント20の双方に発行されて両者間で共有化された乱数、Ki はi番目のセッションで共有したDH共通鍵gxiyi(共有鍵)である。
【0096】
すなわち、上記SIGNALの定義式によれば、前回のセッションで生成された共有鍵Ki−1 と今回のセッションにおける通信順序jとを引数とするハッシュ関数の関数値を求め、この関数値を今回のセッションのj番目の通信に用いるSIGNALとしている。ただし、最初のセッション(i=1)では、サーバ・クライアント間で予め共有化された乱数Rと当該セッションにおける通信順序jとを引数とするハッシュ関数の関数値を求め、この関数値を最初のセッションのj番目の通信に用いるSIGNALとしている。
【0097】
次いで、ステップP2では、サーバ10が、SIGNALn、1 を演算により求め、この演算結果と、クライアント20から受信したSIGNALn、1 との照合により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、共有鍵Ki−1 を用いて暗号化データを復号し、この復号したデータに含まれる、IDc、IDsおよびSIGNALn、1 に基づいて、クライアント20の正当性を判定する処理を実行する。
【0098】
上記判定の結果、受信データと、サーバ10に予め格納された記憶データとが一致して、クライアント20が正当であると判定される場合には、前述したSIGNALの定義式に従ってSIGNAL’n、1 (第二のワンタイムID)を生成するとともに、クライアント20から受信したDH公開値gxnと当該サーバ10に予め記憶されたDH公開値gynとからDH共通鍵gxnynを共有鍵Kn (第二の可変共有鍵)として生成し、この共有鍵Kn 、IDc、IDsおよびSIGNAL’n、1 を引数とするハッシュ関数hの関数値と、DH公開値gynと、SIGNAL’n、1 とをクライアント20に対して送信する処理を実行する(ステップP3)。一方、受信データと記憶データとが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0099】
次いで、ステップP4では、クライアント20が、SIGNAL’n、1 を演算により求め、この演算結果と、サーバ10から受信したSIGNAL’n、1 との照合により、サーバ10を識別し、識別できない場合には、通信を拒否する。識別できる場合には、サーバ10から受信したDH公開値gynと当該クライアント20に予め記憶されたDH公開値gxnとからDH共通鍵gxnynを共有鍵Kn として生成するとともに、この共有鍵Kn を用いてハッシュ関数hの関数値を演算により求め、この演算結果と、サーバ10から受信したハッシュ関数hの関数値との照合により、サーバ10の正当性を判定する処理を実行する。
【0100】
上記判定の結果、受信データと演算結果とが一致して、サーバ10が正当であると判定される場合には、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと演算結果とが一致せず、サーバ10が正当でないと判定される場合には、サーバ10へのアクセスを中止して、当該認証処理を終了する。
【0101】
なお、クライアント20が共有鍵Ki を共有したことをサーバ10側で確認する必要がある場合には、このステップP4でクライアント20がサーバ10の正当性を判定した後に、共有鍵Kn 、IDc、IDsを引数とするハッシュ関数hの関数値をサーバ10に対して送信するようにすればよい。
【0102】
以上のように、この第2の実施形態によれば、前回のセッションで生成された共有鍵Ki−1 (可変共有鍵)と今回のセッションにおける通信順序jとを引数とするハッシュ関数の関数値を求め、この関数値を当該セッションのj番目の通信にのみ有効なワンタイムID(SIGNAL)として用いるようにしたので、例えば、n番目のセッションで生成した共有鍵Kn が第三者に漏れたとしても、セッション毎に共有鍵Kn が変化することとなるので、漏れた共有鍵Kn を用いて生成されたワンタイムID(SIGNALn+1、j 、SIGNAL’n+1、j )以外のワンタイムIDを予測できなくなる。すなわち、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能になり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能になる。
【0103】
また、上記ワンタイムID(SIGNAL)を用いて、クライアント・サーバ間における認証を行うようにしたので、前述した第1の実施形態と同様、大量の計算要求・応答要求などによる計算量やメモリへのDoS攻撃を防止することができ、オープンなネットワーク環境下においても、ID情報の保護を図り、通信の安全性を向上させることができる。
【0104】
なお、DoS攻撃を防止する手法の一つとして、クッキー(乱数)を用いた手法が一般に知られている。この方法によれば、IPアドレスとクッキー生成者しか知らない秘密を組み合わせことにより、同一IPアドレスからのDoS攻撃を防ぐことができる。これに対して、本実施形態のSIGNALの場合には、DH共通鍵を知らない限り、次回有効となるSIGNALを予測することができない。よって、毎回の通信にSIGNALを利用することにより、クッキーと同様の効果が得られる。さらに、クッキーの場合はセッション中にIPアドレスが変わることを許さないが、SIGNALは変わっても良い。また、クッキーを用いた場合IPアドレスを偽造したDoS攻撃を防ぐことができないが、ワンタイムIDではIPアドレスが関係ないためこのような攻撃も防ぐことができる。
【0105】
また、本実施形態において、例えば、クライアント20がプロトコルの最初のメッセージを送り(ステップP1)、サーバ10がそれに対応してDH鍵交換の計算を行い(ステップP2)、2番目のメッセージを送った(ステップP3)場合を考える。もし、サーバ10のメッセージが途中で消失、もしくは攻撃者に横取りされ、クライアント20が受け取ることができなかった場合、クライアント20はもう一度最初のメッセージを送信する必要がある。このとき、サーバ10は正しいクライアント20が通信を送りなおしてきたのか、攻撃者が最初のメッセージを読み取りリプレイ攻撃を行っているのか、判断することができない。そこで、クライアント20はもう一度最初のメッセージを送りなおす場合、最初のチャレンジの際に送ったメッセージと同一の内容のものを送ることにし、サーバ10も以前返信したメッセージのコピーをそのまま送ることにする。これにより、無駄なDH鍵交換の計算を避けることができ、リプレイ攻撃によるDoS攻撃を防ぐことができる。
【0106】
なお、この実施形態では、前回のセッションで生成された共有鍵(DH共通鍵)Ki−1 と今回のセッションにおける通信順序jとを引数とするハッシュ関数の関数値を求め、この関数値を当該セッションのj番目の通信にのみ有効なワンタイムID(SIGNAL)として生成するようにしたが、例えば、次のようにSIGNALを生成することも可能である。
【0107】
【数4】
SSj =h1(Ki−1 )
SIGNALi、j =hash(SSi 、j)
SIGNAL’i、j =hash’(SSi 、j)
【0108】
上記SIGNALの定義式において、SSi は(i−1)番目のセッションで共有したDH共通鍵Ki−1 を引数とするハッシュ関数の関数値である。
また、この場合には、i番目のセッションで用いられる認証用鍵をAKi 、暗号化鍵をSKi として、これら鍵を、例えば、AKi =h2(Ki−1 )、SKi =h3(Ki−1 )という式から求めるようにしてもよい。なお、h1、h2、h3は、衝突のない一方向性ハッシュ関数である。
【0109】
このようにSSi から認証用鍵および暗号化鍵を生成する場合には、前述したステップP1において、クライアント20が、IDc、IDs、DH公開値gxnおよびSIGNALn、1 を暗号化してサーバ10に対して送信する際に、認証用鍵AKn を用いるようにする。また、ステップP3において、サーバ10がクライアント20に対して送信するハッシュ関数hに、暗号化鍵SKn 、IDc、IDsおよびSIGNAL’n、1 を引数とするハッシュ関数を用いるようにする。
【0110】
そうすることで、攻撃者が、仮に、SSi 、AKi 、SKi の何れか1つの値を知ることができたとしても、その他の値を計算することはできない。よって、攻撃者がi番目のセッションにおいて正規ユーザに成りすまし、鍵交換を行うためには、AKi 、SIGNAL、正規ユーザのID情報(IDs、IDc)が必要となり、暗号通信するためには、SKi SIGNAL、正規ユーザのID情報、通信回数の情報が必要となる。
また、n番目のセッションにおけるクライアント20のDH公開値gxnは、認証鍵AKi (h2(Ki−1 ))を用いて暗号化される。よって、AKi を知らない攻撃者はgxnを知ることができない。そのため、本方式で生成・共有されるDiffie−Hellman共通鍵は計算量的、かつ情報論的に安全である。
【0111】
[第3の実施形態]
前述した第1および第2の実施形態では、認証と同時にDiffie−Hellman鍵交換を行うようにしたが、この第3の実施形態では、Diffie−Hellman鍵交換を省略するようにしている。この第3の実施形態特有の部分以外は、第1の実施形態におけると同様である。この第3の実施形態において、第1の実施形態と同一部分には同一符号を付し、その説明を省略する。
【0112】
図6は本発明に係る認証方法の第3の実施形態を説明する図である。この第3の実施形態では、先ず、クライアント20が、乱数Rc(第一の乱数)を生成するとともに、サーバ10との間で予め共有化された共有鍵K1(第一の共有鍵)および乱数R0(初期乱数)を引数とする疑似乱数関数prf(K1、R0)の関数値をSIGNALc1(第一のワンタイムID)として求め(ステップS11)、このSIGNALc1と、共有鍵K1で暗号化した乱数Rcとをサーバ10に対して送信する処理を実行する(ステップS12)。
【0113】
次いで、サーバ10が、乱数Rs(第二の乱数)を生成するとともに、共有鍵K1で復号した乱数Rcと共有鍵K1とを引数とする疑似乱数関数prf(K1、Rc)の関数値をSIGNALs1(第二のワンタイムID)として求め(ステップS13)、このSIGNALs1と、共有鍵K1で暗号化した乱数Rsと、乱数R0+Rc(乱数R0、Rcを引数とする所定の演算結果、例えば、両者の排他的論理和など)とをクライアント20に対して送信する処理を実行する(ステップS14)。
【0114】
次いで、クライアント20が、乱数Rcと共有鍵K1に基づいてSIGNALs1を演算により求め、この演算結果とサーバ10から受信したSIGNALs1との比較により、サーバ10を識別するとともに、乱数R0+Rcの受信データと演算結果との比較により、サーバ10の正当性を判定する処理を実行する(ステップS15)。
【0115】
上記判定の結果、各々の受信データと演算結果とが一致して、サーバ10が正当であると判定される場合には、クライアント20が、乱数Rcおよび乱数Rsに基づいて共有鍵K2(第二の共有鍵)を生成するとともに、この共有鍵K2、乱数Rsおよび乱数Rcを引数とする疑似乱数関数prf(K2、Rs、Rc)の関数値をSIGNALc2(第三のワンタイムID)として求め、このSIGNALc2と、乱数Rc+Rs(乱数Rc、Rsを引数とする所定の演算結果)とをサーバ10に対して送信する処理を実行する(ステップS16)。一方、受信データと演算結果とが一致せず、サーバ10が正当でないと判定される場合には、サーバ10へのアクセスを中止して、当該認証処理を終了する。
【0116】
サーバ10は、クライアント20からSIGNALc2を受信すると、乱数Rcおよび乱数Rsに基づいて共有鍵K2を生成するとともに、共有鍵K2、乱数Rsおよび乱数Rcに基づいてSIGNALc2を演算により求め、この演算結果とクライアント20から受信したSIGNALc2との比較により、クライアント20を識別するとともに、乱数Rc+Rsの受信データと演算結果との比較により、クライアント20の正当性を判定する処理を実行する(ステップS17)。
【0117】
上記判定の結果、各々の受信データと演算結果とが一致して、クライアント20が正当であると判定される場合には、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと演算結果とが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0118】
以上のように、この第3の実施形態によれば、相互認証の過程で生成された乱数と、相互認証の過程で変化する共有鍵Kとを引数とする疑似乱数関数prfの関数値をワンタイムIDとして用いるようにしたので、前述した第1の実施形態と同様、ワンタイムIDの安全性を高めることができ、迅速かつ安全な相互認証を実現することができる。
【0119】
[第4の実施形態]
前述した第3の実施形態では、ワンタイムID(SIGNAL)の生成に用いる共有鍵を相互認証の過程で変化させるようにしたが、この第4の実施形態では、上記共有鍵を固定するようにしている。
【0120】
すなわち、この第4の実施形態では、図7に示すように、先ず、クライアント20が、乱数Rc(第一の乱数)を生成するとともに、サーバ10との間で予め共有化された共有鍵Kおよび乱数R0(初期乱数)を引数とする疑似乱数関数prf(K、R0)の関数値をSIGNALc1(第一のワンタイムID)として求め(ステップS21)、このSIGNALc1と、共有鍵Kで暗号化した乱数Rcとをサーバ10に対して送信する処理を実行する(ステップS22)。
【0121】
次いで、サーバ10が、乱数Rs(第二の乱数)を生成するとともに、共有鍵Kで復号した乱数Rcと共有鍵Kとを引数とする疑似乱数関数prf(K、Rc)の関数値をSIGNALs1(第二のワンタイムID)として求め(ステップS23)、このSIGNALs1と、共有鍵Kで暗号化した乱数Rsと、乱数R0+Rc(乱数R0、Rcを引数とする所定の演算結果)とをクライアント20に対して送信する処理を実行する(ステップS24)。
【0122】
次いで、クライアント20が、乱数Rcおよび共有鍵Kに基づいてSIGNALs1を演算により求め、この演算結果とサーバ10から受信したSIGNALs1との比較により、サーバ10を識別するとともに、乱数R0+Rcの受信データと演算結果との比較により、サーバ10の正当性を判定する処理を実行する(ステップS25)。
【0123】
上記判定の結果、各々の受信データと演算結果とが一致して、サーバ10が正当であると判定される場合には、クライアント20が、乱数Rc、乱数Rsおよび共有鍵Kを引数とする疑似乱数関数prf(K、Rs、Rc)の関数値をSIGNALc2(第三のワンタイムID)として求め、このSIGNALc2と、乱数Rc+Rs(乱数Rc、Rsを引数とする所定の演算結果)とをサーバ10に対して送信する処理を実行する(ステップS26)。一方、受信データと演算結果とが一致せず、サーバ10が正当でないと判定される場合には、サーバ10へのアクセスを中止して、当該認証処理を終了する。
【0124】
サーバ10は、クライアント20からSIGNALc2を受信すると、乱数Rc、乱数Rsおよび共有鍵Kに基づいてSIGNALc2を演算により求め、この演算結果とクライアント20から受信したSIGNALc2との比較により、クライアント20を識別するとともに、乱数Rc+Rsの受信データと演算結果との比較により、クライアント20の正当性を判定する処理を実行する(ステップS27)。
【0125】
上記判定の結果、各々の受信データと演算結果とが一致して、クライアント20が正当であると判定される場合には、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと演算結果とが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0126】
以上のように、この第4の実施形態によれば、相互認証の過程で生成された乱数と共有鍵Kとを引数とする疑似乱数関数prfの関数値をワンタイムIDとして用いるようにしたため、例えば、共有鍵Kが第三者に漏れたとしても、乱数によって疑似乱数関数prfの関数値が相互認証の過程で順次変化することとなるので、相互認証の過程で生成される乱数がわからない限り、ワンタイムIDを予測することができない。したがって、前述した第1〜第3の実施形態と同様、ワンタイムIDの安全性を高めることができ、迅速かつ安全な相互認証を実現することができる。
【0127】
[第5の実施形態]
図8は本発明に係る認証方法の第5の実施形態を説明する図である。この第5の実施形態では、先ず、クライアント20が、乱数Rci(第一の乱数)を生成するとともに、サーバ10との間で予め共有化された共有鍵Ki 、乱数Rci−1(第一の記憶乱数)および乱数Rsi−1(第二の記憶乱数)を引数とする疑似乱数関数prf(Ki 、Rci−1、Rsi−1)の関数値をSIGNALci(第一のワンタイムID)として求める処理を実行する(ステップS31)。
【0128】
なお、Rciはi番目のセッションでクライアント20により生成された乱数、Rsiはi番目のセッションでサーバ10により生成された乱数、Ki はi番目のセッションで使用する可変共有鍵をそれぞれ示している。また、前回(i−1番目)のセッションで生成された乱数Rci−1、Rsi−1は、サーバ10とクライアント20の各記憶装置13、23の記憶領域に格納されており、これら乱数Rci−1、Rsi−1に基づいて、共有鍵Ki が生成されるようになっている。
【0129】
そして、クライアント20は、SIGNALciを生成した後、IDc(クライアントID)、IDs(サーバID)および乱数Rciを共有鍵Ki で暗号化した暗号化データEKi(IDc、IDs、Rci)と、SIGNALciとをサーバ10に対して送信する処理を実行する(ステップS32)。
【0130】
サーバ10は、クライアント20からSIGNALciを受信すると、共有鍵Ki 、乱数Rci−1および乱数Rsi−1に基づいてSIGNALciを演算により求め、この演算結果とクライアント20から受信したSIGNALciとの比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、共有鍵Ki を用いて暗号化データEKi(IDc、IDs、Rci)を復号し、この復号したデータに含まれるIDcおよびIDsに基づいて、クライアント20の正当性を判定する処理を実行する。
【0131】
上記判定の結果、受信データと、サーバ10に予め格納された記憶データとが一致して、クライアント20が正当であると判定される場合には、乱数Rsi(第二の乱数)を生成するとともに、乱数Rci、乱数Rsi−1および共有鍵Ki を引数とする疑似乱数関数prf(Ki 、Rci、Rsi−1)の関数値をSIGNALsi(第二のワンタイムID)として求める。そして、乱数Rci−1、Rsi−1を格納していた記憶領域に、乱数Rci、Rsiをそれぞれ格納するとともに、これら乱数Rci、Rsiに基づき共有鍵Ki+1 を生成して記憶する処理を実行する(ステップS33)。
【0132】
次いで、サーバ10は、IDc、IDsおよび乱数Rsiを共有鍵Ki で暗号化した暗号化データEKi(IDs、IDc、Rsi)と、SIGNALsiとをクライアント20に対して送信する処理を実行する(ステップS34)。
一方、受信データと記憶データとが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0133】
クライアント20は、サーバ10からSIGNALsiを受信すると、共有鍵Ki 、乱数Rciおよび乱数Rsi−1に基づいてSIGNALsiを演算により求め、この演算結果とクライアント20から受信したSIGNALsiとの比較により、サーバ10を識別し、識別できない場合には、通信を拒否する。一方、識別できる場合には、共有鍵Ki を用いて暗号化データEKi(IDs、IDc、Rsi)を復号し、この復号したデータに含まれるIDcおよびIDsに基づいて、サーバ10の正当性を判定する処理を実行する。サーバ10を識別できる場合、通信相手を特定できるだけでなく、サーバ10が乱数Rciを受け取ったことも確認することができる。
【0134】
そして、上記判定の結果、受信データと、クライアント20に予め格納された記憶データとが一致して、サーバ10が正当であると判定される場合には、乱数Rci−1、Rsi−1を格納していた記憶領域に、乱数Rci、Rsiをそれぞれ格納して、これら乱数Rci、Rsiに基づき共有鍵Ki+1 を生成・記憶した後(ステップS35)、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと記憶データとが一致せず、サーバ10が正当でないと判定される場合には、サーバ10からのアクセスを拒否して、当該認証処理を終了する。
【0135】
以上のように、この第5の実施形態によれば、前述した第3の実施形態と同様の作用・効果が得られるのに加えて、IDc、IDsおよび乱数Rsiを共有鍵Ki で暗号化した暗号化データEKi(IDs、IDc、Rsi)を通信相手に送信するようにしたことにより、例えば、攻撃者によって暗号化データが書き換えられた場合においても、暗号化データに含まれるID情報(IDs、IDc)が正しく復号されないために、このデータを受け取ったサーバ10またはクライアント20は、送られてきた暗号化データが誤ったものであることを容易に検出でき、乱数を受け取らずに廃棄することが可能となる。また、SIGNALciの値が他の複数のクライアントと重複した場合においても、暗号化データに含まれるID情報(IDs、IDc)を参照することによって、通信相手を容易に特定することができる。
【0136】
さらに、この第5の実施形態によれば、通信相手がサーバ・クライアントのID情報(IDs、IDc)を正しく暗号化できているか否かを確認することによって、通信相手の正当性を判定するようにしたので、前述した第3の実施形態では3回必要であった通信回数を2回に低減することが可能となり、より効率的な認証が可能となる。
【0137】
[第6の実施形態]
図9は本発明に係る認証方法の第6の実施形態を説明する図である。この第6の実施形態では、先ず、クライアント20が、乱数Rci(第一の乱数)を生成するとともに、サーバ10との間で予め共有化された固定共有鍵K、乱数Rci−1(第一の記憶乱数)および乱数Rsi−1(第二の記憶乱数)を引数とする疑似乱数関数prf(K、Rci−1、Rsi−1)の関数値をSIGNALci(第一のワンタイムID)として求める処理を実行する(ステップS41)。
【0138】
なお、Rciはi番目のセッションでクライアント20により生成された乱数、Rsiはi番目のセッションでサーバ10により生成された乱数をそれぞれ示している。また、前回(i−1番目)のセッションで生成された乱数Rci−1、Rsi−1は、サーバ10とクライアント20の各記憶装置13、23の記憶領域に格納されている。
【0139】
そして、クライアント20は、SIGNALciを生成した後、IDc(クライアントID)、IDs(サーバID)および乱数Rciを共有鍵Kで暗号化した暗号化データEK (IDc、IDs、Rci)と、SIGNALciとをサーバ10に対して送信する処理を実行する(ステップS42)。
【0140】
サーバ10は、クライアント20からSIGNALciを受信すると、共有鍵K、乱数Rci−1および乱数Rsi−1に基づいてSIGNALciを演算により求め、この演算結果とクライアント20から受信したSIGNALciとの比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、共有鍵Kを用いて暗号化データEK (IDc、IDs、Rci)を復号し、この復号したデータに含まれるIDcおよびIDsに基づいて、クライアント20の正当性を判定する処理を実行する。
【0141】
上記判定の結果、受信データと、サーバ10に予め格納された記憶データとが一致して、クライアント20が正当であると判定される場合には、乱数Rsi(第二の乱数)を生成するとともに、乱数Rci、乱数Rsi−1および共有鍵Kを引数とする疑似乱数関数prf(K、Rci、Rsi−1)の関数値をSIGNALsi(第二のワンタイムID)として求める。そして、乱数Rci−1、Rsi−1を格納していた記憶領域に、乱数Rci、Rsiをそれぞれ格納する処理を実行する(ステップS43)。
【0142】
次いで、サーバ10は、IDc、IDsおよび乱数Rsiを共有鍵Kで暗号化した暗号化データEK (IDs、IDc、Rsi)と、SIGNALsiとをクライアント20に対して送信する処理を実行する(ステップS44)。
一方、受信データと記憶データとが一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0143】
クライアント20は、サーバ10からSIGNALsiを受信すると、共有鍵K、乱数Rciおよび乱数Rsi−1に基づいてSIGNALsiを演算により求め、この演算結果とクライアント20から受信したSIGNALsiとの比較により、サーバ10を識別し、識別できない場合には、通信を拒否する。一方、識別できる場合には、共有鍵Kを用いて暗号化データEK (IDs、IDc、Rsi)を復号し、この復号したデータに含まれるIDcおよびIDsに基づいて、サーバ10の正当性を判定する処理を実行する。サーバ10を識別できる場合、通信相手を特定できるだけでなく、サーバ10が乱数Rciを受け取ったことも確認することができる。
【0144】
そして、上記判定の結果、受信データと、クライアント20に予め格納された記憶データとが一致して、サーバ10が正当であると判定される場合には、乱数Rci−1、Rsi−1を格納していた記憶領域に、乱数Rci、Rsiをそれぞれ格納して、これら乱数Rci、Rsiに基づき共有鍵Kを生成・記憶した後(ステップS45)、当該認証処理を終了して、次のデータ伝送処理に移行する。一方、受信データと記憶データとが一致せず、サーバ10が正当でないと判定される場合には、サーバ10からのアクセスを拒否して、当該認証処理を終了する。
【0145】
以上のように、この第6の実施形態によれば、前述した第4の実施形態と同様の作用・効果が得られるのに加えて、例えば、攻撃者によって暗号化データが書き換えられた場合においても、データを受け取ったサーバ10またはクライアント20は、送られてきた暗号化データが誤ったものであることを容易に検出でき、乱数を受け取らずに廃棄することが可能となる。また、SIGNALciの値が他の複数のクライアントと重複した場合においても、暗号化データに含まれるID情報(IDs、IDc)を参照することによって、通信相手を容易に特定することができる。さらに、この第6の実施形態によれば、前述した第4の実施形態では3回必要であった通信回数を2回に低減することが可能となり、より効率的な認証が可能となる。
【0146】
[第7の実施形態]
この第7の実施形態では、ワンタイムIDを用いたリプレイ攻撃の防止方法について説明する。リプレイ攻撃とは、過去に正式な通信者が送信したときに有効であった通信情報を攻撃者(第三者)が盗聴し、再利用する攻撃のことである。
【0147】
先ず、OSPA(Optimal Strong Password Authentication)と呼ばれるパスワードを利用した認証方式(Chun−Li LIN, Hung−Min SUN, Tzonelih HWANG, Attacks and Solutions on Strong− Password Authentication, IEICE TRANS. COMMUN., VOL.E84−B, NO.9, September 2001.)について、図10に基づいて説明する。
当該認証に先立って、クライアント20には、ハッシュ関数hおよびパスワードPが予め記憶保持されており、サーバ10には、ハッシュ関数h、セッション回数n、IDc(クライアントID)および検証用情報h2 (P@n )が予め記憶保持されている。検証用情報h2 (P@n)は、クライアント20の正当性を検証するための情報であって、パスワードPと通信回数nの排他的論理和を用いてハッシュ関数hにより生成された情報である。なお、h2 (P@n)は、ハッシュ関数hの計算を2回行うこと、つまりh(h(P@n))を示しており、この数式中の@は排他的論理和を示している。
【0148】
この認証方式では、先ず、クライアント20がサーバ10に対してIDcを送信する(ステップS51)。
サーバ10は、クライアント20からIDcを受信すると、この受信したIDcと、予め記憶しているIDcとの比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、サーバ10に対してセッション回数nを送信する(ステップS52)。
【0149】
クライアント20は、サーバ10からセッション回数nを受信すると、この受信したセッション回数n、予め記憶しているハッシュ関数hおよびパスワードPを用いて、第1〜第3の認証用情報C1、C2、C3を生成し(ステップS53)、これらC1、C2、C3をサーバ10に対して送信する(ステップS54)。ここで、C1=h(P@n)@h2 (P@n)、C2=h2 (P@(n+1))@h(P@n)、C3=h3 (P@(n+1))である。
【0150】
サーバ10は、クライアント20からC1、C2、C3を受信すると、先ず、受信したC1≠C2であることを確認する。これは、C1=h(P@n)@h2 (P@n)、C2=h(P@n)@h2 (P@n)、C3=h3 (P@n)と計算して送った場合においても、サーバ10がクライアント20を認証してしまい、次の検証用情報として、h2 (P@(n+1) )ではなくh2 (P@n)を記憶してしまう不具合が発生する可能性があることから、このような不具合の発生を防ぐために行われるものである。
【0151】
次いで、サーバ10は、C1、C2から、h(P@n)、h2 (P@(n+1))を演算により求める。すなわち、受信したC1と、予め記憶している検証用情報h2 (P@n )との排他的論理和を求めることでh(P@n)を導き出し、このh(P@n)と受信したC2との排他的論理和を求めることでh2 (P@(n+1))を導き出す。
【0152】
次いで、予め記憶しているハッシュ関数hを用いて、求めたh(P@n)からh(h(P@n))を計算し、このh(h(P@n))が、予め記憶している検証用情報h2 (P@n )と一致するか否かを検証する。同時に、求めたh2 (P@(n+1))から上記ハッシュ関数hを用いてh(h2 (P@(n+1)))を計算し、このh(h2 (P@(n+1)))が、受信したC3と一致するか否かを検証する(ステップS55)。
【0153】
これら検証の結果、何れもが一致して、クライアント20が正当であると判定される場合には、検証用情報をh2 (P@n )からh2 (P@(n+1) )に更新し、セッション回数をnからn+1に更新した後、クライアント20からのアクセスを承諾して、当該認証処理を終了する。一方、上記検証の結果、少なくとも何れか一方が一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0154】
上記認証方式によれば、盗聴者に対して安全な認証を行うことができるとともに、セッション毎に検証用情報をh2 (P@n )からh2 (P@(n+1) )へと更新することができるという利点がある。
しかしながら、上記認証方式にあっては、一度使用された認証情報C1、C2、C3をもう一度利用することによるリプレイ攻撃を防止することができないという問題点があった。
【0155】
そこで、本発明者等は、このような問題点を解決する認証方式として、次のような認証方式を開発した。
図11は、本発明に係る認証方法の第7の実施形態を説明する図である。この図11に示すように、クライアント20に、ハッシュ関数hおよびパスワードPが予め記憶保持され、サーバ10に、ハッシュ関数h、セッション回数n、IDcおよび検証用情報h2 (P@n )が予め記憶保持されている場合には、先ず、クライアント20がサーバ10に対してIDcを送信する(ステップS61)。
【0156】
サーバ10は、クライアント20からIDcを受信すると、この受信したIDcと、予め記憶しているIDcとの比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、サーバ10に対してセッション回数nを送信する(ステップS62)。
【0157】
クライアント20は、サーバ10からセッション回数nを受信すると、この受信したセッション回数n、予め記憶しているハッシュ関数hおよびパスワードPを用いて、第1〜第3の認証用情報C1、C2、C3、SIGNALn を生成し(ステップS63)、これらC1、C2、C3、SIGNALn をサーバ10に対して送信する(ステップS64)。ここで、C1=h(P@n)@h2 (P@n)、C2=h2 (P@(n+1))@h(P@n)、C3=h3 (P@(n+1))、SIGNALn =h(h2 (P@n)、n)である。すなわち、n番目のセッションで使用するワンタイムIDであるSIGNALn が、検証用情報h2 (P@n )およびセッション回数nを引数とするハッシュ関数hの関数値となっている。
【0158】
サーバ10は、クライアント20からC1、C2、C3、SIGNALn を受信すると、先ず、予め記憶している検証用情報h2 (P@n )とセッション回数nとに基づいてSIGNALn を演算により求め、この演算結果とクライアント20から受信したSIGNALn との比較により、クライアント20を識別し、識別できない場合には、通信を拒否する。識別できる場合には、受信したC1≠C2であることを確認した後、C1およびC2からh(P@n)、h2 (P@(n+1))を演算により求める。
【0159】
次いで、サーバ10は、予め記憶しているハッシュ関数hを用いて、求めたh(P@n)からh(h(P@n))を計算し、このh(h(P@n))が、予め記憶している検証用情報h2 (P@n )と一致するか否かを検証する。同時に、求めたh2 (P@(n+1))から上記ハッシュ関数hを用いてh(h2 (P@(n+1)))を計算し、このh(h2 (P@(n+1)))が、受信したC3と一致するか否かを検証する(ステップS65)。
【0160】
これら検証の結果、何れもが一致して、クライアント20が正当であると判定される場合には、検証用情報をh2 (P@n )からh2 (P@(n+1) )に更新し、セッション回数をnからn+1に更新した後、クライアント20からのアクセスを承諾して、当該認証処理を終了する。一方、上記検証の結果、少なくとも何れか一方が一致せず、クライアント20が正当でないと判定される場合には、クライアント20からのアクセスを拒否して、当該認証処理を終了する。
【0161】
上記認証方式によれば、検証用情報であるh2 (P@n )が攻撃者に知られる虞がないので、次のセッションのSIGNALが攻撃者に予測されることはない。しかも、SIGNALは他のセッションで使用できないので、攻撃者によるリプレイ攻撃を効果的に防ぐことができる。
【0162】
なお、図12に示すように、ハッシュ関数hおよびパスワードPに加えて、予めセッション回数nもクライアント20に記憶保持されている場合には、前述したステップS61、S62の処理を省略することが可能である。したがって、この場合には、ID情報(IDc)の盗聴に対する保護を図りつつも、攻撃者によるリプレイ攻撃を効果的に防ぐことが可能である。
【0163】
なお、以上の各実施形態においては、複数の装置間の認証にワンタイムIDを用いるようにしたが、一装置内の複数のアプリケーション間の認証にワンタイムIDを用いることも可能である。また、以上の各実施形態においては、本発明に係る認証方法をクライアントサーバシステムに適用した場合について例示したが、これに限られるものではなく、例えば、P2P(Peer to Peer)システムに本発明に係る認証方法を適用することも可能である。
【0164】
また、本発明に係る認証方法をユーザによるアクセス毎に利用することも可能であり、その場合には、ユーザによるパスワードの入力を促して、パスワード、若しくはパスワードから生成した値(ワンタイムパスワードを含む。)をワンタイムIDとともに認証用のデータとして用いることが可能である。
【0165】
【発明の効果】
以上説明したように、請求項1〜請求項6の何れかに記載の発明によれば、盗聴が困難で安全性に優れたワンタイムIDを生成することが可能となり、ワンタイムIDの将来にわたる安全性(PFS)を実現することが可能となる。
【0166】
請求項7〜請求項35の何れかに記載の発明によれば、請求項1〜請求項6の何れかに記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、装置間(クライアント・サーバ間)の認証を行うようにしたので、第三者が送信者・受信者を特定できなくなる一方で、正当な送信者・受信者であればワンタイムIDを識別情報として把握できるようになる。
したがって、DoS攻撃やなりすまし等に対する耐性を強化することができ、オープンなネットワーク環境下においても、ID情報の保護を図り、通信の安全性を向上させることができる。また、リモートアクセスが可能になり、利便性の向上を図ることもできる。
【0167】
請求項8に記載の発明によれば、従来の鍵交換・認証方式では3回必要であった通信回数を2回に低減することが可能になり、迅速かつ安全な認証および鍵交換を実現することが可能になる。
【図面の簡単な説明】
【図1】本発明に係る認証システムの一実施形態を示す概略構成図である。
【図2】図1のサーバの概略構成を示すブロック図である。
【図3】図1のクライアントの概略構成を示すブロック図である。
【図4】本発明に係る認証方法の第1の実施形態を説明する図である。
【図5】本発明に係る認証方法の第2の実施形態を説明する図である。
【図6】本発明に係る認証方法の第3の実施形態を説明する図である。
【図7】本発明に係る認証方法の第4の実施形態を説明する図である。
【図8】本発明に係る認証方法の第5の実施形態を説明する図である。
【図9】本発明に係る認証方法の第6の実施形態を説明する図である。
【図10】OSPAと呼ばれる従来の認証方法を説明する図である。
【図11】本発明に係る認証方法の第7の実施形態を説明する図である。
【図12】図11の変形例を説明する図である。
【図13】P−SIGMAと呼ばれる従来の認証方法を説明する図である。
【符号の説明】
10 サーバ(第二装置)
20 クライアント(第一装置)
11、21 CPU
Claims (35)
- 複数の装置間またはアプリケーション間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法であって、
上記認証を行う装置またはアプリケーションの各々において、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵を引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするワンタイムIDの生成方法。 - 複数の装置間またはアプリケーション間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法であって、
上記認証を行う装置またはアプリケーションの各々において、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵と通信順序または回数に関する情報とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするワンタイムIDの生成方法。 - 複数の装置間またはアプリケーション間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを生成する方法であって、
上記認証を行う装置またはアプリケーションの各々において、上記認証が必要な所定の通信単位内で乱数を生成するとともに、この乱数と所定の共有鍵とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするワンタイムIDの生成方法。 - 一方の装置と他方の装置間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを双方の装置で生成するとともに、一方の装置が他方の装置にワンタイムIDを送信して、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、他方の装置を識別或いは認証する場合において、一方の装置および他方の装置がワンタイムIDを生成する方法であって、
一方の装置および他方の装置は、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵を引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするワンタイムIDの生成方法。 - 一方の装置と他方の装置間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを双方の装置で生成するとともに、一方の装置が他方の装置にワンタイムIDを送信して、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、他方の装置を識別或いは認証する場合において、一方の装置および他方の装置がワンタイムIDを生成する方法であって、
一方の装置および他方の装置は、上記認証が必要な所定の通信単位毎に変化する可変共有鍵を生成するとともに、この可変共有鍵と通信順序または回数に関する情報とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするワンタイムIDの生成方法。 - 一方の装置と他方の装置間における認証において一回限り使用可能な識別情報をワンタイムIDとして、当該ワンタイムIDを双方の装置で生成するとともに、一方の装置が他方の装置にワンタイムIDを送信して、他方の装置が、一方の装置から受信したワンタイムIDと自らが生成したワンタイムIDとの比較・照合により、他方の装置を識別或いは認証する場合において、一方の装置および他方の装置がワンタイムIDを生成する方法であって、
一方の装置および他方の装置は、上記認証が必要な所定の通信単位内で乱数を生成するとともに、この乱数と所定の共有鍵とを引数とする一方向関数の関数値を求め、この関数値から上記ワンタイムIDを生成するようにしたことを特徴とするワンタイムIDの生成方法。 - 請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証を行う認証方法であって、
上記第一装置が、上記第二装置との間で予め共有化された可変共有鍵を用いて上記ワンタイムIDを生成するとともに、この生成したワンタイムIDと、当該第一装置に予め設定されたIDを少なくとも引数とする一方向関数Fcの関数値と、当該第一装置に予め記憶されたDiffie−Hellman公開値の一方とを上記第二装置に対して送信するステップと、
上記第二装置が、上記ワンタイムIDおよび上記一方向関数Fcの関数値を演算により求め、この演算結果と、上記第一装置から受信したワンタイムIDおよび一方向関数Fcの関数値との照合により、上記第一装置の正当性を判定するステップと、
上記第二装置が、上記第一装置を正当であると判定した場合に、当該第二装置に予め設定されたIDを少なくとも引数とする一方向関数Fsの関数値と、当該第二装置に予め記憶されたDiffie−Hellman公開値の他方とを上記第一装置に対して送信するステップと、
上記第一装置が、上記一方向関数Fsの関数値を演算により求め、この演算結果と、上記第二装置から受信した一方向関数Fsの関数値との照合により、上記第二装置の正当性を判定するステップとを有することを特徴とする認証方法。 - 上記一方向関数Fcとして、所定の共有鍵、上記Diffie−Hellman公開値の一方、上記第一装置に予め設定されたID、上記ワンタイムIDを引数とする疑似乱数関数を用いるとともに、
上記一方向関数Fsとして、上記所定の共有鍵、上記Diffie−Hellman公開値の一方、上記Diffie−Hellman公開値の他方、上記第二装置に予め設定されたID、上記ワンタイムIDを引数とする疑似乱数関数を用いるようにしたことを特徴とする請求項7に記載の認証方法。 - 請求項2または請求項5に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証を行う認証方法であって、
上記第一装置が、上記第二装置との間で予め共有化された第一の可変共有鍵と当該第一装置の通信順序に関する情報とを引数とする一方向関数の関数値を第一のワンタイムIDとして生成するとともに、上記第一の可変共有鍵を用いて、当該第一装置に予め設定されたID、上記第二装置に予め設定されたID、当該第一装置に予め記憶されたDiffie−Hellman公開値の一方および上記第一のワンタイムIDを暗号化し、この暗号化データと上記第一のワンタイムIDとを上記第二装置に対して送信するステップと、
上記第二装置が、上記第一のワンタイムIDを演算により求め、この演算結果と、上記第一装置から受信した上記第一のワンタイムIDとの照合により、上記第一装置を識別するステップと、
上記第二装置が、上記第一装置を識別できた場合に、上記第一の可変共有鍵を用いて上記暗号化データを復号し、この復号したデータに含まれる、上記第一装置に予め設定されたID、当該第二装置に予め設定されたIDおよび上記第一のワンタイムIDに基づいて、上記第一装置の正当性を判定するステップと、
上記第二装置が、上記第一装置を正当であると判定した場合に、上記第一の可変共有鍵と当該第二装置の通信順序に関する情報とを引数とする一方向関数の関数値を第二のワンタイムIDとして生成するとともに、上記第一装置から受信したDiffie−Hellman公開値の一方と当該第二装置に予め記憶されたDiffie−Hellman公開値の他方とからDiffie−Hellman共通鍵を第二の可変共有鍵として生成し、この第二の可変共有鍵、上記第一装置に予め設定されたID、当該第二装置に予め設定されたIDおよび上記第二のワンタイムIDを引数とする一方向関数hの関数値と、上記Diffie−Hellman公開値の他方と、上記第二のワンタイムIDとを上記第一装置に対して送信するステップと、
上記第一装置が、上記第二のワンタイムIDを演算により求め、この演算結果と、上記第二装置から受信した上記第二のワンタイムIDとの照合により、上記第二装置を識別するステップと、
上記第一装置が、上記第二装置を識別できた場合に、上記第二装置から受信した上記Diffie−Hellman公開値の他方と当該第一装置に予め記憶された上記Diffie−Hellman公開値の一方とからDiffie−Hellman共通鍵を上記第二の可変共有鍵として生成するとともに、この第二の可変共有鍵を用いて上記一方向関数hの関数値を演算により求め、この演算結果と、上記第二装置から受信した一方向関数hの関数値との照合により、上記第二装置の正当性を判定するステップとを有することを特徴とする認証方法。 - 上記第二のワンタイムIDを生成する一方向関数として、上記第一のワンタイムIDを生成する一方向関数とは異なる一方向関数を用いるようにしたことを特徴とする請求項9に記載の認証方法。
- 請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証を行う認証方法であって、
上記第一装置が、第一の乱数を生成するとともに、上記第二装置との間で予め共有化された第一の共有鍵を引数とする一方向関数の関数値を第一のワンタイムIDとして求め、この第一のワンタイムIDと上記第一の乱数とを上記第二装置に対して送信するステップと、
上記第二装置が、第二の乱数を生成するとともに、上記第一の乱数と上記第一の共有鍵とを引数とする一方向関数の関数値を第二のワンタイムIDとして求め、この第二のワンタイムIDと上記第二の乱数とを上記第一装置に対して送信するステップと、
上記第一装置が、上記第一の乱数および上記第一の共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記第二装置から受信した上記第二のワンタイムIDとの比較により、上記第二装置の正当性を判定するステップと、
上記第一装置が、上記第一の乱数および上記第二の乱数に基づいて第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数を引数とする一方向関数の関数値を第三のワンタイムIDとして求め、この第三のワンタイムIDを上記第二装置に対して送信するステップと、
上記第二装置が、上記第一の乱数および上記第二の乱数に基づいて上記第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記第一装置から受信した上記第三のワンタイムIDとの比較により、上記第一装置の正当性を判定するステップとを有することを特徴とする認証方法。 - 請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証を行う認証方法であって、
上記第一装置が、第一の乱数を生成するとともに、上記第二装置との間で予め共有化された共有鍵を引数とする一方向関数の関数値を第一のワンタイムIDとして求め、この第一のワンタイムIDと上記第一の乱数を上記第二装置に対して送信するステップと、
上記第二装置が、第二の乱数を生成するとともに、上記第一の乱数と上記共有鍵とを引数とする一方向関数の関数値を第二のワンタイムIDとして求め、この第二のワンタイムIDと上記第二の乱数を上記第一装置に対して送信するステップと、
上記第一装置が、上記第一の乱数および上記共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記第二装置から受信した上記第二のワンタイムIDとの比較により、上記第二装置の正当性を判定するステップと、
上記第一装置が、上記第一の乱数、上記第二の乱数および上記共有鍵を引数とする一方向関数の関数値を第三のワンタイムIDとして求め、この第三のワンタイムIDを上記第二装置に対して送信するステップと、
上記第二装置が、上記第一の乱数、上記第二の乱数および上記共有鍵に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記第一装置から受信した上記第三のワンタイムIDとの比較により、上記第一装置の正当性を判定するステップとを有することを特徴とする認証方法。 - 上記第一の乱数と上記第二の乱数を、上記第一装置と上記第二装置との間で予め共有化された共有鍵で暗号化した状態で、送信するようにしたことを特徴とする請求項11または請求項12に記載の認証方法。
- 上記第二装置が上記第二のワンタイムIDと上記第二の乱数とを上記第一装置に対して送信するステップにおいて、上記第二装置は、上記第一装置との間で予め共有化された乱数を初期乱数として、この初期乱数と上記第一の乱数を引数とする所定の演算を行い、この演算結果を上記第一装置に対して送信する一方、上記第一装置は、上記第二装置の正当性の判定材料として、上記第二装置から受信した上記演算結果を、上記第二のワンタイムIDとともに用いることを特徴とする請求項11〜請求項13の何れかに記載の認証方法。
- 上記第一装置が上記第三のワンタイムIDを上記第二装置に対して送信するステップにおいて、上記第一装置は、上記第一の乱数と上記第二の乱数を引数とする所定の演算を行い、この演算結果を上記第二装置に対して送信する一方、上記第二装置は、上記第一装置の正当性の判定材料として、上記第一装置から受信した上記演算結果を、上記第三のワンタイムIDとともに用いることを特徴とする請求項11〜請求項14の何れかに記載の認証方法。
- 請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いて、第一装置と第二装置間における認証を行う認証方法であって、
上記第一装置が、第一の乱数を生成するとともに、上記第二装置との間で予め共有化された共有鍵、第一の記憶乱数および第二の記憶乱数を引数とする一方向関数の関数値を第一のワンタイムIDとして求め、当該第一装置に予め設定されたID、上記第二装置に予め設定されたIDおよび上記第一の乱数を上記共有鍵で暗号化した第一の暗号化データと、上記第一のワンタイムIDとを上記第二装置に対して送信するステップと、
上記第二装置が、上記第一のワンタイムIDを演算により求め、この演算結果と、上記第一装置から受信した上記第一のワンタイムIDとの照合により、上記第一装置を識別するステップと、
上記第二装置が、上記第一装置を識別できた場合に、上記共有鍵を用いて上記第一の暗号化データを復号し、この復号したデータに含まれる、上記第一装置に予め設定されたIDおよび当該第二装置に予め設定されたIDに基づいて、上記第一装置の正当性を判定するステップと、
上記第二装置が、上記第一装置を正当であると判定した場合に、第二の乱数を生成するとともに、上記第一の乱数、上記第二の記憶乱数および上記共有鍵を引数とする一方向関数の関数値を第二のワンタイムIDとして求め、上記第一装置に予め設定されたID、当該第二装置に予め設定されたIDおよび上記第二の乱数を上記共有鍵で暗号化した第二の暗号化データと、上記第二のワンタイムIDとを上記第一装置に対して送信するステップと、
上記第二装置が、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換するステップと、
上記第一装置が、上記第二のワンタイムIDを演算により求め、この演算結果と、上記第二装置から受信した上記第二のワンタイムIDとの照合により、上記第二装置を識別するステップと、
上記第一装置が、上記第二装置を識別できた場合に、上記共有鍵を用いて上記第二の暗号化データを復号し、この復号したデータに含まれる、上記第二装置に予め設定されたIDおよび当該第一装置に予め設定されたIDに基づいて、上記第二装置の正当性を判定するステップと、
上記第一装置が、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換するステップとを有することを特徴とする認証方法。 - 上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換した後に、これら第一の記憶乱数および第二の記憶乱数に基づいて上記共有鍵を生成することにより、当該共有鍵を変化させるようにしたことを特徴とする請求項16に記載の認証方法。
- 請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で認証を行うサーバであって、
上記クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値と、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方と、上記ワンタイムIDとを上記クライアントから受信する受信手段と、
上記一方向関数の関数値Fcおよび上記ワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記ワンタイムIDおよび上記一方向関数Fcの関数値との比較により、上記クライアントの正当性を判定する判定手段と、
上記判定手段が上記クライアントを正当であると判定した場合に、当該サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、当該サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記クライアントに対して送信する送信手段とを備えることを特徴とするサーバ。 - 請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で認証を行うクライアントであって、
上記サーバとの間で予め共有化された可変共有鍵を用いて上記ワンタイムIDを生成するとともに、当該クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値を演算により求め、これらワンタイムIDおよび一方向関数Fcの関数値と、当該クライアントに予め記憶されたDiffie−Hellman公開値の一方とを上記サーバに対して送信する送信手段と、
上記サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記サーバから受信する受信手段と、
上記一方向関数Fsの関数値を演算により求め、この演算結果と、上記サーバから受信した上記一方向関数Fsの関数値との比較により、上記サーバの正当性を判定する判定手段とを備えることを特徴とするクライアント。 - 請求項18に記載のサーバと、請求項19に記載のクライアントとを備えてなることを特徴とする認証システム。
- 請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムIDに基づいてクライアントとの間で認証を行うサーバに実行させるプログラムであって、
上記クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値と、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方と、上記ワンタイムIDとを上記クライアントから受信する処理と、
上記一方向関数の関数値Fcおよび上記ワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記ワンタイムIDおよび上記一方向関数Fcの関数値との比較により、上記クライアントの正当性を判定する処理と、
上記クライアントが正当であると判定された場合に、上記サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記クライアントに対して送信する処理とを上記サーバに実行させることを特徴とするプログラム。 - 請求項1または請求項4に記載のワンタイムIDの生成方法により生成されたワンタイムIDに基づいてサーバとの間で認証を行うクライアントに実行させるプログラムであって、
上記サーバとの間で予め共有化された可変共有鍵を用いて上記ワンタイムIDを生成するとともに、上記クライアントに予め設定されたクライアントIDを少なくとも引数とする一方向関数Fcの関数値を演算により求め、これらワンタイムIDおよび一方向関数Fcの関数値と、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方とを上記サーバに対して送信する処理と、上記サーバに予め設定されたサーバIDを少なくとも引数とする一方向関数Fsの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方とを上記サーバから受信する処理と、
上記一方向関数Fsの関数値を演算により求め、この演算結果と、上記サーバから受信した上記一方向関数Fsの関数値との比較により、上記サーバの正当性を判定する処理とを上記クライアントに実行させることを特徴とするプログラム。 - 請求項2または請求項5に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で認証を行うサーバであって、
上記クライアントとの間で予め共有化された第一の可変共有鍵と上記クライアントの通信順序に関する情報とを引数とする一方向関数の関数値を第一のワンタイムIDとして、この第一のワンタイムID、上記クライアントに予め設定されたクライアントID、当該サーバに予め設定されたサーバID、上記クライアントに予め記憶されたDiffie−Hellman公開値の一方を上記第一の可変共有鍵で暗号化した暗号化データと、上記第一のワンタイムIDとを上記クライアントから受信する受信手段と、
上記第一のワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記第一のワンタイムIDとの照合により、上記クライアントを識別し、上記クライアントを識別できた場合に、上記第一の可変共有鍵を用いて上記暗号化データを復号し、この復号したデータに含まれる、上記クライアントID、上記サーバIDおよび上記第一のワンタイムIDに基づいて、上記クライアントの正当性を判定する判定手段と、
上記判定手段が上記クライアントを正当であると判定した場合に、上記第一の可変共有鍵と当該サーバの通信順序に関する情報とを引数とする一方向関数の関数値を第二のワンタイムIDとして生成するとともに、上記クライアントから受信したDiffie−Hellman公開値の一方と当該サーバに予め記憶されたDiffie−Hellman公開値の他方とからDiffie−Hellman共通鍵を第二の可変共有鍵として生成し、この第二の可変共有鍵、上記クライアントID、上記サーバIDおよび上記第二のワンタイムIDを引数とする一方向関数hの関数値と、上記Diffie−Hellman公開値の他方と、上記第二のワンタイムIDとを上記クライアントに対して送信する送信手段とを備えることを特徴とするサーバ。 - 請求項2または請求項5に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で認証を行うクライアントであって、
上記サーバとの間で予め共有化された第一の可変共有鍵と当該クライアントの通信順序に関する情報とを引数とする一方向関数の関数値を第一のワンタイムIDとして生成するとともに、上記第一の可変共有鍵を用いて、当該クライアントに予め設定されたクライアントID、上記サーバに予め設定されたサーバID、当該クライアントに予め記憶されたDiffie−Hellman公開値の一方および上記第一のワンタイムIDを暗号化し、この暗号化データと上記第一のワンタイムIDとを上記サーバに対して送信する送信手段と、
上記第一の可変共有鍵と上記サーバの通信順序に関する情報とを引数とする一方向関数の関数値を第二のワンタイムIDとし、Diffie−Hellman共通鍵を第二の可変共有鍵として、上記第二のワンタイムID、上記第二の可変共有鍵、上記クライアントIDおよび上記サーバIDを引数とする一方向関数hの関数値と、上記サーバに予め記憶されたDiffie−Hellman公開値の他方と、上記第二のワンタイムIDとを上記サーバから受信する受信手段と、
上記第二のワンタイムIDを演算により求め、この演算結果と、上記サーバから受信した上記第二のワンタイムIDとの照合により、上記サーバを識別し、上記サーバを識別した場合に、上記サーバから受信した上記Diffie−Hellman公開値の他方と当該クライアントに予め記憶された上記Diffie−Hellman公開値の一方とからDiffie−Hellman共通鍵を上記第二の可変共有鍵として生成するとともに、この第二の可変共有鍵を用いて上記一方向関数hの関数値を演算により求め、この演算結果と、上記サーバから受信した一方向関数hの関数値との照合により、上記サーバの正当性を判定する判定手段とを備えることを特徴とするクライアント。 - 請求項23に記載のサーバと、請求項24に記載のクライアントとを備えてなることを特徴とする認証システム。
- 請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で相互に認証を行うサーバであって、
上記クライアントとの間で予め共有化された第一の共有鍵を引数とする一方向関数の関数値を第一のワンタイムIDとして、この第一のワンタイムIDと、上記クライアントで生成された第一の乱数とを上記クライアントから受信する第一受信手段と、
第二の乱数を生成するとともに、上記第一の乱数と上記第一の共有鍵とを引数とする一方向関数の関数値を第二のワンタイムIDとして求め、この第二のワンタイムIDと上記第二の乱数とを上記クライアントに対して送信する送信手段と、
上記第一の乱数、上記第二の乱数および第二の共有鍵を引数とする一方向関数の関数値を第三のワンタイムIDとして、この第三のワンタイムIDを上記クライアントから受信する第二受信手段と、
上記第一の乱数および上記第二の乱数に基づいて上記第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記クライアントから受信した上記第三のワンタイムIDとの比較により、上記クライアントの正当性を判定する判定手段とを備えることを特徴とするサーバ。 - 請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で相互に認証を行うクライアントであって、
第一の乱数を生成するとともに、上記サーバとの間で予め共有化された第一の共有鍵を引数とする一方向関数の関数値を第一のワンタイムIDとして求め、この第一のワンタイムIDと上記第一の乱数とを上記サーバに対して送信する第一送信手段と、
上記第一の乱数と上記第一の共有鍵とを引数とする一方向関数の関数値を第二のワンタイムIDとして、この第二のワンタイムIDと、上記サーバで生成された第二の乱数とを上記サーバから受信する受信手段と、
上記第一の乱数および上記第一の共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記サーバから受信した上記第二のワンタイムIDとの比較により、上記サーバの正当性を判定する判定手段と、
上記判定手段により上記サーバが正当であると判定された場合に、上記第一の乱数および上記第二の乱数に基づいて第二の共有鍵を生成するとともに、この第二の共有鍵、上記第一の乱数および上記第二の乱数を引数とする一方向関数の関数値を第三のワンタイムIDとして求め、この第三のワンタイムIDを上記サーバに対して送信する第二送信手段とを備えることを特徴とするクライアント。 - 請求項26に記載のサーバと、請求項27に記載のクライアントとを備えてなることを特徴とする認証システム。
- 請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で相互に認証を行うサーバであって、
上記クライアントとの間で予め共有化された共有鍵を引数とする一方向関数の関数値を第一のワンタイムIDとして、この第一のワンタイムIDと、上記クライアントで生成された第一の乱数とを上記クライアントから受信する第一受信手段と、
第二の乱数を生成するとともに、上記第一の乱数と上記共有鍵とを引数とする一方向関数の関数値を第二のワンタイムIDとして求め、この第二のワンタイムIDと上記第二の乱数を上記クライアントに対して送信する送信手段と、
上記共有鍵、上記第一の乱数および上記第二の乱数を引数とする一方向関数の関数値を第三のワンタイムIDとして、この第三のワンタイムIDを上記クライアントから受信する第二受信手段と、
上記第一の乱数、上記第二の乱数および上記共有鍵に基づいて上記第三のワンタイムIDを演算により求め、この演算結果と上記クライアントから受信した上記第三のワンタイムIDとの比較により、上記クライアントの正当性を判定する判定手段とを備えることを特徴とするサーバ。 - 請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で相互に認証を行うクライアントであって、
第一の乱数を生成するとともに、上記サーバとの間で予め共有化された共有鍵を引数とする一方向関数の関数値を第一のワンタイムIDとして求め、この第一のワンタイムIDと上記第一の乱数を上記サーバに対して送信する第一送信手段と、
上記第一の乱数と上記共有鍵とを引数とする一方向関数の関数値を第二のワンタイムIDとして、この第二のワンタイムIDと、上記サーバで生成された第二の乱数とを上記サーバから受信する受信手段と、
上記第一の乱数および上記共有鍵に基づいて上記第二のワンタイムIDを演算により求め、この演算結果と上記サーバから受信した上記第二のワンタイムIDとの比較により、上記サーバの正当性を判定する判定手段と、
上記判定手段により上記サーバが正当であると判定された場合に、上記第一の乱数、上記第二の乱数および上記共有鍵を引数とする一方向関数の関数値を第三のワンタイムIDとして求め、この第三のワンタイムIDを上記サーバに対して送信する第二送信手段とを備えることを特徴とするクライアント。 - 請求項29に記載のサーバと、請求項30に記載のクライアントとを備えてなることを特徴とする認証システム。
- 請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてクライアントとの間で相互に認証を行うサーバであって、
上記クライアントとの間で予め共有化された共有鍵、第一の記憶乱数および第二の記憶乱数を引数とする一方向関数の関数値を第一のワンタイムIDとして、この第一のワンタイムIDを上記クライアントから受信するとともに、上記クライアントで生成された第一の乱数、上記クライアントに予め設定されたクライアントID、当該サーバに予め設定されたサーバIDを上記共有鍵で暗号化した第一の暗号化データを上記クライアントから受信する受信手段と、
上記第一のワンタイムIDを演算により求め、この演算結果と、上記クライアントから受信した上記第一のワンタイムIDとの照合により、上記クライアントを識別し、上記クライアントを識別できた場合に、上記共有鍵を用いて上記第一の暗号化データを復号し、この復号したデータに含まれる上記クライアントIDおよび上記サーバIDに基づいて、上記クライアントの正当性を判定する判定手段と、
上記判定手段が上記クライアントを正当であると判定した場合に、第二の乱数を生成するとともに、上記第一の乱数、上記第二の記憶乱数および上記共有鍵を引数とする一方向関数の関数値を第二のワンタイムIDとして求め、上記クライアントID、上記サーバIDおよび上記第二の乱数を上記共有鍵で暗号化した第二の暗号化データと、上記第二のワンタイムIDとを上記クライアントに対して送信する送信手段と、
上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換する置換手段とを備えることを特徴とするサーバ。 - 請求項3または請求項6に記載のワンタイムIDの生成方法により生成されたワンタイムIDを用いてサーバとの間で相互に認証を行うクライアントであって、
第一の乱数を生成するとともに、上記サーバとの間で予め共有化された共有鍵、第一の記憶乱数および第二の記憶乱数を引数とする一方向関数の関数値を第一のワンタイムIDとして求め、当該クライアントに予め設定されたクライアントID、上記サーバに予め設定されたサーバIDおよび上記第一の乱数を上記共有鍵で暗号化した第一の暗号化データと、上記第一のワンタイムIDとを上記サーバに対して送信する送信手段と、
上記第一の乱数、上記第二の記憶乱数および上記共有鍵を引数とする一方向関数の関数値を第二のワンタイムIDとして、この第二のワンタイムIDを上記サーバから受信するとともに、上記サーバで生成された第二の乱数、上記クライアントIDおよび上記サーバIDを上記共有鍵で暗号化した第二の暗号化データを上記サーバから受信する受信手段と、
上記第二のワンタイムIDを演算により求め、この演算結果と、上記サーバから受信した上記第二のワンタイムIDとの照合により、上記サーバを識別し、上記サーバを識別できた場合に、上記共有鍵を用いて上記第二の暗号化データを復号し、この復号したデータに含まれる上記サーバIDおよび上記クライアントIDに基づいて、上記サーバの正当性を判定する判定手段と、
上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換する置換手段とを備えることを特徴とするクライアント。 - 請求項32に記載のサーバと、請求項33に記載のクライアントとを備えてなることを特徴とする認証システム。
- 上記サーバおよび上記クライアントは、上記第一の記憶乱数を上記第一の乱数に、上記第二の記憶乱数を上記第二の乱数にそれぞれ置換した後で、これら第一の記憶乱数および第二の記憶乱数に基づいて上記共有鍵を生成することにより、当該共有鍵を変化させるようになっていることを特徴とする請求項34に記載の認証システム。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003069375A JP2004282295A (ja) | 2003-03-14 | 2003-03-14 | ワンタイムidの生成方法、認証方法、認証システム、サーバ、クライアントおよびプログラム |
US10/518,499 US20060143453A1 (en) | 2002-06-19 | 2003-06-19 | Inter-authentication method and device |
AU2003244310A AU2003244310A1 (en) | 2002-06-19 | 2003-06-19 | Inter-authentication method and device |
KR1020047020653A KR20050117478A (ko) | 2003-03-14 | 2003-06-19 | 상호 인증 방법 및 장치 |
CA002502134A CA2502134A1 (en) | 2002-06-19 | 2003-06-19 | Inter-authentication method and device |
PCT/JP2003/007794 WO2004019553A1 (ja) | 2002-06-19 | 2003-06-19 | 相互認証方法及び装置 |
EP03792619A EP1526677A4 (en) | 2002-06-19 | 2003-06-19 | METHOD AND DEVICE FOR INTER AUTHENTICATION |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003069375A JP2004282295A (ja) | 2003-03-14 | 2003-03-14 | ワンタイムidの生成方法、認証方法、認証システム、サーバ、クライアントおよびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004282295A true JP2004282295A (ja) | 2004-10-07 |
Family
ID=33286418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003069375A Pending JP2004282295A (ja) | 2002-06-19 | 2003-03-14 | ワンタイムidの生成方法、認証方法、認証システム、サーバ、クライアントおよびプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP2004282295A (ja) |
KR (1) | KR20050117478A (ja) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006040820A1 (ja) * | 2004-10-14 | 2006-04-20 | Mitsubishi Denki Kabushiki Kaisha | パスワード生成装置及びicカード及び認証装置 |
JP2007065712A (ja) * | 2005-08-29 | 2007-03-15 | Nippon Telegr & Teleph Corp <Ntt> | iSCSI自動接続方法及びシステム |
JP2007207038A (ja) * | 2006-02-02 | 2007-08-16 | Canon Inc | 情報処理装置及びその制御方法 |
US7302252B2 (en) | 2005-06-13 | 2007-11-27 | Hitachi, Ltd. | Authentication systems, wireless communication terminals, and wireless base stations |
JP2007317091A (ja) * | 2006-05-29 | 2007-12-06 | Nippon Telegr & Teleph Corp <Ntt> | ワンタイムパスワード生成システムおよびワンタイムパスワード生成方法、ワンタイムパスワード生成装置、制御サーバおよびその制御方法 |
JP2007329884A (ja) * | 2006-05-12 | 2007-12-20 | Sony Corp | 通信システムおよび通信方法、デバイス、情報処理装置および方法、プログラム、並びに記録媒体 |
KR100827187B1 (ko) | 2006-10-11 | 2008-05-02 | 엔에이치엔(주) | 보안 인증 시스템 및 방법 |
JP2008226200A (ja) * | 2007-03-16 | 2008-09-25 | Kddi Corp | 認証システム |
WO2008117445A1 (ja) * | 2007-03-27 | 2008-10-02 | Fujitsu Limited | コンテンツを転送するための情報転送制御装置及び情報転送制御方法 |
JP2008282212A (ja) * | 2007-05-10 | 2008-11-20 | Mitsubishi Electric Corp | 認証装置及び認証システム |
JP2009055428A (ja) * | 2007-08-28 | 2009-03-12 | Fujitsu Ltd | 情報処理装置、サーバ装置、情報処理プログラム及び方法 |
JP2009175923A (ja) * | 2008-01-23 | 2009-08-06 | Dainippon Printing Co Ltd | プラットフォーム完全性検証システムおよび方法 |
JP2012527190A (ja) * | 2009-05-13 | 2012-11-01 | リビア テクノロジーズ,エルエルシー | 対称暗号化システムにおいてデバイスを安全に識別し認証するためのシステムおよび方法 |
WO2013175640A1 (ja) * | 2012-05-25 | 2013-11-28 | 株式会社東芝 | ホストデバイスおよびホストデバイスにおける認証方法 |
US8621577B2 (en) | 2005-08-19 | 2013-12-31 | Samsung Electronics Co., Ltd. | Method for performing multiple pre-shared key based authentication at once and system for executing the method |
WO2014033916A1 (ja) * | 2012-08-31 | 2014-03-06 | 株式会社安川電機 | 集積回路システム、モータ制御装置および集積回路の不正使用防止方法 |
JP2015126485A (ja) * | 2013-12-27 | 2015-07-06 | 富士通株式会社 | データ通信方法、およびデータ通信装置 |
WO2017029708A1 (ja) * | 2015-08-18 | 2017-02-23 | 株式会社Pips | 個人認証システム |
JP2018196085A (ja) * | 2017-05-22 | 2018-12-06 | ルネサスエレクトロニクス株式会社 | 認証方法及び認証システム |
WO2023017865A1 (ja) * | 2021-08-13 | 2023-02-16 | 株式会社ギガ・システム | 認証システム、認証モジュール、および認証プログラム |
JP7435830B2 (ja) | 2020-09-21 | 2024-02-21 | エルジー エナジー ソリューション リミテッド | 相互認証方法およびその方法を提供する認証装置 |
JP7496177B1 (ja) | 2024-01-17 | 2024-06-06 | Sinumy株式会社 | 被認証装置、認証装置、認証要求出力方法、認証方法、及びプログラム |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013009120A2 (ko) * | 2011-07-13 | 2013-01-17 | (주)시루정보 | 이동통신단말기, 어플리케이션 인증 장치 및 방법 |
KR101289028B1 (ko) * | 2011-07-13 | 2013-08-23 | (주)시루정보 | 이동통신단말기, 어플리케이션 인증 장치 및 방법 |
KR101272027B1 (ko) * | 2011-08-18 | 2013-06-07 | 정지혜 | 해킹 방지 시스템 및 그 제어방법과, 그 시스템에 포함되는 해킹 방지 지원 서버 및 그 제어방법 |
US9942034B2 (en) | 2015-02-13 | 2018-04-10 | Visa International Service Association | Confidential communication management |
KR102210438B1 (ko) * | 2015-12-27 | 2021-02-01 | 한국전자기술연구원 | 대칭키 알고리즘을 이용한 경량 암복호화 방법 및 시스템 |
KR102371752B1 (ko) * | 2017-08-31 | 2022-03-07 | 삼성전자주식회사 | 가전 기기 및 그의 제어방법 |
WO2020214001A1 (ko) * | 2019-04-19 | 2020-10-22 | 주식회사 코인플러그 | Pki 기반의 일회성 아이디를 사용하여 서비스를 사용하는 방법, 및 이를 사용한 사용자 단말 |
KR102250430B1 (ko) * | 2019-04-19 | 2021-05-11 | 주식회사 코인플러그 | Pki 기반의 일회성 아이디를 사용하여 서비스를 사용하는 방법, 및 이를 사용한 사용자 단말 |
-
2003
- 2003-03-14 JP JP2003069375A patent/JP2004282295A/ja active Pending
- 2003-06-19 KR KR1020047020653A patent/KR20050117478A/ko not_active Application Discontinuation
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006040820A1 (ja) * | 2004-10-14 | 2006-04-20 | Mitsubishi Denki Kabushiki Kaisha | パスワード生成装置及びicカード及び認証装置 |
US7302252B2 (en) | 2005-06-13 | 2007-11-27 | Hitachi, Ltd. | Authentication systems, wireless communication terminals, and wireless base stations |
US8621577B2 (en) | 2005-08-19 | 2013-12-31 | Samsung Electronics Co., Ltd. | Method for performing multiple pre-shared key based authentication at once and system for executing the method |
JP2007065712A (ja) * | 2005-08-29 | 2007-03-15 | Nippon Telegr & Teleph Corp <Ntt> | iSCSI自動接続方法及びシステム |
JP2007207038A (ja) * | 2006-02-02 | 2007-08-16 | Canon Inc | 情報処理装置及びその制御方法 |
JP2007329884A (ja) * | 2006-05-12 | 2007-12-20 | Sony Corp | 通信システムおよび通信方法、デバイス、情報処理装置および方法、プログラム、並びに記録媒体 |
EP1855430A3 (en) * | 2006-05-12 | 2015-05-06 | Sony Corporation | System, device, method, computer program and recording medium for communication apparatus and for processing information |
US8605903B2 (en) | 2006-05-12 | 2013-12-10 | Sony Corporation | System, device, and method for wireless communication, apparatus and method for processing information from contactless IC cards |
JP2007317091A (ja) * | 2006-05-29 | 2007-12-06 | Nippon Telegr & Teleph Corp <Ntt> | ワンタイムパスワード生成システムおよびワンタイムパスワード生成方法、ワンタイムパスワード生成装置、制御サーバおよびその制御方法 |
KR100827187B1 (ko) | 2006-10-11 | 2008-05-02 | 엔에이치엔(주) | 보안 인증 시스템 및 방법 |
JP2008226200A (ja) * | 2007-03-16 | 2008-09-25 | Kddi Corp | 認証システム |
JP5182286B2 (ja) * | 2007-03-27 | 2013-04-17 | 富士通株式会社 | コンテンツを転送するための情報転送制御装置及び情報転送制御方法 |
WO2008117445A1 (ja) * | 2007-03-27 | 2008-10-02 | Fujitsu Limited | コンテンツを転送するための情報転送制御装置及び情報転送制御方法 |
US8195132B2 (en) | 2007-03-27 | 2012-06-05 | Fujitsu Limited | Information transfer control apparatus and information transfer control method for transferring content |
JP2008282212A (ja) * | 2007-05-10 | 2008-11-20 | Mitsubishi Electric Corp | 認証装置及び認証システム |
US8589690B2 (en) | 2007-08-28 | 2013-11-19 | Fujitsu Limited | Information processing apparatus, server apparatus, medium recording information processing program and information processing method |
JP2009055428A (ja) * | 2007-08-28 | 2009-03-12 | Fujitsu Ltd | 情報処理装置、サーバ装置、情報処理プログラム及び方法 |
JP2009175923A (ja) * | 2008-01-23 | 2009-08-06 | Dainippon Printing Co Ltd | プラットフォーム完全性検証システムおよび方法 |
JP2012527190A (ja) * | 2009-05-13 | 2012-11-01 | リビア テクノロジーズ,エルエルシー | 対称暗号化システムにおいてデバイスを安全に識別し認証するためのシステムおよび方法 |
WO2013175640A1 (ja) * | 2012-05-25 | 2013-11-28 | 株式会社東芝 | ホストデバイスおよびホストデバイスにおける認証方法 |
WO2014033916A1 (ja) * | 2012-08-31 | 2014-03-06 | 株式会社安川電機 | 集積回路システム、モータ制御装置および集積回路の不正使用防止方法 |
JP2015126485A (ja) * | 2013-12-27 | 2015-07-06 | 富士通株式会社 | データ通信方法、およびデータ通信装置 |
WO2017029708A1 (ja) * | 2015-08-18 | 2017-02-23 | 株式会社Pips | 個人認証システム |
JPWO2017029708A1 (ja) * | 2015-08-18 | 2017-08-17 | 株式会社Pips | 個人認証システム |
JP2018196085A (ja) * | 2017-05-22 | 2018-12-06 | ルネサスエレクトロニクス株式会社 | 認証方法及び認証システム |
JP7435830B2 (ja) | 2020-09-21 | 2024-02-21 | エルジー エナジー ソリューション リミテッド | 相互認証方法およびその方法を提供する認証装置 |
WO2023017865A1 (ja) * | 2021-08-13 | 2023-02-16 | 株式会社ギガ・システム | 認証システム、認証モジュール、および認証プログラム |
JP2023026180A (ja) * | 2021-08-13 | 2023-02-24 | 株式会社ギガ・システム | 認証システム、認証モジュール、および認証プログラム |
JP7412691B2 (ja) | 2021-08-13 | 2024-01-15 | 株式会社ギガ・システム | 認証システム、認証モジュール、および認証プログラム |
JP7496177B1 (ja) | 2024-01-17 | 2024-06-06 | Sinumy株式会社 | 被認証装置、認証装置、認証要求出力方法、認証方法、及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
KR20050117478A (ko) | 2005-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004282295A (ja) | ワンタイムidの生成方法、認証方法、認証システム、サーバ、クライアントおよびプログラム | |
EP1526677A1 (en) | Inter-authentication method and device | |
Ford et al. | Server-assisted generation of a strong secret from a password | |
JP4546240B2 (ja) | チャレンジ/レスポンス方式によるユーザー認証方法及びシステム | |
CA2446304C (en) | Use and generation of a session key in a secure socket layer connection | |
US8484469B2 (en) | Method, system and equipment for key distribution | |
RU2307391C2 (ru) | Способы дистанционного изменения пароля связи | |
US20080034216A1 (en) | Mutual authentication and secure channel establishment between two parties using consecutive one-time passwords | |
EP2248317B1 (en) | Secure bootstrapping architecture method based on password-based digest authentication | |
EP0938209A2 (en) | Method and apparatus for conducting crypto-ignition processes between thin client devices and server devices over data networks | |
JP2017063432A (ja) | 証明書不要公開鍵基盤に基づく安全なクライアント・サーバ通信プロトコルを設計するシステムと方法 | |
US7480939B1 (en) | Enhancement to authentication protocol that uses a key lease | |
US10177921B2 (en) | Secure login without passwords | |
CN103763631A (zh) | 认证方法、服务器和电视机 | |
JP2006513641A (ja) | 暗号鍵を入れ替えるためのシステム、装置及び方法 | |
CN111756529B (zh) | 一种量子会话密钥分发方法及系统 | |
EP1079565A2 (en) | Method of securely establishing a secure communication link via an unsecured communication network | |
CN110999202A (zh) | 用于对数据进行高度安全、高速加密和传输的计算机实现的系统和方法 | |
CN116244750A (zh) | 一种涉密信息维护方法、装置、设备及存储介质 | |
CN109067774B (zh) | 一种基于信任令牌的安全接入系统及其安全接入方法 | |
KR20190010016A (ko) | 사용자 인증 서버 및 시스템 | |
EP1623551B1 (en) | Network security method and system | |
JP2004274134A (ja) | 通信方法並びにこの通信方法を用いた通信システム、サーバおよびクライアント | |
Imamoto et al. | A design of Diffie-Hellman based key exchange using one-time ID in pre-shared key model | |
Yoon et al. | An efficient password authentication schemes without using the server public key for grid computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041028 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071106 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080304 |