(57)【特許請求の範囲】
【請求項１】
通信路を介して接続された第１装置と第２装置の双方が、相手側で生成された情報（Ｗａ／Ｗｂ）と自己側で生成した情報（Ｃ１／Ｓ１）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫ１）を生成する段階と、
前記第１装置が、前記第２装置への登録を希望する秘密情報を前記共有鍵（ＳＫ１）で暗号化し、この暗号データを前記第２装置に伝達する段階と、
前記第２装置が、前記第１装置より受け取った前記暗号データを前記共有鍵（ＳＫ１）で復号して前記秘密情報を得た後は次回アクセス用の新規情報（Ｃ２＊Ｓ２）を生成し、この新規情報（Ｃ２＊Ｓ２）の一部（Ｓ２）を保存し、残部の新規情報（Ｃ２）を前記共有鍵（ＳＫ１）で暗号化して前記第１装置（クライアント端末）へ伝達する段階と、
前記第１装置が、前記第２装置から受け取った暗号データを前記共有鍵（ＳＫ１）で復号して前記残部の新規情報（Ｃ２）を得、この残部の新規情報（Ｃ２）を次回アクセス用の前記自己側で生成した情報として保存する段階と、
前記第２装置が、前記次回アクセス用の新規情報（Ｃ２＊Ｓ２）に基づいて新たな共有鍵（ＳＫ２）を生成するとともに、前記共有鍵（ＳＫ１）で復号した秘密情報を前記新たな共有鍵（ＳＫ２）で暗号化し、前記一部の新規情報（Ｓ２）とともに、次回アクセス用の前記自己側で生成した情報として保存する段階と、
前記第１装置が所定のサイトにアクセスする際に、前記第１装置と前記第２装置の双方が、相手側で生成された情報（Ｗａｘ／Ｗｂｘ）と前記自己側で生成した情報として保存している情報（Ｃｘ／Ｓｘ）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫｘ）を生成する段階と、
前記第２装置が、生成した共有鍵（ＳＫｘ）を用いて前記秘密情報を復号し、復号した秘密情報を伴う前記第１装置から前記サイトへのアクセスを可能にする段階と、
前記第２装置が、次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））を生成し、この新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））の一部（Ｓ（ｘ＋１））を保存し、残部の新規情報（Ｃ（ｘ＋１））を前記共有鍵（ＳＫｘ）で暗号化した第１暗号データを前記第１装置へ伝達する段階と、
前記第１装置が、前記第２装置から受け取った前記第１暗号データを前記共有鍵（ＳＫｘ）で復号して前記残部の新規情報（Ｃ（ｘ＋１））を得、この残部の新規情報（Ｃ（ｘ＋１））を次回アクセス用の前記自己側で生成した情報として保存する段階と、
前記第２装置が、前記次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））に基づいて新たな共有鍵（ＳＫ（ｘ＋１））を生成するとともに、前記復号した秘密情報を前記生成した共有鍵（ＳＫ（ｘ＋１））で暗号化して保存し、前記新規情報の一部（Ｓ（ｘ＋１））を次回アクセス用の前記自己側で生成した情報として保存する段階とを有する、
暗号化された秘密情報の保護方法。
【請求項２】
前記共有鍵（ＳＫ１）を生成する段階は、
前記第１装置が、自己が生成した乱数（Ｃ１）に基づいて第１データ（Ｗａ）を生成し、この第１データ（Ｗａ）を前記第２装置に伝達する段階と、
前記第２装置が、前記第１装置より受け取った第１データ（Ｗａ）と自己が生成した乱数（Ｓ１）とに基づいて第２データ（Ｗｂ）を生成し、この第２データ（Ｗｂ）を前記第１装置に伝達するとともに、前記第１データ（Ｗａ）と前記自己が生成した乱数（Ｓ１）とに基づいてそのハッシュ値が共有鍵（ＳＫ１）となる共有データ（Ｋｂ）を生成する段階と、
前記第１装置が、前記第２装置より受け取った第２データ（Ｗｂ）と自己が生成した前記乱数（Ｃ１）とに基づいてそのハッシュ値が共有鍵（ＳＫ１）となる共有データ（Ｋａ）を生成する段階とを含み、
これらの共有データの各々から前記共有鍵（ＳＫ１）を導出する、
請求項１記載の保護方法。
【請求項３】
前記秘密情報を２つの分散データに分け、
前記第１装置が、前記２つの分散データを復元するためのシェアを保持するとともに、このシェアのハッシュ値を自己側で生成する情報（Ｃ１）とし、
前記第２装置が、前記２つの分散データうち前記サイトにおいて前記共有鍵（ＳＫ１）で暗号化された一方の分散データを保持し、他方の分散データを前記自己側で生成する情報（Ｓ１）とすることにより、前記第２装置が、前記２つの分散データと前記シェアとから前記秘密情報を復号可能にする、
請求項２記載の保護方法。
【請求項４】
前記第１装置が、前記第２装置を介した前記サイトへのアクセス権限情報を前記秘密情報として前記第２装置に伝達し、
前記第２装置が、前記アクセス権限情報を取得し、このアクセス権限情報をメモリ領域に登録することにより、このアクセス権限情報を伴う前記第１装置から前記サイトへのアクセスを可能にする、
請求項１又は２記載の保護方法。
【請求項５】
通信路を介して接続された第２装置との間で双方向の通信を行う通信装置であって、
第２装置で生成された情報（Ｗｂ）と自己側で生成した情報（Ｃ１）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫ１）を生成する第１鍵情報生成手段と、
前記第２装置への登録を希望する秘密情報を前記共有鍵（ＳＫ１）で暗号化し、この第１暗号データを前記第２装置に伝達する第１伝達手段と、
前記第２装置において前記共有鍵（ＳＫ１）で復号された前記秘密情報を新たな共有鍵（ＳＫ２）で暗号化して保存し、前記新たな共有鍵（ＳＫ２）を生成するときに用いた次回アクセス用の新規情報（Ｃ２＊Ｓ２）の一部（Ｃ２）を前記共有鍵（ＳＫ１）で暗号化したデータを前記第２装置から受け取る第１受取手段と、
前記第２装置から受け取った第１暗号データを前記共有鍵（ＳＫ１）で復号して前記一部の新規情報（Ｃ２）を得、この一部の新規情報（Ｃ２）を次回アクセス用の前記自己側で生成した情報として保存する第１保存手段と、
所定のサイトにアクセスする際に、前記第２装置で生成された情報（Ｗｂｘ）と前記自己側で生成した情報として保存している情報（Ｃｘ）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫｘ）を生成する第２鍵情報生成手段と、
前記第２装置を介して、前記第２装置において生成された前記共有鍵（ＳＫｘ）を用いて復号された前記秘密情報を伴って前記サイトへアクセスするアクセス手段と、
前記第２装置において、前記秘密情報を新たな共有鍵（ＳＫ（ｘ＋１））で暗号化して保存する際に、前記新たな共有鍵（ＳＫ（ｘ＋１））を生成する際に用いた次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））の一部（Ｃ（ｘ＋１））が前記共有鍵（ＳＫｘ）で暗合された第２暗号データを受け取る第２受取手段と、
前記第２装置から受け取った第２暗号データを前記共有鍵（ＳＫｘ）で復号して前記一部の新規情報（Ｃ（ｘ＋１））を得、この一部の新規情報（Ｃ（ｘ＋１））を次回アクセス用の前記自己側で生成した情報として保存する第２保存手段とを有する、
通信装置。
【請求項６】
通信路を介して接続された第１装置との間で双方向の通信を行う通信装置であって、
前記第１装置で生成された情報（Ｗａ）と自己側で生成した情報（Ｓ１）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫ１）を生成する第１鍵情報生成手段と、
自装置への登録を希望する秘密情報であって、前記共有鍵（ＳＫ１）で暗号化された第１暗号データを前記第１装置から受信する受信手段と、
前記第１装置から受け取った前記第１暗号データを前記共有鍵（ＳＫ１）で復号して前記秘密情報を得た後は次回アクセス用の新規情報（Ｃ２＊Ｓ２）を生成し、この新規情報（Ｃ２＊Ｓ２）の一部（Ｓ２）を保存し、残部の新規情報（Ｃ２）を前記共有鍵（ＳＫ１）で暗号化して前記第１装置（クライアント端末）へ伝達する第１伝達手段と、
前記次回アクセス用の新規情報（Ｃ２＊Ｓ２）に基づいて新たな共有鍵（ＳＫ２）を生成するとともに、前記共有鍵（ＳＫ１）で復号した秘密情報を前記新たな共有鍵（ＳＫ２）で暗号化し、前記一部の新規情報（Ｓ２）とともに、次回アクセス用の前記自己側で生成した情報として保存する第１保存手段と、
前記第１装置が所定のサイトにアクセスする際に、前記第１装置で生成された情報（Ｗａｘ）と前記自己側で生成した情報として保存している情報（Ｓｘ）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫｘ）を生成する第２鍵情報生成手段と、
前記第２鍵情報生成手段が生成した共有鍵（ＳＫｘ）を用いて前記秘密情報を復号し、復号した秘密情報を伴う前記第１装置から前記サイトへのアクセスを可能にするアクセス手段と、
次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））を生成し、この新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））の一部（Ｓ（ｘ＋１））を保存し、残部の新規情報（Ｃ（ｘ＋１））を前記共有鍵（ＳＫｘ）で暗号化して前記第１装置へ伝達する第２伝達手段と、
前記第２伝達手段が生成した前記次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））に基づいて新たな共有鍵（ＳＫ（ｘ＋１））を生成するとともに、前記復号した秘密情報を前記生成した共有鍵（ＳＫ（ｘ＋１））で暗号化して保存し、前記新規情報の一部（Ｓ（ｘ＋１））を次回アクセス用の前記自己側で生成した情報として保存する第２保存手段とを有する、通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密情報を安全に保護する方法、そのための装置に関する。より詳しくは、例えばサーバベースコンピューティングの環境において、シングルサインオンで複数サイト（サーバ）へアクセスするためのサイトアクセス用の権限情報をサーバ側に登録しておき、これをクライアント端末の側から安全に利用する手法に関する。
【背景技術】
【０００２】
サーバベースコンピューティングの環境においてシングルサインオンの手法が知られている。シングルサインオンは、以下の手順で利用することができる。
(1)サーバ側に登録してあるサイトアクセス用パスワードに対してクライアント側からアクセスがあるたびに、サーバが異なるパスワード暗号用鍵を生成する。そして、このパスワード暗号用鍵でサイトアクセス用パスワードを暗号化してサーバ側に登録する。
(2)サーバが生成したパスワード暗号用鍵をクライアント側のＩＣカードのようなセキュリティ媒体に登録する。
(3)サーバ側に登録したサイトアクセス用パスワードをユーザが利用する場合は、ユーザがクライアント側に登録されたパスワード暗号用鍵を利用し、クライアント端末とサーバとの間でセキュアチャネル、すなわち暗号通信によってセキュリティが確保された通信チャネルを確立する。このようなセキュアチャネルでは、パスワード暗号用鍵を用いてサーバ及びクライアント端末の双方が同一のセキュアチャネル用鍵を生成し、サーバとクライアント端末の双方が、このセキュアチャネル用鍵を共有する。
(4)セキュアチャネル用鍵を用いて、クライアント側に登録されたパスワード暗号用鍵、ユーザのログイン用のＩＤ及びパスワードを暗号化し、暗号データをクライアント端末からサーバに通知する。
(5)サーバは、クライアント端末から受信した暗号データをセキュアチャネル用鍵で復号し、そのユーザのログイン用のＩＤとパスワードでユーザの本人確認を行う。本人確認ができた場合、サーバは、暗号データを復号して得たパスワード暗号用鍵を用い、このパスワード暗号用鍵で暗号化されているサイトアクセス用パスワードを復号化して利用し、その結果をクライアント端末に通知する。
【０００３】
上記のシングルサインオンによるサーバへのアクセス手法については、下記の特許文献１，２に、詳細に紹介されている。
【特許文献１】特開２００２−２８８１３９号公報
【特許文献２】特開２０００−２５９５６６号公報
【０００４】
しかしながら、従来の手法では、次のような問題があった。
サーバとクライアント端末の間で用いるセキュアチャネル用鍵と、サーバがサイトアクセス用パスワードを暗号化するためのパスワード暗号用鍵との２つの鍵が必要であるが、これらの鍵を同一にすると、サーバ側も鍵を保持することになるため、例えばサーバ管理者がサーバ側の鍵を不正に利用して、サイトアクセス用パスワードを勝手に使用できるという不都合が生じる。サーバ側に設定されている鍵の不正利用を防止するために、例えば秘密分散法を利用し、サーバ側とクライアント側とで鍵を分散することも考えられるが、しかし、その場合でも鍵を利用する際には、分散された鍵をサーバ側に通知するための通信路に暗号化鍵を使用するため、根本的な問題解決にはならない。さらに、クライアント側のトークンに鍵そのものを設定することも考えられるが、そうすると、ＩＣカード等の高価なセキュリティ媒体を用いなければならなくなる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述の問題を解決するパスワードや鍵、その他の秘密情報の保護方法は、未だ実現されていない。例えば、前述のサーバベースコンピューティングの環境において、シングルサインオンでクライアント端末が複数サイトへアクセスするためのサイトアクセス用パスワード情報をサーバ側で保持する形態では、サーバ側での不正使用の余地をなくすための方向性が示されていない。
本発明は、例えばシングルサインオンで使用するパスワードや鍵等の秘密情報の保護を安全且つ確実ならしめる手法を提供することを、主たる課題とするものである。
【課題を解決するための手段】
【０００６】
本発明は、通信路を介して接続された第１装置と第２装置の双方が、相手側で生成された情報（Ｗａ／Ｗｂ）と自己側で生成した情報（Ｃ１／Ｓ１）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫ１）を生成する段階と、前記第１装置が、前記第２装置への登録を希望する秘密情報を前記共有鍵（ＳＫ１）で暗号化し、この暗号データを前記第２装置に伝達する段階と、前記第２装置が、前記第１装置より受け取った前記暗号データを前記共有鍵（ＳＫ１）で復号して前記秘密情報を得た後は次回アクセス用の新規情報（Ｃ２＊Ｓ２）を生成し、この新規情報（Ｃ２＊Ｓ２）の一部（Ｓ２）を保存し、残部の新規情報（Ｃ２）を前記共有鍵（ＳＫ１）で暗号化して前記第１装置（クライアント端末）へ伝達する段階と、前記第１装置が、前記第２装置から受け取った暗号データを前記共有鍵（ＳＫ１）で復号して前記残部の新規情報（Ｃ２）を得、この残部の新規情報（Ｃ２）を次回アクセス用の前記自己側で生成した情報として保存する段階と、前記第２装置が、前記次回アクセス用の新規情報（Ｃ２＊Ｓ２）に基づいて新たな共有鍵（ＳＫ２）を生成するとともに、前記共有鍵（ＳＫ１）で復号した秘密情報を前記新たな共有鍵（ＳＫ２）で暗号化し、前記一部の新規情報（Ｓ２）とともに、次回アクセス用の前記自己側で生成した情報として保存する段階と、前記第１装置が所定のサイトにアクセスする際に、前記第１装置と前記第２装置の双方が、相手側で生成された情報（Ｗａｘ／Ｗｂｘ）と前記自己側で生成した情報として保存している情報（Ｃｘ／Ｓｘ）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫｘ）を生成する段階と、前記第２装置が、生成した共有鍵（ＳＫｘ）を用いて前記秘密情報を復号し、復号した秘密情報を伴う前記第１装置から前記サイトへのアクセスを可能にする段階と、前記第２装置が、次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））を生成し、この新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））の一部（Ｓ（ｘ＋１））を保存し、残部の新規情報（Ｃ（ｘ＋１））を前記共有鍵（ＳＫｘ）で暗号化した第１暗号データを前記第１装置へ伝達する段階と、前記第１装置が、前記第２装置から受け取った前記第１暗号データを前記共有鍵（ＳＫｘ）で復号して前記残部の新規情報（Ｃ（ｘ＋１））を得、この残部の新規情報（Ｃ（ｘ＋１））を次回アクセス用の前記自己側で生成した情報として保存する段階と、前記第２装置が、前記次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））に基づいて新たな共有鍵（ＳＫ（ｘ＋１））を生成するとともに、前記復号した秘密情報を前記生成した共有鍵（ＳＫ（ｘ＋１））で暗号化して保存し、前記新規情報の一部（Ｓ（ｘ＋１））を次回アクセス用の前記自己側で生成した情報として保存する段階とを有する、暗号化された秘密情報の保護方法である。
【０００７】
前記共有鍵を生成する段階は、例えば、前記第１装置が、自己が生成した乱数（Ｃ１）に基づいて第１データ（Ｗａ）を生成し、この第１データ（Ｗａ）を前記第２装置に伝達する段階と、前記第２装置が、前記第１装置より受け取った第１データ（Ｗａ）と自己が生成した乱数（Ｓ１）とに基づいて第２データ（Ｗｂ）を生成し、この第２データ（Ｗｂ）を前記第１装置に伝達するとともに、前記第１データ（Ｗａ）と前記自己が生成した乱数（Ｓ１）とに基づいてそのハッシュ値が共有鍵（ＳＫ１）となる共有データ（Ｋｂ）を生成する段階と、前記第１装置が、前記第２装置より受け取った第２データ（Ｗｂ）と自己が生成した前記乱数（Ｃ１）とに基づいてそのハッシュ値が共有鍵（ＳＫ１）となる共有データ（Ｋａ）を生成する段階とを含み、これらの共有データの各々から前記共有鍵（ＳＫ１）を導出することにより実現される。
【０００８】
本発明のある実施の態様では、前記秘密情報を２つの分散データに分ける。そして、前記第１装置が、前記２つの分散データを復元するためのシェアを保持するとともに、このシェアのハッシュ値を自己側で生成する情報とし、前記サーバが、前記２つの分散データうち前記サイトにおいて前記共有鍵で暗号化された一方の分散データを保持し、他方の分散データを前記自己側で生成する情報とすることにより、前記サーバが、前記２つの分散データと前記シェアとから前記秘密情報を復号可能にする。
本発明のある実施の態様では、前記第１装置が、前記第２装置を介した前記サイトへのアクセス権限情報を前記秘密情報として前記第２装置に伝達する。そして、前記第２装置が、前記アクセス権限情報を取得し、このアクセス権限情報をメモリ領域に登録することにより、このアクセス権限情報を伴う前記第１装置から前記サイトへのアクセスを可能にする。
【０００９】
また、本発明は、通信路を介して接続された第２装置との間で双方向の通信を行う通信装置であって、第２装置で生成された情報（Ｗｂ）と自己側で生成した情報（Ｃ１）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫ１）を生成する第１鍵情報生成手段と、前記第２装置への登録を希望する秘密情報を前記共有鍵（ＳＫ１）で暗号化し、この第１暗号データを前記第２装置に伝達する第１伝達手段と、前記第２装置において前記共有鍵（ＳＫ１）で復号された前記秘密情報を新たな共有鍵（ＳＫ２）で暗号化して保存し、前記新たな共有鍵（ＳＫ２）を生成するときに用いた次回アクセス用の新規情報（Ｃ２＊Ｓ２）の一部（Ｃ２）を前記共有鍵（ＳＫ１）で暗号化したデータを前記第２装置から受け取る第１受取手段と、前記第２装置から受け取った第１暗号データを前記共有鍵（ＳＫ１）で復号して前記一部の新規情報（Ｃ２）を得、この一部の新規情報（Ｃ２）を次回アクセス用の前記自己側で生成した情報として保存する第１保存手段と、所定のサイトにアクセスする際に、前記第２装置で生成された情報（Ｗｂｘ）と前記自己側で生成した情報として保存している情報（Ｃｘ）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫｘ）を生成する第２鍵情報生成手段と、前記第２装置を介して、前記第２装置において生成された前記共有鍵（ＳＫｘ）を用いて復号された前記秘密情報を伴って前記サイトへアクセスするアクセス手段と、前記第２装置において、前記秘密情報を新たな共有鍵（ＳＫ（ｘ＋１））で暗号化して保存する際に、前記新たな共有鍵（ＳＫ（ｘ＋１））を生成する際に用いた次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））の一部（Ｃ（ｘ＋１））が前記共有鍵（ＳＫｘ）で暗合された第２暗号データを受け取る第２受取手段と、前記第２装置から受け取った第２暗号データを前記共有鍵（ＳＫｘ）で復号して前記一部の新規情報（Ｃ（ｘ＋１））を得、この一部の新規情報（Ｃ（ｘ＋１））を次回アクセス用の前記自己側で生成した情報として保存する第２保存手段とを有する、通信装置である。
【００１０】
また、本発明は、通信路を介して接続された第１装置との間で双方向の通信を行う通信装置であって、前記第１装置で生成された情報（Ｗａ）と自己側で生成した情報（Ｓ１）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫ１）を生成する第１鍵情報生成手段と、自装置への登録を希望する秘密情報であって、前記共有鍵（ＳＫ１）で暗号化された第１暗号データを前記第１装置から受信する受信手段と、前記第１装置から受け取った前記第１暗号データを前記共有鍵（ＳＫ１）で復号して前記秘密情報を得た後は次回アクセス用の新規情報（Ｃ２＊Ｓ２）を生成し、この新規情報（Ｃ２＊Ｓ２）の一部（Ｓ２）を保存し、残部の新規情報（Ｃ２）を前記共有鍵（ＳＫ１）で暗号化して前記第１装置（クライアント端末）へ伝達する第１伝達手段と、前記次回アクセス用の新規情報（Ｃ２＊Ｓ２）に基づいて新たな共有鍵（ＳＫ２）を生成するとともに、前記共有鍵（ＳＫ１）で復号した秘密情報を前記新たな共有鍵（ＳＫ２）で暗号化し、前記一部の新規情報（Ｓ２）とともに、次回アクセス用の前記自己側で生成した情報として保存する第１保存手段と、前記第１装置が所定のサイトにアクセスする際に、前記第１装置で生成された情報（Ｗａｘ）と前記自己側で生成した情報として保存している情報（Ｓｘ）とに基づいて前記通信路をセキュアチャネル化して情報交換を行うための共有鍵（ＳＫｘ）を生成する第２鍵情報生成手段と、前記第２鍵情報生成手段が生成した共有鍵（ＳＫｘ）を用いて前記秘密情報を復号し、復号した秘密情報を伴う前記第１装置から前記サイトへのアクセスを可能にするアクセス手段と、次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））を生成し、この新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））の一部（Ｓ（ｘ＋１））を保存し、残部の新規情報（Ｃ（ｘ＋１））を前記共有鍵（ＳＫｘ）で暗号化して前記第１装置へ伝達する第２伝達手段と、前記第２伝達手段が生成した前記次回アクセス用の新規情報（Ｃ（ｘ＋１）＊Ｓ（ｘ＋１））に基づいて新たな共有鍵（ＳＫ（ｘ＋１））を生成するとともに、前記復号した秘密情報を前記生成した共有鍵（ＳＫ（ｘ＋１））で暗号化して保存し、前記新規情報の一部（Ｓ（ｘ＋１））を次回アクセス用の前記自己側で生成した情報として保存する第２保存手段とを有する、通信装置である。
【発明の効果】
【００１１】
本発明では、第１装置と第２装置との間でセキュアチャネル化するための鍵と、第２装置にある秘密情報を暗号化するための鍵を同じにしつつ、第１装置と第２装置の双方のもつ情報がないと共有鍵が生成できないので、鍵管理負担を軽減することができ、それでいて、秘密情報を管理する第２装置側での不正を防止することができる。
【発明を実施するための最良の形態】
【００１２】
［第１実施の形態］
本発明は、例えば図１に示されるパスワード認証鍵交換システムとしての実施が可能である。この実施の形態のパスワード認証鍵交換システムは、インターネット等で構成されるネットワーク１０に接続されるサーバ２０と、このネットワーク１０を介してサーバ２０に接続されるクライアント端末３０と、サーバ２０に接続されたサイト４０を含んで構成される。サイトは、ひとまとまりに公開可能なＷｅｂページ群を保有する情報処理システムであり、実質的にはサーバである。なお、図１では、便宜上１つのサイト４０のみが示されているが、サイトの数はいくつであってもよい。
【００１３】
サーバ２０は、ネットワーク１０を介して通信を行うためのインターフェイス（以下、「Ｉ／Ｆ」と略す）２１と、後述する各種処理を実行する制御部（以下、クライアント３０のものと区別する必要があるときは「サーバ制御部」と称する）２２と、サーバデータベース（以下、データベースを「ＤＢ」と略す）２３とを備えている。サーバ制御部２２は、コンピュータプログラムを読み込んで実行する一種のコンピュータである。サーバ制御部２２は、このコンピュータプログラムを実行することにより、鍵情報生成手段、暗号・復号手段、情報生成手段の機能を形成する。
【００１４】
クライアント端末３０は、ネットワーク１０を介して通信を行うためのＩ／Ｆ３１と、後述する各種処理を実行する制御部（以下、サーバ２０のものと区別する必要があるときは「クライアント制御部」と称する）３２と、パスワードや後述する乱数を保存するためのメモリ３３とを備えている。クライアント制御部３２は、コンピュータプログラムを読み込んで実行する一種のコンピュータである。このコンピュータプログラムは、サーバ２０からダウンロードしたアプリケーションやトークンなどに実装しても良い。クライアント制御部３２は、このコンピュータプログラムを実行することにより、鍵情報生成手段、暗号・復号手段の機能を形成する。
サイト４０は、ネットワーク１０を介して通信を行うためのＩ／Ｆ４１と、サイト運営に必要な処理を実行するサイト制御部４２と、サイトＤＢ４３を備えている。サイト制御部４２もまた、コンピュータプログラムを読み込んで実行する一種のコンピュータである。
【００１５】
サーバ２０とクライアント端末３０は、ネットワーク１０上に暗号化通信を行うためのセキュアチャネルを共有鍵を用いて確立し、暗号化したデータの通信を行う。また、サーバ２０は、クライアント端末３０から受信したサイトアクセス用パスワードを上述した共有鍵を用いて暗号化し、この暗号化したサイトアクセス用パスワードをサーバＤＢ２３に登録する。
【００１６】
このようにセキュアチャネルで用いる共有鍵は、サーバ２０とクライアント端末３０の双方が保持する別々の情報（例えば乱数）を用いて生成する鍵であり、この共有鍵の生成には、例えばDiffie Hellmanの鍵交換方式を用いる。
サーバ２０とクライアント端末３０との間における鍵交換には、後述するパスワード認証鍵交換プロトコルを利用する。このパスワード認証鍵交換プロトコルで共有した鍵（共有鍵）を、サイトアクセス用パスワードをクライアント端末３０からサーバ２０に通知する際の暗号化及び復号化に利用するとともに、サーバ２０側におけるサイトアクセス用パスワードの暗号化にも利用する。
【００１７】
また、サイトアクセス用パスワードを一度利用した後に、サーバ２０は、乱数を生成する。この乱数は、クライアント端末３０がサイト４０に次回アクセスする際に利用する次回用の共有鍵の生成に用いられる。サーバ２０は、この次回用の乱数を任意に二分割し、一方を前回の共有鍵で暗号化し、サーバ２０側からクライアント端末３０に通知する。サーバ２０は、二分割した乱数の他方をサーバ２０側で保持する。
また、サーバ２０は、次回用の共有鍵でサイトアクセス用パスワードを暗号化し、これを保持する。この暗号化が済むと、サーバ２０は、次回用の共有鍵を削除する。
クライアント端末３０と、サーバ２０とが、二分割した乱数の一方と他方をそれぞれ保持し、次回の共有鍵を生成する際に用いるため、次回の処理においても、セキュアチャネルを確立する時の鍵は同一の鍵となり、この共有鍵を用いてサイト用アクセスパスワードを暗号化する。
【００１８】
以上のような手法により、複数のサイトアクセス用パスワードを暗号化してサーバＤＢ２３に登録すれば、クライアント端末３０は、シングルサインオンで複数のサイトにアクセスすることができる。
【００１９】
［動作例］
次に、この実施の形態に係るパスワード認証鍵交換システムにおいて、サーバ２０と、クライアント端末３０とが、ネットワーク１０を通じて、実際には複数存在するサイト４０にシングルサインオンでアクセスするときの動作例を示す。
この通信は、サイトアクセス用パスワードの登録処理と、サイトアクセス用パスワードの利用処理とに大別される。
【００２０】
＜サイトアクセス用パスワード登録処理＞
図２ないし図４は、パスワード認証鍵交換プロトコルを用いたサイトアクセス用パスワード登録処理の手順を時系列的に示している。このサイトアクセス用パスワードの登録処理に際しては、ユーザのユーザＩＤとパスワードπが対応付けられて事前にサーバ２０のサーバＤＢ２３に登録されているものとする。
【００２１】
サーバ制御部２２と、クライアント制御部３２との間における通信は、すべてＩ／Ｆ２１、ネットワーク１０及びＩ／Ｆ３１を通じて行われるため、以下では、この記載を省略するが、特に、サーバ制御部２２と、クライアント制御部３２とが共有鍵を用いてデータを暗号化して通信を行う場合、通信チャネルはセキュアチャネルとなる。
また、図５は、サーバ２０のサーバＤＢ２３内と、クライアント端末３０のメモリ内におけるデータ構造を示す。
なお、図２ないし図４における処理(1)〜(26)は、具体的には、図１に示す機能ブロックにおいて行われる。
【００２２】
(1)ユーザがサーバ２０にアクセスすべく、クライアント端末３０を操作すると、クライアント制御部３２は、Ｉ／Ｆ３１を通じてトークンを確保する。ユーザは、クライアント端末３０にユーザＩＤとパスワードπを入力する。また、このとき、ユーザは、アクセスを希望するサイト情報（例えばＵＲＬ(Uniform Resource Locator)をクライアント端末３０に入力する。
【００２３】
(2)クライアント制御部３２は、後述する共有鍵を生成するための乱数Ｃ１を生成する。
(3)クライアント制御部３２は、ユーザがアクセスを希望するサイト情報と、ユーザＩＤとをサーバ制御部２２に通知する。
【００２４】
(4)サーバ制御部２２は、クライアント制御部３２から通知されたユーザＩＤがサーバＤＢ２３に登録されているか否かを確認する。
(5)サーバ制御部２２は、(4)の処理でユーザＩＤがサーバＤＢ２３に登録されていることを確認した場合には、共有鍵生成用の乱数Ｓ１を生成する。また、このとき、サーバ制御部２２は、(3)の処理で通知を受けたサイト情報をユーザＩＤと対応付けてサーバＤＢ２３に登録する。
(6)サーバ制御部２２は、(4)の処理でユーザＩＤがサーバＤＢ２３に登録されていないことを確認した場合には、クライアント端末３０にエラーを通知する。
【００２５】
(7)クライアント制御部３２は、(1)の処理でユーザによってパスワードπが入力されると、このパスワードπのハッシュ値Ｈ（π）を生成し、ハッシュ値Ｈ（π）と、(2)の処理で生成した乱数Ｃ１とを用いて、クライアントデータＷａを生成する。
(8)クライアント制御部３２は、(7)の処理で生成したクライアントデータＷａをサーバ制御部２２に通知する。
【００２６】
ここで、クライアントデータＷａは、パスワードπのハッシュ値をＨ（π）、離散対数のドメインパラメータをｋ，ｑとすると、下記式により求めることができる。
ｇ１ ＝ Ｈ（π）＾ｋ ｍｏｄ ｑ
Ｗａ ＝ ｇ１＾Ｃ１ ｍｏｄ ｑ
【００２７】
(9)サーバ制御部２２は、(8)の処理でクライアント制御部３２において生成されたクライアントデータＷａが正しく計算されているかを確認する。例えば、ｍｏｄ ｑによる演算をしている場合は、得られた値がｑ−１以下の値になっているか等を確認する。
(10) サーバ制御部２２は、(9)の処理でクライアントデータＷａが正しく計算されていることを確認した場合には、(4)の処理でクライアント端末３０から受信したユーザＩＤに対応するパスワードπをサーバＤＢ２３から読み出し、そのハッシュ値Ｈ（π）と、(5)の処理で生成した乱数Ｓ１とを用いて、サーバデータＷｂを生成する。さらに、サーバ制御部２２は、このサーバデータＷｂをクライアント制御部３２に通知する。
【００２８】
サーバデータＷｂは、例えば、下記式により求めることができる。
ｇ１ ＝ Ｈ（π）＾ｋ ｍｏｄ ｑ
Ｗｂ ＝ ｇ１＾Ｓ１ ｍｏｄ ｑ
【００２９】
(11)サーバ制御部２２は、(9)の処理でクライアントデータＷａが正しく計算されていないことを確認した場合は、エラーであることをクライアント制御部３２に通知する。このとき、サーバ制御部２２は、乱数Ｓ１を消去する。
(12)サーバ制御部２２は、(9)の処理で正確性を確認したクライアントデータＷａと、(5)の処理で生成した乱数Ｓ１を用いて鍵交換共有データＫｂを生成する。
この鍵交換共有データＫｂのハッシュ値が、共有鍵ＳＫ１となる。つまり、サーバ制御部２２で生成する共有鍵ＳＫ１は、以下のようになる。Ｈはハッシュ関数である。
ＳＫ１＝Ｈ（Ｋｂ||Ｐｉ）
【００３０】
(13)クライアント制御部３２は、サーバデータＷｂが正しく計算されているかを確認する。例えば、ｍｏｄ ｑによる演算をしている場合は、得られた値がｑ−１以下の値になっているか等を確認する。
(14)クライアント制御部３２は、(13)の処理で確認データが正しく計算されていないことを確認した場合は、サーバ制御部２２にエラーを通知し、(2)の処理で生成した乱数Ｃ１と、サーバ制御部２２から通知されたサーバデータＷｂとを消去する。
(15)クライアント制御部３２は、(12)の処理でサーバ制御部２２から通知されたサーバデータＷｂと、(2)の処理で生成した乱数Ｃ１とを用いて鍵交換共有データＫａを生成する。この鍵交換共有データＫａのハッシュ値が、共有鍵となる。つまり、クライアント制御部３２で生成する共有鍵ＳＫ１は、以下のようになる。
ＳＫ１＝Ｈ（Ｋａ||Ｐｉ）
【００３１】
(16)クライアント制御部３２は、鍵交換共有データＫａ、クライアントデータＷａ、サーバデータＷｂ、及び、その他必要な情報を連結した確認データ（Ｈ（|パラメータ|Ｗａ|Ｗｂ|Ｋａ|ｇ））をサーバ制御部２２に通知する。
【００３２】
ここで、サーバ制御部２２が生成する鍵交換共有データＫｂと、クライアント制御部３２が生成する鍵交換共有データＫａとは、Diffie Hellmanの鍵交換方式によれば、以下の通り一致する。
任意の素数ａ（１＜＝ａ＜＝ｑ-１）に対してａ ＝ ｇ＾ｂ ｍｏｄ ｑとなる素数ｂが存在する（ｑは、この条件を満たす任意の素数）。
Ｋａ＝ ｂ＾Ｃ１ ｍｏｄ ｑ
＝（ ｇ１＾Ｓ１  ｍｏｄ ｑ）＾Ｃ１ ｍｏｄ ｑ
＝（ｇ１＾Ｓ１）＾Ｃ１ ｍｏｄ ｑ ＝ ｇ１＾Ｓ１・Ｃ１ ｍｏｄ ｑ
Ｋｂ＝ ａ＾Ｃ１ ｍｏｄ ｑ＝  ｇ１＾Ｃ１ ｍｏｄ ｐ）＾Ｓ１ ｍｏｄ ｑ
＝（ｇ１＾Ｃ１）＾Ｓ１ ｍｏｄ ｑ
＝ ｇ１＾Ｃ１・Ｓ１ ｍｏｄ ｑ
である。この通り、ＫａとＫｂは一致する。
【００３３】
(17)サーバ制御部２２は、クライアント制御部３２から通知された確認データ（Ｈ（|パラメータ|Ｗａ|Ｗｂ|Ｋａ|ｇ））と、これに対応するサーバ側の確認データ（Ｈ（|パラメータ|Ｗａ|Ｗｂ|Ｋｂ|ｇ））とが一致するかどうかを確認する。確認データの一致を確認した場合は、その旨をクライアント制御部３２に通知する。
(18)サーバ制御部２２は、(17)の処理において、サーバ側の確認データとクライアント側の確認データとが不一致であることを確認した場合には、エラーであることをクライアント制御部３２に通知するとともに、乱数Ｓ１と確認データを消去する。
【００３４】
(19)クライアント制御部３２は、ユーザがサーバ２０への登録を希望するサイトアクセス用パスワードを(15)の処理で生成した共有鍵ＳＫ１で暗号化し、セキュアチャネルを通じて、この暗号データをサーバ制御部２２に通知する。
【００３５】
(20)サーバ制御部２２は、(12)の処理で生成した共有鍵ＳＫ１を用いて、クライアント制御部３２から通知された暗号データを復号化することにより、サイトアクセス用パスワードを得る。
(21)サーバ制御部２２は、(20)の処理で取得したサイトアクセス用パスワードを用いて、そのサイト４０にログインし、クライアント制御部３２から通知を受けたサイトアクセス用パスワードが正しいか否かを確認する。
(22)サーバ制御部２２は、(21)の処理において、サイトアクセス用パスワードに対応するサイト４０に正しくログインできなかった場合は、クライアント制御部３２にエラーであることを通知し、サイトアクセス用パスワードの再入力を求める。
(23)サーバ制御部２２は、サイトアクセス用パスワードに対応するサイト４０に正しくログインできた場合は、乱数（Ｃ２＊Ｓ２）を生成する。サーバ制御部２２は、乱数（Ｃ２＊Ｓ２）を任意に二分割し、その一方の乱数Ｓ２をサーバＤＢ２３に登録し、他方の乱数Ｃ２を(12)の処理で生成した共有鍵ＳＫ１で暗号化して、セキュアチャネルを通じて、クライアント制御部３２に通知する。
【００３６】
(24)クライアント制御部３２は、(15)の処理で生成した共有鍵ＳＫ１を用いて、サーバ制御部２２から受け取った暗号データを復号化し、(23)の処理で二分割された乱数の一方の乱数Ｃ２を得る。クライアント制御部３２は、この乱数Ｃ２をトークンに設定する。
(25)クライアント制御部３２は、トークンに乱数Ｃ２を設定し、サーバ制御部２２に通知する。クライアント制御部３２は、乱数Ｃ２をサーバ制御部２２に通知した後に、トークンを返却するため乱数Ｃ２をトークンから外してクライアントメモリ３３に登録する。なお、トークン利用者が複数のクライアント端末を利用する場合には、トークンのみに乱数を保持し、クライアントメモリ３３には登録しなくても良い。
このときのクライアントメモリ３３内のデータ構造は、図５（ｂ）に示す通りである。
【００３７】
(26)サーバ制御部２２は、クライアント制御３２から乱数Ｃ２をトークンに設定した旨の通知を受けると、次回用の乱数（Ｃ２＊Ｓ２）を用いて共有鍵ＳＫ２を生成する。さらに、サーバ制御部２２は、サイトアクセス用パスワードを共有鍵ＳＫ２で暗号化し、乱数Ｓ２とともにサーバＤＢ２３に登録する。また、サーバ制御部２２は、生成した次回用の共有鍵ＳＫ２を削除する。このときのサーバＤＢ２３内のデータ構造は、図５（ａ）に示す通りである。
【００３８】
以上のように、パスワード認証鍵交換プロトコルを用いたサイトアクセス用パスワードの登録処理によれば、サーバ２０とクライアント端末３０との間で確立するセキュアチャネルで用いる共有鍵と、サイトアクセス用パスワードを暗号化する鍵とを同一の鍵にしつつ、この共有鍵を生成するために必要な乱数をサーバ２０側と、クライアント端末３０側とで分割して保持するので、不正者がサーバ２０にアクセスしても、共有鍵を生成することのできない、安全性の高いパスワード認証鍵交換システムを提供することができる。
【００３９】
＜サイトアクセス用パスワード利用処理＞
図６ないし図９は、サイトアクセス用パスワード利用処理のための手順説明図である。図６ないし図９における処理(31)〜(58)は、具体的には、図１に示す機能ブロックにおいて行われる。このサイトアクセス用パスワードの利用処理は、基本的にはサイトアクセス用パスワードの登録処理に準ずる処理である。また、サーバ制御部２２と、クライアント制御部３２との間における通信は、すべてＩ／Ｆ２１、ネットワーク１０及びＩ／Ｆ３１を通じて行われるため、以下では、この記載を省略する。
なお、サイトアクセス用パスワード利用処理は、サーバ２０とクライアント端末３０とよって繰り返し行われる処理であるため、ここでは、説明を一般化するために、サイトアクセス用パスワード登録処理における乱数Ｃ１、乱数Ｓ１、クライアントデータＷａ、サーバデータＷｂ、共有鍵鍵交換共有データＫａ、Ｋｂ、及び、共有鍵ＳＫ１に相当する値を、それぞれ、乱数Ｃｘ、乱数Ｓｘ、クライアントデータＷａｘ、サーバデータＷｂｘ、共有鍵鍵交換共有データＫａｘ、Ｋｂｘ、及び、共有鍵ＳＫｘとする。ｘは世代数を表し、例えば、乱数Ｓ(ｘ＋１)は、乱数Ｓｘを生成した処理の次回処理で生成された一世代後の乱数であることを意味する。
【００４０】
(31)ユーザがサーバ２０にアクセスすべく、クライアント端末３０を操作すると、クライアント制御部３２は、トークンを確保する。ユーザは、クライアント端末３０にユーザＩＤとパスワードπを入力する。また、このとき、ユーザは、アクセスを希望するサイト情報（例えばＵＲＬ(Uniform Resource Locator) をクライアント端末３０に入力する。
(32)クライアント制御部３２は、クライアントメモリ３３内に登録されている乱数Ｃｘをトークンに設定する。なお、事前にトークンに乱数Ｃｘが登録されている場合は、省略しても良い。
(33)クライアント制御部３２は、ユーザがアクセスを希望するサイト情報と、ユーザＩＤとをサーバ制御部２２に通知する。
【００４１】
(34)サーバ制御部２２は、クライアント制御部３２から通知されたユーザＩＤがサーバＤＢ２３に登録されているか否かを確認する。
(35)サーバ制御部２２は、(34)の処理でユーザＩＤがサーバＤＢ２３に登録されていることを確認した場合には、このユーザＩＤに対応する乱数ＳｘをサーバＤＢ２３から読み出す。
(36)サーバ制御部２２は、(34)の処理でユーザＩＤがサーバＤＢ２３に登録されていないことを確認した場合には、クライアント端末３０にエラーを通知する。
【００４２】
(37)クライアント制御部３２は、(31)の処理でユーザによって入力されたパスワードπのハッシュ値Ｈ（π）を生成し、このＨ（π）と、(32)の処理でトークンに設定した乱数Ｃｘとを用いて、クライアントデータＷａｘを生成する。
(38)クライアント制御部３２は、(37)の処理で生成したクライアントデータＷａｘをサーバ制御部２２に通知する。
【００４３】
クライアントデータＷａｘは、下記式により求めることができる。
ｇ１’ ＝ Ｈ（π）＾ｋ ｍｏｄ ｑ
Ｗａｘ ＝ ｇ１’＾Ｃｘ ｍｏｄ ｑ
【００４４】
(39)サーバ制御部２２は、(38)の処理でクライアント制御部３２において生成されたクライアントデータＷａｘが正しく計算されているかを確認する。例えば、ｍｏｄ ｑによる演算をしている場合は、得られた値がｑ−１以下の値になっているかを確認する。
(40) サーバ制御部２２は、(39)の処理でクライアントデータＷａｘが正しく計算されていることを確認した場合には、(34)の処理でクライアント端末３０から受信したユーザＩＤに対応するパスワードπをサーバＤＢ２３から読み出し、このパスワードπのハッシュ値Ｈ（π）と、(35)の処理で用いた乱数Ｓｘとを用いて、サーバデータＷｂｘを生成する。さらに、サーバ制御部２２は、このサーバデータＷｂｘをクライアント制御部３２に通知する。
【００４５】
サーバデータＷｂｘは、下記式により求めることができる。
ｇ１’ ＝ Ｈ（π）＾ｋ ｍｏｄ ｑ
Ｗｂｘ ＝ ｇ１’＾Ｓｘ ｍｏｄ ｑ
【００４６】
(41)サーバ制御部２２は、(39)の処理でクライアントデータＷａｘが正しく計算されていないことを確認した場合は、エラーであることをクライアント制御部３２に通知する。このとき、サーバ制御部２２は、乱数Ｓｘを消去する。
(42)サーバ制御部２２は、(39)の処理で正しく計算されていることを確認したクライアントデータＷａｘと、(35)の処理で読み出した乱数Ｓｘを用いて鍵交換共有データＫｂｘを生成する。この鍵交換共有データＫｂｘのハッシュ値が、共有鍵となる。つまり、サーバ制御部２２で生成する共有鍵ＳＫｘは、以下のようになる。
ＳＫｘ＝Ｈａｓｈ（Ｋｂｘ||Ｐｉ）
【００４７】
(43)クライアント制御部３２は、サーバデータＷｂｘが正しく計算されているかを確認する。例えばｍｏｄ ｑによる演算をしている場合は、ｑ−１以下の値になっているか等を確認する。
(44)クライアント制御部３２は、(43)の処理で確認データが正しく計算されていないことを確認した場合は、サーバ制御部２２にエラーを通知し、(35)の処理で読み出した乱数Ｓｘと、サーバ制御部２２から通知されたサーバデータＷｂｘとを消去する。
(45)クライアント制御部３２は、(42)の処理でサーバ制御部２２から通知されたサーバデータＷｂｘと、(35)の処理で読み出した乱数Ｓｘを用いて鍵交換共有データＫａｘを生成する。この鍵交換共有データＫａｘのハッシュ値が、共有鍵となる。つまり、クライアント制御部３２で生成する共有鍵ＳＫｘは、以下のようになる。
ＳＫｘ＝Ｈ（Ｋａｘ||Ｐｉ）
【００４８】
なお、鍵交換共有データＫａｘとＫｂｘとの同一性については、サイトアクセス用パスワード登録処理における鍵交換共有データＫａとＫｂとが同一であることと同じ理由により説明が付くので、省略する。
(46)クライアント制御部３２は、鍵交換共有データＫａｘ、クライアントデータＷａｘ、サーバデータＷｂｘ、及び、その他必要な情報を連結した確認データ（Ｈ（|パラメータ|Ｗａｘ|Ｗｂｘ|Ｋａｘ|ｇ））をサーバ制御部２２に通知する。
【００４９】
(47)サーバ制御部２２は、クライアント制御部３２から通知された確認データ（Ｈ（|パラメータ|Ｗａｘ|Ｗｂｘ|Ｋａｘ|ｇ））と、これに対応するサーバ側の確認データ（Ｈ（|パラメータ|Ｗａｘ|Ｗｂｘ|Ｋｂｘ|ｇ））とが一致するか確認する。サーバ制御部２２は、これらの確認データの一致を確認した場合は、その旨をクライアント制御部３２に通知する。
(48)サーバ制御部２２は、(47)の処理において、サーバ側の確認データと、クライアント側の確認データの不一致を確認した場合には、エラーであることをクライアント制御部３２に通知するとともに、乱数Ｃｘと確認データを消去する。
【００５０】
(49)サーバ制御部２２は、(47)の処理において、サーバ側の確認データと、クライアント側の確認データとの一致を確認した場合には、共有鍵ＳＫｘで暗号化されているサイトアクセス用パスワードを復号化する。
(50)サーバ制御部２２は、ユーザＩＤに対応するサイト情報をサーバＤＢ２３から読み出し、サイト４０に接続するために使用する接続データ（アドレス等）をクライアント制御部３２に通知する。
【００５１】
(51)クライアント制御部３２は、サーバ２０を経由して、サイト４０にアクセスする。ユーザは、サイト４０によるサービスを利用することができる。
(52)クライアント制御部３２は、サイト４０へのアクセスを終了するかを繰り返し確認する。この処理は、ユーザがクライアント端末３０に終了する旨を入力するまでクライアント制御部３２によって繰り返し実行される。
(53)ユーザによってクライアント端末３０にサイト４０へのアクセスを終了する旨が入力されると、クライアント制御部３２は、サーバ制御部２２にサイトをログオフする旨を通知する。
(54)サーバ制御部２２は、サイト４０からログオフする。
【００５２】
(55)サーバ制御部２２は、乱数Ｃ(ｘ＋１)＊Ｓ(ｘ＋１）を生成する。サーバ制御部２２は、乱数Ｃ(ｘ＋１)＊Ｓ(ｘ＋１）を任意に二分割し、その一方の乱数Ｓ(ｘ＋１)をサーバＤＢ２３に登録し、他方の乱数Ｃ(ｘ＋１)を共有鍵ＳＫｘで暗号化して、セキュアチャネルを通じて、クライアント制御部３２に通知する。
(56)クライアント制御部３２は、共有鍵ＳＫｘを用いて、サーバ制御部２２から受け取った暗号データを復号化し、二分割された乱数の一方の乱数Ｃ(ｘ＋１)を得る。クライアント制御部３２は、この乱数Ｃ(ｘ＋１)をトークンに設定する。
【００５３】
(57)クライアント制御部３２は、トークンに乱数Ｃ(ｘ＋１)を設定し、サーバ制御部２２に通知する。なお、クライアント制御部３２は、乱数Ｃ(ｘ＋１)をサーバ制御部２２に通知した後に、トークンを返却するため乱数Ｃ(ｘ＋１)をトークンから外してクライアントメモリ３３に登録する。なお、トークン利用者が複数のクライアント端末を利用する場合には、トークンのみに乱数を保持し、クライアントメモリ３３には登録しなくとも良い。
(58)サーバ制御部２２は、クライアント制御３２から乱数Ｃ(ｘ＋１)をトークンに設定した旨の通知を受けると、次回用の乱数Ｃ(ｘ＋１)＊Ｓ(ｘ＋１）を用いて共有鍵ＳＫ(ｘ＋１)を生成する。また、サーバ制御部２２は、サイトアクセス用パスワードを共有鍵ＳＫ(ｘ＋１)で暗号化し、乱数Ｓ(ｘ＋１)とともにサーバＤＢ２３に登録する。さらに、サーバ制御部２２は、生成した次回用の共有鍵ＳＫ(ｘ＋１)を削除する。
【００５４】
以上のように、第１実施形態のパスワード認証鍵交換プロトコルを用いたサイトアクセス用パスワードの利用処理によれば、サーバ２０とクライアント端末３０との間で確立するセキュアチャネルで用いる共有鍵と、サイトアクセス用パスワードを暗号化する鍵とを同一の鍵にしつつ、この共有鍵を生成するために必要な乱数をサーバ２０側と、クライアント端末３０側とで分割して保持するので、不正者がサーバ２０にアクセスしても、共有鍵を生成することのできない、安全性の高いパスワード認証鍵交換システムを提供することができる。
【００５５】
なお、以上の説明では、サーバ２０上にあるサイトアクセス用パスワードを共有鍵で暗号化することによって保護する手法を示したが、共有鍵を用いて保護する対象は、サイトアクセス用パスワードに限定されず、個人のみが利用する秘密鍵や権限情報などの個人情報を、さらには個人情報を含むアプリケーション、ワンタイムで利用するチケット設定などを秘密情報として保護することも可能である。
【００５６】
クライアント端末３０には、利用毎に毎回異なる乱数が通知し設定されるだけなので、トークンとしてメモリーカードなどを利用することができ、且つリモートに設定したパスワードなどの個人情報の保護を、サーバでの鍵の管理負担を軽減しつつ実現できる。
【００５７】
［第２実施形態］
次に、本発明の第２実施形態を説明する。第２実施形態では、図１に示したサイト４０において、秘密分散法を用いて、サイトアクセス用パスワードとシェアから２つの分散データを生成する。クライアント端末３０は、２つの分散データを復元するためのシェアを保持し、シェアのハッシュ値をクライアント端末３０が利用する乱数にする。サーバ２０は、分散データの一方を共有鍵で暗号化して保持し、他方の分散データを乱数として利用する。
サーバ２０とクライアント端末３０との間で形成するセキュアチャネルで用いる暗号化のための共有鍵は、サーバ２０が有する乱数と、クライアント端末３０が有する乱数とを利用して生成した共有鍵となる。
【００５８】
クライアント端末３０がサイト４０にアクセスする際には、セキュアチャネルで共有鍵を生成し、サーバ２０がこの共有鍵を用いて暗号化された分散データを復号化する。サーバ２０は、さらに分散された２つの分散データとシェアを用いてサイトアクセスパスワードを生成する。このようにして、クライアント端末３０は、サーバ２０を介して、実際には複数あるサイト４０にシングルサインオンすることができる。
【００５９】
［動作例］
次に、第２実施形態において、サーバ２０と、クライアント端末３０とが、ネットワーク１０を通じて通信を行い、実際には複数存在するサイト４０にシングルサインオンでアクセスするときの動作例を示す。この通信は、サイトアクセス用パスワードの登録処理と、サイトアクセス用パスワードの利用処理とに大別される。
【００６０】
＜サイトアクセス用パスワード登録処理＞
図１０〜図１１は、パスワード認証鍵交換プロトコルを用いたサイトアクセス用パスワード登録処理の手順説明図である。このサイトアクセス用パスワードの登録処理に際しては、ユーザのユーザＩＤとパスワードφが対応付けられて事前にサーバ２０のサーバＤＢ２３に登録されているものとする。また、サーバ制御部２２、クライアント制御部３２及びサイト制御部４２の間における通信は、すべてＩ／Ｆ２１、ネットワーク１０、Ｉ／Ｆ３１及びＩ／Ｆ４１を通じて行われるため、以下では、この記載を省略する。また、図１２は、サーバ２０のサーバＤＢ２３内と、クライアント端末３０のメモリ内におけるデータ構造説明図である。
なお、図１０及び図１１における処理(101)〜(118)は、具体的には、図１に示す機能ブロックにおいて行われる。
【００６１】
(101)ユーザがサーバ２０にアクセスすべく、クライアント端末３０を操作すると、クライアント制御部３２は、Ｉ／Ｆ３１を通じてトークンを確保する。ユーザは、クライアント端末３０にユーザＩＤとパスワードφを入力する。
(102)クライアント制御部３２は、ユーザＩＤに対応するクライアントメモリ３３内のデータを読み込み、サイトアクセス用パスワードをサイト４０で登録済みかを確認する。具体的には、ユーザＩＤに対応するクライアントメモリ３３内のデータにシェアが存在するか否かを確認する。
(103)クライアント制御部３２は、(102)の処理でユーザＩＤに対応するクライアントメモリ３３内のデータにシェアが存在しないことを確認した場合は、Ｉ／Ｆ３１及びネットワーク１０を通じ、サーバ２０経由でそのユーザが登録を希望するサイトアクセス用パスワードをサイト４０に通知する。
【００６２】
(104)サイト制御部４２は、クライアント制御部３２から通知されたサイトアクセス用パスワードをユーザＩＤと対応付けてサイトＤＢ４３に登録する。
(105)サイト制御部４２は、サーバ２０のサーバＤＢ２３にサイトアクセス用パスワードの分散データを設定するために必要な設定コードと、クライアント端末３０が利用するトークンに設定させるシェアとを任意に生成し、ネットワーク１０を通じてクライアント端末３０のクライアント制御部３２に通知する。
【００６３】
(106)クライアント制御部３２は、(105)の処理でサイト制御部４２から通知された設定コードとシェアをクライアントメモリ３３に登録する。このときのメモリ３３内のデータ構造は、図１２（ｂ）に示す通りである。
(107)クライアント制御部３２は、サーバアクセス用パスワードφを次式に代入して、ｇ２値を生成する。
ｇ２＝Ｈ（φ）＾ｋ  ｍｏｄ  ｑ
【００６４】
(108)クライアント制御部３２は、(106)の処理でクライアントメモリ３３に保存したシェアと、(107)の処理で生成された値ｇ２とを次式に代入してクライアントデータＷａ’を生成する。クライアント制御部３２は、クライアントデータＷａ’をサイト制御部４２に通知する。
Ｗａ’＝ｇ２＾Ｈ（シェア）  ｍｏｄ  ｑ
【００６５】
(109)サイト制御部４２は、(105)の処理で生成した設定コードをキー情報として、サイトアクセス用パスワード、シェア、及び、クライアントデータＷａ’をサイトＤＢ４３に保存する。
(110)サーバ制御部２２とクライアント制御部３２との間で共有鍵を生成する。すなわち、(108)で生成したクライアントデータＷａ’と乱数とに基づいて生成されるサーバデータＷｂ’とを用いて、実施の形態１における(9)から(18)の処理と同様の処理を実行することにより、サーバ制御部２２及びクライアント制御部３２は、共有鍵ＳＫ１’をそれぞれ生成する。
この結果、サーバ２０とクライアント端末３０は、共有鍵ＳＫ１’を共有する。
【００６６】
(111)クライアント制御部３２は、クライアントメモリ３３に登録してある設定コードを共有鍵ＳＫ１’で暗号化し、セキュアチャネルを通じてサーバ制御部２２に通知する。
(112)サーバ制御部２２は、共有鍵ＳＫ１’を用いて、暗号化された設定コードを復号化するとともに、後述する分散データ１を暗号化するための次回処理用の共有鍵を生成する際に利用する共有鍵生成パラメータＰｉ’と、設定コードとを、サイト制御部４２に通知する。
【００６７】
(113)サイト制御部４２は、サーバ制御部２２から通知された設定コードが、(105)の処理で生成した設定コードと同一であるかを確認する。
(114)サイト制御部４２は、サーバ制御部２２から通知された設定コードが、(105)の処理で生成した設定コードと同一でないことを確認した場合は、ネットワーク１０を通じて、クライアント制御部３２にエラーであることを通知する。
(115)サイト制御部４２は、サーバ制御部２２から通知された設定コードが、(105)の処理で生成した設定コードと同一であることを確認した場合は、(105)の処理で生成した設定コードをサイトＤＢ４３から削除し、サイトＤＢ４３内において、その設定コードに対応するサイトアクセス用パスワードとシェアを読み出し、このサイトアクセス用パスワードとシェアとから分散データ１及び分散データ２を生成する。
分散データ２＝p+x*a+x*b
分散データ１＝p+y*a+y*b
ここで、P=サイト用パスワード、[a,b]はシェア,[x,y]は任意の乱数である。
なお、分散の方法は、本方式に限定されるものではない。また、シェアのサイズは、ユーザの利用頻度によって変更しても良い。
【００６８】
(116)サイト制御部４２は、設定コードに対応するクライアントデータＷａ’をサイトＤＢ４３から読み出し、このクライアントデータＷａ’と分散データ２とを次式に代入して鍵交換共有データＺを生成する。
Ｚ ＝ Ｗａ’＾分散データ２ ｍｏｄ ｑ
【００６９】
(117)サイト制御部４２は、鍵交換共有データＺと、サーバ２０から受信した共有鍵生成パラメータＰｉ’とを用いて共有鍵ＳＫｘ’を生成し、(115)の処理で生成した分散データ１を暗号化すると、暗号化した分散データ１と暗号化していない分散データ２とをネットワーク１０を通じてサーバ２０に通知する。なお、サイト制御部４２が生成する共有鍵ＳＫｘ’は、以下のようになる。
ＳＫｘ’＝Ｈａｓｈ（Ｚ||Ｐｉ’）
(118)サーバ制御部２２は、サイト制御部４２から通知された、暗号化された分散データ１と、暗号化されていない分散データ２とをユーザＩＤと対応付けてサーバＤＢ２３に登録する。このときのサーバＤＢ２３内のデータ構造は、図１２（ａ）に示す通りである。
【００７０】
以上により、サイトアクセス用パスワード登録処理は終了する。サーバ２０には、サイトアクセス用パスワードは登録されていない。
【００７１】
＜サイトアクセス用パスワード利用処理＞
図１３ないし図１６は、サイトアクセス用パスワード利用処理の手順説明図である。また、サーバ制御部２２、クライアント制御部３２及びサイト制御部４２の間における通信は、すべてＩ／Ｆ２１、ネットワーク１０、Ｉ／Ｆ３１及びＩ／Ｆ４１を通じて行われるため、以下では、この記載を省略する。なお、図１３ないし図１６における処理(131)〜(158)は、具体的には、図１に示す機能ブロックにおいて行われる。
このサイトアクセス用パスワードの利用処理は、基本的にはサイトアクセス用パスワードの登録処理に準ずる処理である。
【００７２】
(131)ユーザがサーバ２０にアクセスすべく、クライアント端末３０を操作すると、クライアント制御部３２は、トークンを確保する。ユーザは、クライアント端末３０にユーザＩＤとパスワードφを入力する。また、このとき、ユーザは、アクセスを希望するサイト情報（例えばＵＲＬ(Uniform Resource Locator) をクライアント端末３０に入力する。
(132)クライアント制御部３２は、クライアントメモリ３３内に登録されているシェアのハッシュ値をトークンに設定する。なお、事前にトークンにシェアのハッシュ値が設定されている場合は省略しても良い。
(133)クライアント制御部３２は、ユーザがアクセスを希望するサイト情報と、ユーザＩＤとをサーバ制御部２２に通知する。
【００７３】
(134)サーバ制御部２２は、クライアント制御部３２から通知されたユーザＩＤがサーバＤＢ２３に登録されているか否かを確認する。
(135)サーバ制御部２２は、(134)の処理でユーザＩＤがサーバＤＢ２３に登録されていることを確認した場合には、このユーザＩＤに対応する分散データ２をサーバＤＢ２３から読み出す。
(136)サーバ制御部２２は、(134)の処理でユーザＩＤがサーバＤＢ２３に登録されていないことを確認した場合には、クライアント端末３０にエラーを通知する。
【００７４】
(137)クライアント制御部３２は、(131)の処理でユーザによって入力されたパスワードφのハッシュ値Ｈａｓｈ（φ）を生成し、このパスワードφのハッシュ値Ｈａｓｈ（φ）と、(132)の処理でトークンに設定した乱数（シェアのハッシュ値Ｈ（シェア））とを用いてクライアントデータＷａｘ’を生成する。
(138)クライアント制御部３２は、(137)の処理で生成したクライアントデータＷａｘ’をサーバ制御部２２に通知する。
【００７５】
ここで、クライアントデータＷａｘ’は、例えば、次のように算出することができる。
パスワードφのハッシュ値Ｈ（φ）を用いて、下記式によりｇ２を求める。
ｇ２＝Ｈ（φ）＾ｋ  ｍｏｄ  ｑ
Ｗａｘ’ ＝ ｇ２＾Ｈ（シェア） ｍｏｄ ｑ
【００７６】
(139)サーバ制御部２２は、(138)の処理でクライアント制御部３２において生成されたクライアントデータＷａｘ’が正しく計算されているかを確認する。例えば、ｍｏｄ ｑ演算をしている場合は、得られる値がｑ−１以下の値になっているかを確認する。
(140)サーバ制御部２２は、(139)の処理でクライアントデータＷａｘ’が正しく計算されていることを確認した場合には、(134)の処理でクライアント端末３０から受信したユーザＩＤに対応するパスワードφをサーバＤＢ２３から読み出し、このパスワードφのハッシュ値Ｈａｓｈ（φ）と、(135)の処理で用いた分散データ２とを用いて、サーバデータＷｂｘ’を生成する。さらに、サーバ制御部２２は、このサーバデータＷｂｘ’をクライアント制御部３２に通知する。
【００７７】
サーバデータＷｂｘ’は、下記式により求めることができる。
ｇ２＝Ｈ（φ）＾ｋ  ｍｏｄ  ｑ
Ｗｂｘ’ ＝ ｇ２＾分散データ２ ｍｏｄ ｑ
【００７８】
(141)サーバ制御部２２は、(139)の処理でクライアントデータＷａｘ’が正しく計算されていないことを確認した場合は、エラーであることをクライアント制御部３２に通知する。このとき、サーバ制御部２２は、分散データ２を消去する。
(142)サーバ制御部２２は、(139)の処理で正確性を確認したクライアントデータＷａｘ’と、(135)の処理で読み出した分散データ２を用いて鍵交換共有データＫｂｘ’を生成する。この鍵交換共有データＫｂｘのハッシュ値が、共有鍵となる。つまり、サーバ制御部２２で生成する共有鍵ＳＫｘ’は、以下のようになる。
ＳＫｘ’＝Ｈ（Ｋｂｘ’||Ｐｉ）
【００７９】
(143)クライアント制御部３２は、サーバデータＷｂｘ’が正しく計算されているかを確認する。例えば、ｍｏｄ ｑ演算をしている場合は、得られる値がｑ−１以下の値になっているかを確認する。
(144)クライアント制御部３２は、(143)の処理で確認データが正しく計算されていないことを確認した場合は、サーバ制御部２２にエラーを通知し、(135)の処理で読み出した分散データ２と、サーバ制御部２２から通知されたサーバデータＷｂｘ’とを消去する。
(145)クライアント制御部３２は、(142)の処理でサーバ制御部２２から通知されたサーバデータＷｂｘ’と、(135)の処理で読み出した分散データ２を用いて鍵交換共有データＫａｘ’を生成する。この鍵交換共有データＫａｘ’のハッシュ値が共有鍵となる。つまり、クライアント制御部３２で生成する共有鍵ＳＫｘ’は、以下のようになる。
ＳＫｘ’＝Ｈ（Ｋａｘ’||Ｐｉ）
(146)クライアント制御部３２は、鍵交換共有データＫａｘ、クライアントデータＷａｘ’、サーバデータＷｂｘ’、及び、その他必要な情報を連結した確認データ（Ｈ（|パラメータ|Ｗａｘ’|Ｗｂｘ’|Ｋａｘ|ｇ））をサーバ制御部２２に通知する。
【００８０】
(147)サーバ制御部２２は、クライアント制御部３２から通知された確認データ（Ｈ（|パラメータ|Ｗａｘ’|Ｗｂｘ’|Ｋａｘ|ｇ））と、これに対応するサーバ側の確認データ（Ｈ（|パラメータ|Ｗａｘ’|Ｗｂｘ’|Ｋｂｘ|ｇ））とが一致するか確認する。サーバ制御部２２は、これらの確認データの一致を確認した場合は、その旨をクライアント制御部３２に通知する。
(148)サーバ制御部２２は、(147)の処理において、サーバ側の確認データと、クライアント側の確認データの不一致を確認した場合には、エラーであることをクライアント制御部３２に通知するとともに、分散データ２と確認データを消去する。
【００８１】
(149)サーバ制御部２２は、共有鍵ＳＫｘ’で暗号化されている分散データ１を復号化する。
(150)サーバ制御部２２は、分散データ１と分散データ２とをクライアント制御部３２に通知する。
【００８２】
(151)クライアント制御部３２は、シェアと、分散データ１及び分散データ２とを用いてサイトアクセス用パスワードを復元し、サーバ２０を経由して、サイト４０にアクセスする。ユーザは、サイト４０によるサービスを利用することができる。
(152)クライアント制御部３２は、サイト４０へのアクセスを終了するかを繰り返し確認する。この処理は、ユーザがクライアント端末３０に終了する旨を入力するまで繰り返し実行される。
(153)ユーザによってクライアント端末３０にサイト４０へのアクセスを終了する旨が入力されると、クライアント制御部３２は、サーバ制御部２２にサイトをログオフする旨を通知する。
(154)サーバ制御部２２は、サイト４０からログオフする。
【００８３】
(155)サイト制御部４２は、サーバ２０のサーバＤＢ２３にサイトアクセス用パスワードの分散データを設定するために必要な設定コードと、クライアント端末３０が利用するトークンに設定させるシェアとを任意に生成し、ネットワーク１０を通じてクライアント端末３０のクライアント制御部３２に通知する。これらの設定コードとシェアは、前回処理のものとは異なる値を有する。
(156)クライアント制御部３２は、共有鍵ＳＫ(ｘ＋１)’を用いて、サーバ制御部２２から受け取った暗号データを復号化し、次回処理用のシェアを得る。クライアント制御部３２は、この次回処理用のシェアのハッシュ値をトークンに設定する。
【００８４】
(157)クライアント制御部３２は、トークンに次回処理用のシェアのハッシュ値を設定し、サーバ制御部２２に通知する。なお、クライアント制御部３２は、次回処理用のシェアをサーバ制御部２２に通知した後に、トークンを返却するため次回処理用のシェアをトークンから外してクライアントメモリ３３に登録する。なお、トークン利用者が複数のクライアント端末を利用する場合には、トークンのみにシェアを保持し、クライアントメモリ３３に登録してなくとも良い。
(158)サーバ制御部２２は、クライアント制御３２から次回処理用のシェアをトークンに設定した旨の通知を受けると、次回用のシェアのハッシュ値と次回用の分散データ２を用いて共有鍵ＳＫ(ｘ＋１)’を生成する。さらに、サーバ制御部２２は、分散データ１を共有鍵ＳＫ(ｘ＋１)’で暗号化し、暗号化していない分散データ２とともにサーバＤＢ２３に登録する。また、サーバ制御部２２は、生成した次回用の共有鍵ＳＫ(ｘ＋１)’を削除する。
【００８５】
以上、第２実施形態によれば、クライアント端末３０経由でのみサイトアクセス用パスワードの利用が可能になるので、サーバ２０側での不正をより厳密に防ぐことができる。
【図面の簡単な説明】
【００８６】
【図１】本発明の第１実施形態に係るパスワード認証鍵交換システムの全体構成図。
【図２】第１実施形態によるサイトアクセス用パスワード登録処理の手順説明図。
【図３】第１実施形態によるサイトアクセス用パスワード登録処理の手順説明図。
【図４】第１実施形態によるサイトアクセス用パスワード登録処理の手順説明図。
【図５】第１実施形態で使用するデータの構造例を示す図。
【図６】第１実施形態によるサイトアクセス用パスワード利用処理の手順説明図。
【図７】第１実施形態によるサイトアクセス用パスワード利用処理の手順説明図。
【図８】第１実施形態によるサイトアクセス用パスワード利用処理の手順説明図。
【図９】第１実施形態によるサイトアクセス用パスワード利用処理の手順説明図。
【図１０】第２実施形態によるサイトアクセス用パスワード登録処理の手順説明図。
【図１１】第２実施形態によるサイトアクセス用パスワード登録処理の手順説明図。
【図１２】第２実施形態で使用するデータの構造例を示す図。
【図１３】第２実施形態によるサイトアクセス用パスワード利用処理の手順説明図。
【図１４】第２実施形態によるサイトアクセス用パスワード利用処理の手順説明図。
【図１５】第２実施形態によるサイトアクセス用パスワード利用処理の手順説明図。
【図１６】第２実施形態によるサイトアクセス用パスワード利用処理の手順説明図。
【符号の説明】
【００８７】
１０・・・ネットワーク、２０・・・サーバ、２１，３１，４１・・・Ｉ／Ｆ、２２・・・サーバ制御部、２３・・・サーバＤＢ、３０・・・クライアント端末、３１・・・Ｉ／Ｆ、３２・・・クライアント制御部、３３・・・クライアントメモリ、４０・・・サイト、４２・・・サイト制御部。
【図１】
0004794970.tif 000002
【図２】
0004794970.tif 000003
【図３】
0004794970.tif 000004
【図４】
0004794970.tif 000005
【図５】
0004794970.tif 000006
【図６】
0004794970.tif 000007
【図７】
0004794970.tif 000008
【図８】
0004794970.tif 000009
【図９】
0004794970.tif 000010
【図１０】
0004794970.tif 000011
【図１１】
0004794970.tif 000012
【図１２】
0004794970.tif 000013
【図１３】
0004794970.tif 000014
【図１４】
0004794970.tif 000015
【図１５】
0004794970.tif 000016
【図１６】
0004794970.tif 000017