(57)【特許請求の範囲】
【請求項１】
第１のノード及び第２のノードがネットワークに接続され、
前記第１のノードが前記第２のノードにアクセスするための識別情報とパスワードとが予め設定され、
前記第１のノードと前記第２のノードとは、予め共通関数を共有し、
前記第１のノードと前記第２のノードとが互いに生成する共通鍵により暗号化された通信チャネルを確立する暗号化通信チャネル確立システムであって、
前記第１のノードは、
第１カウンタと、
前記第１カウンタの値を前記第２のノードと一時的に共有する使い捨ての値として取得する第１使い捨て共有値取得部と、
前記識別情報を前記第２のノードに送信する接続要求部と、
前記識別情報に対応するパスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第１共通鍵生成部と、
を備え、
前記第２のノードは、
前記第１のノードから前記識別情報を受信する識別情報受信部と、
第２カウンタと、
前記第２カウンタの値を前記第１のノードと一時的に共有する使い捨ての値として取得する第２使い捨て共有値取得部と、
前記識別情報受信部により受信した前記識別情報に基づいて、予め設定されたパスワードを取得するパスワード取得部と、
前記識別情報に対応するパスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第２共通鍵生成部と、
を備え、
前記第１カウンタと前記第２カウンタとを同期させることにより、前記第１カウンタの値と前記第２カウンタの値とが、常に同じ値となるようになした、暗号化通信チャネル確立システム。
【請求項２】
前記第１のノードは、
ランダムにノンスを生成し、前記ノンス又は前記ノンスを前記共通鍵により暗号化した暗号データをチャレンジデータとして前記第２のノードに送信し、前記第２のノードから受信したレスポンスデータを用いて前記第２のノードを認証する第１認証部を備え、
前記第２のノードは、
前記第１のノードから受信した前記チャレンジデータに基づいてレスポンスデータを生成し、前記レスポンスデータを前記第１のノードに送信する第２レスポンス部を備える、請求項１に記載の暗号化通信チャネル確立システム。
【請求項３】
前記第２のノードは、
ランダムにノンスを生成し、前記ノンス又は前記ノンスを前記共通鍵により暗号化した暗号データをチャレンジデータとして前記第１のノードに送信し、前記第１のノードから受信したレスポンスデータを用いて前記第１のノードを認証する第２認証部を備え、
前記第１のノードは、
前記第２のノードから受信した前記チャレンジデータに基づいてレスポンスデータを生成し、前記レスポンスデータを前記第２のノードに送信する第１レスポンス部を備える、請求項１又は請求項２に記載の暗号化通信チャネル確立システム。
【請求項４】
前記共通関数は、一方向性関数又は暗号化関数である、請求項１乃至請求項３のいずれか１項に記載の暗号化通信チャネル確立システム。
【請求項５】
ネットワークに接続された第１のノードであって、
ネットワークに接続された第２のノードにアクセスするための識別情報とパスワードとが予め設定され、
前記第２のノードと共有する共通関数を有し、
前記第２のノードが備える第２カウンタと同期され、常に前記第２カウンタの値と同じ値を出力する第１カウンタと、
前記第１カウンタの値を前記第２のノードと一時的に共有する使い捨ての値として取得する第１使い捨て共有値取得部と、
前記識別情報を前記第２のノードに送信する接続要求部と、
前記識別情報に対応するパスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第１共通鍵生成部と、
を備える第１のノード。
【請求項６】
ネットワークに接続された第２のノードであって、
ネットワークに接続された第１のノードが前記第２のノードにアクセスするための識別情報とパスワードとが予め設定され、
前記第１のノードと共有する共通関数を有し、
前記第１のノードが備える第１カウンタと同期され、常に前記第１カウンタの値と同じ値を出力する第２カウンタと、
前記第２カウンタの値を前記第１のノードと一時的に共有する使い捨ての値として取得する第２使い捨て共有値取得部と、
前記第１のノードから前記識別情報を受信する識別情報受信部と、
前記識別情報受信部により受信した前記識別情報に基づいて、予め設定されたパスワードを取得するパスワード取得部と、
前記パスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第２共通鍵生成部と、
を備える第２のノード。
【請求項７】
第１のノード及び第２のノードがネットワークに接続され、
前記第１のノードが前記第２のノードにアクセスするための識別情報とパスワードが予め設定され、
前記第１のノードと前記第２のノードとは、予め共通関数を共有し、
前記第１のノードと前記第２のノードとが互いに生成する共通鍵により暗号化された通信チャネルを確立する暗号化通信チャネル確立方法であって、
前記第１のノードが、
前記第１のノードが備える第１カウンタの値を前記第２のノードと一時的に共有する使い捨ての値として取得する第１使い捨て共有値取得ステップと、
前記識別情報を前記第２のノードに送信する接続要求ステップと、
前記識別情報に対応するパスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第１共通鍵生成ステップと、
を備え、
前記第２のノードが、
前記第１のノードから、前記識別情報を受信する識別情報受信ステップと、
前記第２のノードが備える第２カウンタの値を前記第１のノードと一時的に共有する使い捨ての値として取得する第２使い捨て共有値取得ステップと、
前記識別情報受信ステップにより受信した前記識別情報に基づいて、予め設定されたパスワードを取得するパスワード取得ステップと、
前記パスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第２共通鍵生成ステップと、
を備え、
前記第１カウンタと前記第２カウンタとを同期させることにより、前記第１カウンタの値と前記第２カウンタの値とが、常に同じ値となるようになした、暗号化通信チャネル確立方法。
【請求項８】
コンピュータを、請求項１乃至６の何れか一項に記載の第１のノード又は第２のノードとして機能させるプログラム。
【請求項９】
請求項８に記載のプログラムが記録されたことを特徴とするコンピュータ読取り可能なプログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予めパスワード等の秘密情報を共有する２つのパーティ間でネットワークを介して通信を行う場合に、パスワード等の秘密情報に基づいて共通鍵を生成することで、お互いが正しい通信相手であることを認証して、共通鍵により暗号化された通信チャネルを確立する、暗号化通信チャネル確立システムに関する。
【背景技術】
【０００２】
２つのパーティ間でネットワークを介して通信を行う場合に、お互いが正しい通信相手であることを認証して、情報を安全に送受信するための暗号化された通信チャネルを確立することが行われる。暗号化された通信チャネルを確立するために、ＴＬＳ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）とその前任のＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｌａｙｅｒ）を利用することが知られている。以下、簡単のため、ＳＳＬ／ＴＬＳという。
ＳＳＬ／ＴＬＳを利用する場合、公開鍵暗号方式を使用することを前提としている。このため、２つのパーティに対して、暗号化された通信チャネルを確立するために、例えばサーバの公開鍵を信用することが求められる。このため、サーバの公開鍵を認証するための第三者である認証局を必要とする。
また、ＳＳＬ／ＴＬＳを利用する場合、ＳＳＬ／ＴＬＳにより暗号化された通信チャネルを確立した後に、当該通信チャネルを介して、クライアントはパスワードをサーバに送信することで、サーバがクライアントの認証を行う必要がある。このように、ＳＳＬ／ＴＬＳを利用する場合は、最初に暗号化された通信チャネルを確立し、次に確立された通信チャネルを介して、パスワードを送信することでクライアントの認証を行う２段階方式となる。
また、非特許文献１及び非特許文献２には、暗号化された通信チャネルを確立するための方式が提案されている。
【０００３】
非特許文献１においては、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎのパスワードに基づくＤＨ−ＥＫＥ方式（Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ  Ｅｎｃｒｙｐｔｅｄ  Ｋｅｙ  Ｅｘｃｈａｎｇｅ）の改良が提案されている。しかしながら、非特許文献１に記載された改良プロトコルは、ＴＬＳと統合可能なＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ鍵交換方式に基づくものであり、より複雑なプロトコルを用いている。
【０００４】
非特許文献２には、ＥＡＰ−ＥＫＥ（Ｅｘｔｅｎｓｉｂｌｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ  −  Ｅｎｃｒｙｐｔｅｄ  Ｋｅｙ  Ｅｘｃｈａｎｇｅ）が記載されている。ＥＡＰ−ＥＫＥは、Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ鍵交換方式を使用して、ＨＭＡＣ（Ｈａｓｈ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）により、共有セッションキーを確立するものである。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｓｔｅｉｎｅｒ，Ｍｉｃｈａｅｌ，ｅｔ  ａｌ．  “Ｓｅｃｕｒｅ  ｐａｓｓｗａｏｒｄ−ｂａｓｅｄ  ｃｉｐｈｅｒ  ｓｕｉｔｅ  ｆｏｒ  ＴＬＳ”  ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｓｙｓｔｅｍ  Ｓｅｃｕｒｉｔｙ  ４．２（２００１）：１３４−１５７．
【非特許文献２】ＲＦＣ  ６１２４  “Ａｎ  ＥＡＰ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｍｅｔｈｏｄ  Ｂａｓｅｄ  ｏｎ  ｔｈｅ  Ｅｎｃｒｙｐｔｅｄ  Ｋｅｙ  Ｅｘｃｈａｎｇｅ  （ＥＫＥ）  Ｐｒｏｔｏｃｏｌ．”
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術（ＳＳＬ／ＴＬＳ）においては、クライアント及びサーバ間の通信において、予めユーザｉｄ及びパスワードが設定されている場合であっても、当該ユーザを認証するまでに上記のとおり２段階の手順を踏む必要があった。また、公開鍵を使用してサーバ認証を行うために、第三者である認証局の発行した証明書を必要とする複雑なプロセスを必要とした。さらに、ＳＳＬ／ＴＬＳを使用するサーバでは、例えばハンドシェイクプロセスが処理性能的に重く、ハンドシェイクプロセスが同時期に複数発生した場合に備えて、アクセラレータを用意しておく必要があった。
このため、予めユーザ登録されている場合のクライアント及びサーバ間の通信において、第三者である認証局の発行した証明書を必要としない、シンプルなプロセスにより、暗号化された通信チャネルの確立とユーザ認証とを迅速に行うことが望まれる。
本発明は、あるノード（例えばクライアント）のユーザが他のノード（例えばサーバ）にアクセスするための識別情報（ｉｄ）及びパスワード（ｐｗＣ）が予め設定されている場合に、公開鍵及び第三者の認証局を必要とせず、共通鍵を生成し、共通鍵により暗号化された通信チャネルを確立するとともに、同時にノード（例えばクライアント）の認証を行うことができる、暗号化通信チャネル確立システムを提供することを目的とする。本発明において、共通鍵により暗号化された通信チャネルを確立することは、同時にノードの認証が成功したことを意味する。
本発明は、公開鍵を用いることなく、予め秘密（例えばパスワード）を共有する独立したエンティティ間における短時間の安全な通信チャネル確立のためのセッションキーを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明では、以下のような解決手段を提供する。
【０００８】
本発明に係る暗号化通信チャネル確立システムは、上記課題を解決するために、第１のノード及び第２のノードがネットワークに接続され、前記第１のノードが前記第２のノードにアクセスするための識別情報とパスワードとが予め設定され、前記第１のノードと前記第２のノードとは、予め共通関数を共有し、前記第１のノードと前記第２のノードとが互いに生成する共通鍵により暗号化された通信チャネルを確立する暗号化通信チャネル確立システムであって、前記第１のノードは、前記第２のノードと一時的に共有する使い捨ての値を取得する第１使い捨て共有値取得部と、前記識別情報を前記第２のノードに送信する接続要求部と、前記識別情報に対応するパスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第１共通鍵生成部と、を備え、前記第２のノードは、前記第１のノードから前記識別情報を受信する識別情報受信部と前記第１のノードと一時的に共有する使い捨ての値を取得する第２使い捨て共有値取得部と、前記識別情報受信部により受信した前記識別情報に基づいて、予め設定されたパスワードを取得するパスワード取得部と、前記識別情報に対応するパスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第２共通鍵生成部と、を備える。
【０００９】
また、前記使い捨ての値は、前記第１のノード又は前記第２のノードがランダムに生成したノンスであって、前記第１のノード又は前記第２のノードにより前記第２のノード又は前記第１のノードに送信される前記ノンスとしてもよい。
【００１０】
前記第１のノードは、ランダムにノンスを生成し、前記ノンス又は前記ノンスを前記共通鍵により暗号化した暗号データをチャレンジデータとして前記第２のノードに送信し、前記第２のノードから受信したレスポンスデータを用いて前記第２のノードを認証する第１認証部を備え、前記第２のノードは、前記第１のノードから受信した前記チャレンジデータに基づいてレスポンスデータを生成し、前記レスポンスデータを前記第１のノードに送信する第２レスポンス部を備えるように構成することができる。
【００１１】
前記第２のノードは、ランダムにノンスを生成し、前記ノンス又は前記ノンスを前記共通鍵により暗号化した暗号データをチャレンジデータとして前記第１のノードに送信し、前記第１のノードから受信したレスポンスデータを用いて前記第１のノードを認証する第２認証部を備え、前記第１のノードは、前記第２のノードから受信した前記チャレンジデータに基づいてレスポンスデータを生成し、前記レスポンスデータを前記第２のノードに送信する第１レスポンス部を備えるように構成することができる。
【００１２】
前記共通関数は、一方向性関数又は暗号化関数であるようにしてもよい。
【００１３】
本発明に係る第１のノードは、ネットワークに接続される第１のノードであって、ネットワークに接続された第２のノードにアクセスするための識別情報とパスワードとが予め設定され、前記第２のノードと共有する共通関数を有し、前記第２のノードと一時的に共有する使い捨ての値を取得する第１使い捨て共有値取得部と、前記識別情報を前記第２のノードに送信する接続要求部と、前記識別情報に対応するパスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第１共通鍵生成部と、を備える。
【００１４】
本発明に係る第２のノードは、ネットワークに接続された第２のノードであって、ネットワークに接続された第１のノードが前記第２のノードにアクセスするための識別情報とパスワードとが予め設定され、前記第１のノードと共有する共通関数を有し、前記第１のノードと一時的に共有する使い捨ての値を取得する第２使い捨て共有値取得部と、前記第１のノードから前記識別情報を受信する識別情報受信部と前記識別情報受信部により受信した前記識別情報に基づいて、予め設定されたパスワードを取得するパスワード取得部と、前記パスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第２共通鍵生成部と、を備える。
【００１５】
本発明に係る暗号化通信チャネル確立方法は、第１のノード及び第２のノードがネットワークに接続され、前記第１のノードが前記第２のノードにアクセスするための識別情報とパスワードが予め設定され、前記第１のノードと前記第２のノードとは、予め共通関数を共有し、前記第１のノードと前記第２のノードとが互いに生成する共通鍵により暗号化された通信チャネルを確立する暗号化通信チャネル確立方法であって、前記第１のノードが、前記第２のノードと一時的に共有する使い捨ての値を取得する第１使い捨て共有値取得ステップと、前記識別情報を前記第２のノードに送信する接続要求ステップと、前記識別情報に対応するパスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第１共通鍵生成ステップと、を備え、前記第２のノードが、前記第１のノードから、前記識別情報を受信する識別情報受信ステップと前記第１のノードと一時的に共有する使い捨ての値を取得する第２使い捨て共有値取得ステップと、前記識別情報受信ステップにより受信した前記識別情報に基づいて、予め設定されたパスワードを取得するパスワード取得ステップと、前記パスワードと前記使い捨ての値とに基づいて前記共通関数により共通鍵を生成する第２共通鍵生成ステップと、を備える。
【００１６】
本発明に係るプログラムは、コンピュータを前記第１のノード又は前記第２のノードとして機能させる。
【００１７】
本発明に係るコンピュータ読取り可能なプログラム記録媒体は、前記プログラムが記録される。
【発明の効果】
【００１８】
本発明によれば、第１のノード（例えばクライアント端末）が第２のノード（例えばサーバ）にアクセスするための識別情報及びパスワードが予め設定されている場合に、公開鍵及び第三者の認証局を必要とせず、共通鍵を生成し、共通鍵により暗号化された通信チャネルを確立するとともに、同時にノードの認証を行うことができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態に係る、暗号化通信チャネル確立システムにおける全体構成図である。
【図２】本発明の第１実施形態に係る第１のノードの機能構成を示すブロック図である。
【図３】本発明の第１実施形態に係る第２のノードの機能構成を示すブロック図である。
【図４】本発明の第１実施形態において、第１のノード及び第２のノードにおける、暗号化された通信チャネルの確立についての説明に供するフローチャートである。
【図５】本発明の第１実施形態の変形例に係る第１のノードの機能構成を示すブロック図である。
【図６】本発明の第１実施形態の変形例に係る第２のノードの機能構成を示すブロック図である。
【発明を実施するための形態】
【００２０】
本発明における暗号化された通信チャネル確立のためのプロトコルは、ＳＳＬ／ＴＬＳの代用となるものではない。むしろ、本発明のプロトコルは、アプリケーション層における暗号化された通信チャネルの確立と認証とを同時に行うように働くものとなる。特に断らない限り、「暗号」は、ブロック暗号又はストリームにおける暗号を意味する。
最も重要な点は、本発明のプロトコルは、第１のノード（例えばクライアント）と第２のノード（例えばサーバ）とが秘密情報（例えばパスワード）を事前に共有することを前提とする点にある。この場合、秘密情報（例えばパスワード）をセキュアに管理することは第２のノード（例えばサーバ）の責任となる。
なお、パスワードそのものではなく、パスワードのハッシュを第２のノード（例えばサーバ）に格納することは、本発明にとっては十分ではない。本発明においては、第２のノード（例えばサーバ）が、暗号化された通信チャネルを確立するために、実際のパスワードの値そのものを必要とする。このように、本発明においては、第１のノード（例えばクライアント）と第２のノード（例えばサーバ）とは、予めパスワード（ｐｗＣ）を共有しているものとする。
【００２１】
＜第１実施形態＞
以下、本発明の実施形態の一例である第１実施形態について説明する。図１に示すように、本実施形態に係る暗号化通信チャネル確立システム１は、第１のノード１０、第２のノード２０、及び通信網３０から構成される。
【００２２】
第１のノード１０及び第２のノード２０は、それぞれＣＰＵ等の制御部１１０、２１０、記憶部１２０、２２０、及び通信部１３０、２３０等を含む任意の電子機器とする。典型的には、公知のコンピュータ、例えば、マイクロコンピュータ、スマートフォン、携帯電話等の携帯端末、タブレット端末、ノートパソコン、パソコン、サーバー、及びルーター等の通信機器を含む。
第１のノード１０（のノードユーザ）が第２のノード２０にアクセスするための識別情報（ｉｄ）とパスワード（ｐｗＣ）が予め設定されているものとする。
【００２３】
例えば、第１のノード１０がクライアント端末、第２のノード２０がサーバの場合、クライアント端末（第１のノード１０）におけるノードユーザの識別情報（ｉｄ）とパスワード（ｐｗＣ）が予めサーバ（第２のノード２０）に設定されていることで、本発明を適用できる。
特に、Ｗｅｂブラウザ（第１のノード１０）とＷｅｂサーバ（第２のノード２０）から構成されるクライアントサーバシステムにおいては、ユーザの識別情報（ｉｄ）とパスワード（ｐｗＣ）によりアクセス管理することが一般的なことから、本発明を適用できる。
【００２４】
また、オペレータ（ユーザ）が介在しない、マシンとマシンとの間の通信においても、例えば、あるマシン（第１のノード１０）が別のマシン（第２のノード２０）にアクセスするために、予め識別情報（ｉｄ）とパスワード（ｐｗＣ）とが設定されているものであれば本発明を適用することができる。
【００２５】
また、第１のノード１０を例えば無線端末とし、第２のノード２０を例えばＷｉＦｉ（登録商標）ルータのような無線ＬＡＮルータとした場合、第１のノード１０（無線端末）の識別情報（ｉｄ）とパスワード（ｐｗＣ）が予め第２のノード２０（無線ＬＡＮルータ）に設定されているものであれば本発明を適用することができる。
【００２６】
また、ＩＯＴ（Ｉｎｔｅｒｎｅｔ  Ｏｆ  Ｔｈｉｎｇｓ）においても、インターネットに接続し相互に通信する際に、識別情報（ｉｄ）とパスワード（ｐｗＣ）により、アクセスコントロールされる場合、本発明を適用することができる。
【００２７】
以上のように、第１実施形態では、第１のノード１０（のノードユーザ）が第２のノード２０にアクセスするための識別情報（ｉｄ）とパスワード（ｐｗＣ）が予め設定されていることを前提とする。以下、簡単のため、第１のノード１０（のノードユーザ）が第２のノード２０にアクセスするための識別情報（ｉｄ）とパスワード（ｐｗＣ）を、第１のノード１０から第２のノード２０にアクセスするための識別情報（ｉｄ）とパスワード（ｐｗＣ）とも言う。
【００２８】
＜ノンスについて＞
第１のノード１０及び第２のノード２０の説明に先立ち、ノンスについて説明する。
ノンスとは、暗号通信等で用いられる一度きりの使い捨てのランダムな値を意味する。したがって、第１のノード１０又は第２のノード２０がノンスを生成する場合、生成されるノンスの値は、生成されるたびに異なる「一度きり」のものとなる。
「一度きり」であることを担保するために、例えば、ノンスの生成手段として、十分なエントロピーを持った乱数を生成する乱数生成手段を、生成される乱数が重複する可能性を現実的でないほどに下げるように構成することが好ましい。また、ノンスを例えば、できるだけ粒度の細かいタイムスタンプから生成することで、重複する可能性を現実的でないほどに下げるように構成してもよい。
【００２９】
＜第１のノード１０について＞
第１のノード１０について、図２を参照しながら説明する。
図２は、本実施形態に係る第１のノード１０の機能構成を示すブロック図である。
第１のノード１０は、制御部１１０（例えば、ＣＰＵ）と、記憶部１２０と、通信部１３０と、を備える。
制御部１１０は、記憶部１２０と、通信部１３０とを含むハードウェア群の全体を制御する機能部である。
【００３０】
制御部１１０は、接続要求部１１１と、第１使い捨て共有値取得部１１２と、パスワード取得部１１３と、第１共通鍵生成部１１４と、第１認証部１１５と、を備える。これらの各部は、例えば、第１のノード１０の記憶部１２０に格納されたアプリケーションを制御部１１０が実行することにより機能するように構成することができる。
【００３１】
接続要求部１１１は、第２のノード２０との間で暗号化された通信チャネルを確立するに際して、第１のノード１０のノードユーザの識別情報（ｉｄ）を通信部１３０を介して第２のノード２０に送信する。
なお、識別情報（ｉｄ）については、第１のノード１０の入力部（図示せず）を介してノードユーザにより入力されてもよい。また、ユーザ（オペレータ）が介在しない、又は自動的に処理する場合、識別情報（ｉｄ）を予め記憶部１２０に記憶しておき、記憶部１２０から識別情報（ｉｄ）を入力するように構成してもよい。
【００３２】
第１使い捨て共有値取得部１１２は、第２のノード２０と一時的に共有する使い捨ての値（ｒ１）を取得する。
具体的には、第１使い捨て共有値取得部１１２は、第２のノード２０の第２使い捨て共有値取得部２１２により生成されるノンスを一時的に共有する使い捨ての値（ｒ１）として通信部１３０を介して取得する。
【００３３】
パスワード取得部１１３は、識別情報（ｉｄ）に対応するパスワード（ｐｗＣ）を取得する。具体的には、パスワード取得部１１３は、第１のノード１０の入力部（図示せず）を介してノードユーザにより入力されるパスワードを取得するように構成してもよい。また、ユーザ（オペレータ）が介在しない場合、又は自動的に処理する場合、識別情報に対応するパスワードを予め記憶部１２０に記憶しておき、パスワード取得部１１３は、記憶部１２０からパスワードを入力するように構成してもよい。
【００３４】
第１共通鍵生成部１１４は、第１のノード１０のノードユーザの識別情報（ｉｄ）に対応するパスワード（ｐｗＣ）と第１使い捨て共有値取得部１１２により取得された使い捨ての値（ｒ１）とに基づいて、第１のノード１０と第２のノード２０とが共有する共通関数により共通鍵（ｋ）を生成する。
【００３５】
［共通関数について］
第１のノード１０と第２のノード２０とが共有する共通関数について説明する。
共通関数としては、例えばＲＢＫＤＦ２（Ｐａｓｓｗｏｄ−Ｂａｓｅｄ  Ｋｅｙ  Ｄｅｒｉｖａｔｉｏｎ  Ｆｕｎｃｔｉｏｎ  ２）関数のような一方向性関数を適用することができる。例えば、ＲＢＫＤＦ２関数を適用する場合、ＲＢＫＤＦ２関数に入力されるパスワードをｐｗＣ、ソルト（Ｓａｌｔ）をｒ１とすることで、共通鍵（ｋ）を生成するように構成することができる。
すなわち、パスワードをｐｗＣ、使い捨ての値をｒ１、ＲＢＫＤＦ２関数をＨ（）、生成される共通鍵をｋとした場合、共通鍵（ｋ）は、式１により算出される。
ｋ  ＝  Ｈ（ｐｗＣ，ｒ１）          （式１）
【００３６】
また、共通関数として、第１のノード１０及び第２のノード２０が備える共通の暗号化関数Ｅｎｃ（）を適用してもよい。例えば、暗号化関数Ｅｎｃ（）を適用する場合、暗号化関数Ｅｎｃ（）に入力される暗号鍵をｐｗＣ、平文をｒ１とすることで、共通鍵（ｋ）を生成するように構成することができる。
すなわち、パスワードをｐｗＣ、使い捨ての値をｒ１とした場合、共通鍵（ｋ）は式２により算出される。
ｋ  ＝  Ｅｎｃ（ｒ１，ｐｗＣ）        （式２）
共通関数として暗号化関数を用いる場合、第１のノード１０及び第２のノード２０は、暗号化関数以外の共通関数をインストールする必要がなく、第１のノード及び第２のノードの初期設定を効率的に行うことができる。
なお、共通関数は上記の例に限定されない。例えば、任意の一方向性関数又は暗号化関数を選択することができる。
【００３７】
第１認証部１１５は、ランダムにノンスを生成し、第１共通鍵生成部１１４により生成された共通鍵により暗号化したノンスをチャレンジデータとして通信部１３０を介して第２のノード２０に送信し、第２のノード２０から受信したレスポンスデータを用いて第２のノード２０を認証する。
より具体的には、第１認証部１１５は、ランダムに生成したノンス（ｒ２）を第１共通鍵生成部１１４により生成された共通鍵（ｋ）により暗号化することで、チャレンジデータを生成する。第１認証部１１５は、生成したチャレンジデータを通信部１３０を介して第２のノード２０に送信する。後述するように、第２のノード２０では、受信したチャレンジデータを第２のノード２０の第２共通鍵生成部２１４により生成された共通鍵（ｋ）により復号したレスポンスデータを生成し、レスポンスデータを第１のノード１０（第１認証部１１５）に返信する。第１認証部１１５は、第２のノード２０から受信したレスポンスデータが、チャレンジデータの元データ（ランダムに生成したノンス）と同じ値であるか否かを判定する。レスポンスデータがチャレンジデータの元データ（ランダムに生成したノンス）と同じ値である場合、第１認証部１１５は、第２のノード２０が正しいパスワード（ｐｗＣ）を知っていると判断して、第２のノード２０を信頼できるものと認証する。
【００３８】
記憶部１２０は半導体メモリやハードディスクドライブ等で構成されており、オペレーティングシステム（ＯＳ）やアプリケーションと呼ばれるソフトウェアが保存される。
【００３９】
通信部１３０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｏｗａｒｋ）、インターネット回線、有線回線、無線回線等の任意の通信網３０に接続し、相互にパケットデータ等の送受信（データ通信）を行う通信プロトコル等を実装する。
【００４０】
＜第２のノード２０について＞
第２のノード１０について、図３を参照しながら説明する。
図３は、本実施形態に係る第２のノード２０の機能構成を示すブロック図である。
第２のノード２０は、第１のノード１０と同様に、制御部２１０（例えば、ＣＰＵ）と、記憶部２２０と、通信部２３０と、を備える。
制御部２１０は、記憶部２２０と、通信部２３０とを含むハードウェア群の全体を制御する機能部である。
【００４１】
制御部２１０は、識別情報受信部２１１と、第２使い捨て共有値取得部２１２と、パスワード取得部２１３と、第２共通鍵生成部２１４と、第２レスポンス部２１６と、を備える。これらの各部は、例えば、第２のノード２０の記憶部２２０に格納されたアプリケーションを制御部２１０が実行することにより機能するように構成することができる。
【００４２】
識別情報受信部２１１は、第１のノード１０から識別情報（ｉｄ）を通信部２３０を介して受信する。
【００４３】
第２使い捨て共有値取得部２１２は、ランダムにノンス（ｒ１）を生成し、生成したノンスを使い捨ての値とする。
第２使い捨て共有値取得部２１２は、生成したノンス（ｒ１）を通信部２３０を介して、第１のノード１０（第１使い捨て共有値取得部１１２）に送信する。そうすることで、第１のノード１０及び第２のノード２０は、一時的に共有する使い捨ての値（ｒ１）を共有することができる。
【００４４】
パスワード取得部２１３は、第１のノード１０から受信した識別情報（ｉｄ）に基づいて、予め設定されたパスワード（ｐｗＣ）を取得する。具体的には、セキュアな記憶部（図示せず）から第１のノード１０から受信した識別情報（ｉｄ）に基づいて、予め設定されたパスワード（ｐｗＣ）を取得する。なお、セキュアな記憶部は第２のノードが備えてもよい。また、第２のノードとは別のファイルサーバが備えるようにしてもよい。
【００４５】
第２共通鍵生成部２１４は、パスワード取得部２１３により取得されたパスワード（ｐｗＣ）と第２使い捨て共有値取得部により生成された使い捨ての値（ｒ１）とに基づいて、共通関数により共通鍵を生成する。ここで、共通関数は、前述したように、第１のノード１０と第２のノード２０とが、予め共有する関数である。
こうすることで、第１のノード１０から第２のノード２０にアクセスするためのパスワード（ｐｗＣ）が予め設定されている場合、第２共通鍵生成部２１４により生成された共通鍵（ｋ）と第１共通鍵生成部１１４により生成された共通鍵（ｋ）とは、同じ値となる。
【００４６】
第２レスポンス部２１６は、第１のノード１０から通信部２３０を介して受信した暗号化されたノンス（チャレンジデータ）を、第２共通鍵生成部２１４により生成された共通鍵（ｋ）により復号したレスポンスデータを生成し、レスポンスデータを第１のノード１０に送信する。
こうすることで、第１のノード１０は、第２のノード２０が信頼できるものかどうかを認証することができる。
【００４７】
記憶部２２０は半導体メモリやハードディスクドライブ等で構成されており、オペレーティングシステム（ＯＳ）やアプリケーションと呼ばれるソフトウェアが保存される。
【００４８】
通信部１３０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｏｗａｒｋ）、インターネット回線、有線回線、無線回線等の任意の通信網３０に接続し、相互にパケットデータ等の送受信（データ通信）を行う通信プロトコル等を実装する。
以上、第１のノード１０及び第２のノード２０の機能構成を説明した。
【００４９】
＜フローチャートによる動作説明＞
次に、図４を参照して、本発明の一実施形態に係る第１のノード１０及び第２のノード２０間の処理の流れを説明する。図４は、処理の一例を示すフローチャートである。
ここでは、共通関数として、ＲＢＫＤＦ２関数を適用した。
また、第１のノード１０と第２のノード２０とが一時的に共有する使い捨ての値については、第２使い捨て共有値取得部２１２がランダムに生成したノンス（ｒ１）を、第１ノードの第１使い捨て共有値取得部１１２に送信する方式を適用した。
なお、第１のノード１０（例えばクライアント）と第２のノード２０（例えばサーバ）とは、予め識別情報（ｉｄ）及びパスワード（ｐｗＣ）を予め共有しているものとする。
【００５０】
［共通鍵の生成］
ステップＳＴ１０１において、第１のノード１０（接続要求部１１１）は、第１のノード１０のノードユーザの識別情報（ｉｄ）を第２のノード２０に送信する。
【００５１】
ステップＳＴ２０１において、第２のノード２０（識別情報受信部２１１）は、第１のノード１０から識別情報（ｉｄ）を受信する。
【００５２】
ステップＳＴ２０２において、第２のノード２０（第２使い捨て共有値取得部２１２）は、ランダムにノンス（ｒ１）を生成し、使い捨ての値とし、第１のノード１０に送信する。
【００５３】
ステップＳＴ２０３において、第２のノード２０（パスワード取得部２１３）は、受信した識別情報（ｉｄ）に基づいて、予め設定されたパスワード（ｐｗＣ）を取得する。
【００５４】
ステップＳＴ２０４において、第２のノード２０（第２共通鍵生成部２１４）は、予め設定されたパスワード（ｐｗＣ）と第２使い捨て共有値取得部２１２により生成された使い捨ての値（ｒ１）とに基づいて、共通関数（Ｈ）により共通鍵（ｋ）（＝Ｈ（ｐｗＣ，ｒ１））を生成する。
【００５５】
ステップＳＴ１０２において、第１のノード１０（第１使い捨て共有値取得部１１２）は、第２のノード２０（第２使い捨て共有値取得部２１２）から送信される使い捨ての値（ｒ１）を受信することで、取得する。
【００５６】
ステップＳＴ１０３において、第１のノード１０（第１共通鍵生成部１１４）は、識別情報（ｉｄ）に対応するパスワード（ｐｗＣ）と第１使い捨て共有値取得部１１２により取得された使い捨ての値（ｒ１）とに基づいて共通関数（Ｈ）により共通鍵（ｋ）（＝Ｈ（ｐｗＣ，ｒ１））を生成する。
【００５７】
［第１のノード１０による第２のノード２０の認証］
ステップＳＴ１０４において、第１のノード１０（第１認証部１１５）は、ランダムにノンス（ｒ２）を生成する。
【００５８】
ステップＳＴ１０５において、第１のノード１０（第１認証部１１５）は、共通鍵（ｋ）により暗号化したノンスをチャレンジデータ（ｃ１）（＝Ｅｎｃ（ｒ２、ｋ））として、第２のノード２０に送信する。
【００５９】
ステップＳＴ２０５において、第２のノード２０（第２レスポンス部２１６）は、第１のノード１０から受信したチャレンジデータ（ｃ１）を共通鍵（ｋ）により復号したレスポンスデータ（Ｄｅｃ（ｃ１、ｋ））を生成し、第１のノード１０に送信する。
【００６０】
ステップＳＴ１０６において、第１のノード１０（第１認証部１１５）は、第２のノード２０から受信したレスポンスデータ（Ｄｅｃ（ｃ１、ｋ））がチャレンジデータの元データ（ｒ２）と同じ値であるか否かを判定する。レスポンスデータ（Ｄｅｃ（ｃ１、ｋ））がチャレンジデータの元データ（ｒ２）と同じ値である場合（Ｙｅｓの場合）ステップＳＴ１０７に移る。レスポンスデータがチャレンジデータの元データ（ランダムに生成したノンスｒ２）と異なる値の場合（Ｎｏの場合）ステップＳＴ１０１に戻る。
【００６１】
ステップＳＴ１０７において、第１のノード１０と第２のノード２０との間で、共通鍵（ｋ）により暗号化される通信チャネルが確立されるとともに、第２ノードが信頼できることが認証されたことになる。
【００６２】
［第２のノード２０による第１のノード１０の認証］
第１のノード１０（第１認証部１１５）が、第２のノード２０を信頼できるものと認証できたことで、共通鍵（ｋ）により暗号化される通信チャネルが確立することができる。第２のノード２０による第１のノード１０の認証についても実質的に完了しているとみなすことができる。
これは、共通鍵（ｋ）が、第１のノード１０及び第２のノード２０のみが知るパスワード（ｐｗＣ）により生成されたことに基づく。
【００６３】
以上のように、共通鍵（ｋ）により暗号化される通信チャネルがアプリケーション層に確立されて以降の第１のノード１０のアプリケーションと第２のノード２０のアプリケーションとの間のデータの送受信は、共通鍵（ｋ）により暗号化される通信チャネル（「暗号化通信チャネル」という）を介して行われるように構成される。
具体的には、第１のノード１０のアプリケーション（又は第２のノード２０のアプリケーション）が平文を第２のノード２０のアプリケーション（又は第１のノード１０のアプリケーション）を宛先として送信すると、暗号化通信チャネルにおいて、平文が共通鍵（ｋ）により暗号化され、通信網を伝送される。その後、暗号化通信チャネルにおいて、暗号文が共通鍵（ｋ）により復号され、第２のノード２０のアプリケーション（又は第１のノード１０のアプリケーション）に平文が引き渡される。
本発明の共通鍵（ｋ）により暗号化される通信チャネルは、第１のノード１０と第２のノード２０におけるアプリケーション層において、第１のノード１０または第２のノード２０から相手先（第２のノード１０または第１のノード２０）に向けて送信されるメッセージは暗号化され、第１のノード１０または第２のノード２０が相手先（第２のノード１０または第１のノード２０）から受信するメッセージは復号される。
このように、第１のノード１０と第２のノード２０との間で、トランスポート層のＳＳＬ／ＴＬＳを置き換えることなく、アプリケーション層においてアプリケーションデータを、共通鍵（ｋ）により暗号化された状態で送受信することができる。
【００６４】
以上、本発明の実施形態の一例である第１実施形態について説明したが、本発明は、上述した実施形態に限定されるものではない。次に、第１使い捨て共有値取得部１１２及び第２使い捨て共有値取得部２１２の別実装例について説明する。
【００６５】
＜第１使い捨て共有値取得部１１２及び第２使い捨て共有値取得部２１２の変形例１＞
第１実施形態においては、第２ノードの第２使い捨て共有値取得部２１２がランダムに生成したノンス（ｒ１）を、第１ノードの第１使い捨て共有値取得部１１２に送信することにより、当該ノンス（ｒ１）を第１のノード１０と第２のノード２０とが一時的に共有する使い捨ての値とした。
【００６６】
これに対して、第１ノード１０の第１使い捨て共有値取得部１１２がランダムに生成したノンスを、第２ノード２０に送信することにより、当該ノンスを第１のノード１０と第２のノード２０とが一時的に共有する使い捨ての値としてもよい。
【００６７】
＜第１使い捨て共有値取得部１１２及び第２使い捨て共有値取得部２１２の変形例２＞
［カウンタ値による、一時的に共有する使い捨ての値について］
ノンスの生成に替えて、カウンタ値を用いて一時的に共有する使い捨ての値を生成するようにしてもよい。この場合、第１のノード１０が第１カウンタ（図示せず）を備え、第２のノード２０が第２カウンタ（図示せず）を備え、第１カウンタと第２カウンタとが同期を取ることにより、第１カウンタの値（第１カウンタ値）と第２カウンタの値（第２カウンタ値）とが、常に同じ値となるように構成する。そうすることで、第１カウンタの値及び第２のカウンタの値をそれぞれ第１のノード１０及び第２のノード２０が「一度限り」の一時的に共有する使い捨ての値を取得することができる。
【００６８】
具体的には、第１カウンタ及び第２カウンタの初期設定において、第１カウンタの値及び第２カウンタの値を例えば１になるように初期設定する。その後、例えば共通鍵を生成するたび（又は、共通鍵（ｋ）をリセットするたび）に、第１ノード及び第２ノードは、それぞれ第１カウンタ及び第２カウンタをインクリメントさせることで、第１カウンタ及び第２カウンタとが同期を取るように構成する。なお、インクリメントするタイミングは、共通鍵（ｋ）を生成する前又は共通鍵を生成した後に統一することが好ましい。
【００６９】
［共通鍵の生成について］
第１使い捨て共有値取得部１１２及び第２使い捨て共有値取得部２１２をカウンタを用いて構成する場合、第１共通鍵生成部１１４及び第２共通鍵生成部２１４による共通鍵（ｋ）の生成について説明する。
【００７０】
共通関数として、ＲＢＫＤＦ２関数を適用した場合、第１カウンタ及び第２カウンタの値がｉ番目（ｉ≧１）の値（ｉ）を示しているとき、パスワードをｐｗＣ、ＲＢＫＤＦ２関数をＨ（）とすると、第１共通鍵生成部１１４及び第２共通鍵生成部２１４により生成される共通鍵（ｋｉ）は、式３により算出される。
ｋｉ  ＝  Ｈ（ｐｗＣ，ｉ）          （式３）
【００７１】
また、共通関数として、暗号化関数を適用した場合、第１カウンタ及び第２カウンタの値がｉ番目（ｉ≧１）の値（ｉ）を示しているとき、パスワードをｐｗＣ、暗号化関数をＥｎｃ（）とすると、第１共通鍵生成部１１４及び第２共通鍵生成部２１４により生成される共通鍵（ｋｉ）は、暗号鍵をｐｗＣ、平文をｉとすることで、式４により算出される。
ｋｉ  ＝  Ｅｎｃ（ｉ，ｐｗＣ）        （式４）
【００７２】
このように第１ノードの第１使い捨て共有値取得部１１２及び第２ノードの第２使い捨て共有値取得部２１２は、ノンスをお互いに送付することなく、第１カウンタの示すカウント値及び第２カウンタの示すカウント値をそれぞれ、第１のノード１０と第２のノード２０とが「一度限り」の一時的に共有する使い捨ての値とするように構成することができる。
【００７３】
＜第１認証部１１５の別実装例＞
次に、第１認証部１１５の別実装例について説明する。
第１実施形態においては、第１認証部１１５は、ランダムにノンスを生成し、共通鍵（ｋ）により暗号化したノンスをチャレンジデータとして、第２のノード２０に送信し、第２のノード２０から受信したレスポンスデータを用いて、第２のノード２０を認証した。
【００７４】
これに対して、第１認証部１１５は、ランダムにノンスを生成し、生成したノンスを平文のままチャレンジデータとして、第２のノード２０に送信し、第２のノード２０から受信したレスポンスデータを用いて第２のノード２０を認証するようにしてもよい。
より具体的には、第１認証部１１５は、ランダムに生成したノンスを平文のままチャレンジデータとして、第２のノード２０に送信する。これに対して第２のノード２０（第２レスポンス部２１６）は、受信したチャレンジデータを共通鍵（ｋ）により暗号化したレスポンスデータを生成し、第１のノード１０に返信する。
そうすることで、第１認証部１１５は、第２のノード２０（第２レスポンス部２１６）から受信したレスポンスデータを共通鍵（ｋ）により復号したデータの値が、チャレンジデータ（ランダムに生成したノンス）の値と同じ値であるか否かを判定する。レスポンスデータを共通鍵（ｋ）により復号したデータの値が、チャレンジデータ（ランダムに生成したノンス）の値と同じ値である場合、第１認証部１１５は、第２のノード２０が正しいパスワード（ｐｗＣ）を知っていると判断して、第２のノード２０を信頼できるものと認証することができる。
【００７５】
上記のとおり、第２レスポンス部２１６は、第１のノード１０から受信したチャレンジデータを、共通鍵（ｋ）により暗号化したデータをレスポンスデータとして、第１のノード１０に送信するように構成される。
【００７６】
第１認証部１１５は、チャレンジデータを、平文のままとするか又は共通鍵で暗号化するか、を選択的に利用可能とすることができる。
このために、第１認証部１１５は、チャレンジデータが平文のままであるか又は共通鍵で暗号化されているかを識別するための識別子をチャレンジデータに付加したデータを第２のノード２０に送信するように構成してもよい。
この場合、第２レスポンス部２１６は、識別子に基づいて、レスポンスデータを生成するように構成される。
【００７７】
＜第２のノードによる第１のノードの認証について（その１）＞
第１実施形態においては、第１のノード１０（第１認証部１１５）が、第２のノード２０を信頼できるものと認証できたことで、共通鍵（ｋ）により暗号化される通信チャネルが確立され、第２のノードによる第１のノードの認証を省略した。
これに対して、第２のノードによる第１のノードの認証を行うようにしてもよい。
この場合、第２のノード２０が第１のノード１０を認証する方式として、例えば、第２使い捨て共有値取得部２１２により生成され、第１のノード１０に送付済みのノンス（ｒ１）を再利用してもよい。
具体的には、第１のノード１０は、ノンス（ｒ１）を共通鍵（ｋ）により暗号化して、第２のノード２０に送信する。第２のノード２０は、第１のノード１０から受信したデータを共通鍵（ｋ）により復号（Ｄｅｃ（ｃ２、ｋ））し、復号されたデータ（Ｄｅｃ（ｃ２、ｋ））がノンス（ｒ１）と同じ値であるか否かを判定する。復号されたデータ（Ｄｅｃ（ｃ２、ｋ））がノンス（ｒ１）と同じ値である場合、第２のノード２０は、第１のノード１０（のノードユーザ）が予め設定された識別情報とパスワードの持ち主であることを認証することができる。
【００７８】
＜第２のノードによる第１のノードの認証について（その２）＞
第１実施形態においては、第１のノード１０及び第２のノード２０がそれぞれ共通鍵（ｋ）を生成した後、第１のノード１０（第１認証部１１５）がチャレンジデータを作成し、第２のノード２０からレスポンスを受信することで、第２のノード２０を認証した。
【００７９】
これに対して、第１のノード１０及び第２のノード２０がそれぞれ共通鍵（ｋ）を生成した後、第２のノード１０がチャレンジデータを作成し、第１のノード１０からレスポンスを受信することで、第１のノード１０を認証するように構成してもよい。
特に、一時的に共有する使い捨ての値（ｒ１）を第１のノード１０（第１使い捨て共有値取得部１１２）が生成し、第１のノード１０及び第２のノード２０がそれぞれ、前記一時的に共有する使い捨ての値（ｒ１）とパスワード（ｐｗＣ）とに基づいて、共通鍵（ｋ）を生成する場合に、第２のノード２０が第１のノード１０を認証するように構成することが好ましい。
【００８０】
より具体的には、図５及び図６に示すように、第２のノード２０は第１のノード１０を認証するために第２認証部２１５を備える。また、第１のノードは第１レスポンス部１１６を備える。
【００８１】
第２認証部２１５は、ランダムにノンスを生成し、共通鍵（ｋ）により暗号化したノンスをチャレンジデータとして、通信部２３０を介して第１のノード１０（第１レスポンス部１１６）に送信する。
【００８２】
第１レスポンス部１１６は、第２のノード２０（第２認証部２１５）から通信部１３０を介して受信した暗号化されたノンス（チャレンジデータ）を、共通鍵（ｋ）により復号したレスポンスデータを生成し、第２のノード２０（第２認証部２１５）に送信する。
【００８３】
第２認証部２１５は、第１のノード２０（第１レスポンス部１１６）から受信したレスポンスデータを用いて第１のノード１０を認証する。
こうすることで、第２認証部２１５は、第１のノード１０が信頼できるものかどうかを認証することができる。
なお、第２認証部２１５は、前述した第１認証部１１５の別実装例と同様に、ランダムにノンスを生成し、生成したノンスを平文のままチャレンジデータとして、第１のノード１０（第１レスポンス部１１６）に送信し、第１のノード１０（第１レスポンス部１１６）から受信したレスポンスデータを用いて第１のノード１０を認証するように構成してもよい。
【００８４】
第２認証部２１５の機能は、前述した第１認証部１１５の機能説明において、「第１」を「第２」に読み替え、また「第２」を「第１」に読み替えることで説明できるため、詳細な説明は省略する。
【００８５】
同様に、第１レスポンス部１１６の機能は、前述した第２レスポンス部２１６の機能説明において、「第２」を「第１」に読み替え、また「第１」を「第２」に読み替えることで説明できるため、詳細な説明は省略する。
【００８６】
＜ＳＳＬ／ＴＬＳプロトコルを用いた識別情報及びパスワードの初期設定＞
第１実施形態においては、第１のノード１０と第２のノード２０とは、予めパスワードを共有していることが前提であった。これに対して、ＳＳＬ／ＴＬＳプロトコルを利用して、第１のノード１０と第２のノード２０とが、識別情報及びパスワードを初期設定する一例について説明する。
【００８７】
［初めてのアクセス時］
第１のノード１０のノードユーザが初めて第２のノード２０にアクセスするときは、ＳＳＬ／ＴＬＳプロトコルを利用して、第１のノードと第２のノードとの間で、第２のノード２０の公開鍵を使用して、第２のノード２０の認証を行い、暗号化された通信チャネルを確立する。
【００８８】
第１のノード１０と第２のノード２０との間で暗号化された通信チャネルが確立された後、当該通信チャネルを用いて、第１のノード１０と第２のノード２０間で、第１のノード１０のノードユーザの識別情報（ｉｄ）及びパスワード（ｐｗＣ）を初期設定し、第２のノード２０は、識別情報（ｉｄ）とパスワード（ｐｗＣ）を例えばセキュアに記憶する。
こうすることで、第１のノード１０のノードユーザの識別情報（ｉｄ）とパスワード（ｐｗＣ）が、第２のノード２０に設定されている状態となる。
【００８９】
第１のノード１０のノードユーザの識別情報（ｉｄ）とパスワード（ｐｗＣ）が、第２のノード２０に設定されて以降の第１のノード１０から第２のノード２０への接続には、パスワード（ｐｗＣ）に基づく暗号化された通信チャネル確立システム１を適用することができる。
【００９０】
このように、第１のノード１０と第２のノード２０との間で、識別情報（ｉｄ）及びパスワード（ｐｗＣ）が設定されていない場合に、最初に、ＳＳＬ／ＴＬＳを用いて識別情報（ｉｄ）及びパスワード（ｐｗＣ）を設定することで、２回目以降の第１のノード１０から第２のノード２０への接続においては、公開鍵及び第三者の認証局を必要とせず、パスワード（ｐｗＣ）に基づく共通鍵を生成し、共通鍵により暗号化された通信チャネルを確立するとともに、同時にノードの認証を行うことができる。
【００９１】
＜第１実施形態の効果＞
以上のように、本実施形態によれば、第１のノード１０及び第２のノード２０は、通信路上で識別情報（ｉｄ）と一時的に共有する使い捨ての値（ｒ１）を送受信することで、予め共有する秘密情報であるパスワードと「一度限り」の一時的に共有する使い捨ての値とに基づいて、それぞれ共通鍵を生成する第１共通鍵生成部１１４及び第２共通鍵生成部２１４と、を備える。
これにより、公開鍵及び第三者の認証局を必要とせず、証明書発行コストを不要とするとともに、証明書に伴うやりとりの負荷が軽減され、共通鍵により暗号化された通信チャネルを安価に容易に確立することができる。
【００９２】
また、仮に第三者が通信路上に送受信されるデータ（識別情報（ｉｄ）と一時的に共有する使い捨ての値（ｒ１））を盗聴できたと仮定しても、第三者はパスワード（ｐｗＣ）を知らない限り、共通鍵（ｋ）を生成することはできず、また、暗号化された通信チャネルを確立する毎に異なる共通鍵が生成されることから、安全性を十分に担保することができる。
【００９３】
また、第１のノード１０のノードユーザーが複数いる場合に、あるノードユーザーのパスワードが破られた場合であっても、当該ノードユーザー以外の他のノードユーザーと第２のノード２０との間に確立された、暗号化された通信チャネルを脅かすものではないことから、独立して安全性を担保することができる。
【００９４】
また、第１のノード１０及び第２のノード２０とがパスワードを共有するシステムであれば、本実施形態を適用できることから、クライアントサーバ型のシステムはもとより、ＷｅｂブラウザとＷｅｂサーバ型のシステム、マシン対マシン型のシステム、無線端末と無線ＬＡＮ機器との接続、さらにはＩＯＴ（Ｉｎｔｅｒｎｅｔ  Ｏｆ  Ｔｈｉｎｇｓ）等幅広く適用可能であり、社会的なインフラ基盤として、幅広く提供することができる。
【００９５】
また、第１のノード１０は、チャレンジデータ（ｒ２）を共通鍵（ｋ）により暗号化し、第２のノード２０に送信し、第２のノード２０において共通鍵（ｋ）により復号されたレスポンスデータ（ｒ２）を受信することで、第２のノード２０を認証する。
これにより、第１のノード１０と第２のノード２０との間で、パスワードに基づいて生成される共通鍵による暗号化された通信チャネルを確立できることが、実質的に各ノードの認証の成功を含む。これにより、暗号化された通信チャネルの確立とノードの認証とを、１段階で実行することができる。
【００９６】
また、暗号化通信チャネル確立システム１は、共通関数として、汎用的な一方向性関数又は暗号化関数を利用することができるので、用途に応じて、任意の共通関数を利用することができる汎用性を備える。
以上、本発明の実施形態についてその構成要素の変形例を含めて説明したが、本発明は上述した実施形態に限るものではない。
【００９７】
＜第２実施形態＞
第１実施形態において、第１共通鍵生成部１１４及び第２共通鍵生成部２１４は、パスワード（ｐｗＣ）及び一時的に共有する使い捨ての値（ｒ１）に基づいて、１個の共通鍵（ｋ）を生成した（式１〜式４）。
これに対して、第１共通鍵生成部１１４及び第２共通鍵生成部２１４は、共通鍵（ｋ）に基づいて、さらに、別の共通鍵（ｋ´）を生成するように構成してもよい。
例えば、第１使い捨て共有値取得部１１２及び第２使い捨て共有値取得部２１２によりｒ１とは別の一時的に共有する使い捨ての値（ｒ１´）を取得することにより、ＲＢＫＤＦ２関数に入力されるパスワードを共通鍵（ｋ）、ソルト（Ｓａｌｔ）をｒ１´とすることで、式５により共通鍵（ｋ）から別の共通鍵（ｋ´）を生成するように構成することができる。
ｋ´  ＝  Ｈ（ｋ，ｒ１´）          （式５）
こうすることで、第１共通鍵生成部１１４及び第２共通鍵生成部２１４は、２つの共通鍵ｋ＝Ｈ（ｐｗＣ，ｒ１）及びｋ´＝Ｈ（ｋ，ｒ１´）を生成することができる。
ここで、ｒ１´として、例えば第１のノード１０（第１認証部１１５）の生成したチャレンジデータとなるノンス（ｒ２）を用いてもよい。
【００９８】
同様に、「一度限り」の一時的に共有する使い捨ての値として、第１カウンタ及び第２カウンタの表すカウンタ値を適用する場合、第１カウンタ及び第２カウンタをそれぞれ、インクリメントさせることで、別の共通鍵（ｋ´）を生成するように構成することができる。
例えば、共通鍵（ｋ）を生成した後、第１カウンタ及び第２カウンタをそれぞれ、インクリメントさせて、第１カウンタ及び第２カウンタの値が例えば２となった場合、式６により共通鍵（ｋ）から別の共通鍵（ｋ´）を生成するように構成することができる。
ｋ´  ＝  Ｈ（ｋ，２）          （式６）
【００９９】
また、「一度限り」の一時的に共有する使い捨ての値として、第１カウンタ及び第２カウンタの表すカウンタ値を適用する場合、第１カウンタ及び第２カウンタをそれぞれ、共通鍵を生成するたびに、インクリメントさせることで、２つの共通鍵（ｋ１、ｋ２）を生成するように構成することができる。
具体的には、例えば、ＲＢＫＤＦ２関数に入力されるパスワードを共通鍵（ｋ）とし、ソルト（Ｓａｌｔ）を「ｉ」及び「ｉ＋１」とすることで、式７及び式８に示すように、２つの共通鍵（ｋ１、ｋ２）を生成するように構成することができる。
ｋ１＝  Ｈ（ｋ，ｉ）                （式７）
ｋ２＝  Ｈ（ｋ，ｉ＋１）            （式８）
【０１００】
このように第１共通鍵生成部１１４及び第２共通鍵生成部２１４は、先に生成した共通鍵（ｋ）に基づいて２つの鍵（ｋ、ｋ´）又は２つの鍵（ｋ１、ｋ２）を生成することができる。
なお、第１共通鍵生成部１１４及び第２共通鍵生成部２１４が、先に生成した共通鍵（ｋ）に基づいて２つの鍵を生成する方法は、上述した実施例に限定されるものではない。
例えば、共通関数として、暗号化関数Ｅｎｃ（）を適用する場合についても、ＲＢＫＤＦ２関数の場合と同様に、２つの共通鍵を生成することができる。
【０１０１】
第２実施形態で作成する２つの共通鍵について、一方を暗号化に用いるセッション鍵（共通鍵）、他方を完全性の確認に用いるＭＡＣ（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）鍵として、ＳＳＬ／ＴＬＳ（レコードプロトコル）に、引き渡すことが可能となる。
すなわち、第２実施形態で作成する２つの共通鍵のうち、一方を暗号化に用いるセッション鍵（共通鍵）、他方を完全性の確認に用いるＭＡＣ鍵として、ＳＳＬ／ＴＬＳ（レコードプロトコル）のセキュリティ暗号として設定することが可能となる。
こうすることで、ＳＳＬ／ＴＬＳのハンドシェイクプロトコルの代わりに、第２実施形態により、暗号化された通信チャネルの確立及び通信相手の認証といった、暗号通信のための準備を行い、レコードプロトコルは、第２実施形態で生成した２つの共通鍵を使い、送受信するデータの暗号化と完全性（交換されるデータが改ざんされていないこと）のチェックを行うようにすることができる。
【０１０２】
＜第２実施形態の効果＞
第２実施形態によれば、第１のノード（例えばクライアント端末）のノードユーザが第２のノード（例えばサーバ）にアクセスするための識別情報（ｉｄ）及びパスワード（ｐｗＣ）が予め設定されている場合に、公開鍵及び第三者の認証局を必要とせず、メッセージの暗号化に用いるセッション鍵（共通鍵）及び完全性の確認に用いるＭＡＣ鍵を簡易に生成することができる。
これにより、第１のノードと第２のノード間でセッション鍵により暗号化された通信チャネルを確立するとともに、ＭＡＣ鍵によりメッセージの改ざんを防止することが可能となり、証明書に伴うやりとりの負荷が軽減され、共通鍵により暗号化された通信チャネルを安価に容易に確立することができる。
【０１０３】
本発明の共通鍵により暗号化された通信チャネルを確立する暗号化通信チャネル確立システム１は、専用のシステムによらず、通常のコンピュータシステムを用いて実現できる。例えば、コンピュータに上述の動作を実行するためのプログラムを格納したコンピュータ読み取り可能な記録媒体（ＣＤ、ＤＶＤ，ブルーレイディスク等のリムーバブルメディア等）を配布してもよいし、又はネットワークを介して、サーバー又はクラウドからコンピュータにダウンロードされることにより配布してもよい。
そして、配布されたプログラムをコンピュータにインストールすることにより、第１のノード１０、又は第２のノード２０等を構成することができる。
そして、プログラムを起動し、ＯＳの制御下で実行することにより、コンピュータに第１のノード１０、又は第２のノード２０の備える機能部として機能させることができる。
【０１０４】
特に、上記プログラム（第１のノードとして機能させるプログラム）をコンピュータに搭載されるブラウザにインストールし、上記プログラム（第２のノードとして機能させるプログラム）をＷＥＢサーバにインストールすることにより、ブラウザとＷｅｂサーバにより構成されるブラウザベースのクライアントサーバシステムに本発明の共通鍵により暗号化された通信チャネルを確立する暗号化通信チャネル確立システム１をインストールすることができる。
【０１０５】
また、共通鍵により暗号化された通信チャネルを確立する暗号化通信チャネル確立方法も、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、コンピュータ（第１のノード１０又は第２のノード２０）にインストールされる。また、これらのプログラムは、ＣＤ−ＲＯＭのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【０１０６】
１  暗号化通信チャネル確立システム
１０  第１のノード
１１０  制御部
１１１  接続要求部
１１２  第１使い捨て共有値取得部
１１３  パスワード取得部
１１４  第１共通鍵生成部
１１５  第１認証部
１１６  第１レスポンス部
１２０  記憶部
１３０  通信部
２０    第２のノード
２１０  制御部
２１１  識別情報受信部
２１２  第２使い捨て共有値取得部
２１３  パスワード取得部
２１４  第２共通鍵生成部
２１５  第２認証部
２１６  第２レスポンス部
２２０  記憶部
２３０  通信部
３０  通信網
【図１】
0006609212.tif 000002
【図２】
0006609212.tif 000003
【図３】
0006609212.tif 000004
【図４】
0006609212.tif 000005
【図５】
0006609212.tif 000006
【図６】
0006609212.tif 000007