(57)【要約】【課題】優れたリアルタイム性と安全性を両立する署名付き暗号通信を可能とする。【解決手段】送信側装置が、ワンタイム署名用の鍵ペアのうち第一の鍵と、これを用いて生成した第一の署名値と、共通鍵暗号用の鍵の暗号化データとを受信側装置に送信し、当該処理の実行後、生成した第二の署名値、共通鍵暗号用の鍵、及び送信対象のメッセージから暗号文を生成し受信側装置に送信し（６０１〜６１３）、受信側装置が、送信側装置から受信した第一の鍵及び第一の署名値の署名検証結果に応じ、送信者の検証用公開鍵、第一の鍵、第一の署名値を記憶装置に格納し、送信側装置から受信した鍵の暗号化データを復号して共通鍵暗号用鍵を取得し、当該処理の後に送信側装置より受信した暗号文を復号して第二の署名値とメッセージを取得し、署名検証に成功した場合、該当メッセージを出力装置に出力する処理を実行する（６０５〜６１５）。【選択図】図８
2015089001.tif 000002
【特許請求の範囲】
【請求項１】
他装置と通信を行う通信装置と、
メッセージ送信者の署名用秘密鍵及び検証用公開鍵を記憶する記憶装置と、
ワンタイム署名用の鍵ペアを生成し、当該鍵ペアのうち第一の鍵を受信側装置に送信する処理と、前記鍵ペアのうち第一の鍵に対して前記送信者の署名用秘密鍵を用いて第一の署名値を生成し、当該第一の署名値を受信側装置に送信する処理と、メッセージ送信先となる受信者の公開鍵と、前記第一の鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータとから、共通鍵暗号用の鍵と該鍵の暗号化データを生成し、前記鍵の暗号化データを受信側装置に送信する処理とを実行し、前記各処理の少なくともいずれかの実行後、前記鍵ペアのうち第二の鍵、前記第一の署名値、前記受信者の公開鍵、前記鍵の暗号化データ、及び送信対象のメッセージから、第二の署名値を生成し、前記共通鍵暗号用の鍵、前記第二の署名値、及び前記メッセージから暗号文を生成し、当該暗号文を受信側装置に送信する処理を実行する制御装置と、
を備える送信側装置と、
他装置と通信を行う通信装置と、
メッセージ受信者の復号用秘密鍵及び暗号用公開鍵を記憶する記憶装置と、
前記送信側装置から受信した前記第一の鍵を検証対象メッセージとし、前記送信側装置から受信した前記第一の署名値を検証対象署名値とし、前記送信者の検証用公開鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理と、前記送信側装置から前記鍵の暗号化データを受信し、当該鍵の暗号化データを、前記受信者の復号用秘密鍵と、前記記憶装置に格納してある前記第一の鍵、前記第一の署名値、及び前記送信者の検証用公開鍵とを用いて復号して、前記共通鍵暗号用鍵を取得する処理と、当該受信側装置における前記各処理の後に前記送信側装置より受信した暗号文を、前記共通鍵暗号用鍵で復号し、第二の署名値とメッセージを取得する処理と、前記取得した、前記第一の署名値、前記鍵の暗号化データ、及び前記メッセージと、前記受信者の暗号用公開鍵とを検証対象メッセージとし、前記第二の署名値を検証対象の署名値とし、前記第一の鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記メッセージを出力装置に出力する処理とを実行する制御装置と、
を備える受信側装置と、
を含むことを特徴とする署名付き暗号通信システム。
【請求項２】
前記送信側装置における制御装置は、
前記ワンタイム署名用の鍵ペアを生成するに際し、前記ワンタイム署名用の第一の鍵として、ワンタイム署名の検証に用いるワンタイム署名用検証鍵を生成し、前記ワンタイム署名用の第二の鍵として、前記第二の署名値を生成する際に用いるワンタイム署名用秘密鍵を生成するものである、
ことを特徴とする請求項１に記載の署名付き暗号通信システム。
【請求項３】
前記送信側装置における制御装置は、
前記ワンタイム署名用検証鍵を生成する都度、当該ワンタイム署名用検証鍵を前記受信側装置へ送信し、前記第一の署名値を生成する都度、当該第一の署名値を前記受信側装置へ送信するものである、
ことを特徴とする請求項２に記載の署名付き暗号通信システム。
【請求項４】
前記送信側装置における制御装置は、
前記共通鍵暗号用の鍵と該鍵の暗号化データを生成する処理に際し、メッセージ受信者の公開鍵及びタグとして前記ワンタイム署名用検証鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータから、タグ付き鍵カプセル生成アルゴリズムに基づいて、前記共通鍵暗号用の鍵と該鍵の暗号化データを生成するものである、
ことを特徴とする請求項３に記載の署名付き暗号通信システム。
【請求項５】
前記受信側装置における制御装置は、
前記共通鍵暗号用鍵を取得する処理に際し、前記受信者の復号用秘密鍵と、タグとして入力された前記ワンタイム署名用検証鍵と、タグとして入力された前記第一の署名値と、タグとして入力された送信者の検証用公開鍵と、を用いて、鍵カプセル復号アルゴリズムに基づいて、前記鍵の暗号化データから共通鍵暗号用鍵を復号するものである、
ことを特徴とする請求項４に記載の署名付き暗号通信システム。
【請求項６】
他装置と通信を行う通信装置と、
メッセージ送信者の署名用秘密鍵及び検証用公開鍵を記憶する記憶装置と、
ワンタイム署名用の鍵ペアを生成し、当該鍵ペアにユニークな識別子を生成し、前記鍵ペアのうち第一の鍵に前記識別子を付与し、当該送信側装置と前記受信側装置との間で所定情報を仲介する中継装置に対し送信する処理と、
前記鍵ペアのうち第一の鍵に対して前記送信者の署名用秘密鍵を用いて第一の署名値を生成し、当該第一の署名値に前記識別子を付与し、前記中継装置に送信する処理と、
メッセージ送信先となる受信者の公開鍵と、前記第一の鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータとから、共通鍵暗号用の鍵と該鍵の暗号化データを生成し、前記鍵の暗号化データと当該暗号化データに前記識別子を付与し、受信側装置に送信する処理とを実行し、
前記各処理の少なくともいずれかの実行後、前記鍵ペアのうち第二の鍵、前記第一の署名値、前記受信者の公開鍵、前記鍵の暗号化データ、及び送信対象のメッセージから、第二の署名値を生成し、前記共通鍵暗号用の鍵、前記第二の署名値、及び前記メッセージから暗号文を生成し、当該暗号文を受信側装置に送信する処理を実行する制御装置と、
を備える送信側装置と、
他装置と通信を行う通信装置と、
各種情報を格納する記憶装置と、
前記送信側装置から送信される、前記第一の鍵および前記第一の署名値と前記識別子を受信し、当該受信した各情報と該当送信者の検証用公開鍵を前記記憶装置へ格納する処理と、前記受信側装置から前記識別子を含む情報取得要求を受信し、当該取得要求が含む前記識別子に基づいて、前記記憶装置に格納されている、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値を取得し、当該取得した各情報を前記受信側装置へ送信する処理とを実行する制御装置と、
を備える中継装置と、
他装置と通信を行う通信装置と、
メッセージ受信者の復号用秘密鍵及び暗号用公開鍵を記憶する記憶装置と、
前記中継装置に対して、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値の各情報に関する取得要求を送信し、前記中継装置から前記各情報および当該各情報に付与されていた識別子を取得する処理と、
前記中継装置から取得した前記第一の鍵を検証対象メッセージとし、前記第一の署名値を検証対象署名値とし、前記送信者の検証用公開鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理と、
前記送信側装置から前記鍵の暗号化データを受信し、当該受信した前記鍵の暗号化データに付与された識別子と同じ識別子が付与された前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置から取得し、前記識別子と同じ識別子が付与された情報が前記記憶装置で特定出来ない場合、前記中継装置に対し、該当識別子を指定した前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値の取得要求を送信し、該当各情報を取得し、前記取得した各情報を用いて前記鍵の暗号化データを復号して、前記共通鍵暗号用鍵を取得する処理と、
当該受信側装置における前記各処理の後に前記送信側装置より受信した暗号文を、前記共通鍵暗号用鍵で復号し、第二の署名値とメッセージを取得する処理と、前記取得した、前記第一の署名値、前記鍵の暗号化データ、及び前記メッセージと、前記受信者の暗号用公開鍵とを検証対象メッセージとし、前記第二の署名値を検証対象の署名値とし、前記第一の鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記メッセージを出力装置に出力する処理とを実行する制御装置と、
を備える受信側装置と、
を含むことを特徴とする署名付き暗号通信システム。
【請求項７】
前記中継装置における制御装置は、
前記記憶装置に保存された前記第一の鍵を検証対象メッセージとし、前記記憶装置に保存された前記第一の署名値を検証対象署名値とし、前記記憶装置に保存された前記送信者の検証用公開鍵を用いて署名検証を行い、前記署名検証の結果を前記記憶装置に記憶する処理と、
前記受信側装置からの前記情報取得要求に応じて、前記記憶装置に保存してある、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値と、前記署名検証の結果とを取得し、当該取得した前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値、および前記署名検証の結果を、前記受信側装置へ送信する処理と、
を実行するものであり、
前記受信側装置における制御装置は、
前記前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理に際し、前記中継装置から、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値と共に、前記署名検証の結果が送信されてきた場合、前記第一の鍵及び前記第一の署名値の署名検証を実行せずに、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値を前記記憶装置に格納するものである、
ことを特徴とする請求項６に記載の署名付き暗号通信システム。
【請求項８】
前記送信側装置における制御装置は、
前記ワンタイム署名用の鍵ペアを生成するに際し、前記ワンタイム署名用の第一の鍵として、ワンタイム署名の検証に用いるワンタイム署名用検証鍵を生成し、前記ワンタイム署名用の第二の鍵として、前記第二の署名値を生成する際に用いるワンタイム署名用秘密鍵を生成するものである、
ことを特徴とする請求項７に記載の署名付き暗号通信システム。
【請求項９】
前記送信側装置における制御装置は、
前記ワンタイム署名用検証鍵を生成する都度、当該ワンタイム署名用検証鍵を前記中継装置へ送信し、前記第一の署名値を生成する都度、当該第一の署名値を前記中継装置へ送信するものである、
ことを特徴とする請求項８に記載の署名付き暗号通信システム。
【請求項１０】
前記送信側装置における制御装置は、
前記共通鍵暗号用の鍵と該鍵の暗号化データを生成する処理に際し、メッセージ受信者の公開鍵及びタグとして前記ワンタイム署名用検証鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータから、タグ付き鍵カプセル生成アルゴリズムに基づいて、前記共通鍵暗号用の鍵と該鍵の暗号化データを生成するものである、
ことを特徴とする請求項９に記載の署名付き暗号通信システム。
【請求項１１】
前記受信側装置における制御装置は、
前記共通鍵暗号用鍵を取得する処理に際し、前記受信者の復号用秘密鍵と、タグとして入力された前記ワンタイム署名用検証鍵と、タグとして入力された前記第一の署名値と、タグとして入力された送信者の検証用公開鍵と、を用いて、鍵カプセル復号アルゴリズムに基づいて、前記鍵の暗号化データから共通鍵暗号用鍵を復号するものである、
ことを特徴とする請求項１０に記載の署名付き暗号通信システム。
【請求項１２】
メッセージ送信者の署名用秘密鍵及び検証用公開鍵を記憶する記憶装置を備え、署名付き暗号通信システムを構成する送信側装置が、
ワンタイム署名用の鍵ペアを生成し、当該鍵ペアのうち第一の鍵を受信側装置に送信する処理と、前記鍵ペアのうち第一の鍵に対して前記送信者の署名用秘密鍵を用いて第一の署名値を生成し、当該第一の署名値を受信側装置に送信する処理と、メッセージ送信先となる受信者の公開鍵と、前記第一の鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータとから、共通鍵暗号用の鍵と該鍵の暗号化データを生成し、前記鍵の暗号化データを受信側装置に送信する処理とを実行し、前記各処理の少なくともいずれかの実行後、前記鍵ペアのうち第二の鍵、前記第一の署名値、前記受信者の公開鍵、前記鍵の暗号化データ、及び送信対象のメッセージから、第二の署名値を生成し、前記共通鍵暗号用の鍵、前記第二の署名値、及び前記メッセージから暗号文を生成し、当該暗号文を受信側装置に送信する処理を実行し、
メッセージ受信者の復号用秘密鍵及び暗号用公開鍵を記憶する記憶装置を備え、署名付き暗号通信システムを構成する受信側装置が、
前記送信側装置から受信した前記第一の鍵を検証対象メッセージとし、前記送信側装置から受信した前記第一の署名値を検証対象署名値とし、前記送信者の検証用公開鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理と、前記送信側装置から前記鍵の暗号化データを受信し、当該鍵の暗号化データを、前記受信者の復号用秘密鍵と、前記記憶装置に格納してある前記第一の鍵、前記第一の署名値、及び前記送信者の検証用公開鍵とを用いて復号して、前記共通鍵暗号用鍵を取得する処理と、当該受信側装置における前記各処理の後に前記送信側装置より受信した暗号文を、前記共通鍵暗号用鍵で復号し、第二の署名値とメッセージを取得する処理と、前記取得した、前記第一の署名値、前記鍵の暗号化データ、及び前記メッセージと、前記受信者の暗号用公開鍵とを検証対象メッセージとし、前記第二の署名値を検証対象の署名値とし、前記第一の鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記メッセージを出力装置に出力する処理とを実行する、
ことを特徴とする署名付き暗号通信方法。
【請求項１３】
メッセージ送信者の署名用秘密鍵及び検証用公開鍵を記憶する記憶装置を備え、署名付き暗号通信システムを構成する送信側装置が、
ワンタイム署名用の鍵ペアを生成し、当該鍵ペアにユニークな識別子を生成し、前記鍵ペアのうち第一の鍵に前記識別子を付与し、当該送信側装置と前記受信側装置との間で所定情報を仲介する中継装置に対し送信する処理と、
前記鍵ペアのうち第一の鍵に対して前記送信者の署名用秘密鍵を用いて第一の署名値を生成し、当該第一の署名値に前記識別子を付与し、前記中継装置に送信する処理と、
メッセージ送信先となる受信者の公開鍵と、前記第一の鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータとから、共通鍵暗号用の鍵と該鍵の暗号化データを生成し、前記鍵の暗号化データと当該暗号化データに前記識別子を付与し、受信側装置に送信する処理とを実行し、
前記各処理の少なくともいずれかの実行後、前記鍵ペアのうち第二の鍵、前記第一の署名値、前記受信者の公開鍵、前記鍵の暗号化データ、及び送信対象のメッセージから、第二の署名値を生成し、前記共通鍵暗号用の鍵、前記第二の署名値、及び前記メッセージから暗号文を生成し、当該暗号文を受信側装置に送信する処理を実行し、
各種情報を格納する記憶装置を備え、署名付き暗号通信システムを構成する中継装置が、
前記送信側装置から送信される、前記第一の鍵および前記第一の署名値と前記識別子を受信し、当該受信した各情報と該当送信者の検証用公開鍵を前記記憶装置へ格納する処理と、前記受信側装置から前記識別子を含む情報取得要求を受信し、当該取得要求が含む前記識別子に基づいて、前記記憶装置に格納されている、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値を取得し、当該取得した各情報を前記受信側装置へ送信する処理とを実行し、
メッセージ受信者の復号用秘密鍵及び暗号用公開鍵を記憶する記憶装置を備え、署名付き暗号通信システムを構成する受信側装置が、
前記中継装置に対して、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値の各情報に関する取得要求を送信し、前記中継装置から前記各情報および当該各情報に付与されていた識別子を取得する処理と、
前記中継装置から取得した前記第一の鍵を検証対象メッセージとし、前記第一の署名値を検証対象署名値とし、前記送信者の検証用公開鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理と、
前記送信側装置から前記鍵の暗号化データを受信し、当該受信した前記鍵の暗号化データに付与された識別子と同じ識別子が付与された前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置から取得し、前記識別子と同じ識別子が付与された情報が前記記憶装置で特定出来ない場合、前記中継装置に対し、該当識別子を指定した前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値の取得要求を送信し、該当各情報を取得し、前記取得した各情報を用いて前記鍵の暗号化データを復号して、前記共通鍵暗号用鍵を取得する処理と、
当該受信側装置における前記各処理の後に前記送信側装置より受信した暗号文を、前記共通鍵暗号用鍵で復号し、第二の署名値とメッセージを取得する処理と、前記取得した、前記第一の署名値、前記鍵の暗号化データ、及び前記メッセージと、前記受信者の暗号用公開鍵とを検証対象メッセージとし、前記第二の署名値を検証対象の署名値とし、前記第一の鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記メッセージを出力装置に出力する処理とを実行する、
ことを特徴とする署名付き暗号通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、署名付き暗号通信システムおよび署名付き暗号通信方法に関するものであり、具体的には、暗号および電子署名技術に関する。
【背景技術】
【０００２】
通信路の秘匿性を保証するため、すなわち通信路上を流れる情報を盗聴の脅威から守るための方法として、暗号技術の適用がよく知られている。また、通信路の真正性を保証するため、すなわち通信路上を流れる情報を改ざんや成りすましの脅威から守るための方法としては、電子署名技術の適用が知られている。さらに、秘匿性と真正性を同時に保証する技術として、暗号技術と電子署名技術を応用した署名付き暗号化（ｓｉｇｎｃｒｙｐｔｉｏｎ）技術が存在する。
【０００３】
署名付き暗号化技術の代表例として、Ｓｉｇｎ−ｔｈｅｎ−Ｅｎｃｒｙｐｔ方式と、Ｅｎｃｒｙｐｔ−ｔｈｅｎ−Ｓｉｇｎ方式の２つがよく知られている。Ｓｉｇｎ−ｔｈｅｎ−Ｅｎｃｒｙｐｔ方式は、メッセージに電子署名を付加した後、メッセージと署名値の組を暗号化する方式である。一方、Ｅｎｃｒｙｐｔ−ｔｈｅｎ−Ｓｉｇｎ方式は、メッセージを公開鍵暗号で暗号化した後に、当該暗号文に対して電子署名を付加する方式である。
【０００４】
署名付き暗号化の安全性は、秘匿性と真正性の二つの側面から評価される。秘匿性に関しては、動的マルチユーザモデルにおいて内部者からの適応的選択暗号文攻撃に対して識別不可能性を有すること（ｄＭ−ＩＮＤ−ｉＣＣＡ：ＩＮＤｉｓｔｉｎｇｕｉｓｈａｂｉｌｉｔｙ  ａｇａｉｎｓｔ  ｉｎｓｉｄｅｒ  Ｃｈｏｓｅｎ  Ｃｉｐｈｅｒｔｅｘｔ  Ａｔｔａｃｋ  ｉｎ  ｔｈｅｄｙｎａｍｉｃ  Ｍｕｌｔｉ−ｕｓｅｒ  ｍｏｄｅｌ  と呼ばれる性質）が望まれる。また真正性に関しては、動的マルチユーザモデルにおいて内部者からの選択文書攻撃に対する強偽造不可能性を有すること（ｄＭ−ｓＵＦ−ｉＣＭＡ：  ｓｔｒｏｎｇ  ＵｎＦｏｒｇｅａｂｉｌｉｔｙ  ａｇａｉｎｓｔｉｎｓｉｄｅｒ  Ｃｈｏｓｅｎ  Ｍｅｓｓａｇｅ  Ａｔｔａｃｋ  ｉｎ  ｔｈｅ  ｄｙｎａｍｉｃ  Ｍｕｌｔｉ−ｕｓｅｒ  ｍｏｄｅｌ  と呼ばれる安全性基準）が望まれる。安全な署名付き暗号化方式は、これら２つの安全性を同時に満たすことが望ましいと考えられている。
【０００５】
上述のＳｉｇｎ−ｔｈｅｎ−Ｅｎｃｒｙｐｔ方式は、適応的選択暗号文攻撃に対する識別不可能性を有するが、選択文書攻撃に対する強偽造不可能性が保証されないことが分かっている。また、Ｅｎｃｒｙｐｔ−ｔｈｅｎ−Ｓｉｇｎ方式は、選択文書攻撃に対する強偽造不可能性を有する一方で、適応的選択暗号文攻撃に対する識別不可能性が保証されないことが知られている。
【０００６】
一方、上記２つの安全性をともに備える署名付き暗号化方式として、以下の技術が存在する。すなわち、タグベースの鍵カプセル化メカニズム（通称ＴＢＫＥＭ）と、電子署名方式、共通鍵暗号の３つの機能を組み合わせることで署名付き暗号化方式を実現する技術（非特許文献１参照）である。この技術においては、構成要素であるＴＢＫＥＭ、電子署名、共通鍵暗号が、それぞれある安全性基準を満たす場合に、それらを組み合わせた署名付き暗号方式が前記の２つの安全性基準を満たすことが示されている。
【先行技術文献】
【特許文献】
【０００７】
【非特許文献１】Ｄａｉｋｉ Ｃｈｉｂａ、Ｔａｋａｈｉｒｏ Ｍａｔｓｕｄａ、Ｊａｃｏｂ Ｃ.Ｎ. Ｓｃｈｕｌｄｔ、Ｋａｎｔａ Ｍａｔｓｕｕｒａ、″Ｅｆｆｉｃｉｅｎｔ  Ｇｅｎｅｒｉｃ  Ｃｏｎｓｔｒｕｃｔｉｏｎｓ  ｏｆ  Ｓｉｇｎｃｒｙｐｔｉｏｎ  ｗｉｔｈＩｎｓｉｄｅｒ  Ｓｅｃｕｒｉｔｙ  ｉｎ  ｔｈｅ  Ｍｕｌｔｉ−ｕｓｅｒ  Ｓｅｔｔｉｎｇ″、ＡＣＮＳ ２０１１、ＬＮＣＳ ６７１５、ｐｐ.２２０−２３７、２０１１
【発明の概要】
【発明が解決しようとする課題】
【０００８】
秘匿性と真正性が同時に求められる分野は数多く存在する。例えば、証券会社のシステムから株式売買の発注を証券取引所のシステムへ送信する場合には、発注内容を取引所以外の他者に知られることを防ぐために秘匿性の確保が重要となると同時に、発注内容の改ざんや横取り（成りすまし）を防ぐために真正性の確保が求められる。
【０００９】
上記の分野においては安全性の確保と同時に、処理性能に関する独自の制約が存在する。証券取引の場合、取引所へリクエストが集中する繁忙期には大量の注文を遅延なくリアルタイムに処理することが要求される。このためには、送信側（例えば証券会社）のシステムにおける送信処理と、受信側（例えば証券取引所）のシステムにおける受信処理の両方で、安全性確保のために発生する処理遅延を極小化することが必要とされる。
【００１０】
従来技術（例えば非特許文献１の技術）においては、前述した通り高い安全性を保証するものの、送信側システムでは送信メッセージが確定した後でないと電子署名の生成処理を行うことができない。また、受信側システムでは暗号文一式を受信してからでないと当該暗号文内に含まれる電子署名の検証処理を行うことができない。そのため、取引メッセージの送受信に電子署名の生成／検証処理の処理時間がそのまま反映されてしまう、という課題を有する。したがって前述のような高いリアルタイム性が要求される環境においては、当該方式の適用が困難となる可能性が考えられる。
【００１１】
そこで本発明の目的は、優れたリアルタイム性と安全性を両立する署名付き暗号通信を可能とする技術を提供することにある。
【課題を解決するための手段】
【００１２】
上記課題を解決する本発明の署名付き暗号通信システムは、他装置と通信を行う通信装置と、メッセージ送信者の署名用秘密鍵及び検証用公開鍵を記憶する記憶装置と、ワンタイム署名用の鍵ペアを生成し、当該鍵ペアのうち第一の鍵を受信側装置に送信する処理と、前記鍵ペアのうち第一の鍵に対して前記送信者の署名用秘密鍵を用いて第一の署名値を生成し、当該第一の署名値を受信側装置に送信する処理と、メッセージ送信先となる受信者の公開鍵と、前記第一の鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータとから、共通鍵暗号用の鍵と該鍵の暗号化データを生成し、前記鍵の暗号化データを受信側装置に送信する処理とを実行し、前記各処理の少なくともいずれかの実行後、前記鍵ペアのうち第二の鍵、前記第一の署名値、前記受信者の公開鍵、前記鍵の暗号化データ、及び送信対象のメッセージから、第二の署名値を生成し、前記共通鍵暗号用の鍵、前記第二の署名値、及び前記メッセージから暗号文を生成し、当該暗号文を受信側装置に送信する処理を実行する制御装置と、を備える送信側装置と、他装置と通信を行う通信装置と、メッセージ受信者の復号用秘密鍵及び暗号用公開鍵を記憶する記憶装置と、前記送信側装置から受信した前記第一の鍵を検証対象メッセージとし、前記送信側装置から受信した前記第一の署名値を検証対象署名値とし、前記送信者の検証用公開鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理と、前記送信側装置から前記鍵の暗号化データを受信し、当該鍵の暗号化データを、前記受信者の復号用秘密鍵と、前記記憶装置に格納してある前記第一の鍵、前記第一の署名値、及び前記送信者の検証用公開鍵とを用いて復号して、前記共通鍵暗号用鍵を取得する処理と、当該受信側装置における前記各処理の後に前記送信側装置より受信した暗号文を、前記共通鍵暗号用鍵で復号し、第二の署名値とメッセージを取得する処理と、前記取得した、前記第一の署名値、前記鍵の暗号化データ、及び前記メッセージと、前記受信者の暗号用公開鍵とを検証対象メッセージとし、前記第二の署名値を検証対象の署名値とし、前記第一の鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記メッセージを出力装置に出力する処理とを実行する制御装置と、を備える受信側装置と、を含むことを特徴とする。
【００１３】
また、本発明の署名付き暗号通信システムは、他装置と通信を行う通信装置と、メッセージ送信者の署名用秘密鍵及び検証用公開鍵を記憶する記憶装置と、ワンタイム署名用の鍵ペアを生成し、当該鍵ペアにユニークな識別子を生成し、前記鍵ペアのうち第一の鍵に前記識別子を付与し、当該送信側装置と前記受信側装置との間で所定情報を仲介する中継装置に対し送信する処理と、前記鍵ペアのうち第一の鍵に対して前記送信者の署名用秘密鍵を用いて第一の署名値を生成し、当該第一の署名値に前記識別子を付与し、前記中継装置に送信する処理と、メッセージ送信先となる受信者の公開鍵と、前記第一の鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータとから、共通鍵暗号用の鍵と該鍵の暗号化データを生成し、前記鍵の暗号化データと当該暗号化データに前記識別子を付与し、受信側装置に送信する処理とを実行し、前記各処理の少なくともいずれかの実行後、前記鍵ペアのうち第二の鍵、前記第一の署名値、前記受信者の公開鍵、前記鍵の暗号化データ、及び送信対象のメッセージから、第二の署名値を生成し、前記共通鍵暗号用の鍵、前記第二の署名値、及び前記メッセージから暗号文を生成し、当該暗号文を受信側装置に送信する処理を実行する制御装置と、を備える送信側装置と、他装置と通信を行う通信装置と、各種情報を格納する記憶装置と、前記送信側装置から送信される、前記第一の鍵および前記第一の署名値と前記識別子を受信し、当該受信した各情報と該当送信者の検証用公開鍵を前記記憶装置へ格納する処理と、前記受信側装置から前記識別子を含む情報取得要求を受信し、当該取得要求が含む前記識別子に基づいて、前記記憶装置に格納されている、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値を取得し、当該取得した各情報を前記受信側装置へ送信する処理とを実行する制御装置と、を備える中継装置と、他装置と通信を行う通信装置と、メッセージ受信者の復号用秘密鍵及び暗号用公開鍵を記憶する記憶装置と、前記中継装置に対して、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値の各情報に関する取得要求を送信し、前記中継装置から前記各情報および当該各情報に付与されていた識別子を取得する処理と、前記中継装置から取得した前記第一の鍵を検証対象メッセージとし、前記第一の署名値を検証対象署名値とし、前記送信者の検証用公開鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理と、前記送信側装置から前記鍵の暗号化データを受信し、当該受信した前記鍵の暗号化データに付与された識別子と同じ識別子が付与された前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置から取得し、前記識別子と同じ識別子が付与された情報が前記記憶装置で特定出来ない場合、前記中継装置に対し、該当識別子を指定した前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値の取得要求を送信し、該当各情報を取得し、前記取得した各情報を用いて前記鍵の暗号化データを復号して、前記共通鍵暗号用鍵を取得する処理と、当該受信側装置における前記各処理の後に前記送信側装置より受信した暗号文を、前記共通鍵暗号用鍵で復号し、第二の署名値とメッセージを取得する処理と、前記取得した、前記第一の署名値、前記鍵の暗号化データ、及び前記メッセージと、前記受信者の暗号用公開鍵とを検証対象メッセージとし、前記第二の署名値を検証対象の署名値とし、前記第一の鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記メッセージを出力装置に出力する処理とを実行する制御装置と、を備える受信側装置とを含むことを特徴とする。
【００１４】
また、本発明の署名付き暗号通信方法は、メッセージ送信者の署名用秘密鍵及び検証用公開鍵を記憶する記憶装置を備え、署名付き暗号通信システムを構成する送信側装置が、ワンタイム署名用の鍵ペアを生成し、当該鍵ペアのうち第一の鍵を受信側装置に送信する処理と、前記鍵ペアのうち第一の鍵に対して前記送信者の署名用秘密鍵を用いて第一の署名値を生成し、当該第一の署名値を受信側装置に送信する処理と、メッセージ送信先となる受信者の公開鍵と、前記第一の鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータとから、共通鍵暗号用の鍵と該鍵の暗号化データを生成し、前記鍵の暗号化データを受信側装置に送信する処理とを実行し、前記各処理の少なくともいずれかの実行後、前記鍵ペアのうち第二の鍵、前記第一の署名値、前記受信者の公開鍵、前記鍵の暗号化データ、及び送信対象のメッセージから、第二の署名値を生成し、前記共通鍵暗号用の鍵、前記第二の署名値、及び前記メッセージから暗号文を生成し、当該暗号文を受信側装置に送信する処理を実行し、メッセージ受信者の復号用秘密鍵及び暗号用公開鍵を記憶する記憶装置を備え、署名付き暗号通信システムを構成する受信側装置が、前記送信側装置から受信した前記第一の鍵を検証対象メッセージとし、前記送信側装置から受信した前記第一の署名値を検証対象署名値とし、前記送信者の検証用公開鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理と、前記送信側装置から前記鍵の暗号化データを受信し、当該鍵の暗号化データを、前記受信者の復号用秘密鍵と、前記記憶装置に格納してある前記第一の鍵、前記第一の署名値、及び前記送信者の検証用公開鍵とを用いて復号して、前記共通鍵暗号用鍵を取得する処理と、当該受信側装置における前記各処理の後に前記送信側装置より受信した暗号文を、前記共通鍵暗号用鍵で復号し、第二の署名値とメッセージを取得する処理と、前記取得した、前記第一の署名値、前記鍵の暗号化データ、及び前記メッセージと、前記受信者の暗号用公開鍵とを検証対象メッセージとし、前記第二の署名値を検証対象の署名値とし、前記第一の鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記メッセージを出力装置に出力する処理とを実行する、ことを特徴とする。
【００１５】
また、本発明の署名付き暗号通信方法は、メッセージ送信者の署名用秘密鍵及び検証用公開鍵を記憶する記憶装置を備え、署名付き暗号通信システムを構成する送信側装置が、ワンタイム署名用の鍵ペアを生成し、当該鍵ペアにユニークな識別子を生成し、前記鍵ペアのうち第一の鍵に前記識別子を付与し、当該送信側装置と前記受信側装置との間で所定情報を仲介する中継装置に対し送信する処理と、前記鍵ペアのうち第一の鍵に対して前記送信者の署名用秘密鍵を用いて第一の署名値を生成し、当該第一の署名値に前記識別子を付与し、前記中継装置に送信する処理と、メッセージ送信先となる受信者の公開鍵と、前記第一の鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータとから、共通鍵暗号用の鍵と該鍵の暗号化データを生成し、前記鍵の暗号化データと当該暗号化データに前記識別子を付与し、受信側装置に送信する処理とを実行し、前記各処理の少なくともいずれかの実行後、前記鍵ペアのうち第二の鍵、前記第一の署名値、前記受信者の公開鍵、前記鍵の暗号化データ、及び送信対象のメッセージから、第二の署名値を生成し、前記共通鍵暗号用の鍵、前記第二の署名値、及び前記メッセージから暗号文を生成し、当該暗号文を受信側装置に送信する処理を実行し、各種情報を格納する記憶装置を備え、署名付き暗号通信システムを構成する中継装置が、前記送信側装置から送信される、前記第一の鍵および前記第一の署名値と前記識別子を受信し、当該受信した各情報と該当送信者の検証用公開鍵を前記記憶装置へ格納する処理と、前記受信側装置から前記識別子を含む情報取得要求を受信し、当該取得要求が含む前記識別子に基づいて、前記記憶装置に格納されている、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値を取得し、当該取得した各情報を前記受信側装置へ送信する処理とを実行し、メッセージ受信者の復号用秘密鍵及び暗号用公開鍵を記憶する記憶装置を備え、署名付き暗号通信システムを構成する受信側装置が、前記中継装置に対して、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値の各情報に関する取得要求を送信し、前記中継装置から前記各情報および当該各情報に付与されていた識別子を取得する処理と、前記中継装置から取得した前記第一の鍵を検証対象メッセージとし、前記第一の署名値を検証対象署名値とし、前記送信者の検証用公開鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理と、前記送信側装置から前記鍵の暗号化データを受信し、当該受信した前記鍵の暗号化データに付与された識別子と同じ識別子が付与された前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置から取得し、前記識別子と同じ識別子が付与された情報が前記記憶装置で特定出来ない場合、前記中継装置に対し、該当識別子を指定した前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値の取得要求を送信し、該当各情報を取得し、前記取得した各情報を用いて前記鍵の暗号化データを復号して、前記共通鍵暗号用鍵を取得する処理と、当該受信側装置における前記各処理の後に前記送信側装置より受信した暗号文を、前記共通鍵暗号用鍵で復号し、第二の署名値とメッセージを取得する処理と、前記取得した、前記第一の署名値、前記鍵の暗号化データ、及び前記メッセージと、前記受信者の暗号用公開鍵とを検証対象メッセージとし、前記第二の署名値を検証対象の署名値とし、前記第一の鍵を用いて署名検証を行い、当該署名検証に成功した場合、前記メッセージを出力装置に出力する処理とを実行することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、優れたリアルタイム性と安全性を両立する署名付き暗号通信が可能となる。
【図面の簡単な説明】
【００１７】
【図１】第１実施形態に係る署名付き暗号通信システムのネットワーク構成例を示す図である。
【図２】第１実施形態に係る署名付き暗号通信システムを構成する情報処理装置のハードウェア構成を示す図である。
【図３】第１実施形態に係る送信側装置および送信側鍵生成装置の構成例を示す図である。
【図４】第１実施形態に係る受信側装置および受信側鍵生成装置の構成例を示す図である。
【図５】第１実施形態に係る事前処理結果中継装置の構成例を示す図である。
【図６】第１実施形態に係る署名付き暗号通信方法の処理手順例を示すシーケンス図である。
【図７】第２実施形態に係る署名付き暗号通信システムのネットワーク構成例を示す図である。
【図８】第２実施形態に係る署名付き暗号通信方法の処理手順例を示すシーケンス図である。
【図９】第３実施形態に係る中継装置の構成例を示す図である。
【図１０】第３実施形態に係る署名付き暗号通信方法の処理手順例を示すフロー図である。
【発明を実施するための形態】
【００１８】
−−−第１実施形態−−−
以下に本発明の第１実施形態について図面を用いて詳細に説明する。図１は、第１実施形態の署名付き暗号通信システム１０を含むネットワーク構成図である。図１に示す署名付き暗号通信システム１０は、優れたリアルタイム性と安全性を両立する署名付き暗号通信を可能とするコンピュータシステムである。この署名付き暗号通信システム１０は、図１にて例示するように、送信側装置１００、受信側装置２００、およびこれらの間のネットワーク２０に配置された事前処理結果中継装置３００（中継装置）で主に構成されている。なお、送信側装置１００は送信側鍵生成装置１５０と結ばれて、処理に要する鍵の提供を受ける。また同様に、受信側装置２００は、受信側鍵生成装置２５０より、処理に要する鍵の提供を受ける。
【００１９】
また、署名付き暗号通信システム１０を構成する各装置のハードウェア構成は以下の如くとなる。図２は、当該第１実施形態に係る各装置（送信側装置１００、送信側鍵生成装置１５０、受信側装置２００、受信側鍵生成装置２５０、事前処理結果中継装置３００）のハードウェア構成例を示す図である。図２に示すように署名付き暗号通信システム１０を構成する各装置は、一般的なコンピュータ４００により実現される。
【００２０】
コンピュータ４００は、制御装置であるＣＰＵ４０１と、メモリ４０２と、ハードディスク等で構成した記憶装置である外部記憶装置４０３と、ネットワーク２０に接続するためのＮＩＣ（Ｎｅｔｗｏｒｋ  ＩｎｔｅｒｆａｃｅＣａｒｄ）等の送受信装置４０４（通信装置）と、モニタ等の出力装置４０５と、キーボードやマウス等の入力装置４０６と、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の可搬性を有する記憶媒体４０８から情報を読み取る読取装置４０７とを含んで構成される。
【００２１】
そして、各装置が処理に用いる記憶部は、ＣＰＵ４０１がメモリ４０２または外部記憶装置４０３を利用することにより実現可能となる。また、各装置における機能部は、ＣＰＵ４０１が、外部記憶装置４０３に記憶されている所定のプログラム４１０をメモリ４０２にロードし実行することにより実装される。この所定のプログラム４１０は、読取装置４０７を介して記憶媒体４０８から取得してもよいし、送受信装置４０４を介してネットワーク２０から外部記憶装置４０３にダウンロードされ、メモリ４０２にロードされてＣＰＵ４０１により実行されるようにしてもよい。また、読取装置４０７を介して記憶媒体４０８から、あるいは、送受信装置４０４を介してネットワーク２０から、メモリ４０２に直接ロードされ、ＣＰＵ４０１により実行されるようにしてもよい。
【００２２】
続いて、上述の署名付き暗号通信システム１０を構成する送信側装置１００について説明する。図３は、本実施形態に係る送信側装置１００および送信側鍵生成装置１５０の構成例を示す機能ブロック図である。
【００２３】
図３に示すように、送信側装置１００は、ワンタイム署名鍵生成部１０１、一時記憶部１０２、記憶部１０３、署名生成部１０４、一時記憶部１０５、送信先指定部１０６、鍵カプセル生成部１０７、一時記憶部１０８、入力部１０９、ワンタイム署名生成部１１０、共通鍵暗号部１１１、送信部１１２、送信部１１３、送信部１１４、送信部１１５、ＣＩＤ生成部１１６、の各機能部を備える。また、送信側鍵生成装置１５０は、署名鍵生成部１５１を含んで構成される。
【００２４】
このうち署名生成部１０４と署名鍵生成部１５１、および後述する署名検証部２０３は、同一の電子署名アルゴリズムに基づく機能部である。すなわち、署名生成部１０４が実装する電子署名生成アルゴリズムと、署名鍵生成部１５１が実装する署名鍵生成アルゴリズムと、署名検証部２０３が実装する署名検証アルゴリズムとは、同じ電子署名方式に属するアルゴリズムである。したがって、署名鍵生成部１５１が出力した署名用鍵ペア（ｓｋＳ、ｐｋＳ）のうち、“ｓｋＳ”は署名生成部１０４で署名を生成する際に必要な署名用秘密鍵として利用可能であり、“ｐｋＳ”は署名検証部２０３で当該署名を検証する際に必要な署名用検証鍵として利用可能である。
【００２５】
同様に、ワンタイム署名生成部１１０とワンタイム署名鍵生成部１０１、および後述するワンタイム署名検証部２１１は、同じワンタイム署名方式に基づく機能部である。すなわち、ワンタイム署名生成部１１０が実装するワンタイム署名生成アルゴリズムと、ワンタイム署名鍵生成部１０１が実装するワンタイム署名鍵生成アルゴリズムと、ワンタイム署名検証部２１１が実装するワンタイム署名検証アルゴリズムと、は同じワンタイム署名方式に属するアルゴリズムである。したがって、ワンタイム署名鍵生成部１０１が出力したワンタイム署名用鍵ペア（ｏｓｋ、ｏｖｋ）のうち、“ｏｓｋ”はワンタイム署名生成部１１０で署名を生成する際に必要な署名用秘密鍵として利用可能であり、“ｏｖｋ”はワンタイム署名検証部２１１で当該署名を検証する際に必要な検証鍵として利用可能である。
【００２６】
また、鍵カプセル生成部１０７と後述する暗号鍵生成部２５１、および後述する鍵カプセル復号部２０７は、同一のタグ付き鍵カプセル化（ＴＢＫＥＭ）方式に基づく機能部である。すなわち、鍵カプセル生成部１０７が実装するタグ付き鍵カプセル生成アルゴリズムと、暗号鍵生成部２５１が実装する暗号鍵生成アルゴリズムと、鍵カプセル復号部２０７が実装する鍵カプセル復号アルゴリズムと、は同じＴＢＫＥＭ方式に属するアルゴリズムである。したがって、暗号鍵生成部２５１が出力した暗号用鍵ペア（ｓｋＲ、ｐｋＲ）のうち、“ｐｋＲ”は鍵カプセル生成部１０７で鍵“Ｋ”とその鍵カプセル“Ｃ１”を生成する際に必要な暗号用公開鍵として利用可能であり、“ｓｋＲ”は鍵カプセル復号部２０７で“Ｃ１”から“Ｋ”を得る際に必要な復号用秘密鍵として利用可能である。また、鍵カプセル生成部１０７の生成する鍵“Ｋ”は、共通鍵暗号部１１１が暗号化処理を行う際の暗号鍵として利用可能である。
【００２７】
一方、ＣＩＤ生成部１１６は、送信側装置１００内の各機能部が生成した情報を対応付けるために使用するためのユニークな識別子（以降、コンテキスト識別子と呼ぶ）を生成し、ワンタイム署名鍵生成部１０１へ転送する。以降では、説明上誤解を生じない範囲で、各情報にコンテキスト識別子が付与されていることを明示しない。例えば、コンテキスト識別子“ｉ”が付与された秘密鍵（ｉ、ｏｓｋ）やコンテキスト識別子“ｉ”が付与された署名値（ｉ、ｓ１）を、それぞれ単に秘密鍵（ｉ、ｏｓｋ）、署名値（ｉ、ｓ１）と呼ぶこととする。
【００２８】
また、ワンタイム署名鍵生成部１０１は、ワンタイム署名鍵生成アルゴリズムを実装した機能部である。このワンタイム署名鍵生成部１０１は、ワンタイム署名用鍵ペア（ｏｓｋ、ｏｖｋ）を生成した後、ＣＩＤ生成部１１６から取得したコンテキスト識別子“ｉ”を各鍵に付与して出力する。出力された鍵ペア（（ｉ、ｏｓｋ）、（ｉ、ｏｖｋ））は一時記憶部１０２へ保存される。また、ワンタイム署名鍵生成部１０１は、一時記憶部１０２の記憶容量が許す範囲で、他の機能部と独立にワンタイム署名用鍵ペアの生成処理を繰り返し実行し続けても良い。この場合、生成された各鍵ペアには、生成の都度ＣＩＤ生成部１１６から取得した異なるコンテキスト識別子が付与される。
【００２９】
また、一時記憶部１０２は、ワンタイム署名用鍵ペア（（ｉ、ｏｓｋ）、（ｉ、ｏｖｋ））を入力として、当該鍵ペアを必要とする他の処理部によって消費されるまで記憶する。秘密鍵（ｉ、ｏｓｋ）はワンタイム署名生成部１１０への入力として後に利用される。検証鍵（ｉ、ｏｖｋ）は署名生成部１０４と、鍵カプセル生成部１０７と、送信部１１２と、への入力として後に利用される。“ｏｓｋ”は送信者以外の者に知られることの無いよう、安全な記憶領域に格納されることが必要である。安全な記憶領域の確保には例えばＨＳＭ（Ｈａｒｄｗａｒｅ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｕｌｅ）などといった製品を利用しても良い。一時記憶部１０２には複数の鍵ペアを格納することが可能である。保存された複数の鍵ペアはそれぞれに付与されたコンテキスト識別子によって一意に識別可能である。
【００３０】
また、送信部１１２は、一時記憶部１０２に保存されたワンタイム署名の検証鍵（ｉ、ｏｖｋ）を事前処理結果中継装置３００へ送信する。通信にはＴＣＰ／ＩＰやＨＴＴＰ等の汎用的なプロトコルを利用可能である。
【００３１】
記憶部１０３は、送信側鍵生成装置１５０によって生成された送信者の署名用秘密鍵“ｓｋＳ”と検証用公開鍵“ｐｋＳ”を記憶する。送信者の署名用秘密鍵“ｓｋＳ”は、送信者以外の者に知られることの無いよう、安全な記憶領域に格納されることが必要である。安全な記憶領域の確保には例えばＨＳＭ（Ｈａｒｄｗａｒｅ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｕｌｅ）などといった製品を利用しても良い。一方、送信者の検証用公開鍵“ｐｋＳ”は、公開リポジトリや任意の通信手段を用いて、受信者を始め署名の検証を行う者へ広く公開されることが必要である。
【００３２】
また、署名生成部１０４は、電子署名生成アルゴリズムを実装した機能部である。この署名生成部１０４は、入力として、記憶部１０３に保存された送信者の署名用秘密鍵“ｓｋＳ”と、一時記憶部１０２に保存された検証鍵（ｉ、ｏｖｋ）と、を取得すると、実装した電子署名生成アルゴリズムにしたがって署名値“ｓ１”を生成する。入力の内、“ｓｋＳ”は電子署名生成アルゴリズムにおける署名用秘密鍵として利用され、一方で“ｏｖｋ”は電子署名生成アルゴリズムにおける署名対象メッセージとして利用される。生成された“ｓ１”には、入力に付与されたものと同じコンテキスト識別子“ｉ”を付与して出力する。出力された署名値（ｉ、ｓ１）は一時記憶部１０５へ保存される。署名生成部１０４は、未処理の入力（ｉ、ｏｖｋ）が一時記憶部１０２に保存されている場合、一時記憶部１０５の記憶容量が許す範囲で、他の機能部と独立に署名生成処理を繰り返し実行し続けても良い。
【００３３】
また、一時記憶部１０５は、署名値（ｉ、ｓ１）を入力として、当該署名値を必要とする他の処理部によって消費されるまで記憶する。記憶された署名値（ｉ、ｓ１）は鍵カプセル生成部１０７と、ワンタイム署名生成部１１０と、送信部１１３と、への入力として後に利用される。この一時記憶部１０５には複数の署名値を格納することが可能である。保存された複数の署名値はそれぞれに付与されたコンテキスト識別子によって一意に識別可能である。
【００３４】
また、送信部１１３は、一時記憶部１０５に保存された署名値（ｉ、ｓ１）を事前処理結果中継装置３００へ送信する。通信にはＴＣＰ／ＩＰやＨＴＴＰ等の汎用的なプロトコルを利用可能である。
【００３５】
送信先指定部１０６は、送信者がメッセージの送信先、すなわち受信者を決定した後に、当該受信者の暗号用公開鍵“ｐｋＲ”を得て、記憶する機能部である。暗号用公開鍵“ｐｋＲ”は、鍵カプセル生成部１０７と、ワンタイム署名生成部１１０と、への入力として利用される。
【００３６】
また、鍵カプセル生成部１０７は、タグ付き鍵カプセル化アルゴリズムを実装した機能部である。この鍵カプセル生成部１０７は、入力として、記憶部１０３に保存された受信者の暗号用公開鍵“ｐｋＲ”および送信者の検証用公開鍵“ｐｋＳ”と、一時記憶部１０２に保存された検証鍵（ｉ、ｏｖｋ）と、一時記憶部１０５に保存された署名値（ｉ、ｓ１）と、を取得すると、実装したタグ付き鍵カプセル化アルゴリズムにしたがって共通鍵暗号用の鍵“Ｋ”と当該鍵をカプセル化（暗号化）した鍵カプセル“Ｃ１”を生成する。一度に処理される入力（ｉ、ｏｖｋ）と（ｉ、ｓ１）には同じコンテキスト識別子“ｉ”が付与されているものとする。入力の内、“ｐｋＲ”はタグ付き鍵カプセル化アルゴリズムにおける公開鍵として利用され、一方で“ｐｋＳ”、“ｏｖｋ”、“ｓ１”はタグ付き鍵カプセル化アルゴリズムにおけるタグ（補助入力）として利用される。鍵カプセル生成部１０７は、生成した“Ｋ”と“Ｃ１”には、入力に付与されたものと同じコンテキスト識別子“ｉ”を付与して出力する。また、出力された鍵（ｉ、Ｋ）と鍵カプセル（ｉ、Ｃ１）は一時記憶部１０８へ保存される。鍵カプセル生成部１０７は、未処理の入力（ｉ、ｏｖｋ）および（ｉ、ｓ１）が一時記憶部１０２および一時記憶部１０５それぞれに保存されている場合、一時記憶部１０８の記憶容量が許す範囲で、他の機能部と独立に鍵カプセル生成処理を繰り返し実行し続けても良い。
【００３７】
また、一時記憶部１０８は、共通鍵暗号用の鍵（ｉ、Ｋ）と当該鍵をカプセル化（暗号化）した鍵カプセル（ｉ、Ｃ１）を入力として、それらを必要とする他の処理部によって消費されるまで記憶する。なお、鍵カプセル（ｉ、Ｃ１）はワンタイム署名生成部１１０および送信部１１４への入力として後に利用される。また、鍵（ｉ、Ｋ）は共通鍵暗号部１１１への入力として後に利用される。また、鍵“Ｋ”は送信者以外の者に知られることの無いよう、安全な記憶領域に格納されることが必要である。安全な記憶領域の確保には例えばＨＳＭ（Ｈａｒｄｗａｒｅ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｕｌｅ）などといった製品を利用しても良い。一時記憶部１０８には複数の鍵および鍵カプセルを格納することが可能である。保存された複数の鍵および鍵カプセルはそれぞれに付与されたコンテキスト識別子によって一意に識別可能である。
【００３８】
また、送信部１１４は、一時記憶部１０８に保存された暗号文（ｉ、Ｃ１）を、送信先指定部１０６で指定された受信側装置２００へ送信する。この際、事前処理結果中継装置３００内に保存した（ｉ、ｏｖｋ）および（ｉ、ｓ１）を特定するための識別子を合わせて送信しても良い。当該識別子としてはＵＲＬなどを用いることが可能である。以降では便宜上、当該識別子をＵＲＬまたはクエリ用ＵＲＬと呼ぶが、当該識別子にＵＲＬ以外のものを使うことも可能である。例えば、事前処理結果中継装置３００のホスト名として″ｐｏｏｌ．ｅｘａｍｐｌｅ．ｃｏｍ″、送信側装置１００の名前として″ｓｅｎｄｅｒ１″、（ｉ、ｏｖｋ）と（ｉ、ｓ１）のコンテキスト識別子ｉとして″ａ０ｂ１ｃ２ｄ３″が使われていた場合、″ｈｔｔｐｓ：／／ｐｏｏｌ．ｅｘａｍｐｌｅ．ｃｏｍ／ｓｅｎｄｅｒ１／ａ０ｂ１ｃ２ｄ３″  なるクエリ用ＵＲＬが送信部１１４から受信側装置２００へ送信され、受信側装置２００は当該ＵＲＬを用いて（ｉ、ｏｖｋ）と（ｉ、ｓ１）を取得することが可能である。送信部１１４の通信にはＴＣＰ／ＩＰやＨＴＴＰ等の汎用的なプロトコルを利用可能である。
【００３９】
また、入力部１０９は、送信者が送信対象メッセージを決定した後に、該当メッセージ“ｍ”の入力を受け付ける機能部である。メッセージ“ｍ”は、ワンタイム署名生成部１１０と、共通鍵暗号部１１１への入力として利用される。
【００４０】
また、ワンタイム署名生成部１１０は、ワンタイム署名生成アルゴリズムを実装した機能部である。このワンタイム署名生成部１１０は、入力として、送信先指定部１０６に保存された受信者の暗号用公開鍵“ｐｋＲ”と、入力部１０９に入力されたメッセージ“ｍ”に加えて、一時記憶部１０２に保存された秘密鍵（ｉ、ｏｓｋ）と、一時記憶部１０５に保存された署名値（ｉ、ｓ１）と、一時記憶部１０８に保存された鍵カプセル（ｉ、Ｃ１）と、を取得すると、実装したワンタイム署名生成アルゴリズムにしたがって署名値“ｓ２”を生成する。一度に処理される入力（ｉ、ｏｓｋ）、（ｉ、ｓ１）、（ｉ、Ｃ１）には同じコンテキスト識別子ｉが付与されているものとする。入力の内、“ｏｓｋ”はワンタイム署名生成アルゴリズムにおける署名用秘密鍵として利用され、一方で“ｓ１”、“ｐｋＲ”、“Ｃ１”、“ｍ”はワンタイム署名生成アルゴリズムにおける署名対象メッセージとして利用される。ワンタイム署名生成部１１０は、生成した“ｓ２”には、入力に付与されたものと同じコンテキスト識別子“ｉ”を付与して出力する。ここで出力された署名値（ｉ、ｓ２）は共通鍵暗号部１１１の入力として利用される。
【００４１】
また、共通鍵暗号部１１１は、共通鍵暗号化アルゴリズムを実装した機能部である。この共通鍵暗号部１１１は、入力として、入力部１０９に入力されたメッセージ“ｍ”に加えて、ワンタイム署名生成部１１０が生成した署名値（ｉ、ｓ２）と、一時記憶部１０８に保存された鍵（ｉ、Ｋ）と、を取得すると、実装した共通鍵暗号化アルゴリズムにしたがって暗号文“Ｃ２”を生成する。一度に処理される入力（ｉ、ｓ２）と（ｉ、Ｋ）には同じコンテキスト識別子“ｉ”が付与されているものとする。入力の内、“Ｋ”は共通鍵暗号化アルゴリズムにおける暗号用共通鍵として利用され、一方で“ｓ２”と“ｍ”は共通鍵暗号化アルゴリズムにおける暗号化対象メッセージとして利用される。生成された“Ｃ２”には、入力に付与されたものと同じコンテキスト識別子ｉを付与して出力する。出力された暗号文（ｉ、Ｃ２）は送信部１１５の入力として利用される。
【００４２】
送信部１１５は、共通鍵暗号部１１１が生成した暗号文（ｉ、Ｃ２）を、送信先指定部１０６で指定された受信側装置２００へ送信する。通信にはＴＣＰ／ＩＰやＨＴＴＰ等の汎用的なプロトコルを利用可能である。
【００４３】
また、署名付き暗号通信システム１０における受信側装置２００および受信側鍵生成装置２５０は、図４に示す構成を備えている。図４は、本実施形態に係る受信側装置２００および受信側鍵生成装置２５０の構成例を示す機能ブロック図である。
【００４４】
図４に示すように、受信側装置２００は、事前結果取得部２０１、受信部２０２、署名検証部２０３、一時記憶部２０４、記憶部２０５、受信部２０６、鍵カプセル復号部２０７、一時記憶部２０８、受信部２０９、共通鍵復号部２１０、ワンタイム署名検証部２１１、出力部２１２、とを含んで構成される。また、受信側鍵生成装置２５０は、暗号鍵生成部２５１を含んで構成される。
【００４５】
前述した通り、署名検証部２０３と上述の署名生成部１０４および署名鍵生成部１５１は、同じ電子署名アルゴリズムに基づく機能部である。また、ワンタイム署名検証部２１１と先述のワンタイム署名生成部１１０およびワンタイム署名鍵生成部１０１は、同じワンタイム署名方式に基づく機能部である。また、暗号鍵生成部２５１および鍵カプセル復号部２０７と、先述の鍵カプセル生成部１０７は、同一のタグ付き鍵カプセル化（ＴＢＫＥＭ）方式に基づく機能部である。また、鍵カプセル復号部２０７の生成する鍵“Ｋ”は、共通鍵復号部２１０が復号処理を行う際の共通鍵として利用可能である。
【００４６】
事前結果取得部２０１は、事前処理結果中継装置３００から送信側装置１００の事前処理結果である（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）を取得する機能部である。この取得にはＴＣＰ／ＩＰやＨＴＴＰ等の汎用的なプロトコルを利用可能である。また、取得の方法は二種類存在する。一つは、受信側装置２００の処理能力に余裕のある時（アイドル時）に、事前処理結果中継装置３００の特定のＵＲＬ（フェッチ用ＵＲＬ）にアクセスをして、いずれ使うことになる可能性のある事前処理結果（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）を投機的に取得して保存する方法。もう一方は、受信部２０６が送信側装置１００から（ｉ、Ｃ１）およびＵＲＬ（クエリ用ＵＲＬ）を受信した際に、当該コンテキスト識別子“ｉ”に対応する（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）をまだ取得していなかった場合には、当該クエリ用ＵＲＬにアクセスすることで事前処理結果中継装置３００から（ｉ、Ｃ１）および今後受信する（ｉ、Ｃ２）の復号に必要となる（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）を取得する方法である。以降、一つ目の取得方法をフェッチ、二つ目の取得方法をクエリと呼んで区別する。
【００４７】
また、受信部２０２は、送信元の公開鍵（ｉ、ｐｋＳ）と事前処理結果（ｉ、ｏｖｋ）、（ｉ、ｓ１）を受信して、当該情報を必要とする他の処理部によって消費されるまで記憶する。上述の受信にはＴＣＰ／ＩＰやＨＴＴＰ等の汎用的なプロトコルを利用可能である。
【００４８】
また、署名検証部２０３は、電子署名検証アルゴリズムを実装した機能部である。署名検証部２０３は、入力として、受信部２０２に保存された（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）を取得すると、実装した電子署名検証アルゴリズムにしたがってワンタイム署名用検証鍵（ｉ、ｏｖｋ）の検証を実行する。一度に処理される入力（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）には同じコンテキスト識別子“ｉ”が付与されているものとする。また、入力の内、“ｐｋＳ”は電子署名検証アルゴリズムにおける検証用公開鍵として利用され、“ｏｖｋ”は電子署名検証アルゴリズムにおける検証対象メッセージとして利用され、“ｓ１”は電子署名検証アルゴリズムにおける検証対象署名値として利用される。  検証の結果が成功であった場合、署名検証部２０３は、一時記憶部２０４に検証済み情報として（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）を保存する。一方、検証の結果が失敗であった場合、署名検証部２０３は、一時記憶部２０４に検証失敗を示すエラーコード（ｉ、ＥＲＲ）を保存する。署名検証部２０３は、この一時記憶部２０４に保存する情報には、入力に付与されたものと同じコンテキスト識別子“ｉ”を付与する。また、署名検証部２０３は、未処理の入力（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）が受信部２０２に保存されている場合、一時記憶部２０４の記憶容量が許す範囲で、他の機能部と独立に署名検証処理を繰り返し実行し続けても良い。
【００４９】
また、一時記憶部２０４は、送信側の事前処理結果（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）を入力として、これらを必要とする他の処理部によって消費されるまで記憶する。記憶された情報は鍵カプセル復号部２０７と、ワンタイム署名検証部２１１と、への入力として後に利用される。また、一時記憶部２０４には複数の事前処理結果を格納することが可能である。保存された複数の事前処理結果はそれぞれに付与されたコンテキスト識別子によって一意に識別可能である。
【００５０】
また、記憶部２０５は、受信側鍵生成装置２５０によって生成された受信者の復号用秘密鍵“ｓｋＲ”と暗号用公開鍵“ｐｋＲ”を記憶する。受信者の復号用秘密鍵“ｓｋＲ”は、受信者以外の者に知られることの無いよう、安全な記憶領域に格納されることが必要である。安全な記憶領域の確保には例えばＨＳＭ（Ｈａｒｄｗａｒｅ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｕｌｅ）などといった製品を利用しても良い。一方、受信者の暗号用公開鍵“ｐｋＲ”は、公開リポジトリや任意の通信手段を用いて、送信者を始め当該受信者へのメッセージ送信を行う者へ広く公開されることが必要である。 
また、受信部２０６は、送信側装置１００から送信された鍵カプセル（ｉ、Ｃ１）および事前処理結果中継装置３００内のリソースを特定するクエリ用ＵＲＬを受信して、当該情報を、必要とする他の処理部によって消費されるまで記憶する。上述の受信にはＴＣＰ／ＩＰやＨＴＴＰ等の汎用的なプロトコルを利用可能である。
【００５１】
また、鍵カプセル復号部２０７は、タグ付き鍵カプセル復号アルゴリズムを実装した機能部である。この鍵カプセル復号部２０７は、入力として、記憶部２０５に保存された受信者の復号用秘密鍵“ｓｋＲ”と、一時記憶部２０４に保存された事前処理結果（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）と、受信部２０６に保存された鍵カプセル（ｉ、Ｃ１）とクエリ用ＵＲＬと、を取得して、実装したタグ付き鍵カプセル復号アルゴリズムにしたがって共通鍵“Ｋ”を生成する。復号に失敗した場合、鍵カプセル復号部２０７は、エラーコードＥＲＲを生成する。一度に処理される入力（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）、（ｉ、Ｃ１）には同じコンテキスト識別子“ｉ”が付与されているものとする。
【００５２】
もし受信部２０６から取得した（ｉ、Ｃ１）と同じコンテキスト識別子“ｉ”が付与された（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）が一時記憶部２０４に存在しない場合、鍵カプセル復号部２０７は、事前結果取得部２０１を介してクエリ用ＵＲＬへ接続し、受信部２０２による受信処理および署名検証部２０３による署名検証処理を経て一時記憶部２０４へ（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）が保存されるまで待機する。
【００５３】
また、もし受信部２０６から取得した（ｉ、Ｃ１）と同じコンテキスト識別子“ｉ”が一時記憶部２０４内でエラーとして扱われていた場合、すなわち（ｉ、ＥＲＲ）が一時記憶部２０４に存在する場合には、鍵カプセル復号部２０７は処理結果をエラーとして一時記憶部２０８に（ｉ、ＥＲＲ）を保存する。また、鍵カプセル復号部２０７の入力の内、“ｓｋＲ”はタグ付き鍵カプセル復号アルゴリズムにおける秘密鍵として利用され、“ｐｋＳ”、“ｏｖｋ”、“ｓ１”はタグ付き鍵カプセル復号アルゴリズムにおけるタグ（補助入力）として利用され、“Ｃ１”はタグ付き鍵カプセル復号アルゴリズムにおける復号対象暗号文として利用される。
【００５４】
また、鍵カプセル復号部２０７は、生成した“Ｋ”またはＥＲＲには、入力に付与されたものと同じコンテキスト識別子“ｉ”を付与して出力する。ここで出力された鍵（ｉ、Ｋ）は、入力された鍵カプセル（ｉ、Ｃ１）と合わせて一時記憶部２０８へ保存される。また、鍵カプセル復号部２０７は、未処理の入力（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）および（ｉ、Ｃ１）が一時記憶部２０４および受信部２０６にそれぞれに保存されている場合、一時記憶部２０８の記憶容量が許す範囲で、他の機能部と独立に鍵カプセル復号処理を繰り返し実行し続けても良い。
【００５５】
また、一時記憶部２０８は、共通鍵暗号用の鍵（ｉ、Ｋ）と当該鍵をカプセル化した鍵カプセル（ｉ、Ｃ１）を入力として、これらを必要とする他の処理部によって消費されるまで記憶する。一時記憶部２０８で記憶された情報は、共通鍵復号部２１０とワンタイム署名検証部２１１への入力として後に利用される。また、一時記憶部２０８には複数の鍵および鍵カプセルを格納することが可能である。ここに保存された複数の鍵および鍵カプセルはそれぞれに付与されたコンテキスト識別子によって一意に識別可能である。
【００５６】
また、受信部２０９は、送信側装置１００から送信された暗号文（ｉ、Ｃ２）を受信して、当該暗号文を、必要とする他の処理部によって消費されるまで記憶する。上述の受信にはＴＣＰ／ＩＰやＨＴＴＰ等の汎用的なプロトコルを利用可能である。
【００５７】
また、共通鍵復号部２１０は、共通鍵復号アルゴリズムを実装した機能部である。この共通鍵復号部２１０は、入力として、一時記憶部２０８に保存された鍵（ｉ、Ｋ）と、受信部２０９が受信した暗号文（ｉ、Ｃ２）と、を取得すると、実装した共通鍵復号アルゴリズムにしたがって署名値“ｓ２”とメッセージ“ｍ”を生成する。一方、復号に失敗した場合、共通鍵復号部２１０は、エラーコードＥＲＲを生成する。
【００５８】
なお、共通鍵復号部２１０に一度に処理される入力（ｉ、Ｋ）と（ｉ、Ｃ２）には同じコンテキスト識別子“ｉ”が付与されているものとする。もし受信部２０９から取得した（ｉ、Ｃ２）と同じコンテキスト識別子“ｉ”が一時記憶部２０８内でエラーとして扱われていた場合、すなわち（ｉ、ＥＲＲ）が一時記憶部２０８に存在する場合には、共通鍵復号部２１０は、共通鍵復号部２１０の処理結果をエラーとしてワンタイム署名検証部２１１に（ｉ、ＥＲＲ）を通知する。なお、入力の内、“Ｋ”は共通鍵復号化アルゴリズムにおける復号用共通鍵として利用され、一方で“Ｃ２”は共通鍵復号アルゴリズムにおける復号対象暗号文として利用される。共通鍵復号部２１０は、生成した“ｓ２”および“ｍ”には、入力に付与されたものと同じコンテキスト識別子“ｉ”を付与して出力する。ここで出力したメッセージ（ｉ、ｍ）はワンタイム署名検証部２１１および判定部２１２の入力として利用される。また出力された署名値（ｉ、ｓ２）はワンタイム署名検証部２１１の入力として利用される。
【００５９】
また、ワンタイム署名検証部２１１は、ワンタイム署名検証アルゴリズムを実装した機能部である。このワンタイム署名検証部２１１は、入力として、共通鍵復号部２１０が出力した（ｉ、ｓ２）および（ｉ、ｍ）と、一時記憶部２０４に保存された（ｉ、ｏｖｋ）、（ｉ、ｓ１）と、一時記憶部２０８に保存された（ｉ、Ｋ）、（ｉ、Ｃ１）と、を取得すると、実装したワンタイム署名検証アルゴリズムにしたがって“ｓ１”、“ｐｋＲ”、“Ｃ１”、“ｍ”の検証を実行する。共通鍵復号部２１０の出力結果がエラーコード（ｉ、ＥＲＲ）であった場合、ワンタイム署名検証部２１１は、当該エラーコード（ｉ、ＥＲＲ）を出力部２１２へ送信する。そうでない場合、入力の内、“ｏｖｋ”はワンタイム署名検証アルゴリズムにおける検証用公開鍵として利用され、“ｓ１”、“ｐｋＲ”、“Ｃ１”、“ｍ”はワンタイム署名検証アルゴリズムにおける検証対象メッセージとして利用され、“ｓ２”はワンタイム署名検証アルゴリズムにおける検証対象署名値として利用される。検証の結果が成功であった場合、ワンタイム署名検証部２１１は、入力された（ｉ、ｍ）を検証済メッセージとして出力部２１２へ送信する。他方、検証の結果が失敗であった場合、ワンタイム署名検証部２１１は、検証失敗を示すエラーコード（ｉ、ＥＲＲ）を出力部２１２へ送信する。
【００６０】
また、出力部２１２は、入力として復号および検証されたメッセージ（ｉ、ｍ）またはエラーコード（ｉ、ＥＲＲ）を取得する。このうち、メッセージ（ｉ、ｍ）を取得した場合、出力部２１２は、受信側装置２００の利用者へメッセージ“ｍ”を出力する。この場合、受信者が受け取ったメッセージ“ｍ”は確かに送信元公開鍵“ｐｋＳ”と対応する送信側装置１００から送られたものであることが保証される。一方で、エラーコード（ｉ、ＥＲＲ）を取得した場合、出力部２１２は、エラーコードＥＲＲを受信者へ提示することで、受信した暗号文に問題があったことを示す。
【００６１】
次に、署名付き暗号通信システム１０を構成する事前処理結果中継装置３００の構成例について説明する。図５は、本実施形態に係る事前処理結果中継装置３００の構成例を示す機能ブロック図である。図５にて示すように、事前処理結果中継装置３００は、受信部３０１、受信部３０２、事前処理結果保存部３０３、事前処理結果記憶部３０４、受信部３０５、事前処理結果提供部３０６、送信部３０７、とを含んで構成される。
【００６２】
そのうち受信部３０１は、送信側装置１００の送信部１１２から送信される事前処理結果（ｉ、ｏｖｋ）を受信すると、送信側装置１００に関する情報、すなわち送信側装置１００の利用者名（例えば“Ｓ”）や送信側装置１００が利用する公開鍵（例えば“ｐｋＳ”）を特定した後、これらと合わせて事前処理結果（ｉ、ｏｖｋ）を事前処理結果保存部３０３へ送信する。
【００６３】
また、受信部３０２は、送信側装置１００の送信部１１３から送信される事前処理結果（ｉ、ｓ１）を受信すると、送信側装置１００に関する情報、すなわち送信側装置１００の利用者名（例えば“Ｓ”）や送信側装置１００が利用する公開鍵（例えば“ｐｋＳ”）を特定した後、これらと合わせて事前処理結果（ｉ、ｓ１）を事前処理結果保存部３０３へ送信する。
【００６４】
また、事前処理結果保存部３０３は、受信部３０１から（ｉ、ｏｖｋ）と送信側装置１００に関する情報を受信すると、これらの情報とコンテキスト識別子“ｉ”に基づいてクエリ用ＵＲＬを生成した後、事前処理結果記憶部３０４内に新たにレコード（行）を作成し、クエリ用ＵＲＬ、送信側装置１００の利用者名（例えば“Ｓ”）、送信側装置１００が利用する公開鍵（例えば“ｐｋＳ”）、ワンタイム署名用検証鍵（ｉ、ｏｖｋ）、を当該レコードへ保存する。また、事前処理結果保存部３０３は、受信部３０２から（ｉ、ｓ１）と送信側装置１００に関する情報を受信すると、これらの情報とコンテキスト識別子“ｉ”に基づいて保存すべきレコードを特定し、事前処理結果記憶部３０４内の該当レコードへ（ｉ、ｓ１）を保存する。
【００６５】
また、事前処理結果記憶部３０４は、送信側装置１００から送信される事前処理結果（ｉ、ｏｖｋ）、（ｉ、ｓ１）を、送信側装置１００に関する情報と関連付けて一時的に保存するための記憶領域を有する。図５に示すように、当該記憶領域にはクエリ用ＵＲＬカラム３０４１、結果登録者カラム３０４２、登録者公開鍵カラム３０４３、検証鍵カラム３０４４、署名カラム３０４５、が含まれる。クエリ用ＵＲＬカラム３０４１には、事前処理結果保存部３０３によって生成されたクエリ用ＵＲＬが格納される。受信側装置２００は、当該クエリ用ＵＲＬを参照することで、当該クエリ用ＵＲＬが含まれるレコード一式を取得することができる。また、結果登録者カラム３０４２には、送信側装置１００の利用者名（例えば“Ｓ”）が格納される。登録者公開鍵カラム３０４３には、送信側装置１００の利用する公開鍵（例えば“ｐｋＳ”）が格納される。検証鍵カラム３０４４には、送信側装置１００から送信されたワンタイム署名用公開鍵（ｉ、ｏｖｋ）が格納される。署名カラム３０４５には、送信側装置１００から送信された署名値（ｉ、ｓ１）が格納される。
【００６６】
また、受信部３０５は、受信側装置２００の事前結果取得部２０１からフェッチ用ＵＲＬまたは特定のコンテキスト識別子“ｉ”を含むクエリ用ＵＲＬに対する取得要求を受信すると、事前処理結果提供部３０６に対して当該取得要求を転送する。
【００６７】
また、事前処理結果提供部３０６は、受信部３０５から取得要求を受信すると、当該取得要求に基づいて事前処理結果記憶部３０４内のレコードを取得し、送信部３０７を介して当該取得要求の送信元である受信側装置２００に対して当該レコードの情報を送信する。当該取得要求がクエリ用ＵＲＬに対する取得要求であった場合、事前処理結果提供部３０６は、当該クエリ用ＵＲＬを含むレコードを取得する。一方、当該取得要求がフェッチ用ＵＲＬに対する取得要求であった場合、事前処理結果提供部３０６は、事前処理結果記憶部３０４に保存されたレコードの内、まだ受信側装置２００に送信していないレコードを一つ以上取得する。
【００６８】
以下、当該第１実施形態における署名付き暗号通信方法の実際手順について図に基づき説明する。以下で説明する署名付き暗号通信方法に対応する各種動作は、署名付き暗号通信システム１０を構成する送信側装置１００、受信側装置２００、および事前処理結果中継装置３００がそれぞれメモリ等に読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【００６９】
図６は、第１実施形態に係る署名付き暗号通信方法の処理手順例を示すシーケンス図であり、具体的には、署名付き暗号通信システム１０を構成する送信側装置１００、受信側装置２００、および事前処理結果中継装置３００による署名付き暗号文の送受信処理について示す図である。
【００７０】
なお、本シーケンスの事前条件として、送信者、すなわち送信側装置１００の利用者は、送信側鍵生成装置１５０を用いて自身の公開鍵“ｐｋＳ”と秘密鍵“ｓｋＳ”を生成し、送信側装置１００の記憶部１０３に格納しているものとする。また同様に、受信者、すなわち受信側装置２００の利用者は、受信者側鍵生成装置２５０を用いて自身の公開鍵“ｐｋＲ”と秘密鍵“ｓｋＲ”を生成し、受信側装置２００の記憶部２０５に格納しているものとする。
【００７１】
まず、送信側装置１００は、以降の署名付き暗号化処理で使用するためのワンタイム署名用鍵ペアを生成する（ステップ５０１）。具体的には、送信側装置１００のワンタイム署名鍵生成部１０１が、ワンタイム署名鍵生成アルゴリズムに基づいてワンタイム署名用の鍵ペア（ｏｓｋ、ｏｖｋ）を生成し、ＣＩＤ生成部１１６から取得したコンテキスト識別子“ｉ”とともに一時記憶部１０２に保存する。コンテキスト識別子“ｉ”を付与したワンタイム署名用検証鍵（ｉ、ｏｖｋ）は、送信側装置１００を特定するための情報と合わせて、事前処理結果中継装置３００へ送信される（ステップ５０２）。当該ワンタイム署名鍵生成処理には、送信者の鍵ペア（ｓｋＳ、ｐｋＳ）、受信者の公開鍵“ｐｋＲ”、メッセージ“ｍ”のいずれも必要とされないため、他の処理とは独立に計算することが可能である。特に、ステップ５０１およびステップ５０２の処理を、送信側装置１００の他の処理に影響を与えない範囲で繰り返し実行することも可能である。
【００７２】
次に、送信側装置１００は、ワンタイム署名の検証鍵“ｏｖｋ”に署名値“ｓ１”を付与する（ステップ５０３）。具体的には、送信側装置１００の署名生成部１０４が、記憶部１０３に格納された送信者の秘密鍵“ｓｋＳ”を署名鍵として入力されるとともに、一時記憶部１０２に保存された検証鍵（ｉ、ｏｖｋ）を入力とすることで、署名生成アルゴリズムに基づいて署名値“ｓ１”を出力する。署名生成部１０４は、出力した署名値“ｓ１”には、入力された検証鍵（ｉ、ｏｖｋ）と同じコンテキスト識別子“ｉ”を付与した後、一時記憶部１０５に格納する。
【００７３】
署名生成部１０４は、上述のように、コンテキスト識別子“ｉ”を付与した署名値（ｉ、ｓ１）を、送信側装置１００を特定するための情報と合わせて、事前処理結果中継装置３００へ送信する（ステップ５０４）。当該署名生成処理には、受信者の公開鍵“ｐｋＲ”、メッセージ“ｍ”のいずれも必要とされないため、ステップ５０５以降の処理とは独立に事前計算することが可能である。特に、ステップ５０３およびステップ５０４の処理を、送信側装置１００の他の処理に影響を与えない範囲で繰り返し実行することも可能である。
【００７４】
続いて、受信側装置２００は、処理に余裕のあるアイドル時などに、事前処理結果中継装置３００のフェッチ用ＵＲＬにアクセスし、後に利用する可能性のある事前処理結果（ｉ、ｏｖｋ）、（ｉ、ｓ１）を投機的に取得して、当該取得した情報に関して署名検証部２０３による署名検証を行い、検証成功であれば（ｉ、ｏｖｋ）、（ｉ、ｓ１）らを、検証失敗であればその旨を一時記憶部２０４へ格納する（ステップ５０５、５０６、５０７）。
【００７５】
次に、送信側装置１００は、送信者からの入力に従い、メッセージの送信先を決定する（ステップ５０８）。具体的には、送信者は、受信者の公開鍵“ｐｋＲ”を公開リポジトリや任意の通信手段を用いて取得し、送信側装置１００の送信先指定部１０６へ入力する。送信側装置１００は、この入力が示す公開鍵に対応した受信者（の受信側装置２００）をメッセージの送信先として決定する。
【００７６】
続いて送信側装置１００は、鍵カプセルを生成する（ステップ５０９）。具体的には、送信側装置１００の鍵カプセル生成部１０７において、送信先指定部１０６の取得した送信先（受信者）の公開鍵“ｐｋＲ”を暗号鍵として入力されるとともに、一時記憶部１０２に保存されたワンタイム署名の検証鍵（ｉ、ｏｖｋ）と、一時記憶部１０５に保存された署名値（ｉ、ｓ１）と、記憶部１０３に格納された送信者の公開鍵“ｐｋＳ”と、を結合したものをタグとして入力されることで、タグ付き鍵カプセル生成アルゴリズムに基づいて、共通鍵暗号用の鍵“Ｋ”と、当該鍵“Ｋ”をカプセル化した鍵カプセル“Ｃ１”と、を出力する。
【００７７】
鍵カプセル生成部１０７は、ここで出力した（Ｋ、Ｃ１）に、入力と同じコンテキスト識別子“ｉ”を付与した後、一時記憶部１０８へ保存する。また、鍵カプセル生成部１０７は、コンテキスト識別子“ｉ”が付与された鍵カプセル（ｉ、Ｃ１）を、クエリ用ＵＲＬと合わせて受信側装置２００へ送信する（ステップ５１０）。
【００７８】
一方、受信側装置２００は、送信側装置１００から送信された鍵カプセル（ｉ、Ｃ１）およびクエリ用ＵＲＬを受信すると、当該鍵カプセルに付与されたコンテキスト識別子“ｉ”が付与された（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）を既にフェッチにより取得しているか確認し、まだ取得していない場合には、受信した該当クエリ用ＵＲＬへ接続して当該コンテキスト識別子“ｉ”が付与された事前処理結果を取得する。受信側装置２００は、ここで得た事前処理結果について署名検証部２０３による署名検証を行い、検証成功であった場合は該当事前処理結果を、検証失敗であればその旨を一時記憶部２０４へ格納する（ステップ５１１、５１２、５１３）。
【００７９】
次に、受信側装置２００は、鍵カプセルを復号する（ステップ５１４）。具体的には、受信側装置２００の鍵カプセル復号部２０７が、一時記憶部２０４に格納された（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）とともに記憶部２０５に保存された“ｓｋＲ”を用いて、タグ付き鍵カプセル復号アルゴリズムに基づいて、共通鍵暗号用の鍵“Ｋ”を出力する。鍵カプセル復号部２０７は、出力した“Ｋ”に、入力と同じコンテキスト識別子“ｉ”を付与した後、鍵カプセル（ｉ、Ｃ１）とともに一時記憶部２０８へ保存する。
【００８０】
次に、送信側装置１００は、送信者からの入力に従い、送信すべきメッセージを決定する（ステップ５１５）。具体的には、送信者は、送信側装置１００の入力部１０９に対して送信すべきメッセージ“ｍ”を入力する。一方、送信側装置１００は、このメッセージ“ｍ”を取得し、送信すべきメッセージとする。
【００８１】
次に、送信側装置１００は、ワンタイム署名を生成する（ステップ５１６）。具体的には、送信側装置１００のワンタイム署名生成部１１０において、一時記憶部１０２に保存されたワンタイム署名用の秘密鍵（ｉ、ｏｓｋ）を署名鍵として入力されるとともに、送信先指定部１０６によって取得された受信者の公開鍵“ｐｋＲ”と、一時記憶部１０８に保存された鍵カプセル“Ｃ１”と、入力部１０９によって取得されたメッセージ“ｍ”と、を送信対象の文書として入力されることで、ワンタイム署名生成アルゴリズムを実行し、署名値（ｉ、ｓ２）を出力する。
【００８２】
次に、送信側装置１００は、暗号文を生成する（ステップ５１７）。具体的には、送信側装置１００の共通鍵暗号部１１１が、一時記憶部１０８に格納された鍵のうち、ステップ５１８で利用した鍵カプセル（ｉ、Ｃ１）と同じコンテキスト識別子“ｉ”を持つ鍵（ｉ、Ｋ）を選択し、暗号鍵として利用する。また共通鍵暗号部１１１において、一時記憶部１０２に保存された検証鍵のうち、ステップ５１８で利用した秘密鍵（ｉ、ｏｓｋ）と同じコンテキスト識別子を持つ検証鍵（ｉ、ｏｖｋ）と、一時記憶部１０５に保存された署名値（ｉ、ｓ１）と、ワンタイム署名生成部１１０が生成した署名値（ｉ、ｓ２）と、入力部１０９が取得したメッセージ“ｍ”と、を暗号化対象メッセージとして入力されることで、共通鍵暗号アルゴリズムを実行し、暗号文“Ｃ２”を出力する。
【００８３】
共通鍵暗号部１１１は、出力した“Ｃ２”に、入力と同じコンテキスト識別子“ｉ”を付与した後、送信部１１５を介して受信側装置２００へ送信する（ステップ５１８）。共通鍵暗号部１１１は、受信側装置２００で（ｉ、Ｃ２）が受信されたことを確認した段階で、コンテキスト識別子“ｉ”が付与された該当情報は一時記憶部１０２、一時記憶部１０５、一時記憶部１０８から消去しても良い。
【００８４】
一方、受信側装置２００は、送信側装置１００から送信された暗号文（ｉ、Ｃ２）を受信すると、一時記憶部２０４、一時記憶部２０８に格納された（ｉ、Ｋ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）、（ｉ、Ｃ１）や記憶部に格納された“ｐｋＲ”を用いて、共通鍵復号アルゴリズムにしたがって当該暗号文を復号する（ステップ５１９）。正しく復号できた場合、受信側装置２００は、復号結果となるメッセージを出力装置等で利用者向けに表示し、他方、復号に問題があった場合にはエラーを示す情報を表示する（ステップ５２０）。
【００８５】
以上説明したように、他方、第１実施形態に係る送信側装置１００によれば、ワンタイム署名鍵生成処理を他の処理とは独立にいつでも事前計算することが可能となる。また、送信者の署名用鍵ペア（ｓｋＳ、ｐｋＳ）が決定した後であれば、メッセージの送信先（受信者）や送信すべきメッセージの内容が決まる前の段階であっても、署名生成処理を事前計算することが可能となる。また、送信先である受信者の公開鍵“ｐｋＲ”が決定した後であれば、送信すべきメッセージの内容が決まる前の段階でも、鍵カプセル生成処理を事前計算することが可能となる。計算コストの高い署名生成処理や鍵カプセル生成処理を事前計算しておくことで、送信すべきメッセージ“ｍ”が決定された後の処理を共通鍵暗号およびワンタイム署名といった計算コストの低い処理のみで実現できるため、送信者がメッセージを決定してから暗号文が送信されるまでに要する時間を短縮することが可能となる。
【００８６】
また、第１実施形態に係る送信側装置１００によれば、ワンタイム署名鍵生成処理および署名生成処理の結果である検証鍵（ｉ、ｏｖｋ）および署名値（ｉ、ｓ１）を、事前処理結果中継装置３００を介して受信側装置２００へ非同期に送信することが可能である。また、鍵カプセル生成処理の結果である鍵カプセル（ｉ、Ｃ１）を、送信すべきメッセージ“ｍ”が確定する前に受信側装置２００へ非同期に送信することが可能である。これにより、受信側装置２００では（ｉ、ｏｖｋ）、（ｉ、ｓ１）を必要とする処理、すなわち署名検証処理を鍵カプセル“Ｃ１”や暗号文“Ｃ２”を受信するよりも前に実行することができる。さらに、（ｉ、Ｃ１）を必要とする処理、すなわち鍵カプセル復号処理を、暗号文“Ｃ２”を受信するよりも前に実行することができる。これにより、受信者が暗号文を受信してからメッセージの内容を確認するまでに要する時間を短縮することが可能となる。
【００８７】
−−−第２実施形態−−−
図７は第２実施形態に係る署名付き暗号通信システム１０のネットワーク構成例を示す図である。この第２実施形態における署名付き暗号通信システム１０においては、第１実施形態での構成と異なり、事前処理結果中継装置３００が含まれていない。従って、送信側装置１００と受信側装置２００とが直接、各種情報を授受することとなる。但し、基本的な構成は、送信側装置１００および受信側装置２００ともに第１実施形態のものと同様であるため、機能構成等に関する詳細説明は省略する。
【００８８】
以下、当該第３実施形態における署名付き暗号通信方法の実際手順について図に基づき説明する。以下で説明する署名付き暗号通信方法に対応する各種動作は、署名付き暗号通信システム１０を構成する送信側装置１００および受信側装置２００がそれぞれメモリ等に読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【００８９】
図８は、第２実施形態に係る署名付き暗号通信方法の処理手順例を示すシーケンス図であり、具体的には、当該第２実施形態の署名付き暗号通信システム１０を構成する送信側装置１００、および受信側装置２００による署名付き暗号文の送受信処理の一例を示す図である。ここで示す各処理のうち、第１実施形態のものと同様の内容であるものについては詳細説明は省略する。
【００９０】
当該第２実施形態では、送信側装置１００が、ワンタイム署名検証鍵（ｉ、ｏｖｋ）と署名値（ｉ、ｓ１）の生成時に、あらかじめそれらを使用する受信側装置２００が特定できているような場合に、事前処理結果中継装置３００を介さずに、当該（ｉ、ｏｖｋ）、（ｉ、ｓ１）を直接受信側装置２００へ送信するフローを例示する。
【００９１】
この場合、送信側装置１００は、以降の署名付き暗号化処理で使用するためのワンタイム署名用鍵ペア（ｏｓｋ、ｏｖｋ）を生成し（ステップ６０１）、このうち“ｏｖｋ”に、ＣＩＤ生成部１１６から取得したコンテキスト識別子“ｉ”を付与して受信側装置２００に送信する（ステップ６０２）。当該ワンタイム署名鍵生成処理には、送信者の鍵ペア（ｓｋＳ、ｐｋＳ）、受信者の公開鍵“ｐｋＲ”、メッセージ“ｍ”のいずれも必要とされないため、他の処理とは独立に計算することが可能である。特に、ステップ６０１およびステップ６０２の処理を、送信側装置１００の他の処理に影響を与えない範囲で繰り返し実行することも可能である。
【００９２】
次に、送信側装置１００は、ワンタイム署名の検証鍵“ｏｖｋ”に署名値“ｓ１”を付与し（ステップ６０３）、署名値“ｓ１”に、入力された検証鍵（ｉ、ｏｖｋ）と同じコンテキスト識別子“ｉ”を付与した後、受信側装置２００に送信する（ステップ６０４）。当該署名生成処理には、受信者の公開鍵“ｐｋＲ”、メッセージ“ｍ”のいずれも必要とされないため、ステップ６０５以降の処理とは独立に事前計算することが可能である。特に、ステップ６０３およびステップ６０４の処理を、送信側装置１００の他の処理に影響を与えない範囲で繰り返し実行することも可能である。
【００９３】
続いて、受信側装置２００は、送信側装置１００から受信した、（ｉ、ｏｖｋ）、（ｉ、ｓ１）について、処理に余裕のあるアイドル時などに、署名検証部２０３による署名検証を行い、検証成功であれば（ｉ、ｏｖｋ）、（ｉ、ｓ１）らを、検証失敗であればその旨を一時記憶部２０４へ格納する（ステップ６０５）。
【００９４】
次に、送信側装置１００は、送信者からの入力に従い、メッセージの送信先を決定し（ステップ６０６）、共通鍵暗号用の鍵“Ｋ”と、当該鍵“Ｋ”をカプセル化した鍵カプセル“Ｃ１”とを生成する（ステップ６０７）。また、送信側装置１００は、ここで得た（Ｋ、Ｃ１）に、入力と同じコンテキスト識別子“ｉ”を付与した後、受信側装置２００に送信する（ステップ６０８）。
【００９５】
一方、受信側装置２００は、送信側装置１００から送信された鍵カプセル（ｉ、Ｃ１）を受信すると、当該鍵カプセルに付与されたコンテキスト識別子“ｉ”が付与された（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）を一時記憶部２０４から取得するとともに、記憶部２０５に保存された“ｓｋＲ”を用いて、タグ付き鍵カプセル復号アルゴリズムに基づいて、共通鍵暗号用の鍵“Ｋ”を出力する（ステップ６０９）。また、受信側装置２００は、出力した“Ｋ”に、入力と同じコンテキスト識別子“ｉ”を付与した後、鍵カプセル（ｉ、Ｃ１）とともに一時記憶部２０８へ保存する。
【００９６】
次に、送信側装置１００は、送信者からの入力に従い、送信すべきメッセージを決定し（ステップ６１０）、ワンタイム署名（ｉ、ｓ２）を生成する（ステップ６１１）。また、送信側装置１００は、暗号文“Ｃ２”を生成し（ステップ５１７）、この暗号文“Ｃ２”に対し、入力と同じコンテキスト識別子“ｉ”を付与した後、送信部１１５を介して受信側装置２００へ送信する（ステップ６１３）。
【００９７】
一方、受信側装置２００は、送信側装置１００から送信された暗号文（ｉ、Ｃ２）を受信すると、一時記憶部２０４、一時記憶部２０８に格納された（ｉ、Ｋ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）、（ｉ、Ｃ１）や記憶部に格納された“ｐｋＲ”を用いて、共通鍵復号アルゴリズムにしたがって当該暗号文を復号する（ステップ６１４）。正しく復号できた場合、受信側装置２００は、復号結果となるメッセージを出力装置等で利用者向けに表示し、他方、復号に問題があった場合にはエラーを示す情報を表示する（ステップ６１５）。
【００９８】
−−−第３実施形態−−−
図９は、第３実施形態に係る事前処理結果中継装置７００の構成例を示す機能ブロック図であり、図１０は第３実施形態に係る署名付き暗号通信方法の処理手順例を示すフロー図である。
【００９９】
第３実施形態では、事前処理結果中継装置３００内に事前処理結果の検証部７０１を設けることで、送信側装置１００によって格納された事前処理結果である（ｉ、ｐｋＳ）、（ｉ、ｏｖｋ）、（ｉ、ｓ１）の組を受信側装置２００からの参照に先立って検証しておくことを可能にする。以降、第１実施形態における事前処理結果中継装置３００と同様の機能、構成については説明を省略する。
【０１００】
この第３実施形態における事前処理結果検証部７０１は、受信部２００の署名検証部２０３と同じ電子署名検証アルゴリズムを実装した機能部である。この事前処理結果検証部７０１は、入力として、事前処理結果記憶部３０４の各レコードに保存された“ｐｋＳ”、（ｉ、ｏｖｋ）、（ｉ、ｓ１）について、実装した電子署名検証アルゴリズムにしたがってワンタイム署名用検証鍵（ｉ、ｏｖｋ）の検証を実行する（ステップ７００）。
【０１０１】
なお、入力の内、“ｐｋＳ”は電子署名検証アルゴリズムにおける検証用公開鍵として利用され、“ｏｖｋ”は電子署名検証アルゴリズムにおける検証対象メッセージとして利用され、“ｓ１”は電子署名検証アルゴリズムにおける検証対象署名値として利用される。  事前処理結果検証部７０１は、上述のステップ７００での検証の結果を、検証日時と合わせて、事前処理結果記憶部３０４における検証結果カラム７０２に保存する（ステップ７０２）。
【０１０２】
続いて、事前処理結果提供部７０３は、第１実施形態の事前処理結果提供部３０６の処理に加えて、事前処理結果記憶部３０４内の検証結果カラム７０２に保存された検証結果を、送信部７０４を介して、（ｉ、ｏｖｋ）、（ｉ、ｓ１）とともに受信側装置２００へ送信する（ステップ７０３）。
【０１０３】
こうして中継装置３００における上述の検証結果を受けた受信側装置２００では、（ｉ、ｏｖｋ）、及び（ｉ、ｓ１）の署名検証を省略し、該当送信者の検証用公開鍵“ｐｋＳ”、“ｏｖｋ”、および“ｓ１”値を、一次記憶部２０４に格納することが出来る。
【０１０４】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【０１０５】
こうした本実施形態によれば、メッセージ送受信時の通信速度の低下を抑えることで、署名付き暗号通信において高いリアルタイム性を確保するとともに、メッセージ送受信時に必要な計算を削減することで計算時間に制限のある環境下でも署名付き暗号化方式が実現可能となる。
【０１０６】
従って、優れたリアルタイム性と安全性を両立する署名付き暗号通信が可能となる。
【０１０７】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、本実施形態の署名付き暗号通信システムにおいて、前記送信側装置における制御装置は、前記ワンタイム署名用の鍵ペアを生成するに際し、前記ワンタイム署名用の第一の鍵として、ワンタイム署名の検証に用いるワンタイム署名用検証鍵を生成し、前記ワンタイム署名用の第二の鍵として、前記第二の署名値を生成する際に用いるワンタイム署名用秘密鍵を生成するものである、としてもよい。
【０１０８】
これによれば、ワンタイム署名用の鍵ペアを用いた以降の処理を効率よく実行することが可能となる。
【０１０９】
また、本実施形態の署名付き暗号通信システムにおいて、前記送信側装置における制御装置は、前記ワンタイム署名用検証鍵を生成する都度、当該ワンタイム署名用検証鍵を前記受信側装置へ送信し、前記第一の署名値を生成する都度、当該第一の署名値を前記受信側装置へ送信するものである、としてもよい。
【０１１０】
これによれば、受信側装置にて、実際の暗号文（送信側装置が伝達したいメッセージを暗号化したもの）を受信し、処理する以前に、予め、ワンタイム署名用検証鍵や第一の署名値に関する署名検証処理を済ませておくことが、より早期に可能となり、署名付き暗号通信方法における一連の処理全体の処理効率を高めることが出来る。
【０１１１】
また、本実施形態の署名付き暗号通信システムにおいて、前記送信側装置における制御装置は、前記共通鍵暗号用の鍵と該鍵の暗号化データを生成する処理に際し、メッセージ受信者の公開鍵及びタグとして前記ワンタイム署名用検証鍵と前記第一の署名値と前記送信者の検証用公開鍵とを結合したデータから、タグ付き鍵カプセル生成アルゴリズムに基づいて、前記共通鍵暗号用の鍵と該鍵の暗号化データを生成するものである、としてもよい。
【０１１２】
これによれば、タグ付き鍵カプセルの概念に対応した送信側装置での処理が実行可能となる。
【０１１３】
また、本実施形態の署名付き暗号通信システムにおいて、前記受信側装置における制御装置は、前記共通鍵暗号用鍵を取得する処理に際し、前記受信者の復号用秘密鍵と、タグとして入力された前記ワンタイム署名用検証鍵と、タグとして入力された前記第一の署名値と、タグとして入力された送信者の検証用公開鍵と、を用いて、鍵カプセル復号アルゴリズムに基づいて、前記鍵の暗号化データから共通鍵暗号用鍵を復号するものである、としてもよい。
【０１１４】
これによれば、タグ付き鍵カプセルの概念に対応した受信側装置での処理が実行可能となる。
【０１１５】
また、本実施形態の署名付き暗号通信システムにおいて、前記中継装置における制御装置は、前記記憶装置に保存された前記第一の鍵を検証対象メッセージとし、前記記憶装置に保存された前記第一の署名値を検証対象署名値とし、前記記憶装置に保存された前記送信者の検証用公開鍵を用いて署名検証を行い、前記署名検証の結果を前記記憶装置に記憶する処理と、前記受信側装置からの前記情報取得要求に応じて、前記記憶装置に保存してある、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値と、前記署名検証の結果とを取得し、当該取得した前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値、および前記署名検証の結果を、前記受信側装置へ送信する処理と、を実行するものであり、前記受信側装置における制御装置は、前記前記送信者の検証用公開鍵、前記第一の鍵、前記第一の署名値を前記記憶装置に格納する処理に際し、前記中継装置から、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値と共に、前記署名検証の結果が送信されてきた場合、前記第一の鍵及び前記第一の署名値の署名検証を実行せずに、前記送信者の検証用公開鍵、前記第一の鍵、および前記第一の署名値を前記記憶装置に格納するものである、としてもよい。
【０１１６】
これによれば、中継装置が第一の鍵および第一の署名値に関する署名検証を予め済ませておき、受信側装置での署名検証処理を不要とすることが出来、署名付き暗号通信方法における全体の処理効率を更に向上出来る。
【０１１７】
また、本実施形態の署名付き暗号通信システムにおいて、前記送信側装置における制御装置は、前記ワンタイム署名用検証鍵を生成する都度、当該ワンタイム署名用検証鍵を前記中継装置へ送信し、前記第一の署名値を生成する都度、当該第一の署名値を前記中継装置へ送信するものである、としてもよい。
【０１１８】
これによれば、ワンタイム署名用の鍵ペアを用いた以降の処理を効率よく実行することが可能となる。
【符号の説明】
【０１１９】
１０  署名付き暗号通信システム
２０  ネットワーク
１００  送信側装置
１０１  ワンタイム署名鍵生成部
１０２  一時記憶部
１０３  記憶部
１０４  署名生成部
１０５  一時記憶部
１０６  送信先指定部
１０７  鍵カプセル生成部
１０８  一時記憶部
１０９  入力部
１１０  ワンタイム署名生成部
１１１  共通鍵暗号部
１１２  送信部
１１３  送信部
１１４  送信部
１１５  送信部
１１６  ＣＩＤ生成部
１５０  送信側鍵生成装置
１５１  署名鍵生成部
２００  受信側装置
２０１  事前結果取得部
２０２  受信部
２０３  署名検証部
２０４  一時記憶部
２０５  記憶部
２０６  受信部
２０７  鍵カプセル復号部
２０８  一時記憶部
２０９  受信部
２１０  共通鍵復号部
２１１  ワンタイム署名検証部
２１２  出力部
２５０  受信側鍵生成装置
２５１  暗号鍵生成部
３００  事前処理結果中継装置
３０１  受信部
３０２  受信部
３０３  事前処理結果保存部
３０４  事前処理結果記憶部
３０４１  クエリ用ＵＲＬカラム
３０４２  結果登録者カラム
３０４３  登録者公開鍵カラム
３０４４  検証鍵カラム
３０４５  署名カラム
３０５  受信部
３０６  事前処理結果提供部
３０７  送信部
【図１】
2015089001.tif 000003
【図２】
2015089001.tif 000004
【図３】
2015089001.tif 000005
【図４】
2015089001.tif 000006
【図５】
2015089001.tif 000007
【図６】
2015089001.tif 000008
【図７】
2015089001.tif 000009
【図８】
2015089001.tif 000010
【図９】
2015089001.tif 000011
【図１０】
2015089001.tif 000012