(57)【特許請求の範囲】
【請求項１】
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する演算手段と、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号する鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する確認処理手段と、
を備える鍵交換装置。
【請求項２】
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する演算手段と、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信する鍵カプセル化処理手段と、  前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する確認処理手段と、
を備える鍵交換装置。
【請求項３】
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する演算手段と、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号し、前記鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信する、鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する確認処理手段と、
を備える鍵交換装置。
【請求項４】
セッションを特定するためのセッション状態を保存するセッション状態保存手段と、
生成されたセッション鍵および前記セッション状態を含むセッション情報を出力するセッション情報出力手段と、
をさらに備える、請求項１から３のいずれか１に記載の鍵交換装置。
【請求項５】
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する、ことをコンピュータが実行する鍵交換装置の制御方法。
【請求項６】
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する、
ことをコンピュータに実行させる鍵交換装置の制御プログラム。
【請求項７】
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する、ことをコンピュータが実行する鍵交換装置の制御方法。
【請求項８】
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する、
ことをコンピュータに実行させる鍵交換装置の制御プログラム。
【請求項９】
鍵交換を要求する第１鍵交換装置と、前記鍵交換の要求に応答する第２鍵交換装置とを含む鍵交換システムであって、
前記第１鍵交換装置が、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する第１初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する第１演算手段と、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を前記第２鍵交換装置に送信すると共に、前記鍵カプセル化された公開鍵および前記第２鍵交換装置から受信した鍵カプセル化された暗号文からセッション鍵を復号する第１鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記第２鍵交換装置に送信し、前記第２鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第２鍵交換装置から受信した署名を確認する第１確認処理手段と、
を備え、
前記第２鍵交換装置が、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第４ランダムテープからセッション識別子を生成し、第５ランダムテープから秘密鍵を生成する第２初期設定手段と、
前記第５ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第５ランダムテープを生成し、且つ、第６ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第６ランダムテープを生成する第２演算手段と、
前記第１鍵交換装置から受信した鍵カプセル化された公開鍵および前記暗号化された第５ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記第１鍵交換装置に送信する第２鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第６ランダムテープと、に基づいて署名を生成して前記第１鍵交換装置に送信し、前記第１鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第１鍵交換装置から受信した署名を確認する第２確認処理手段と、
を備える鍵交換システム。
【請求項１０】
鍵交換を要求する第１鍵交換装置と、前記鍵交換の要求に応答する第２鍵交換装置とを含む鍵交換システムの鍵交換方法であって、
前記第１鍵交換装置が、任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第１鍵交換装置が、前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
前記第１鍵交換装置が、前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を前記第２鍵交換装置に送信し、
前記第２鍵交換装置が、前記第１鍵交換装置から鍵カプセル化された公開鍵を受信すると、任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第４ランダムテープからセッション識別子を生成し、第５ランダムテープから秘密鍵を生成し、
前記第２鍵交換装置が、前記第５ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第５ランダムテープを生成し、且つ、第６ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第６ランダムテープを生成し、
前記第２鍵交換装置が、前記第１鍵交換装置から受信した鍵カプセル化された公開鍵および前記暗号化された第５ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記第１鍵交換装置に送信し、
前記第２鍵交換装置が、前記署名鍵と、送信メッセージと、前記暗号化された第６ランダムテープと、に基づいて署名を生成して前記第１鍵交換装置に送信し、
前記第１鍵交換装置が、前記鍵カプセル化された公開鍵および前記第２鍵交換装置から受信した鍵カプセル化された暗号文からセッション鍵を復号し、
前記第１鍵交換装置が、前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記第２鍵交換装置に送信し、前記第２鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第２鍵交換装置から受信した署名を確認する、
前記第２鍵交換装置が、前記第１鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第１鍵交換装置から受信した署名を確認する
を含む鍵交換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵交換装置の技術に関する。
【背景技術】
【０００２】
非特許文献１には、鍵交換の技術が開示されている。具体的には、互いに公開鍵を知る２つの鍵交換装置が、それぞれの鍵交換装置に入力されたランダムテープを自装置の長期秘密鍵で暗号化した暗号データを交換する。そして、各鍵交換装置は、交換相手から受信した暗号データおよび交換相手の公開鍵と、自装置の長期秘密鍵とに基づいて、セッション鍵を生成する。その結果、２つの鍵交換装置で生成されたセッション鍵は同一となる。セッション鍵の生成に用いるランダムテープおよび長期秘密鍵が攻撃者に窃取されなければ、セッション鍵は攻撃者に対して秘匿される。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Brian A. LaMacchia, Kristin Lauter, Anton Mityagin, ”Stronger Security of Authenticated Key Exchange” Provable Security, Lecture Notes in Computer Science Volume 4784, 2007, pp 1-16
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記文献に記載の技術は、攻撃者が一方の鍵交換装置になりすまして、鍵交換相手からの暗号データを傍受した場合、なりすました鍵交換装置の長期秘密鍵が窃取される、更には、攻撃者によって鍵交換相手のセッション鍵が窃取されるという問題がある。【０００５】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００６】
本発明に係る鍵交換装置の一態様は、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する演算手段と、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号する鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する確認処理手段と、
を備える。【０００７】
本発明に係る鍵交換装置の一態様は、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する演算手段と、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信する鍵カプセル化処理手段と、  前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する確認処理手段と、
を備える。【０００８】
本発明に係る鍵交換装置の一態様は、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する演算手段と、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号し、前記鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信する、鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する確認処理手段と、
を備える。【０００９】
本発明に係る鍵交換装置の制御方法の一態様は、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する。【００１０】
本発明に係る鍵交換装置の制御プログラムの一態様は、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する、
ことをコンピュータに実行させる。
【００１１】
本発明に係る鍵交換装置の制御方法の一態様は、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する。【００１２】
本発明に係る鍵交換装置の制御プログラムの一態様は、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信し、前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する
ことをコンピュータに実行させる。
【００１３】
本発明に係る鍵交換システムの一態様は、
鍵交換を要求する第１鍵交換装置と、前記鍵交換の要求に応答する第２鍵交換装置とを含む鍵交換システムであって、
前記第１鍵交換装置が、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する第１初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する第１演算手段と、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を前記第２鍵交換装置に送信すると共に、前記鍵カプセル化された公開鍵および前記第２鍵交換装置から受信した鍵カプセル化された暗号文からセッション鍵を復号する第１鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記第２鍵交換装置に送信し、前記第２鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第２鍵交換装置から受信した署名を確認する第１確認処理手段と、
を備え、
前記第２鍵交換装置が、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第４ランダムテープからセッション識別子を生成し、第５ランダムテープから秘密鍵を生成する第２初期設定手段と、
前記第５ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第５ランダムテープを生成し、且つ、第６ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第６ランダムテープを生成する第２演算手段と、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第５ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記第１鍵交換装置に送信する第２鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第６ランダムテープと、に基づいて署名を生成して前記第１鍵交換装置に送信し、前記第１鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第１鍵交換装置から受信した署名を確認する第２確認処理手段と、
を備える。【００１４】
本発明に係る鍵交換方法の一態様は、
鍵交換を要求する第１鍵交換装置と、前記鍵交換の要求に応答する第２鍵交換装置とを含む鍵交換システムの鍵交換方法であって、
前記第１鍵交換装置が、任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第１鍵交換装置が、前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
前記第１鍵交換装置が、前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を前記第２鍵交換装置に送信し、
前記第２鍵交換装置が、前記第１鍵交換装置から鍵カプセル化された公開鍵を受信すると、任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第４ランダムテープからセッション識別子を生成し、第５ランダムテープから秘密鍵を生成し、
前記第２鍵交換装置が、前記第５ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第５ランダムテープを生成し、且つ、第６ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第６ランダムテープを生成し、
前記第２鍵交換装置が、前記第１鍵交換装置から受信した鍵カプセル化された公開鍵および前記暗号化された第５ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記第１鍵交換装置に送信し、
前記第２鍵交換装置が、前記署名鍵と、送信メッセージと、前記暗号化された第６ランダムテープと、に基づいて署名を生成して前記第１鍵交換装置に送信し、
前記第１鍵交換装置が、前記鍵カプセル化された公開鍵および前記第２鍵交換装置から受信した鍵カプセル化された暗号文からセッション鍵を復号し、
前記第１鍵交換装置が、前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記第２鍵交換装置に送信し、前記第２鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第２鍵交換装置から受信した署名を確認し、
前記第２鍵交換装置が、前記第１鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第１鍵交換装置から受信した署名を確認する。
【発明の効果】
【００１５】
本発明によれば、攻撃者が鍵交換相手になりすましてもセッション鍵を秘匿することができる。
【図面の簡単な説明】
【００１６】
【図１】第１実施形態に係る鍵交換装置の構成を示すブロック図である。
【図２】第２実施形態に係る鍵交換装置を含む鍵交換システムの構成を示すブロック図である。
【図３】第２実施形態に係る鍵交換装置と鍵交換装置との鍵交換の動作手順の概要を示すシーケンス図である。
【図４Ａ】前提技術に係る鍵交換システムの動作手順の概要を示す図である。
【図４Ｂ】前提技術に係る鍵交換システムのなりすましによる鍵窃取の動作手順の概要を示す図である。
【図５】第２実施形態に係る鍵交換装置の構成を示すブロック図である。
【図６】第２実施形態に係る初期設定部の構成を示すブロック図である。
【図７】第２実施形態に係る鍵カプセル化処理部の構成を示すブロック図である。
【図８】第２実施形態に係る確認処理部の構成を示すブロック図である。
【図９Ａ】第２実施形態に係る鍵交換要求装置としての鍵交換装置の構成を示すブロック図である。
【図９Ｂ】第２実施形態に係る鍵交換要求装置としての鍵交換装置の処理手順を示すフローチャートである。
【図１０Ａ】第２実施形態に係る鍵交換応答装置としての鍵交換装置の構成を示すブロック図である。
【図１０Ｂ】第２実施形態に係る鍵交換応答装置としての鍵交換装置の処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１８】
［第１実施形態］
本発明の第１実施形態としての鍵交換装置１００について、図１を用いて説明する。
【００１９】
図１に示すように、鍵交換装置１００は、初期設定部１０１と、演算部１０２と、鍵カプセル化処理部１０３と、確認処理部１０４と、を含む。
【００２０】
初期設定部１０１は、任意のランダムテープＲ０から公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープＲ１からセッション識別子を生成し、第２ランダムテープＲ２から秘密鍵を生成する。ランダムテープは乱数のデータであり、２次記憶装置上のファイルであってもよい。
【００２１】
演算部１０２は、第２ランダムテープＲ２と秘密鍵とを変数とする擬似ランダム関数tPRF()の演算によって、暗号化された第２ランダムテープｒ２を生成する。更に、演算部１０２は、第３ランダムテープＲ３と秘密鍵とを変数とする擬似ランダム関数tPRF()の演算によって、暗号化された第３ランダムテープｒ３を生成する。
【００２２】
鍵カプセル化処理部１０３は、演算部１０２で暗号化された第２ランダムテープｒ２に基づいて、鍵カプセル化された公開鍵であるKem公開鍵、および、鍵カプセル化された秘密鍵であるKem秘密鍵を生成して、Kem公開鍵を鍵交換相手に送信する。更に、鍵カプセル化処理部１０３は、鍵交換相手の装置から鍵カプセル化された暗号文であるKem暗号文を受信する。続いて、鍵カプセル化処理部１０３は、Kem公開鍵、および、受信したKem暗号文からセッション鍵を復号する。
【００２３】
確認処理部１０４は、初期設定部１０１が生成した署名鍵と、送信メッセージと、暗号化された第３ランダムテープｒ３と、に基づいて署名を生成して鍵交換相手に送信する。また、確認処理部１０４は、鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて鍵交換相手から受信した署名を確認する。
【００２４】
本実施形態によれば、攻撃者が一方の鍵交換装置になりすまして交換相手からの暗号データを傍受した場合に、なりすました装置の長期秘密鍵が窃取されても、攻撃者に対してセッション鍵を秘匿することができる。
【００２５】
［第２実施形態］
次に、本発明の第２実施形態に係る鍵交換装置を含む鍵交換システムについて、図２、図３、図５〜図８、図９Ａ、図９Ｂ、図１０Ａ、図１０Ｂを用いて説明する。
本実施形態に係る鍵交換装置を含む鍵交換システムは、鍵交換を要求する鍵交換装置２１０Ａと、鍵交換の要求に応答する鍵交換装置２１０Ｂとを含む。
【００２６】
本鍵交換システムにおいては、次のように動作する。
【００２７】
鍵交換装置２１０Ａは、擬似ランダム関数により、ランダムテープと秘密鍵とを変数とする演算によって、暗号化されたランダムテープを生成する。そして、鍵交換装置２１０Ａは、この暗号化されたランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、鍵カプセル化された公開鍵を鍵交換装置２１０Ｂに送信する。
【００２８】
鍵交換装置２１０Ｂは、鍵交換装置２１０Ａから鍵カプセル化された公開鍵を受信すると、同様に、擬似ランダム関数によって、ランダムテープと秘密鍵とを変数とする演算によって、暗号化されたランダムテープを生成する。そして、鍵交換装置２１０Ｂは、鍵交換装置２１０Ａから受信した鍵カプセル化された公開鍵および暗号化されたランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成する。
【００２９】
次に、鍵交換装置２１０Ｂは、生成した鍵カプセル化された暗号文を鍵交換装置２１０Ａに送信すると共に、署名鍵と、送信メッセージと、暗号化されたランダムテープと、に基づいて署名を生成して鍵交換装置２１０Ａに送信する。
【００３０】
鍵交換装置２１０Ａは、鍵カプセル化された公開鍵および鍵交換装置２１０Ｂから受信した鍵カプセル化された暗号文からセッション鍵を復号すると共に、署名鍵と、送信メッセージと、暗号化されたランダムテープと、に基づいて署名を生成して鍵交換装置２１０Ｂに送信する。そして、鍵交換装置２１０Ｂの公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて鍵交換装置２１０Ｂから受信した署名を確認する。
【００３１】
一方、鍵交換装置２１０Ｂが、鍵交換装置２１０Ａの公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて鍵交換装置２１０Ａから受信した署名を確認する。
【００３２】
《鍵交換システム》
図２は、本実施形態に係る鍵交換装置を含む鍵交換システム２００の構成を示すブロック図である。
【００３３】
図２の鍵交換システム２００は、ネットワーク２２０を介して、鍵交換装置２１０Ａと鍵交換装置２１０Ｂと、鍵交換装置２１０Ｘとが接続している。これらの鍵交換装置２１０Ａ〜２１０Ｘがセッションの確立に向けて、一方が鍵交換を要求する鍵交換要求装置として、他方が鍵交換応答装置として動作する。鍵交換要求装置と鍵交換応答装置としての役割は双方向で可能である。
【００３４】
なお、図２には、３台の鍵交換装置を示したが数に限定はない。また、１つのネットワークではなく、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）なども含み多階層のネットワークによる接続であってもよい。以下、本実施形態においては、鍵交換装置２１０Ａが鍵交換を要求する鍵交換要求装置として動作し、鍵交換装置２１０Ｂが鍵交換の要求に応答する鍵交換応答装置として動作する例を説明する。
【００３５】
《前提技術》
本実施形態の鍵交換方法を説明する前に、前提技術として、非特許文献１における鍵交換方法の概略を説明する。
【００３６】
（動作概要）
図４Ａは、前提技術に係る鍵交換システムの動作手順の概要を示す図である。
【００３７】
前提技術では、２つの鍵交換装置ＡＡおよび鍵交換装置ＢＢが互いに通信することで、両者で秘密のセッション鍵を確立する。以下の説明において、λを定数、qを素数、Gを位数qの巡回群、gをGの生成元、Hash1を任意の長さのビット列からZqへのハッシュ関数、Hash2を任意の長さのビット列から長さλのビット列へのハッシュ関数とする。鍵交換装置ＡＡおよびＢＢは、Zqの要素である長期秘密鍵Skを持つ。鍵交換装置ＡＡの長期秘密鍵をSkA、鍵交換装置ＢＢの長期秘密鍵をSkBと表すとする。秘密鍵Skを持つ鍵交換装置の対応する公開鍵をgSkとする。すなわち、鍵交換装置ＡＡとＢＢの公開鍵Pkはそれぞれ、PkA=gSkAとPkB=gSkBとで表される。
【００３８】
以下、鍵交換システムの鍵交換装置ＡＡと鍵交換装置ＢＢがセッション鍵を確立する動作について説明する。
【００３９】
はじめに、鍵交換システムの鍵交換装置ＡＡは、自装置の長期秘密鍵SkA、鍵交換装置ＢＢの公開鍵PkB=gSkBを取得する（Ｓ４０１）。
【００４０】
次に、鍵交換装置ＡＡは、長さλのビット列であるランダムテープeskAを入力する（Ｓ４０２）。
【００４１】
鍵交換装置ＡＡは、入力したランダムテープeskAを長期秘密鍵SkAで暗号化した暗号データepA=gHash1(eskA,SkA)を生成して、鍵交換装置ＢＢに送付する（Ｓ４０３）。更に、鍵交換装置ＡＡは、鍵交換装置ＢＢが送付した暗号化データepBを受付ける（Ｓ４０４）。
【００４２】
鍵交換装置ＡＡは、受信した暗号データepB、鍵交換装置ＢＢの公開鍵PkB、自装置の長期秘密鍵SkAに基づいて、セッション鍵KeyAを、KeyA=Hash2(epBSkA,PkBHash1(eskA,SkA),epBHash1(eskA,SkA))として生成する（Ｓ４０５）。
【００４３】
次に、鍵交換システムの鍵交換装置ＢＢの動作について図４Ａを用いて説明する。
鍵交換装置ＢＢは、自装置の長期秘密鍵SkB、鍵交換装置ＡＡの公開鍵PkA=gSkAを取得する（Ｓ４１１）。
【００４４】
鍵交換装置ＢＢは、鍵交換装置ＡＡが送付した暗号化データepAを受付ける（Ｓ４１２）。次に、鍵交換装置ＢＢは、長さλのビット列であるランダムテープeskBを入力する（Ｓ４１３）。
【００４５】
鍵交換装置ＢＢは、入力したランダムテープeskBを長期秘密鍵SkBで暗号化した暗号データepB=gHash1(eskB,SkB)を生成して、鍵交換装置ＡＡに送付する（Ｓ４１４）。
【００４６】
鍵交換装置ＢＢは、受信した暗号データepAおよび鍵交換装置ＡＡの公開鍵PkAと、自装置の長期秘密鍵SkBとに基づいて、セッション鍵KeyBを、KeyB=Hash2(PkAHash1(eskB,SkB),epASkB,epAHash1(eskB,SkB))として生成する（Ｓ４１５）。
【００４７】
このように、鍵交換装置ＡＡおよび鍵交換装置ＢＢのセッション鍵は、共に、KeyA=KeyB=Hash2(gHash1(eskB,SkB) SkA,gHash1(eskA,SkA) SkB,gHash1(eskA,SkA) Hash1(eskB,SkB))となって、両者は一致し共通のセッション鍵を生成することに成功する。
【００４８】
ここで、鍵交換の重要な性質に、将来安全性がある。これは、ある時点で２つの鍵交換装置で確立した鍵が、将来これらの鍵交換装置が攻撃を受けてそれらの長期鍵を攻撃者に窃取されても、過去の時点で確立した鍵を攻撃者が知ることができないということである。
【００４９】
上記前提技術の鍵交換方法は、将来安全に加え、各鍵交換装置に入力されたランダムテープが漏洩しても一定の範囲でセッション鍵を秘匿することができる。具体的には、ある鍵交換装置ＡＡとある鍵交換装置ＢＢがセッション鍵を確立したとき、鍵交換装置ＡＡがランダムテープeskAと長期鍵SkAとの両方が攻撃者に窃取される、といった事象が発生しなければ、セッション鍵KeyA=KeyBは攻撃者に秘匿される。あるいは、鍵交換装置ＢＢがランダムテープeskBと長期鍵SkBとの両方が攻撃者に窃取される、といった事象が発生しなければ、セッション鍵KeyA=KeyBは攻撃者に秘匿される。
【００５０】
ここで鍵交換装置ＡＡに注目すると、ランダムテープeskAと長期鍵SkAとの両方は、鍵交換装置ＡＡがセッション鍵を生成するための全ての情報であるため、これらが窃取された時にセッション鍵を秘匿することは困難になる。しかし、ランダムテープeskAさえ漏れていなければ、長期鍵SkAがセッションを確立した後に漏洩してもセッション鍵は秘匿されるため、将来安全性は保証される。なお、前提技術の方式は、より強い安全性を保証するため、長期鍵SkAがセッションを確立する前に漏洩してもセッション鍵は秘匿される。
【００５１】
（なりすましによる鍵の窃取）
図４Ｂは、前提技術に係る鍵交換システムのなりすましによる鍵窃取の動作手順の概要を示す図である。なお、図４Ｂにおいて、図４Ａと同様のステップには同じステップ番号を付している。
【００５２】
上記前提技術の鍵交換方法は、例えば鍵交換装置ＡＡが、鍵交換装置ＢＢになりすましたなりすまし装置Ｃ（攻撃者）と通信してセッション鍵を確立した場合、十分な将来安全性を提供することができない。前提技術の鍵交換方法では、鍵交換装置ＡＡが確立したと信じるセッション鍵が、攻撃者に対して秘匿される条件は、鍵交換装置ＢＢの長期鍵SkBが時期を問わず攻撃者に窃取されていないことである。しかしながら実際、長期鍵SkBを将来窃取することができる攻撃者は、次のような攻撃で鍵交換装置ＡＡが鍵交換装置ＢＢと確立するセッション鍵を知ることができる。
【００５３】
鍵交換装置ＡＡが鍵交換装置ＢＢとセッションの開始を試みたとき、攻撃者は鍵交換装置ＢＢになりすましたなりすまし装置Ｃとして、次のようにセッション鍵を確立することができる。
【００５４】
以下、なりすまし装置Ｃと鍵交換装置ＡＡとの鍵交換システムにおける鍵窃取の動作について図４Ｂを用いて説明する。鍵交換のための前提条件が、図４Ａと同様の箇所については詳しい説明を省略する。鍵交換装置ＡＡの動作は、ステップＳ４０１からＳ４０２までは、図４Ａと同様のため詳細な説明を省略する。
【００５５】
鍵交換装置ＡＡは、入力したランダムテープeskAを長期秘密鍵SkAで暗号化した暗号データepA=gHash1(eskA,SkA)を生成して、なりすまし装置Ｃに送付する（Ｓ４２３）。更に、鍵交換装置ＡＡは、なりすまし装置Ｃが送付した暗号化データepB’を受付ける（Ｓ４２４）
鍵交換装置ＡＡは、受信した暗号データepB'、鍵交換装置ＢＢの公開鍵PkB、自装置の長期秘密鍵SkAに基づいて、セッション鍵KeyA'を、KeyA'=Hash2(epB'SkA,PkBHash1(eskA,SkA),epB'Hash1(eskA,SkA))として生成する（Ｓ４２５）。
【００５６】
なりすまし装置Ｃは、鍵交換装置ＡＡが送付した暗号化データepAを受付ける（Ｓ４３２）。次に、なりすまし装置Ｃは、長さλのビット列であるランダムテープとして、Zqの要素であるeskCをランダムに選ぶ（Ｓ４３３）。なりすまし装置Ｃは、鍵交換装置ＢＢのなりすまし情報epB'=geskCを生成して、鍵交換装置ＡＡに送付する（Ｓ４３４）。なりすまし装置Ｃは、セッション鍵KeyCを、KeyC=Hash2(PkAeskC,epASkB?,epAeskC)として生成する（Ｓ４３５）。
【００５７】
鍵交換装置ＢＢの秘密鍵skBが不明であるため(図４Ｂ中にskB?で表す)、攻撃者（なりすまし装置Ｃ）は、KeyA'をこの時点では知ることができない。しかし、攻撃者は、鍵交換装置ＡＡが鍵KeyA'を使って暗号化した暗号文を大量に受信することができる。そして、攻撃者は、その後の執拗な攻撃で鍵交換装置ＢＢの秘密鍵SkBの入手確率を高めることができる。そして、攻撃者は、秘密鍵SkBを手に入れることで、セッション鍵を、KeyA'=KeyC=Hash2(PkAeskC,epASkB,epAeskC)として生成することができる。
【００５８】
このように、前提技術においては、鍵交換装置ＡＡと鍵交換装置ＢＢがセッション鍵を確立したとき、鍵交換装置ＡＡがランダムテープeskAと長期鍵SkAとの両方が攻撃者に窃取されなければ、セッション鍵KeyA=KeyBは攻撃者に秘匿される。あるいは、鍵交換装置ＢＢがランダムテープeskBと長期鍵SkBとの両方が攻撃者に窃取されなければ、セッション鍵KeyA=KeyBは攻撃者に秘匿される。
【００５９】
一方、鍵交換装置ＡＡが、鍵交換装置ＢＢになりすました攻撃者と通信してセッション鍵を確立した場合に、鍵交換装置ＡＡがランダムテープeskAと長期鍵SkAとの両方が攻撃者に窃取されれば、セッション鍵KeyAは攻撃者に窃取されることになる。あるいは、鍵交換装置ＢＢの長期鍵SkBがこのセッションを確立する以前であっても攻撃者に窃取されれば、セッション鍵KeyAは攻撃者に窃取される。
【００６０】
《本実施形態の技術》
次に、上記前提技術の課題を解決した、本実施形態の鍵交換装置による鍵交換方法を詳細に説明する。
【００６１】
まず、本実施形態の鍵交換装置による鍵交換方法で用いる関数などの諸定義を行なう。
【００６２】
（ブロック暗号）
ブロック暗号を構成するアルゴリズムは、SymGen,SymEnc,SymDecの３つとする。“SymGen”は、共通鍵Kを生成する。“SymEnc”は、共通鍵KとメッセージブロックMとを用いて暗号文ブロックCをC=SymEnc(K,M)として生成する。“SymDec”は、共通鍵Kと暗号文ブロックCとを用いてメッセージブロックMをM=SymDec(K,C)として復号する。
【００６３】
（擬似ランダム関数）
捻れ擬似ランダム関数tPRFを次の様に定義する。“関数tPRF”は、長さλのビット列と長さλのビット列が入力され、長さλのビット列を出力する、擬似ランダム関数である。
捻れ擬似ランダム関数は、Sを秘密鍵、Aを任意の値として、tPRF(S,A)を出力する関数も、tPRF(A,S)を出力する関数も、いずれも擬似ランダム関数となることを想定している。
【００６４】
捻れ擬似ランダム関数の例として次の関数が考えられる。
【００６５】
tPRF(X,Y)=SymEnc(X,Y)+SymEnc(Y,X)
ここで、SymEncの鍵長、メッセージブロック長、及び、暗号ブロック長は、全てλとする。また、“+”の記号はビット毎の排他的論理和とする。
【００６６】
（鍵カプセル化）
鍵カプセル化のためのアルゴリズムは、KemGen,KemEnc,KemDecの３つとする。“KemGen”は、λビットのランダムテープR1が入力されて、Kem公開鍵とKem秘密鍵の対(KemPk,KemSk)を出力する。すなわち、(KemPk,KemSk)=KemGen(R1)である。“KemEnc”は、Kem公開鍵とλビットのランダムテープR2が入力されて、Kem暗号文と鍵との対(c,K)を出力する。すなわち、(KemC,K)=KemEnc(KemPk,R2)である。“KemDec”は、Kem秘密鍵とKem暗号文との対(KemSk,KemC)が入力されて、鍵Kを出力する。すなわち、K=KemDec(KemSk,KemC)である。
【００６７】
鍵カプセル化として、次の例が考えられる。なお、Gを素数位数qの巡回群、gをその生成子とする。KemGenは、Zqの要素xをランダムに生成し、(KemPk,KemSk)=(gx,x)とする。KemEncは、Zqの要素yをランダムに生成し、(KemC,K)=(gy,pky)とする。KemDecは、K=KemCKemSkとする。
【００６８】
（署名）
署名のためのアルゴリズムは、SigGen,Sign,Verifyの３つとする。“SigGen”は、λビットのランダムテープR3が入力されて、検証鍵と署名鍵との対(SVk,SSk)を出力する。すなわち、(SVk,SSk)=SigGen(R3)である。“Sign”は、署名鍵SSkとメッセージMとλビットのランダムテープR4とが入力されて、署名sigを出力する。すなわち、sig=Sign(SSk,M,R4)である。“Verify”は、検証鍵SVkとメッセージMと署名sigとが入力されて、署名の検証結果resを出力する。すなわち、res=Verify(SVk,M,sig)である。
【００６９】
《鍵交換システムの動作手順》
図３は、本実施形態に係る鍵交換装置２１０Ａと鍵交換装置２１０Ｂとの鍵交換の動作手順の概要を示すシーケンス図である。
【００７０】
鍵交換装置２１０Ａは、ステップＳ３１１において、初期化により初期設定を行なう。例えば、長期秘密鍵SkAや公開鍵PkAを生成して保存する。一方、鍵交換装置２１０Ｂも、ステップＳ３１３において、同様に初期化により、長期秘密鍵SkBや公開鍵PkBを生成して保存する。
【００７１】
鍵交換装置２１０Ａは、ステップＳ３１５において、ランダムテープＲ２から、擬似ランダム関数を用いて、暗号化された２次ランダムテープｒ２を生成する。次に、鍵交換装置２１０Ａは、ステップＳ３１７において、２次ランダムテープｒ２を用いて、KemGen(r2)によりKem公開鍵KemPkと、Kem秘密鍵KemSkとを生成する。そして、鍵交換装置２１０Ａは、ステップＳ３１９において、鍵交換相手の鍵交換装置２１０Ｂに対して、Kem公開鍵として、装置ＩＤ、セッションＩＤ、KemPkと、を含むメッセージを送信する。
【００７２】
鍵交換装置２１０Ｂは、鍵交換装置２１０Ａからのメッセージを受信すると、ステップＳ３２１において、ランダムテープＲ５とＲ６とから、擬似ランダム関数を用いて、暗号化された２次ランダムテープｒ５とｒ６とを生成する。そして、鍵交換装置２１０Ｂは、ステップＳ３２３において、２次ランダムテープｒ５を用いて、KemEnc(KemPk,r5)によりKem暗号文KemCと、セッション鍵Ｋとを生成する。次に、鍵交換装置２１０Ｂは、署名生成送信処理として、ステップＳ３２５とＳ３２７とを実行する。まず、鍵交換装置２１０Ｂは、ステップＳ３２５において、署名sigBを、署名鍵SSkB、送信メッセージ、２次ランダムテープｒ６とから、Sign( )により生成する。なお、送信メッセージには、例えば、装置ＩＤ、セッションＩＤ、Kem公開鍵KemPk、Kem暗号文KemCを含んでよい。そして、鍵交換装置２１０Ｂは、ステップＳ３２７において、鍵交換装置２１０Ａに対して、装置ＩＤ、セッションＩＤ、Kem暗号文KemCおよび署名sigBを含むメッセージを送信することで応答する。
【００７３】
鍵交換装置２１０Ａは、鍵交換装置２１０Ｂからの応答を受信すると、ステップＳ３３１において、２次ランダムテープｒ２を再生して、Kem公開鍵KemPkと、Kem秘密鍵KemSkとを再生すると共に、ランダムテープＲ３から、擬似ランダム関数を用いて、暗号化された２次ランダムテープｒ３を生成する。なお、ここでは、２次ランダムテープｒ２と、Kem公開鍵KemPkと、Kem秘密鍵KemSkとを漏洩を防止するために再生する。次に、鍵交換装置２１０Ａは、ステップＳ３３３において、鍵交換装置２１０Ｂから送信された署名sigBを、Verify(検証鍵SVkB,受信メッセージ,sigB)を用いて確認する。そして、鍵交換装置２１０Ａは、ステップＳ３３５において、セッション鍵Kを、K=KemDec(KemSk,KemC)により復号する。次に、鍵交換装置２１０Ａは、ステップＳ３３７において、署名sigAを、署名鍵SSkA、送信メッセージ、２次ランダムテープｒ３とから、Sign( )により生成する。なお、送信メッセージには、例えば、装置ＩＤ、セッションＩＤ、Kem公開鍵KemPkを含んでよい。鍵交換装置２１０Ａは、ステップＳ３３９において、鍵交換装置２１０Ｂに対して、装置ＩＤ、セッションＩＤ、署名sigAを含むメッセージを送信する。そして、鍵交換装置２１０Ａは、ステップＳ３４１において、セッション鍵と、両鍵交換装置の装置ＩＤと両セッションＩＤとを含むセッション情報とを出力する。
【００７４】
鍵交換装置２１０Ｂは、鍵交換装置２１０Ａからのメッセージを受信すると、ステップＳ３４３において、署名確認処理として、鍵交換装置２１０Ａから送信された署名sigAを、Verify(検証鍵SVkA,受信メッセージ,sigA)を用いて確認する。次に、鍵交換装置２１０Ｂは、ステップＳ３４５において、２次ランダムテープｒ５を再生し、Kem暗号文KemCとセッション鍵Kを再生する。なお、ここでは、２次ランダムテープｒ５と、Kem暗号文KemCと、セッション鍵Kとを漏洩を防止するために再生する。そして、鍵交換装置２１０Ｂは、ステップＳ３４７において、セッション鍵と、両鍵交換装置の装置ＩＤと両セッションＩＤとを含むセッション情報とを出力する。
【００７５】
《詳細な動作手順》
次に、本実施形態に係る鍵交換装置２１０Ａと鍵交換装置２１０Ｂとの鍵交換の詳細な動作について説明する。
【００７６】
＜鍵交換装置の初期設定＞
各鍵交換装置は、あるランダムテープr0とアルゴリズムSigGenを用いて検証鍵と署名鍵の対(SVk,SSk)=SigGen(R0)を生成する。なお、鍵交換装置Ｘの検証鍵はSVkX、署名鍵はSSkXと記される。各鍵交換装置は、ランダムテープＲ２とアルゴリズムSymGenを用いてブロック暗号の秘密鍵BSk=SymGen(R2)を生成する。鍵交換装置Ｘの秘密鍵はBSkXと記される。
【００７７】
各鍵交換装置の長期鍵をSkX=(SSkX,BSkX)とし、公開鍵PkX=SVkXとする。具体的には、鍵交換装置２１０Ａの長期鍵をSkA=(SSkA,BSkA)とし、公開鍵をPkA=SVkAとする。鍵交換装置２１０Ｂの長期鍵(305)をSkB=(SSkB,BSkB)とし、公開鍵(306)をPkB=SVkBとする。各鍵交換装置は互いに相手の公開鍵を知っているものとする(相手の装置の識別子が分かれば、その装置の公開鍵を読み込むことが可能である)。
【００７８】
＜２つの鍵交換装置２１０Ａと２１０Ｂ間の鍵交換でのセッション鍵確立方法＞
はじめに、鍵交換装置２１０Ａにおける、Kem公開鍵の生成と鍵交換装置２１０Ｂへの送信について説明する。
【００７９】
まず、鍵交換装置２１０Ａ(識別子IDAを持つ)に、相手の鍵交換装置２１０Ｂの識別子(識別子IDB)が入力される。次に、鍵交換装置２１０Ａに長さλのビット列であるランダムテープが３つ入力される。入力されたランダムテープを順番に、Ｒ１，Ｒ２，Ｒ３とする。鍵交換装置２１０Ａに入力されるランダムテープは、eskA=(R1,R2,R3)と記される。ここで、Ｒ１，Ｒ２，Ｒ３は、それぞれ関連性の無い独立したランダムテープであってもよい。また、Ｒ１，Ｒ２，Ｒ３は、長いテープを分割してそれぞれ関係を持たないランダムテープとして生成されてもよい。
【００８０】
次に、鍵交換装置２１０Ａは、セッション番号sidA=R1、ランダムテープr2をr2=tPRF(BSkA,R2)として生成する。
【００８１】
次に、鍵交換装置２１０Ａは、Kem公開鍵(310)とKem秘密鍵との対を、(KemPk,KemSk)=KemGen(r2)として生成する。
【００８２】
次に、鍵交換装置２１０Ａは、(IDA,IDB,sidA,KemPk)を鍵交換装置２１０Ｂに送信する。
【００８３】
鍵交換装置２１０Ａは、(sidA,IDA,IDB,R2,R3)をセッション状態の情報として保存する。
【００８４】
続いて、鍵交換装置２１０Ｂにおける、セッション鍵生成および署名付きメッセージ生成と鍵交換装置２１０Ａへの送信について説明する。
【００８５】
まず、鍵交換装置２１０Ｂは、(IDA,IDB,sidA,KemPk)を鍵交換装置２１０Ａより受信する。
【００８６】
次に、鍵交換装置２１０Ｂに長さλのビット列であるランダムテープが３つ入力される。入力されたランダムテープを順番に、Ｒ４，Ｒ５，Ｒ６とする。ランダムテープは、eskB=(R4,R5,R6)と記される。ここで、Ｒ４，Ｒ５，Ｒ６は、それぞれ関連性の無い独立したランダムテープであってもよい。また、Ｒ４，Ｒ５，Ｒ６は、長いテープを分割してそれぞれ関係を持たないランダムテープとして生成されてもよい。
【００８７】
鍵交換装置２１０Ｂは、セッション番号sidB=R4、ランダムテープr5,r6をr5=tPRF(BSkB,R5),r6=tPRF(BSkB,R6)として生成する。
【００８８】
鍵交換装置２１０Ｂは、Kem暗号文と鍵との対を(KemC,K)=KemEnc(KemPk,r5)として生成し、署名をsigB=Sign(SSkB,(A,B,sidA,sidB,KemPk,KemC),r6)として生成する。
【００８９】
鍵交換装置２１０Ｂは、(IDA,IDB,sidA,sidB,KemC,sigB)を鍵交換装置２１０Ａに送信する。
【００９０】
鍵交換装置２１０Ｂは、(IDA,IDB,sidA,sidB,KemPk,R5)をセッション状態の情報として保存する。
【００９１】
続いて、鍵交換装置２１０Ａにおける、署名確認、セッション鍵の生成および署名付きメッセージの生成と、鍵交換装置２１０Ｂへの送信について説明する。
【００９２】
鍵交換装置２１０Ａは、(IDA,IDB,sidA,sidB,KemC,sigB)を鍵交換装置２１０Ｂより受信する。
【００９３】
鍵交換装置２１０Ａは、保存された(sidA,IDA,IDB,R2,R3)と鍵交換装置２１０Ｂの公開鍵PkBとを読み込む。また、ランダムテープr2をr2=tPRF(BSkA,R2)として再生し、ランダムテープr3をr3=tPRF(BSkA,R3)として生成する。鍵交換装置２１０Ａは、Kem公開鍵とKem秘密鍵との対を(KemPk,KemSk)=KemGen(r2)として再生し、Verify(SVkB,(IDA,IDB,sidA,sidB,KemPk,KemC),sigB)を計算する。その結果、署名sigBが(IDA,IDB,sidA,sidB,KemPk,KemC)に対する鍵交換装置２１０Ｂの正当な署名であることを確認する。鍵交換装置２１０Ａは、鍵をK=KemDec(KemSk,KemC)として生成する。そして、マッチングを確認するメッセージである(IDA,IDB,sidA,sidB,KemPk)に対する署名を、sigA=Sign(SSkA,(IDA,IDB,sidA,sidB,KemPk),r3)として生成する。
【００９４】
鍵交換装置２１０Ａは、(IDA,IDB,sidA,sidB,sigA)を鍵交換装置２１０Ｂに送信する。
【００９５】
鍵交換装置２１０Ａは、セッション鍵Kとセッションの情報を、(IDA,IDB,sidA,sidB,K)として出力する。
【００９６】
続いて、鍵交換装置２１０Ｂにおける、署名確認およびセッション鍵と情報の出力について説明する。
【００９７】
鍵交換装置２１０Ｂは、(IDA,IDB,sidA,sidB,sigA)を鍵交換装置２１０Ａより受信する。
【００９８】
鍵交換装置２１０Ｂは、保存された(sidA,IDA,IDB,KemPk,R5)と鍵交換装置２１０Ａの公開鍵PkA=SVkAとを読み込む。鍵交換装置２１０Ｂは、署名sigAが(IDA,IDB,sidA,sidB,KemPk)に対する鍵交換装置２１０Ａの正当な署名であることを確認する。そして、ランダムテープr5をr5=tPRF(BSkA,R5)として再生し、Kem暗号文と鍵との対を(KemC,K)=KemEnc(KemPk,r5)として再生する。鍵交換装置２１０Ｂは、セッション鍵Kとセッションの情報を、(IDA,IDB,sidA,sidB,K)として出力する。
【００９９】
《鍵交換装置の構成》
図５は、本実施形態に係る鍵交換装置２１０Ａ、２１０Ｂの構成を示すブロック図である。なお、図５の各構成部は、鍵交換装置２１０Ａ、２１０ＢのＣＰＵ(Central Processing Unit)がストレージに格納されたプログラムをＲＡＭ(Random Access Memory）を使用して実行することにより、実現される。
【０１００】
鍵交換装置２１０Ａ、２１０Ｂは、通信制御部５０１と、初期設定部５０２と、入力部５０３と、演算部５０５と、保存部５０４と、を備える。鍵交換装置２１０Ａ、２１０Ｂは、さらに、鍵カプセル化処理部５０６と、確認処理部５０７と、出力部５０８と、を備える。
【０１０１】
通信制御部５０１は、ネットワーク２２０を介して相手の鍵交換装置との通信を制御する。通信プロトコルなどに限定はない。初期設定部５０２は、各種の鍵の生成、例えば、秘密鍵や署名鍵や検証鍵（公開鍵）を生成して保持する。なお、初期設定部５０２が、相手装置の装置ＩＤや公開鍵を取得してもよい。入力部５０３は、鍵交換装置２１０Ａ、２１０Ｂで使用するランダムテープを入力する。例えば、本実施形態の鍵交換装置２１０Ａは、ランダムテープＲ１、Ｒ２、Ｒ３を入力し、鍵交換装置２１０Ｂは、ランダムテープＲ４、Ｒ５、Ｒ６を入力する。演算部５０５は、初期設定部５０２から得た秘密鍵により、擬似ランダム関数を用いて１次ランダムテープＲｘから暗号化された２次ランダムテープｒｘを生成する。以下の鍵カプセル化処理部５０６および確認処理部５０７における処理では、暗号化された２次ランダムテープｒｘのみが使用される。保存部５０４は、確立中のセッションを特定するための情報を保存する。保存部５０４には、例えば、セッション確立中の両鍵交換装置の装置ＩＤ、両セッションＩＤ、１次ランダムテープなどが保存される。なお、鍵交換に応答する鍵交換装置においては、要求した鍵交換装置で生成して送信されたKem公開鍵KemPkも保存される。
【０１０２】
鍵カプセル化処理部５０６は、鍵カプセル化あるいは暗号化した情報を生成すると共に、アンカプセル化により情報を復号する。鍵カプセル化処理部５０６は、鍵交換する相互の装置間で鍵カプセル化した情報をやりとりして、厳しい鍵漏洩に対しても強い将来安全性を持つようにセッション鍵を共有する。また、確認処理部５０７は、鍵交換する相互の装置間でやりとりした鍵カプセル化したメッセージに対して、署名を行なって送信し、あるいは、受信したメッセージに含まれる署名を確認することで、セッション鍵の秘匿性をより強固にする。出力部５０８は、鍵交換する相互の装置間で共有したセッション鍵およびセッションを特定するセッション状態を出力する。
【０１０３】
（初期設定部）
図６は、本実施形態に係る初期設定部５０２の構成を示すブロック図である。
【０１０４】
初期設定部５０２は、第１鍵生成部６０１と、第２鍵生成部６０２と、第３鍵生成部６０３と、を備える。また、初期設定部５０２は、オプションとして、取得部６０４を備える。
【０１０５】
第１鍵生成部６０１は、ランダムテープＲ０に基づいて、(SVk,SSk)=SigGen(R0)により検証鍵SVkと署名鍵SSkを生成する。第２鍵生成部６０２は、ランダムテープＲ２に基づいて、BSk=SymGen(R2)により秘密鍵BSkを生成する。第３鍵生成部６０３は、(SSk,BSk)を長期鍵Skとし、SVkを公開鍵Pkとする。取得部６０４は、通信制御部５０１を介して鍵交換相手装置ＩＤにより公開鍵を取得する。
【０１０６】
（鍵カプセル化処理部）
図７は、本実施形態に係る鍵カプセル化処理部５０６の構成を示すブロック図である。
【０１０７】
鍵カプセル化処理部５０６は、第１Kem生成部７０１と、第２Kem生成部７０２と、鍵復号部７０３と、を備える。なお、鍵交換を要求する鍵交換装置は、第１Kem生成部７０１と、鍵復号部７０３と、を使用し、鍵交換に応答する鍵交換装置は、第２Kem生成部７０２を使用する。
【０１０８】
第１Kem生成部７０１は、暗号化された２次ランダムテープrxに基づいて、(KemPk,KemSk)=KemGen(rx)からKem公開鍵KemPkとKem秘密鍵KemSkとを生成する。
第２Kem生成部７０２は、Kem公開鍵KemPkと２次ランダムテープrxとに基づいて、(KemC,K)=KemEnc(KemPk,rx)からKem暗号文KemCと鍵Kとを生成する。鍵復号部７０３は、Kem秘密鍵KemSkとKem暗号文KemCとに基づいて、K=KemDec(KemSk,KemC)から鍵kを復号する。
【０１０９】
（確認処理部）
図８は、本実施形態に係る確認処理部５０７の構成を示すブロック図である。
【０１１０】
確認処理部５０７は、署名生成部８０１と、署名確認部８０２と、を備える。
署名生成部８０１は、署名鍵SSkと送信メッセージＭと２次ランダムテープrxとに基づいて、sig=Sign(SSk,M,rx)から署名sigを生成する。署名確認部８０２は、公開鍵でもある検証鍵SVkと送信メッセージMと署名sigとに基づいて、res=Verify(SVk,M,sig)から署名sigを検証して確認する。
【０１１１】
《鍵交換装置２１０Ａの構成》
図９Ａは、本実施形態に係る鍵交換要求装置としての鍵交換装置２１０Ａの構成を示すブロック図である。鍵交換装置２１０Ａは、鍵交換を要求する側の鍵交換装置である。なお、図９Ａは、図５の構成と対応しており、各構成部の参照番号の最下位数を一致させている。
【０１１２】
鍵交換装置２１０Ａは、通信制御部９０１と、初期設定部９０２と、入力部９０３と、演算部９０５と、保存部９０４と、を備える。鍵交換装置２１０Ａは、さらに、鍵カプセル化処理部９０６と、確認処理部９０７と、出力部９０８と、を備える。なお、各構成部の概要は図５を参照して説明済みなので、図９Ａにおいては、鍵交換を要求する側の鍵交換装置の場合について説明する。
【０１１３】
初期設定部９０２においては、SigGen(R0A)により検証鍵SVkA,署名鍵SSkAが生成され、SymGen(R2)により秘密鍵BSkAが生成される。また、初期設定部９０２においては、署名鍵と秘密鍵との対(SSkA,BSkA)を長期秘密鍵SkAとし、検証鍵SVkAを公開鍵PkAとする。さらに、装置識別子IDA,IDB、鍵交換相手の公開鍵PkBを取得してもよい。入力部９０３は、１次ランダムテープＲ１、Ｒ２、Ｒ３を入力する。
【０１１４】
演算部９０５は、捻れ擬似ランダム関数ｔＰＲＦ（）を用いて、r2=tPRF(BSkA,R2)およびr3=tPRF(BSkA,R3)から、暗号化された２次ランダムテープｒ２、ｒ３を算出する。保存部９０４は、１次ランダムテープＲ１をセッション番号sidAとして保存するほか、セッションを確立する両鍵交換装置の装置識別子IDA,IDBおよび１次ランダムテープＲ２、Ｒ３を保存する。
【０１１５】
鍵カプセル化処理部９０６は、２次ランダムテープｒ２に基づいて、(KemPk,KemSk)=KemGen(r2)によりKem公開鍵KemPkとKem秘密鍵KemSkとを生成し、Kem公開鍵KemPkを含むメッセージを鍵交換先の鍵交換装置２１０Ｂに送信する。一方、鍵カプセル化処理部９０６は、鍵交換先の鍵交換装置２１０Ｂから受信したKem暗号文KemCを含むメッセージから、K=KemDec(KemSk,KemC)によりセッション鍵Kを生成する。
【０１１６】
確認処理部９０７は、鍵交換先の鍵交換装置２１０Ｂから送信された署名sigBを含むメッセージを、鍵交換装置２１０Ｂの公開鍵である検証鍵SVkBを用いてVerify(SVkB,(IDA,IDB,sidB,KemPk,Kemc),sigB)により検証して、署名sigBを確認する。一方、送信メッセージを、署名鍵SSkAと２次ランダムテープｒ３とを用いてSign(SSkA,(IDA,IDB,sidA,sidB,KemPk),r3)により署名sigAを生成して、鍵交換先の鍵交換装置２１０Ｂに送信する。
【０１１７】
出力部９０８は、復号したセッション鍵Kと、セッション情報IDA,IDB,sidA,sidBとをセッション開始のために出力する。
【０１１８】
《鍵交換装置２１０Ａの処理手順》
図９Ｂは、本実施形態に係る鍵交換要求装置としての鍵交換装置２１０Ａの処理手順を示すフローチャートである。このフローチャートは、鍵交換装置２１０Ａのストレージに格納される。そして、鍵交換装置２１０ＡのＣＰＵがＲＡＭを使用して実行することにより、図９Ａの構成部が実現される。
【０１１９】
鍵交換装置２１０Ａは、ステップＳ９０１において、初期設定を行なう。例えば、長期秘密鍵SkAや公開鍵PkAなどを生成する。鍵交換装置２１０Ａは、ステップＳ９０３において、１次のランダムテープＲ１、Ｒ２、Ｒ３を入力する。鍵交換装置２１０Ａは、ステップＳ９０５において、ランダムテープＲ１をセッション番号sidAとする。また、ランダムテープＲ２から、r2=tPRF(BSkA,R2)により２次ランダムテープｒ２を生成する。鍵交換装置２１０Ａは、ステップＳ９０７において、Kem公開鍵KemPk,Kem秘密鍵KemSkをKemGen(r2)により生成する。そして、鍵交換装置２１０Ａは、ステップＳ９０９において、鍵交換相手の鍵交換装置２１０Ｂにメッセージ(IDA,IDB,sidA,KemPk)を送信する。鍵交換装置２１０Ａは、ステップＳ９１１において、セッション状態として(sidA,IDA,IDB,R2,R3)を保存する。
【０１２０】
鍵交換装置２１０Ａは、ステップＳ９１３において、ステップＳ９０９のメッセージ送信に対する鍵交換装置２１０Ｂからの応答メッセージを待機する。鍵交換装置２１０Ｂからの応答メッセージがあると、鍵交換装置２１０Ａは、ステップＳ９１５において、応答メッセージ(IDA,IDB,sidA,sidB,KemC,sigB)を取得する。次に、鍵交換装置２１０Ａは、ステップＳ９１７において、暗号化された２次ランダムテープｒ２、ｒ３を擬似ランダム関数tPRF()を用いて再生し、ステップＳ９１９において、Kem公開鍵KemPk,Kem秘密鍵KemSkをKemGen(r2)により再生する。
【０１２１】
鍵交換装置２１０Ａは、ステップＳ９２１において、鍵交換相手の装置ＩＤであるIDBにより公開鍵PkB(SVkB)を読み取る。そして、鍵交換装置２１０Ａは、ステップＳ９２３において、鍵交換装置２１０Ｂから受信したメッセージの署名sigBを、Verify(SVkB,(IDA,IDB,sidA,sidB,KemPk,KemC),sigB)により確認する。署名が確認されれば、鍵交換装置２１０Ａは、ステップＳ９２５において、鍵交換装置２１０Ｂから受信したメッセージを、K=KemDec(KemSk,KemC)により復号してセッション鍵Kを取得する。
【０１２２】
次に、鍵交換装置２１０Ａは、ステップＳ９２７において、マッチングメッセージの署名sigAを、sigA=(SSkA,(IDA,IDB,sidA,sidB,KemPk),r3)により生成する。そして、鍵交換装置２１０Ａは、ステップＳ９２９において、鍵交換相手の鍵交換装置２１０Ｂにメッセージ(IDA,IDB,sidA,sidB,sigA)を送信する。鍵交換装置２１０Ａは、ステップＳ９３１において、セッション鍵とセッション情報とである(IDA,IDB,sidA,sidB,K）を出力する。
【０１２３】
《鍵交換装置２１０Ｂの構成》
図１０Ａは、本実施形態に係る鍵交換応答装置としての鍵交換装置２１０Ｂの構成を示すブロック図である。鍵交換装置２１０Ｂは、鍵交換の要求に応答する側の装置である。なお、図１０Ａは、図５の構成と対応しており、各構成部の参照番号の最下位数を一致させている。
【０１２４】
鍵交換装置２１０Ｂは、通信制御部１００１と、初期設定部１００２と、入力部１００３と、演算部１００５と、保存部１００４と、を備える。鍵交換装置２１０Ｂは、さらに、鍵カプセル化処理部１００６と、確認処理部１００７と、出力部１００８と、を備える。なお、各構成部の概要は図５を参照して説明済みなので、図１０Ａにおいては、鍵交換の要求に応答する側の装置の場合について説明する。
【０１２５】
初期設定部１００２においては、SigGen(R0B)により検証鍵SVkB,署名鍵SSkBが生成され、SymGen(R5)により秘密鍵BSkBが生成される。また、初期設定部１００２においては、署名鍵と秘密鍵との対(SSkB,BSkB)を長期秘密鍵SkBとし、検証鍵SVkBを公開鍵PkBとする。
さらに、装置識別子IDA,IDB、鍵交換相手の公開鍵PkAを取得してもよい。入力部１００３は、１次ランダムテープＲ４、Ｒ５、Ｒ６を入力する。
【０１２６】
演算部１００５は、捻れ擬似ランダム関数tPRF()を用いて、r5=tPRF(BSkB,R5)およびr6=tPRF(BSkB,R6)から、暗号化された２次ランダムテープｒ５、ｒ６を算出する。保存部１００４は、１次ランダムテープＲ４をセッション番号sidBとして保存するほか、セッションを確立する両鍵交換装置の装置識別子IDA,IDB、１次ランダムテープＲ５および鍵交換装置２１０Ａで生成して送信されたKem公開鍵KemPkを保存する。
【０１２７】
鍵カプセル化処理部１００６は、２次ランダムテープｒ５に基づいて、(KemC,K)=KemEnc(KemPk,r5)によりKem暗号文KemCと鍵Kとを生成し、KemCを含むメッセージを鍵交換先の鍵交換装置２１０Ａに送信する。
【０１２８】
確認処理部１００７は、送信メッセージを、署名鍵SSkBと２次ランダムテープｒ６とを用いてSign(SSkB,(IDA,IDB,sidA,sidB,KemPk,KemC),r6)により署名sigBを生成して、鍵交換先の鍵交換装置２１０Ａに送信する。一方、鍵交換先の鍵交換装置２１０Ａから送信された署名sigAを含むメッセージを、鍵交換装置２１０Ａの公開鍵である検証鍵SVkAを用いてVerify(SVkA,(IDA,IDB,sidB,KemPk),sigA)により検証して、署名sigAを確認する。
【０１２９】
出力部１００８は、生成したセッション鍵Kと、セッション情報IDA,IDB,sidA,sidBとをセッション開始のために出力する。
【０１３０】
《鍵交換装置Ｂの処理手順》
図１０Ｂは、本実施形態に係る鍵交換応答装置としての鍵交換装置２１０Ｂの処理手順を示すフローチャートである。このフローチャートは、鍵交換装置２１０Ｂのストレージに格納される。そして、鍵交換装置２１０ＢのＣＰＵがＲＡＭを使用して実行することにより、図１０Ａの構成部が実現される。
【０１３１】
鍵交換装置２１０Ｂは、ステップＳ１００１において、初期設定を行なう。例えば、長期秘密鍵SkBや公開鍵PkBなどを生成する。鍵交換装置２１０Ｂは、ステップＳ１００３において、鍵交換装置２１０Ｂとの鍵交換を要求する鍵交換装置からのメッセージを待機する。例えば、鍵交換装置２１０Ａからのメッセージ受信があるとすると、鍵交換装置２１０Ｂは、ステップＳ１００５において、受信メッセージ(IDA,IDB,sidA,KemPk)を取得する。
【０１３２】
鍵交換装置２１０Ｂは、ステップＳ１００７において、１次のランダムテープＲ４、Ｒ５、Ｒ６を入力する。鍵交換装置２１０Ｂは、ステップＳ１００９において、ランダムテープＲ４をセッション番号sidBとする。また、ランダムテープＲ５から、r5=tPRF(BSkB,R5)により２次ランダムテープｒ５を生成し、ランダムテープＲ６から、r6=tPRF(BSkB,R6)により２次ランダムテープｒ６を生成する。そして、鍵交換装置２１０Ｂは、ステップＳ１０１１において、受信メッセージ(IDA,IDB,sidA,KemPk)に含まれるKem公開鍵KemPkと２次ランダムテープｒ５とに基づいて、(KemC,K)=KemEnc(KemPk,r5)によりKem暗号文KemCと鍵Kとを生成する。
【０１３３】
次に、鍵交換装置２１０Ｂは、ステップＳ１０１３において、メッセージの署名sigBを、sigB=Sign(SSkB,(IDA,IDB,sidA,sidB,KemPk,KemC),r6)により生成する。そして、鍵交換装置２１０Ｂは、ステップＳ１０１５において、鍵交換を要求した鍵交換装置２１０Ａにメッセージ(IDA,IDB,sidA,sidB,KemC,sigB)を送信する。鍵交換装置２１０Ｂは、ステップＳ１０１７において、セッション状態として(IDA,IDB,sidA,sidB,KemPk,R5)を保存する。
【０１３４】
鍵交換装置２１０Ｂは、ステップＳ１０１９において、ステップＳ１０１５のメッセージ送信への鍵交換装置２１０Ａからの応答を待機する。鍵交換装置２１０Ａからの応答があると、鍵交換装置２１０Ｂは、ステップＳ１０２１において、受信メッセージ(IDA,IDB,sidA,sigA)を取得する。鍵交換装置２１０Ｂは、ステップＳ１０２３において、鍵交換相手の装置ＩＤであるIDAにより公開鍵PkA(SVkA)を読み取る。そして、鍵交換装置２１０Ｂは、ステップＳ１０２５において、鍵交換装置２１０Ａから受信したメッセージの署名sigAを、Verify(SVka,(IDA,IDB,sidA,sidB,KemPk),sigA)により確認する。
【０１３５】
署名が確認されれば、鍵交換装置２１０Ｂは、ステップＳ１０２７において、暗号化された２次ランダムテープｒ５を擬似ランダム関数ｔＰＲＦ（）を用いて再生し、(KemC,K)=KemEnc(KemPk,r5)によりKem暗号文KemCと鍵Kとを再生する。そして、鍵交換装置２１０Ｂは、ステップＳ１０２９において、セッション鍵とセッション情報とである(IDA,IDB,sidA,sidB,K）を出力する。
【０１３６】
本実施形態によれば、同じ鍵交換装置のランダムテープおよび長期秘密鍵が攻撃者に窃取されなければセッション鍵が攻撃者に対して秘匿することができる。さらに、攻撃者が一方の鍵交換装置になりすまして交換相手からの暗号データを傍受した場合に、なりすました装置の長期秘密鍵が窃取されても、攻撃者に対してセッション鍵を秘匿することができる。
【０１３７】
すなわち、本実施形態の鍵交換において、鍵交換装置２１０Ａと鍵交換装置２１０Ｂがセッション鍵を確立したとき、鍵交換装置２１０ＡがランダムテープeskAと長期鍵SkAの両方が攻撃者に窃取される、といった事象が発生しなければ、セッション鍵KeyA=KeyBは攻撃者に秘匿される。あるいは、鍵交換装置２１０ＢがランダムテープeskBと長期鍵SkBの両方が攻撃者に窃取される、といった事象が発生しなければ、セッション鍵KeyA=KeyBは攻撃者に秘匿される。
【０１３８】
このことは次のように示される。まず、鍵交換装置２１０Ａがr2=tPRF(BSkA,R2)と生成していることから、R2を含むランダムテープeskAとBSkAを含む長期鍵SkAの両方を窃取しないと、r2を導出できないことが捻れ擬似ランダム関数tPRFの性質から導かれる。r2が秘匿されれば、鍵カプセル化関数の安全性からKemSkが秘匿される。
【０１３９】
次に、鍵交換装置２１０Ｂがr5=tPRF(BSkB,R5)を生成していることから、R5を含むランダムテープeskBとBSkBを含む長期鍵SkBの両方を窃取しないと、r5を導出できないことが捻れ擬似ランダム関数tPRFの性質から導かれる。r5が秘匿されれば、鍵カプセル化関数の安全性から(KemC,K)=KemEnc(KemPk,r5)におけるKが、KemSkを知る者以外に秘匿される。
【０１４０】
上記２つのことから、Kは鍵交換装置２１０ＡがランダムテープeskAと長期鍵SkAの両方が攻撃者に窃取される、あるいは、鍵交換装置２１０ＢがランダムテープeskBと長期鍵SkBの両方が攻撃者に窃取される、といった事象が発生しなければ、攻撃者に秘匿される。
【０１４１】
また、本実施形態の鍵交換方法においては、鍵交換装置２１０Ａが、鍵交換装置２１０Ｂになりすました攻撃者と通信してセッション鍵を確立した場合を想定する。その場合にも、鍵交換装置２１０ＡがランダムテープeskAと長期鍵SkAの両方が攻撃者に窃取される、あるいは、鍵交換装置２１０Ｂの長期鍵がこのセッションを確立する以前であっても攻撃者に窃取される、といった事象が発生しなければ、セッション鍵KeyAは攻撃者に秘匿される。
【０１４２】
このことは次のように示される。まず、鍵交換装置２１０Ａがr2=tPRF(BSkA,R2)と生成していることから、R2を含むランダムテープeskAとBSkAを含む長期鍵SkAの両方を窃取しないと、r2を導出できないことが捻れ擬似ランダム関数tPRFの性質から導かれる。r2が秘匿されれば、鍵カプセル化関数の安全性からKemSkが秘匿される。
【０１４３】
次に、鍵交換装置２１０Ａは、sigBが(A,B,sidA,sidB,KemPk,KemC)に対する鍵交換装置２１０Ｂの正当な署名であることを確認している。そのため、署名の安全性より、鍵交換装置２１０Ｂの長期鍵がこのセッションを確立する以前に攻撃者に窃取されていないことが保証される。また、r5=tPRF(BSkB,R5)であることからr5が秘匿され、鍵カプセル化関数の安全性から(KemC,K)=KemEnc(KemPk,r5)におけるKが、KemSkを知る者以外に秘匿される。
【０１４４】
上記２つのことから、鍵交換装置２１０Ａが、鍵交換装置２１０Ｂになりすました攻撃者と通信してセッション鍵を確立した場合においても、セッション鍵は攻撃者に秘匿される。すなわち、鍵交換装置２１０ＡがランダムテープeskAと長期鍵SkAの両方が攻撃者に窃取される、あるいは、鍵交換装置２１０Ｂの長期鍵がこのセッションを確立する以前であっても攻撃者に窃取される、といった事象が発生しなければ、セッション鍵KeyAは攻撃者に秘匿されることが確認される。
【０１４５】
一方、本実施形態の鍵交換方法においては、鍵交換装置２１０Ｂが、鍵交換装置２１０Ａになりすました攻撃者と通信してセッション鍵を確立した場合について想定する。その場合にも、鍵交換装置２１０ＢがランダムテープeskBと長期鍵SkBの両方が攻撃者に窃取される、あるいは鍵交換装置２１０Ａの長期鍵がこのセッションを確立する以前であっても攻撃者に窃取される、といった事象が発生しなければ、セッション鍵KeyBは攻撃者に秘匿される。
【０１４６】
このことは次のように示される。まず、鍵交換装置２１０Ｂがr5=tPRF(BSkB,R5)と生成していることから、R5を含むランダムテープeskBとBSkBを含む長期鍵SkBの両方を窃取しないと、r5を導出できないことが捻れ擬似ランダム関数tPRFの性質から導かれる。(KemC,K)=KemEnc(KemPk,r5)のKは鍵カプセル化関数の安全性から、r5あるいはKemSkを知る者以外に秘匿される。
【０１４７】
次に、鍵交換装置２１０Ｂは、sigAが(A,B,sidA,sidB,KemPk)に対する鍵交換装置２１０Ａの正当な署名であることを確認している。そのため、署名の安全性より、鍵交換装置２１０Ａの長期鍵がこのセッションを確立する以前に攻撃者に窃取されていないことが保証される。また、r2=tPRF(BSkA,R2)であることからr2が秘匿され、鍵カプセル化関数の安全性からKemSkが秘匿される。
【０１４８】
上記２つのことから、鍵交換装置２１０Ｂが、鍵交換装置２１０Ａになりすました攻撃者と通信してセッション鍵を確立した場合にも、セッション鍵は攻撃者に秘匿される。すなわち、鍵交換装置２１０ＢがランダムテープeskBと長期鍵SkBの両方が攻撃者に窃取される、といった事象が発生しなければ、セッション鍵KeyBは攻撃者に秘匿されることが確認される。あるいは、鍵交換装置２１０Ａの長期鍵がこのセッションを確立する以前であっても攻撃者に窃取される、といった事象が発生しなければ、セッション鍵KeyBは攻撃者に秘匿されることが確認される。
【０１４９】
以上説明したように、本発明の第２の実施形態を用いれば、互いに相手を認証する手段を備えた２つの鍵交換装置間で、各セッションに関してそれぞれ秘密のセッション鍵を確立する場合、攻撃者に対してセッション鍵を秘匿することができる。特に、各鍵交換装置が認証するために保持している長期鍵や、セッション鍵を相手の鍵交換装置と協力して生成する時に使うランダムテープが漏洩する可能性がある時に、漏洩するセッション鍵をより少なくする効果がある。具体的には、ある時点で２つの鍵交換装置がセッション鍵を確立した時、あるいはある鍵交換装置が他の鍵交換装置とのセッション鍵を生成した時に、セッション鍵を攻撃者が獲得する場合が少なくなる。すなわち、この時点より後に、鍵交換装置、あるいはセッション鍵を確立した他の鍵交換装置からセッション鍵の生成に関するデータが攻撃者に漏洩した時に、このセッション鍵を攻撃者が獲得する場合が少なくなる。これは、鍵交換装置がセッション鍵を生成した対象の鍵交換装置からセッション鍵の生成に関するデータが攻撃者に漏洩した時も同様である。
【０１５０】
このようにセッション鍵を攻撃者に対して秘匿できる鍵交換装置は、通信の安全性を向上することに貢献する。
【０１５１】
［他の実施形態］
なお、上記実施形態においては、演算部で使用する擬似ランダム関数として、捻れ擬似ランダム関数tPRF()を使用する場合を示したが、ハッシュ関数や一般の擬似ランダム関数を使用しても、同様の効果を奏する。また、署名関数としてSign()を使用する場合を示したが、鍵交換装置２１０Ａと鍵交換装置２１０Ｂとが共有する同じ鍵を持つ場合、メッセージ認証コードであるＭＡＣ(Message Authentication Code)を使用することも可能である。また、検証関数としてSign()に対応するVerify()を使用したが、署名関数の対応する種々の関数が使用可能である。
【０１５２】
また、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【０１５３】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する制御プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は本発明の範疇に含まれる。
【０１５４】
なお、上記実施形態における鍵交換装置の構成を説明する図中、各構成部間の接続のうち、各構成部間の矢印は、図中に記述された情報の送受信を示すものである。図中に記述されない制御信号、通知等のその他の情報は、図中の矢印によらず各構成部間で送受されるものとする。
【０１５５】
［実施形態の他の表現］
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する演算手段と、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号する鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する確認処理手段と、
を備える鍵交換装置。
（付記２）
前記確認処理手段は、前記送信メッセージとして、両鍵交換装置の装置識別子と、前記両鍵交換装置のセッション識別子と、前記鍵カプセル化された公開鍵と、を含み、前記受信メッセージとして、前記両鍵交換装置の装置識別子と、前記両鍵交換装置のセッション識別子と、前記鍵カプセル化された公開鍵と、前記鍵カプセル化された暗号文と、を含む付記１に記載の鍵交換装置。
（付記３）
セッションを特定するためのセッション状態を保存するセッション状態保存手段と、
生成されたセッション鍵および前記セッション状態を含むセッション情報を出力するセッション鍵および情報出力手段と、
をさらに備える付記１または２に記載の鍵交換装置。
（付記４）
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する演算手段と、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信する鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する確認処理手段と、
を備える鍵交換装置。
（付記５）
前記確認処理手段は、前記送信メッセージとして、両鍵交換装置の装置識別子と、前記両鍵交換装置のセッション識別子と、前記鍵カプセル化された公開鍵と、前記鍵カプセル化された暗号文と、を含み、前記受信メッセージとして、前記両鍵交換装置の装置識別子と、前記両鍵交換装置のセッション識別子と、前記鍵カプセル化された公開鍵と、を含む付記４に記載の鍵交換装置。
（付記６）
セッションを特定するためのセッション状態を保存するセッション状態保存手段と、
生成されたセッション鍵および前記セッション状態を含むセッション情報を出力するセッション鍵および情報出力手段と、
をさらに備える付記４または５に記載の鍵交換装置。
（付記７）
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する演算手段と、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号し、前記鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信する、鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する確認処理手段と、
を備える鍵交換装置。
（付記８）
セッションを特定するためのセッション状態を保存するセッション状態保存手段と、
生成されたセッション鍵および前記セッション状態を含むセッション情報を出力するセッション鍵および情報出力手段と、
をさらに備える付記７に記載の鍵交換装置。
（付記９）
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する、鍵交換装置の制御方法。
（付記１０）
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を鍵交換相手に送信すると共に、前記鍵カプセル化された公開鍵および前記鍵交換相手から受信した鍵カプセル化された暗号文からセッション鍵を復号し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する、ことをコンピュータに実行させる鍵交換装置の制御プログラム。
（付記１１）
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する、鍵交換装置の制御方法。
（付記１２）
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
鍵交換相手から受信した鍵カプセル化された公開鍵および前記暗号化された第２ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記鍵交換相手に送信し、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記鍵交換相手に送信し、前記鍵交換相手の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記鍵交換相手から受信した署名を確認する
ことをコンピュータに実行させる鍵交換装置の制御プログラム。
（付記１３）
鍵交換を要求する第１鍵交換装置と、前記鍵交換の要求に応答する第２鍵交換装置とを含む鍵交換システムであって、
前記第１鍵交換装置が、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成する第１初期設定手段と、
前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成する第１演算手段と、
前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を前記第２鍵交換装置に送信すると共に、前記鍵カプセル化された公開鍵および前記第２鍵交換装置から受信した鍵カプセル化された暗号文からセッション鍵を復号する第１鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記第２鍵交換装置に送信し、前記第２鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第２鍵交換装置から受信した署名を確認する第１確認処理手段と、
を備え、
前記第２鍵交換装置が、
任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第４ランダムテープからセッション識別子を生成し、第５ランダムテープから秘密鍵を生成する第２初期設定手段と、
前記第５ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第５ランダムテープを生成し、且つ、第６ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第６ランダムテープを生成する第２演算手段と、
前記第１鍵交換装置から受信した鍵カプセル化された公開鍵および前記暗号化された第５ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記第１鍵交換装置に送信する第２鍵カプセル化処理手段と、
前記署名鍵と、送信メッセージと、前記暗号化された第６ランダムテープと、に基づいて署名を生成して前記第１鍵交換装置に送信し、前記第１鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第１鍵交換装置から受信した署名を確認する第２確認処理手段と、
を備える鍵交換システム。
（付記１４）
鍵交換を要求する第１鍵交換装置と、前記鍵交換の要求に応答する第２鍵交換装置とを含む鍵交換システムの鍵交換方法であって、
前記第１鍵交換装置が、任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第１ランダムテープからセッション識別子を生成し、第２ランダムテープから秘密鍵を生成し、
前記第１鍵交換装置が、前記第２ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第２ランダムテープを生成し、且つ、第３ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第３ランダムテープを生成し、
前記第１鍵交換装置が、前記暗号化された第２ランダムテープに基づいて、鍵カプセル化された公開鍵および鍵カプセル化された秘密鍵を生成して、前記鍵カプセル化された公開鍵を前記第２鍵交換装置に送信し、
前記第２鍵交換装置が、前記第１鍵交換装置から鍵カプセル化された公開鍵を受信すると、任意のランダムテープから公開鍵となる検証鍵と、署名鍵とを生成し、第４ランダムテープからセッション識別子を生成し、第５ランダムテープから秘密鍵を生成し、
前記第２鍵交換装置が、前記第５ランダムテープと秘密鍵とを変数とする擬似ランダム関数の演算によって、暗号化された第５ランダムテープを生成し、且つ、第６ランダムテープと前記秘密鍵とを変数とする前記擬似ランダム関数の演算によって、暗号化された第６ランダムテープを生成し、
前記第２鍵交換装置が、前記第１鍵交換装置から受信した鍵カプセル化された公開鍵および前記暗号化された第５ランダムテープを暗号化して、鍵カプセル化された暗号文とセッション鍵とを生成して、前記生成した鍵カプセル化された暗号文を前記第１鍵交換装置に送信し、
前記第２鍵交換装置が、前記署名鍵と、送信メッセージと、前記暗号化された第６ランダムテープと、に基づいて署名を生成して前記第１鍵交換装置に送信し、
前記第１鍵交換装置が、前記鍵カプセル化された公開鍵および前記第２鍵交換装置から受信した鍵カプセル化された暗号文からセッション鍵を復号し、
前記第１鍵交換装置が、前記署名鍵と、送信メッセージと、前記暗号化された第３ランダムテープと、に基づいて署名を生成して前記第２鍵交換装置に送信し、前記第２鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第２鍵交換装置から受信した署名を確認し、
前記第２鍵交換装置が、前記第１鍵交換装置の公開鍵である検証鍵と、受信メッセージと、受信した署名と、に基づいて前記第１鍵交換装置から受信した署名を確認する、鍵交換方法。
【０１５６】
この出願は、２０１４年５月２６日に出願された日本出願特願２０１４−１０８６２６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
0006477695.tif 000002
【図２】
0006477695.tif 000003
【図３】
0006477695.tif 000004
【図４Ａ】
0006477695.tif 000005
【図４Ｂ】
0006477695.tif 000006
【図５】
0006477695.tif 000007
【図６】
0006477695.tif 000008
【図７】
0006477695.tif 000009
【図８】
0006477695.tif 000010
【図９Ａ】
0006477695.tif 000011
【図９Ｂ】
0006477695.tif 000012
【図１０Ａ】
0006477695.tif 000013
【図１０Ｂ】
0006477695.tif 000014