(57)【特許請求の範囲】
【請求項１】
データを公開鍵で暗号化した暗号データを送信する送信端末と、当該暗号データを当該送信端末から受信して前記公開鍵とペアとなる秘密鍵で復号する受信端末と、サーバとを含んで構成される公開鍵暗号通信システムであって、
前記受信端末は、
前記公開鍵および前記秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を前記サーバに送信する公開鍵送信手段と、
前記鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵から公開鍵識別子を生成する受信側識別子生成手段と、
前記鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理するとともに、当該秘密鍵に対応づけて、前記受信側識別子生成手段によって生成された公開鍵識別子をさらに管理する秘密鍵管理手段と、
いずれかの世代の公開鍵によって暗号化された暗号データと、当該公開鍵から生成された公開鍵識別子とを前記送信端末から受信して、前記秘密鍵管理手段によって管理された複数の世代の秘密鍵から当該公開鍵識別子に対応づけられた秘密鍵を取得して当該暗号データを復号するデータ受信復号手段とを備え、
前記サーバは、
前記受信端末から送信された公開鍵を受信する公開鍵受信手段と、
前記公開鍵受信手段によって受信された公開鍵のうち最新の公開鍵のみを管理する公開鍵管理手段と、
前記送信端末からの要求に応じて、前記公開鍵管理手段によって管理されている最新の公開鍵を当該送信端末に送信する公開鍵送信手段とを備え、
前記送信端末は、
データを送信する都度、送信先の受信端末に対応する公開鍵を前記サーバに要求し、当該公開鍵を前記サーバから受信する送信側公開鍵受信手段と、
前記送信側公開鍵受信手段によって受信された最新の公開鍵でデータを暗号化するデータ暗号化手段と、
前記送信側公開鍵受信手段によって受信された最新の公開鍵から公開鍵識別子を生成する送信側識別子生成手段と、
前記データ暗号化手段によって暗号化された暗号データと、前記送信側識別子生成手段によって生成された公開鍵識別子とを当該受信端末に送信するデータ送信手段と、
を備えたことを特徴とする公開鍵暗号通信システム。
【請求項２】
前記秘密鍵管理手段は、前記複数の世代にわたる秘密鍵を当該秘密鍵の更新に係る順番に基づく時系列に管理することを特徴とする請求項１に記載の公開鍵暗号通信システム。
【請求項３】
前記秘密鍵管理手段は、ひとつまたは複数個の秘密鍵を新たに管理する場合に、当該秘密鍵の更新に係る順番に基づく時系列で古い方からひとつまたは複数個の既に管理されている秘密鍵と置き換えて管理することを特徴とする請求項１または２に記載の公開鍵暗号通信システム。
【請求項４】
データを公開鍵で暗号化した暗号データを送信する送信端末と、当該暗号データを当該送信端末から受信して前記公開鍵とペアとなる秘密鍵で復号する受信端末と、サーバとを含んで構成される公開鍵暗号通信方法であって、
前記受信端末は、
前記公開鍵および前記秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を前記サーバに送信する公開鍵送信工程と、
前記鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵から公開鍵識別子を生成する受信側識別子生成工程と、
前記鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理するとともに、当該秘密鍵に対応づけて、前記受信側識別子生成工程によって生成された公開鍵識別子をさらに管理する秘密鍵管理工程と、
いずれかの世代の公開鍵によって暗号化された暗号データと、当該公開鍵から生成された公開鍵識別子とを前記送信端末から受信して、前記秘密鍵管理工程によって管理された複数の世代の秘密鍵から当該公開鍵識別子に対応づけられた秘密鍵を取得して当該暗号データを復号するデータ受信復号工程とを含み、
前記サーバは、
前記受信端末から送信された公開鍵を受信する公開鍵受信工程と、
前記公開鍵受信工程によって受信された公開鍵のうち最新の公開鍵のみを管理する公開鍵管理工程と、
前記送信端末からの要求に応じて、前記公開鍵管理工程によって管理されている最新の公開鍵を当該送信端末に送信する公開鍵送信工程とを含み、
前記送信端末は、
データを送信する都度、送信先の受信端末に対応する公開鍵を前記サーバに要求し、当該公開鍵を前記サーバから受信する送信側公開鍵受信工程と、
前記送信側公開鍵受信工程によって受信された最新の公開鍵でデータを暗号化するデータ暗号化工程と、
前記送信側公開鍵受信工程によって受信された最新の公開鍵から公開鍵識別子を生成する送信側識別子生成工程と、
前記データ暗号化工程によって暗号化された暗号データと、前記送信側識別子生成工程によって生成された公開鍵識別子とを当該受信端末に送信するデータ暗号化送信工程と、
を含んだことを特徴とする公開鍵暗号通信方法。
【請求項５】
公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を、最新の公開鍵のみを管理するサーバに送信する公開鍵送信手段と、
前記鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵から公開鍵識別子を生成する受信側識別子生成手段と、
前記鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理するとともに、当該秘密鍵に対応づけて、前記受信側識別子生成手段によって生成された公開鍵識別子をさらに管理する秘密鍵管理手段と、
前記サーバから取得された最新の公開鍵で暗号化された暗号データと、当該公開鍵から生成された公開鍵識別子とを他のクライアント端末から受信して、前記秘密鍵管理手段によって管理された複数の世代の秘密鍵から当該公開鍵識別子に対応づけられた秘密鍵を取得して当該暗号データを復号するデータ受信復号手段と、
データを送信する都度、送信先の受信端末に対応する公開鍵を前記サーバに要求し、当該公開鍵を前記サーバから受信する公開鍵受信手段と、
前記公開鍵受信手段によって受信された最新の公開鍵でデータを暗号化するデータ暗号化手段と、
前記公開鍵受信手段によって受信された最新の公開鍵から公開鍵識別子を生成する送信側識別子生成手段と、
前記データ暗号化手段によって暗号化された暗号データと、前記送信側識別子生成手段によって生成された公開鍵識別子とを他のクライアント端末に送信するデータ送信手段と、
を備えたことを特徴とするクライアント端末。
【請求項６】
請求項５に記載のクライアント端末としてコンピュータを機能させることを特徴とするクライアントプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、公開鍵暗号通信システム、公開鍵暗号通信方法および公開鍵暗号通信プログラムに関する。
【背景技術】
【０００２】
従来より、メール送受信や電子申請など、秘匿性が要求されるネットワークサービスにおいて、公開鍵暗号方式を用いた情報通信が行われている。ここで、公開鍵暗号方式とは、公開鍵および秘密鍵と呼ばれるペアとなる鍵（データ）を用いて、秘匿性が要求されるデータを暗号化または復号する方式である。通常、まず、公開鍵暗号通信を行いたい者（以下、ユーザという）によって公開鍵および秘密鍵の鍵ペアが生成される。そして、公開鍵は、通信相手に利用させることを目的としてネットワーク上で公開（または送信）され、この公開鍵を入手した通信相手によって公開鍵が利用されてデータが暗号化される。一方、秘密鍵は、ユーザによって管理され、公開鍵が利用されて暗号化されたデータを復号するために用いられる。ここで、公開鍵が利用されて暗号化されたデータは、公開鍵とペアで生成された秘密鍵でなければ復号できない点が特色である。
【０００３】
このようなことから、公開鍵暗号通信において重要なことは、秘密鍵が漏洩または紛失されないように、ユーザによっていかに安全に管理されるかという点にある。ところが一方で、スパイウェアによる盗聴、廃棄した記憶媒体からの漏洩、管理パスワードの忘失など、秘密鍵が漏洩または紛失されるリスクは高い。そこで、このようなリスクを回避するために、ユーザによって公開鍵および秘密鍵の鍵ペアが随時更新されることが一般的に行われている。例えば、非特許文献１では、公開鍵および秘密鍵の鍵ペアが、設定された有効期限が切れる前に自動的に更新される方法を推奨している。
【０００４】
【非特許文献１】エントラストジャパン社“企業のためのＰＫＩ導入ガイド”、［online］、［平成１８年３月１４日検索］、インターネット＜http://japan.entrust.com/resources/impact02.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記した従来の技術では、公開鍵および秘密鍵の鍵ペアが随時更新される場合に、必ずしも公開鍵暗号通信を実現することができないという課題があり、また、秘密鍵の管理が簡易かつ安全でないという課題がある。
【０００６】
すなわち、公開鍵および秘密鍵の鍵ペアが更新される度に、古い世代の公開鍵（更新前の公開鍵）とペアで生成された古い世代の秘密鍵（更新前の秘密鍵）がユーザによって廃棄されていると、ユーザは、古い世代の公開鍵が利用されて暗号化された暗号データを受領しても、この暗号データを復号できる古い世代の秘密鍵が存在しないため、暗号データを復号できず、結果として、必ずしも公開鍵暗号通信を実現することができないという課題がある。
【０００７】
さらに、古い世代の公開鍵とペアで生成された古い世代の秘密鍵がユーザによって廃棄されなかったとしても、秘密鍵の管理がユーザの手作業によって行われていると、公開鍵暗号通信における利便性を維持することができず、また、ユーザによる操作ミスを原因として秘密鍵が漏洩または紛失されるリスクを回避することができず、結果として、秘密鍵の管理が簡易かつ安全でないという課題がある。
【０００８】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することが可能な公開鍵暗号通信システム、公開鍵暗号通信方法および公開鍵暗号通信プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、データを公開鍵で暗号化した暗号データを送信する送信端末と、当該暗号データを当該送信端末から受信して前記公開鍵とペアとなる秘密鍵で復号する受信端末と、サーバとを含んで構成される公開鍵暗号通信システムであって、前記受信端末は、前記公開鍵および前記秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を前記サーバに送信する公開鍵送信手段と、前記鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵から公開鍵識別子を生成する受信側識別子生成手段と、前記鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理するとともに、当該秘密鍵に対応づけて、前記受信側識別子生成手段によって生成された公開鍵識別子をさらに管理する秘密鍵管理手段と、いずれかの世代の公開鍵によって暗号化された暗号データと、当該公開鍵から生成された公開鍵識別子とを前記送信端末から受信して、前記秘密鍵管理手段によって管理された複数の世代の秘密鍵から当該公開鍵識別子に対応づけられた秘密鍵を取得して当該暗号データを復号するデータ受信復号手段とを備え、前記サーバは、前記受信端末から送信された公開鍵を受信する公開鍵受信手段と、前記公開鍵受信手段によって受信された公開鍵のうち最新の公開鍵のみを管理する公開鍵管理手段と、前記送信端末からの要求に応じて、前記公開鍵管理手段によって管理されている最新の公開鍵を当該送信端末に送信する公開鍵送信手段とを備え、前記送信端末は、データを送信する都度、送信先の受信端末に対応する公開鍵を前記サーバに要求し、当該公開鍵を前記サーバから受信する送信側公開鍵受信手段と、前記送信側公開鍵受信手段によって受信された最新の公開鍵でデータを暗号化するデータ暗号化手段と、前記送信側公開鍵受信手段によって受信された最新の公開鍵から公開鍵識別子を生成する送信側識別子生成手段と、前記データ暗号化手段によって暗号化された暗号データと、前記送信側識別子生成手段によって生成された公開鍵識別子とを当該受信端末に送信するデータ送信手段と、を備えたことを特徴とする。
【００１３】
また、請求項２に係る発明は、上記の発明において、前記秘密鍵管理手段は、前記複数の世代にわたる秘密鍵を当該秘密鍵の更新に係る順番に基づく時系列に管理することを特徴とする。
【００１４】
また、請求項３に係る発明は、上記の発明において、前記秘密鍵管理手段は、ひとつまたは複数個の秘密鍵を新たに管理する場合に、当該秘密鍵の更新に係る順番に基づく時系列で古い方からひとつまたは複数個の既に管理されている秘密鍵と置き換えて管理することを特徴とする。
【００１５】
また、請求項４に係る発明は、データを公開鍵で暗号化した暗号データを送信する送信端末と、当該暗号データを当該送信端末から受信して前記公開鍵とペアとなる秘密鍵で復号する受信端末と、サーバとを含んで構成される公開鍵暗号通信方法であって、前記受信端末は、前記公開鍵および前記秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を前記サーバに送信する公開鍵送信工程と、前記鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵から公開鍵識別子を生成する受信側識別子生成工程と、前記鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理するとともに、当該秘密鍵に対応づけて、前記受信側識別子生成工程によって生成された公開鍵識別子をさらに管理する秘密鍵管理工程と、いずれかの世代の公開鍵によって暗号化された暗号データと、当該公開鍵から生成された公開鍵識別子とを前記送信端末から受信して、前記秘密鍵管理工程によって管理された複数の世代の秘密鍵から当該公開鍵識別子に対応づけられた秘密鍵を取得して当該暗号データを復号するデータ受信復号工程とを含み、前記サーバは、前記受信端末から送信された公開鍵を受信する公開鍵受信工程と、前記公開鍵受信工程によって受信された公開鍵のうち最新の公開鍵のみを管理する公開鍵管理工程と、前記送信端末からの要求に応じて、前記公開鍵管理工程によって管理されている最新の公開鍵を当該送信端末に送信する公開鍵送信工程とを含み、前記送信端末は、データを送信する都度、送信先の受信端末に対応する公開鍵を前記サーバに要求し、当該公開鍵を前記サーバから受信する送信側公開鍵受信工程と、前記送信側公開鍵受信工程によって受信された最新の公開鍵でデータを暗号化するデータ暗号化工程と、前記送信側公開鍵受信工程によって受信された最新の公開鍵から公開鍵識別子を生成する送信側識別子生成工程と、前記データ暗号化工程によって暗号化された暗号データと、前記送信側識別子生成工程によって生成された公開鍵識別子とを当該受信端末に送信するデータ暗号化送信工程と、を含んだことを特徴とする。また、請求項５に係る発明は、クライアント端末であって、公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を、最新の公開鍵のみを管理するサーバに送信する公開鍵送信手段と、前記鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵から公開鍵識別子を生成する受信側識別子生成手段と、前記鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理するとともに、当該秘密鍵に対応づけて、前記受信側識別子生成手段によって生成された公開鍵識別子をさらに管理する秘密鍵管理手段と、前記サーバから取得された最新の公開鍵で暗号化された暗号データと、当該公開鍵から生成された公開鍵識別子とを他のクライアント端末から受信して、前記秘密鍵管理手段によって管理された複数の世代の秘密鍵から当該公開鍵識別子に対応づけられた秘密鍵を取得して当該暗号データを復号するデータ受信復号手段と、データを送信する都度、送信先の受信端末に対応する公開鍵を前記サーバに要求し、当該公開鍵を前記サーバから受信する公開鍵受信手段と、前記公開鍵受信手段によって受信された最新の公開鍵でデータを暗号化するデータ暗号化手段と、前記公開鍵受信手段によって受信された最新の公開鍵から公開鍵識別子を生成する送信側識別子生成手段と、前記データ暗号化手段によって暗号化された暗号データと、前記送信側識別子生成手段によって生成された公開鍵識別子とを他のクライアント端末に送信するデータ送信手段と、を備えたことを特徴とする。また、請求項６に係る発明は、クライアントプログラムが、請求項５に記載のクライアント端末としてコンピュータを機能させることを特徴とする。
【発明の効果】
【００１７】
請求項１、４、５または６の発明によれば、データを公開鍵で暗号化した暗号データを送信する送信端末と、暗号データを送信端末から受信して公開鍵とペアとなる秘密鍵で復号する受信端末と、サーバとを含んで構成される公開鍵暗号通信システムであって、受信端末は、公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵をサーバに送信し、鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵から公開鍵識別子を生成し、鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理するとともに、秘密鍵に対応づけて、生成された公開鍵識別子をさらに管理し、いずれかの世代の公開鍵によって暗号化された暗号データと、公開鍵から生成された公開鍵識別子とを送信端末から受信して、管理された複数の世代の秘密鍵から公開鍵識別子に対応づけられた秘密鍵を取得して暗号データを復号し、サーバは、受信端末から送信された公開鍵を受信し、受信された公開鍵のうち最新の公開鍵のみを管理し、送信端末からの要求に応じて、管理されている最新の公開鍵を送信端末に送信し、送信端末は、データを送信する都度、送信先の受信端末に対応する公開鍵を前記サーバに要求し、当該公開鍵を前記サーバから受信し、受信された最新の公開鍵でデータを暗号化し、受信された最新の公開鍵から公開鍵識別子を生成し、暗号化された暗号データと、生成された公開鍵識別子とを受信端末に送信するので、公開鍵および秘密鍵の鍵ペアが更新される度に、古い世代の公開鍵（更新前の公開鍵）とペアで生成された古い世代の秘密鍵（更新前の秘密鍵）が廃棄されないことから、古い世代の公開鍵が利用されて暗号化された暗号データを復号することができ、さらに、秘密鍵の管理がユーザの手作業によって行われないことから、公開鍵暗号通信における利便性を維持することができ、また、ユーザによる操作ミスを原因として秘密鍵が漏洩または紛失されるリスクを回避することができ、これらの結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することが可能になる。また、公開鍵識別子の比較に基づいて公開鍵と秘密鍵との対応関係を短時間で確実に把握することから、本来不必要な復号（正しい復号結果を得られない復号）を発生させないことができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【００１８】
また、本発明によれば、いずれかの世代の秘密鍵とペアとなる公開鍵によって暗号化された暗号データを、複数の世代の秘密鍵から、そのいずれかの世代の秘密鍵を取得して復号することから、正しい復号結果を得ることができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【００２０】
また、本発明によれば、鍵ペア特定情報の比較に基づいて公開鍵と秘密鍵との対応関係を短時間で確実に把握することから、本来不必要な復号（正しい復号結果を得られない復号）を発生させないことができ、また、鍵ペア特定情報が公開鍵とともに公開されることから、送信端末は鍵ペア特定情報を生成せずに鍵ペア特定情報を利用することができ、これらの結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【００２１】
また、請求項２の発明によれば、受信端末は、複数の世代にわたる秘密鍵を秘密鍵の更新に係る順番に基づく時系列に管理するので、鍵ペアの生成時刻などの順番に基づいて管理することから、鍵ペアの生成時刻などの順番に基づいた処理を行うことができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【００２２】
また、請求項３の発明によれば、受信端末は、ひとつまたは複数個の秘密鍵を新たに管理する場合に、秘密鍵の更新に係る順番に基づく時系列で古い方からひとつまたは複数個の既に管理されている秘密鍵と置き換えて管理するので、複数の世代にわたる秘密鍵の新しい方を優先的に管理することから、暗号データを復号できる確率を高めることができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、この発明に係る公開鍵暗号通信システム、公開鍵暗号通信方法および公開鍵暗号通信プログラムの実施例を詳細に説明する。なお、以下では、実施例で用いる主要な用語、実施例１に係る公開鍵暗号通信システムの概要および特徴、実施例１に係る公開鍵暗号通信システムの構成および処理の流れ、実施例１の効果を順に説明し、次に、他の実施例を説明する。
【実施例１】
【００２４】
［用語の説明］
まず最初に、以下の実施例で用いる主要な用語を説明する。以下の実施例で用いる「公開鍵暗号通信システム」とは、公開鍵暗号方式を用いた情報通信を実現するシステムのことである。ここで、公開鍵暗号方式とは、公開鍵および秘密鍵と呼ばれるペアとなる鍵（データ）を用いて、秘匿性が要求されるデータを暗号化または復号する方式である。具体的には、秘匿性が要求される平文データが公開鍵で暗号化されて暗号データとなり、この暗号データを、平文データを暗号化した公開鍵とペアとなる秘密鍵で復号する。
【００２５】
このような公開鍵暗号方式を用いた情報通信は、平文データを公開鍵で暗号化した暗号データを送信する送信端末と、この暗号データを送信端末から受信して公開鍵とペアとなる秘密鍵で復号する受信端末とで構成されるシステムにおいて、送信端末と受信端末とが直接的に公開鍵その他のデータを送受信する方法で実現することが可能であり、また、平文データを公開鍵で暗号化した暗号データを送信する送信クライアント（特許請求の範囲に記載の「送信端末」に対応する）と、この暗号データを送信クライアントから受信して公開鍵とペアとなる秘密鍵で復号する受信クライアント（特許請求の範囲に記載の「受信端末」に対応する）と、公開鍵を公開するサーバとで構成されるシステムにおいて、送信クライアントと受信クライアントとがサーバを経由して間接的に公開鍵その他のデータを送受信する方法で実現することも可能である。
【００２６】
さらに、このような公開鍵暗号方式を用いた情報通信は、受信端末において鍵ペアを生成（および更新）することが一般的ではあるが、必ずしも必須ではなく、別途、鍵ペアを生成（および更新）する機能を有する端末が生成（更新）した鍵ペアを、ＩＣカード等の媒体によって受信端末に入力することで、受信端末が鍵ペアを保有することも可能である。
【００２７】
なお、以下では、公開鍵暗号通信システムの構成として、送信クライアントと、受信クライアントと、サーバとで構成されるシステムを前提とし、また、鍵ペアを生成（および更新）する端末として、受信クライアントを前提とする。
【００２８】
［実施例１に係る公開鍵暗号通信システムの概要および特徴］
続いて、図１を用いて、実施例１に係る公開鍵暗号通信システムの概要および特徴を説明する。図１は、実施例１に係る公開鍵暗号通信システムの概要および特徴を説明するための図である。
【００２９】
実施例１に係る公開鍵暗号通信システムは、上記したように、平文データを公開鍵で暗号した暗号データを送信する送信クライアントと、この暗号データを送信クライアントから受信して公開鍵とペアとなる秘密鍵で復号する受信クライアントとを含んで構成されることを概要とし、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することを主たる特徴とする。なお、以下では、受信クライアントが鍵ペアを更新して秘密鍵を管理するまでの段階、送信クライアントが平文データを暗号化してサーバに送信するまでの段階、および、受信クライアントがサーバから暗号データを受信して復号するまでの段階の３つの段階に分けて、実施例１に係る公開鍵暗号通信システムの主たる特徴を説明する。
【００３０】
まず、受信クライアントが鍵ペアを更新して秘密鍵を管理するまでの段階について説明すると、図１に示すように、実施例１における受信クライアントは、最初に、公開鍵および秘密鍵の鍵ペアを更新する（図１の（１）を参照）。ここで、実施例１において更新された鍵ペアは、３回目に生成された鍵ペア（第３世代の鍵ペア）であるので、公開鍵を「PubKey_A03」と表し、秘密鍵を「PrvKey_A03」と表すこととする。次に、受信クライアントは、サーバに保管し公開してもらうことを目的として、公開鍵（PubKey_A03）をサーバに送信する（図１の（２）を参照）。すると、サーバは、受信クライアントから公開鍵（PubKey_A03）を受信し、これを保管する（図１の（３）を参照）。
【００３１】
一方、実施例１における受信クライアントは、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理する（図１の（４）を参照）。ここで、実施例１における受信クライアントは、複数の世代にわたる秘密鍵を、秘密鍵の更新に係る順番に基づく時系列に管理する。例えば、受信クライアントは、秘密鍵の時系列情報として秘密鍵の生成時刻を利用し、生成時刻の順番に基づいて管理する。図１の（４）に示すように、新たに更新された鍵ペアの秘密鍵（PrvKey_A03）の生成時刻は「2006/01/17 11:29:51」であり、他の２つの秘密鍵の生成時刻よりも新しい時刻であるので、受信クライアントは、第３世代の秘密鍵（PrvKey_A03）を他の２つの秘密鍵に続いて管理する。
【００３２】
続いて、送信クライアントが平文データを暗号化してサーバに送信するまでの段階について説明すると、実施例１における送信クライアントは、最初に、公開鍵を公開するサーバに対して、暗号データを送信したい通信相手が公開している公開鍵を要求する。ここでは、暗号データを送信したい通信相手は「Ａ」であるので、Ａの公開鍵を要求する（図１の（５）を参照）。
【００３３】
次に、送信クライアントは、受信クライアントＡの第３世代の公開鍵（PubKey_A03）をサーバから受信する（図１の（６）を参照）。そして、送信クライアントは、平文データを第３世代の公開鍵で暗号化し（図１の（７）を参照）、暗号化した暗号データをサーバに送信する（図１の（８）を参照）。すると、サーバは、送信クライアントから送信された暗号データを保管する（図１の（９）を参照）。
【００３４】
続いて、受信クライアントがサーバから暗号データを受信して復号するまでの段階について説明すると、実施例１における受信クライアントは、第３世代の公開鍵によって暗号化された暗号データを、送信クライアントからサーバ経由で受信する（図１の（１０）を参照）。なお、サーバ経由で受信するとは、送信クライアントから送信された暗号データをサーバが保管し、サーバが保管する受信クライアント宛の暗号データを受信クライアントが受信することである。
【００３５】
そして、受信クライアントは、管理された複数の世代の秘密鍵から秘密鍵を取得して、受信した暗号データを復号する（図１の（１１）を参照）。ここで、実施例１における受信クライアントは、所定の終了命令を受け付けるまで、もしくは、管理された複数の世代の秘密鍵の全てで復号し終えるまで、秘密鍵を順に取得して暗号データを復号する。すなわち、ここでは、管理された複数の世代の秘密鍵の全てで復号し終えるまで秘密鍵を順に取得して暗号データを復号するので、第１世代の秘密鍵（PrvKey_A01）、第２世代の秘密鍵（PrvKey_A02）、および、第３世代の秘密鍵（PrvKey_A03）の全てで復号し終えるまで、第３世代の秘密鍵（PrvKey_A03）、第２世代の秘密鍵（PrvKey_A02）、第１世代の秘密鍵（PrvKey_A01）を順に取得して暗号データを復号する。こうして、第３世代の秘密鍵とペアとなる第３世代の公開鍵によって暗号化された暗号データを、複数の世代の秘密鍵から取得して復号することから、正しい復号結果を得ることができる。
【００３６】
ところで、上記では、第３世代の公開鍵（PubKey_A03）によって暗号化された暗号データを復号する場合を説明したが、例えば、送信クライアントが過去に入手した第１世代の公開鍵（PubKey_A01）もしくは第２世代の公開鍵（PubKey_A02）で平文データを暗号化した場合であっても、同様に、正しい復号結果を得ることができる。すなわち、実施例１に係る受信クライアントは、第１世代の秘密鍵（PrvKey_A01）、第２世代の秘密鍵（PrvKey_A02）、および、第３世代の秘密鍵（PrvKey_A03）の全てで復号し終えるまで、第３世代の秘密鍵（PrvKey_A03）、第２世代の秘密鍵（PrvKey_A02）、第１世代の秘密鍵（PrvKey_A01）を順に取得して暗号データを復号するので、第１世代の公開鍵（PubKey_A01）によって暗号化された暗号データは、取得された第１世代の秘密鍵（PrvKey_A01）で復号することで正しい復号結果を得ることができ、また、第２世代の公開鍵（PubKey_A02）によって暗号化された暗号データは、取得された第２世代の秘密鍵（PrvKey_A02）で復号することで正しい復号結果を得ることができる。
【００３７】
このようなことから、実施例１に係る公開鍵暗号通信システムは、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【００３８】
［実施例１に係る公開鍵暗号通信システムの構成］
続いて、図２〜図６を用いて、実施例１に係る公開鍵暗号通信システムの構成を説明する。図２は、実施例１における受信クライアントおよび送信クライアントの構成を示すブロック図であり、図３は、実施例１における秘密鍵保管部を説明するための図であり、図４は、実施例１におけるサーバの構成を示すブロック図であり、図５は、実施例１における公開鍵保管部を説明するための図であり、図６は、実施例１におけるデータ保管部を説明するための図である。
【００３９】
［クライアントの構成］
まず、図２では、平文データを公開鍵で暗号化した暗号データを送信する送信クライアントと、暗号データを送信クライアントから受信して公開鍵とペアとなる秘密鍵で復号する受信クライアントとを、同じ端末で実現する（ひとつの端末が送信クライアントの機能および受信クライアントの機能の双方を備える）ことを前提とし、このような端末を「クライアント」と呼ぶことにする。図２に示すように、実施例１におけるクライアント１００は、秘密鍵管理部１１０と、データ受信復号部１２０と、データ暗号化送信部１３０とから主に構成される。
【００４０】
秘密鍵管理部１１０は、公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理する手段であり、特にこの発明に密接に関連するものとしては、図２に示すように、鍵ペア生成部１１１と、公開鍵送信部１１２と、秘密鍵保管部１１３とを備える。なお、秘密鍵管理部１１０は、特許請求の範囲に記載の「秘密鍵管理手段」に対応する。
【００４１】
かかる秘密鍵管理部１１０のなかで、鍵ペア生成部１１１は、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵および秘密鍵からなる鍵ペアを生成（更新）する手段である。具体的には、鍵ペア生成部１１１は、ユーザの公開鍵および秘密鍵からなる鍵ペアを生成（更新）し、生成した公開鍵を公開鍵送信部１１２に送信し、生成した秘密鍵を秘密鍵保管部１１３に送信する。例えば、実施例１における鍵ペア生成部１１１は、公開鍵暗号方式としてＲＳＡ（Rivest Shamir Adleman）を採用し、鍵ペアの暗号強度として１，０２４ｂｉｔを採用して、鍵ペアを生成（更新）する。また、実施例１における鍵ペア生成部１１１は、複数の世代にわたる秘密鍵が秘密鍵の更新に係る順番に基づく時系列に管理されるための時系列情報として鍵ペアの生成時刻情報を、秘密鍵とともに秘密鍵保管部１１３に送信する。
【００４２】
なお、実施例１では、公開鍵暗号方式としてＲＳＡを採用する場合を説明したが、この発明はこれに限定されるものではなく、楕円曲線暗号方式を採用する場合や、ＥｌＧａｍａｌ暗号方式を採用する場合など、いずれでもよい。また、実施例１では、鍵ペアの暗号強度として１，０２４ｂｉｔを採用する場合を説明したが、他の強度でもよい。また、暗号強度の選択方法としては、プログラムにハードコーディングすることも、鍵ペア生成時に選択することも可能である。また、実施例１では、時系列情報として鍵ペアの生成時刻情報を用いる場合を説明したが、この発明はこれに限定されるものではなく、公開鍵がサーバ２００に保管された時刻情報を用いるなど、秘密鍵の更新に係る順番に基づく時系列に管理されるための情報であれば、いずれでもよい。
【００４３】
公開鍵送信部１１２は、鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵をサーバ２００に送信する手段である。具体的には、公開鍵送信部１１２は、鍵ペア生成部１１１で鍵ペアが生成（更新）される度に、新たに更新されて公開鍵送信部１１２に送信された鍵ペアの公開鍵を、後述するサーバ２００の公開鍵受信部２１１に送信する。例えば、実施例１における公開鍵送信部１１２は、新たに更新されて公開鍵送信部１１２に送信された鍵ペアの公開鍵を、ユーザを識別するためのユーザ識別子とともにサーバ２００の公開鍵受信部２１１に送信する。具体的な送信方法について例を挙げると、公開鍵とユーザ識別子とをデリミタ（例えば、ＣＲＬＦなど）で区切ったデータを、ＨＴＴＰ（HyperText Transfer Protocol）メッセージのボディ部に載せて送信する。なお、公開鍵送信部１１２は、サーバ２００との間の通信プロトコルとして、ＨＴＴＰ／１．１とＨＴＴＰＳ（HyperText Transfer Protocol Security）（ＳＳＬ（Secure Socket Layer）ｖ３）とを組み合わせて使用する。
【００４４】
秘密鍵保管部１１３は、鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を保管する手段である。具体的には、秘密鍵保管部１１３は、鍵ペア生成部１１１で鍵ペアが生成（更新）される度に、新たに更新されて秘密鍵保管部１１３に送信された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を保管する。また、実施例１における秘密鍵保管部１１３は、複数の世代にわたる秘密鍵を、秘密鍵の更新に係る順番に基づく時系列に保管する。さらに、実施例１における秘密鍵保管部１１３は、ひとつまたは複数個の秘密鍵を新たに管理する場合に、秘密鍵の更新に係る順番に基づく時系列で古い方からひとつまたは複数個の既に管理されている秘密鍵と置き換えて保管する。
【００４５】
例えば、実施例１における秘密鍵保管部１１３は、鍵ペア生成部１１１から、秘密鍵を時系列に保管するための時系列情報として鍵ペアの生成時刻情報を、秘密鍵とともに受信し、図３に示すように、この生成時刻情報と秘密鍵とを対応づけて保管する。ここで、図３の「PrvKey_A01」とは、「ユーザＡの第１世代の秘密鍵」であることを表している。すなわち、図３において、鍵は「XXXKey_YZZ」の書式で表され、「XXX」は、公開鍵ならば「Pub」で表され、秘密鍵ならば「Prv」で表され、「Y」は、ユーザＡなら「A」で表され、「ZZ」は、鍵の世代数が表される。また、図３に示すように、実施例１における秘密鍵保管部１１３は、第１世代の秘密鍵（PrvKey_A01）、第２世代の秘密鍵（PrvKey_A02）、および、第３世代の秘密鍵（PrvKey_A03）を保管している。なお、秘密鍵保管部１１３は、鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵（例えば、第４世代の秘密鍵など）を含む複数の世代にわたる秘密鍵を保管する。また、実施例１では、秘密鍵をそのまま保管する場合を説明したが、この発明はこれに限定されるものではなく、秘密鍵を暗号化してから保管するなどしてもよい。
【００４６】
ここで、図２に戻ると、データ受信復号部１２０は、いずれかの世代の公開鍵によって暗号化された暗号データを送信クライアント１００から受信して、秘密鍵管理部１１０によって管理された複数の世代の秘密鍵から秘密鍵を取得して暗号データを復号する手段であり、特にこの発明に密接に関連するものとしては、図２に示すように、データ受信部１２１と、秘密鍵取得部１２２と、データ復号部１２３とを備える。なお、データ受信復号部１２０は、特許請求の範囲に記載の「データ受信復号手段」に対応する。
【００４７】
かかるデータ受信復号部１２０のなかで、データ受信部１２１は、いずれかの世代の公開鍵によって暗号化された暗号データを送信クライアント１００から受信する手段である。具体的には、データ受信部１２１は、後述するサーバ２００のデータ保管部２２２に保管されたいずれかの世代の公開鍵によって暗号化された暗号データを、後述するサーバ２００のデータ送信部２２３経由で送信クライアント１００から受信し、データ復号部１２３に送信する。例えば、実施例１におけるデータ受信部１２１は、ユーザを識別するためのユーザ識別子（例えば、UserＡなど）をサーバ２００のデータ送信部２２３に通知することで、ユーザＡ宛の暗号データを受信する。なお、データ受信部１２１は、サーバ２００との間の通信プロトコルとして、ＨＴＴＰ／１．１とＨＴＴＰＳ（ＳＳＬｖ３）とを組み合わせて使用する。
【００４８】
秘密鍵取得部１２２は、複数の世代の秘密鍵から秘密鍵を取得する手段である。具体的には、秘密鍵取得部１２２は、秘密鍵保管部１１３によって保管された複数の世代の秘密鍵から秘密鍵を取得して、データ復号部１２３に送信する。また、実施例１における秘密鍵取得部１２２は、複数の世代の秘密鍵の全てで復号し終えるまで、秘密鍵を順に取得する。例えば、実施例１における秘密鍵取得部１２２は、第１世代の秘密鍵（PrvKey_A01）、第２世代の秘密鍵（PrvKey_A02）、および、第３世代の秘密鍵（PrvKey_A03）の全てで復号し終えるまで、第３世代の秘密鍵（PrvKey_A03）、第２世代の秘密鍵（PrvKey_A02）、第１世代の秘密鍵（PrvKey_A01）を生成時刻の新しい順に取得する。なお、実施例１では、生成時刻の新しい順に秘密鍵を取得する場合を説明したが、この発明はこれに限られるものではなく、正しい復号結果が得られる可能性が高い順に秘密鍵を取得する場合など、いずれでもよい。
【００４９】
データ復号部１２３は、取得された秘密鍵で暗号データを復号する手段である。具体的には、データ復号部１２３は、秘密鍵取得部１２２によって取得された秘密鍵で、データ受信部１２１から送信された暗号データを復号する。また、実施例１におけるデータ復号部１２３は、複数の世代の秘密鍵の全てで復号し終えるまで、順に取得された秘密鍵で暗号データを復号する。例えば、実施例１におけるデータ復号部１２３は、第１世代の秘密鍵（PrvKey_A01）、第２世代の秘密鍵（PrvKey_A02）、および、第３世代の秘密鍵（PrvKey_A03）の全てで復号し終えるまで、生成時刻の新しい順に取得された第３世代の秘密鍵（PrvKey_A03）、第２世代の秘密鍵（PrvKey_A02）、第１世代の秘密鍵（PrvKey_A01）で暗号データを復号する。
【００５０】
データ暗号化送信部１３０は、平文データをいずれかの世代の公開鍵で暗号化した暗号データを受信クライアント１００に送信する手段であり、特にこの発明に密接に関連するものとしては、図２に示すように、公開鍵受信部１３１と、データ暗号化部１３２と、データ送信部１３３とを備える。なお、データ暗号化送信部１３０は、特許請求の範囲に記載の「データ暗号化送信手段」に対応する。
【００５１】
かかるデータ暗号化送信部１３０のなかで、公開鍵受信部１３１は、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵をサーバ２００に要求してサーバ２００から受信する手段である。具体的には、公開鍵受信部１３１は、ユーザの公開鍵を、後述するサーバ２００の公開鍵送信部２１３に要求して公開鍵送信部２１３から受信し、データ暗号化部１３２に送信する。例えば、実施例１における公開鍵受信部１３１は、ユーザを識別するためのユーザ識別子をサーバ２００の公開鍵送信部２１３に送信して、このユーザ識別子に対応づけられた、いずれかの世代の公開鍵を要求する。なお、公開鍵受信部１３１は、サーバ２００との間の通信プロトコルとしてＨＴＴＰ／１．１とＨＴＴＰＳ（ＳＳＬｖ３）とを組み合わせて使用する。
【００５２】
データ暗号化部１３２は、平文データをいずれかの世代の公開鍵で暗号化する手段である。具体的には、データ暗号化部１３２は、平文データを公開鍵受信部１３１から受信したいずれかの世代の公開鍵で暗号化し、暗号化した暗号データをデータ送信部１３３に送信する。
【００５３】
データ送信部１３３は、いずれかの世代の公開鍵で暗号化された暗号データをサーバ２００に送信する手段である。具体的には、データ送信部１３３は、データ暗号化部１３２で暗号化された暗号データを受信し、後述するサーバ２００のデータ受信部２２１に送信する。なお、データ送信部１３３は、サーバ２００との間の通信プロトコルとしてＨＴＴＰ／１．１とＨＴＴＰＳ（ＳＳＬｖ３）とを組み合わせて使用する。
【００５４】
［サーバの構成］
続いて、図４に示すように、実施例１におけるサーバ２００は、公開鍵管理部２１０と、データ送受信部２２０とから主に構成される。
【００５５】
公開鍵管理部２１０は、受信クライアント１００において公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を受信クライアント１００から受信して管理する手段であり、特にこの発明に密接に関連するものとしては、図４に示すように、公開鍵受信部２１１と、公開鍵保管部２１２と、公開鍵送信部２１３とを備える。
【００５６】
かかる公開管理部２１０のなかで、公開鍵受信部２１１は、受信クライアント１００において公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を受信クライアント１００から受信する手段である。具体的には、公開鍵受信部２１１は、受信クライアント１００において公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を受信クライアント１００の公開鍵送信部１１２から受信し、公開鍵保管部２１２に送信する。例えば、実施例１における公開鍵受信部２１１は、受信クライアント１００の公開鍵送信部１１２から、公開鍵（例えば、PubKey_A03など）とともにユーザ識別子（例えば、UserAなど）を受信し、公開鍵とともにユーザ識別子を公開鍵保管部２１２に送信する。なお、公開鍵受信部２１１は、受信クライアント１００との間の通信プロトコルとして、ＨＴＴＰ／１．１とＨＴＴＰＳ（ＳＳＬｖ３）とを組み合わせて使用する。
【００５７】
公開鍵保管部２１２は、受信クライアント１００から受信された公開鍵を保管する手段である。具体的には、公開鍵保管部２１２は、受信クライアント１００から受信された公開鍵を公開鍵受信部２１１から受信し、保管する。また、公開鍵送信部２１３において送信クライアント１００から公開鍵送信の要求を受け付け、これが公開鍵保管部２１２に通知されると、公開鍵保管部２１２は、保管する公開鍵を公開鍵送信部２１３に送信する。
【００５８】
例えば、実施例１における公開鍵保管部２１２は、公開鍵受信部２１１によって受信クライアント１００から受信された公開鍵（例えば、PubKey_A03など）とユーザ識別子（例えば、UserAなど）とを公開鍵受信部２１１から受信し、図５に示すように公開鍵（PubKey_A03）とユーザ識別子（UserA）とを対応づけて保管する。また、公開鍵送信部２１３において送信クライアント１００からユーザ識別子（例えば、UserAなど）を受信して、ユーザＡのいずれかの世代の公開鍵送信要求を受け付け、このユーザ識別子（UserA）が公開鍵保管部２１２に通知されると、公開鍵保管部２１２は、ユーザ識別子（UserA）をキーにして公開鍵を検索し、ユーザ識別子（UserA）に対応づけられた公開鍵（PubKey_A03）を公開鍵送信部２１３に送信する。なお、実施例１における公開鍵保管部２１２は、図５に示すように、公開鍵を公開鍵受信時刻と対応づけて時系列に保管し、１ユーザにつきＭ個（Ｍは自然数）まで保管して、最新の公開鍵を公開鍵送信部２１３に送信するが、この発明はこれに限定されるものではなく、時系列で保管しない場合や、１ユーザにつき１個しか保管しない場合や、最新以外の公開鍵を含めて全ての公開鍵を送信する場合など、いずれでもよい。また、実施例１では、公開鍵をそのまま保管する場合を説明したが、この発明はこれに限定されるものではなく、公開鍵を暗号化してから保管するなどしてもよい。
【００５９】
公開鍵送信部２１３は、送信クライアント１００から、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵送信要求を受け付け、送信クライアント１００に送信する手段である。具体的には、公開鍵送信部２１３は、送信クライアント１００の公開鍵受信部１３１から公開鍵送信要求を受け付け、これを公開鍵保管部２１２に通知し、公開鍵保管部２１２から受信する公開鍵を送信クライアント１００の公開鍵受信部１３１に送信する。例えば、実施例１における公開鍵送信部２１３は、送信クライアント１００からユーザ識別子（例えば、UserAなど）を受信して、公開鍵送信の要求を受け付ける。そして、公開鍵送信部２１３は、ユーザ識別子（UserA）を公開鍵保管部２１２に通知し、公開鍵保管部２１２からユーザ識別子（UserA）に対応づけられた公開鍵（PubKey_A03）を受信して、送信クライアント１００の公開鍵受信部１３１に送信する。なお、公開鍵送信部２１３は、送信クライアント１００との間の通信プロトコルとして、ＨＴＴＰ／１．１とＨＴＴＰＳ（ＳＳＬｖ３）とを組み合わせて使用する。
【００６０】
データ送受信部２２０は、いずれかの世代の公開鍵で暗号化された暗号データを送信クライアント１００から受信し、受信クライアント１００に送信する手段であり、特にこの発明に密接に関連するものとしては、図４に示すように、データ受信部２２１と、データ保管部２２２と、データ送信部２２３と、暗号データファイル部２２４とを備える。
【００６１】
かかるデータ送受信部２２０のなかで、データ受信部２２１は、平文データがいずれかの世代の公開鍵で暗号化された暗号データを送信クライアント１００から受信する手段である。具体的には、データ受信部２２１は、平文データがいずれかの世代の公開鍵で暗号化された暗号データを送信クライアント１００のデータ送信部１３３から受信し、暗号データに係る情報をデータ保管部２２２に送信する。例えば、実施例１におけるデータ受信部２２１は、平文データがユーザ（例えば、ユーザＡなど）のいずれかの世代の公開鍵で暗号化された暗号データとともに、ユーザ識別子（UserA）を送信クライアント１００のデータ送信部１３３から受信し、暗号データを暗号データファイル部２２４に保存する。その際、暗号データのファイル名は、「nnn_yymmdd-hhss.dat」形式で表し、ユーザ名「nnn」と、暗号データ受信時刻「yymmdd-hhss」とを使用することで、サーバ２００内部で一意になるようにファイル名を付与する。そして、データ受信部２２１は、暗号データに係る情報として、この暗号データのファイル名とユーザ識別子とを、データ保管部２２２に送信する。なお、データ受信部２２１は、送信クライアント１００との間の通信プロトコルとして、ＨＴＴＰ／１．１とＨＴＴＰＳ（ＳＳＬｖ３）とを組み合わせて使用する。
【００６２】
データ保管部２２２は、送信クライアント１００から受信した暗号データに係る情報を保管する手段である。具体的には、データ保管部２２２は、データ受信部２２１が送信クライアント１００から受信した暗号データに係る情報を保管し、データ送信部２２３に送信する。例えば、実施例１におけるデータ保管部２２２は、データ受信部２２１から暗号データのファイル名とユーザ識別子とを受信し、図６に示すように、ファイル名とユーザ識別子とを対応づけて保管する。そして、データ送信部２２３から受信したユーザ識別子をキーにしてファイル名を検索し、ユーザ識別子に対応づけられた暗号データのファイル名を取得し、データ送信部２２３に送信する。なお、実施例１では、データ保管部２２２に暗号データに係る情報のみを保管する場合を説明したが、この発明はこれに限定されるものではなく、データ保管部２２２に暗号データ自体を保管する場合など、いずれでもよい。
【００６３】
データ送信部２２３は、サーバ２００において保管される暗号データを、受信クライアント１００に送信する手段である。具体的には、データ送信部２２３は、データ保管部２２２から受信した暗号データに係る情報に基づいて、暗号データファイル部２２４に保管する暗号データファイルを、受信クライアント１００のデータ受信部１２１に送信する。例えば、実施例１におけるデータ送信部２２３は、受信クライアント１００のデータ受信部１２１から受信したユーザ識別子をデータ保管部２２２に送信し、データ保管部２２２からユーザ識別子に対応する暗号データファイル名を受信し、暗号データファイル部２２４からこの暗号データファイル名に対応する暗号データファイルを取得して、受信クライアント１００のデータ受信部１２１に送信する。なお、データ送信部２２３は、受信クライアント１００との間の通信プロトコルとして、ＨＴＴＰ／１．１とＨＴＴＰＳ（ＳＳＬｖ３）とを組み合わせて使用する。
【００６４】
暗号データファイル部２２４は、送信クライアント１００から受信した暗号データを保管する手段である。具体的には、暗号データファイル部２２４は、データ受信部２２１から送信された暗号データファイルを保管し、データ送信部２２３に送信する。
【００６５】
［実施例１に係る公開鍵暗号通信システムによる処理］
次に、図７を用いて、実施例１に係る公開鍵暗号通信システムによる処理を説明する。図７は、実施例１における公開鍵暗号通信処理の流れを示すシーケンス図である。なお、以下では、受信クライアント１００が鍵ペアを更新して秘密鍵を管理するまでの段階（図７の（１）〜（４））、送信クライアント１００が平文データを暗号化してサーバ２００に送信するまでの段階（図７の（５）〜（９））、受信クライアント１００がサーバ２００から暗号データを受信して復号するまでの段階（図７の（１０）〜（１１））の３つの段階に分けて、実施例１に係る公開鍵暗号通信システムによる処理を説明する。
【００６６】
まず、受信クライアント１００が鍵ペアを更新して秘密鍵を管理するまでの段階について説明すると、図７に示すように、実施例１における受信クライアント１００は、鍵ペア生成部１１１において、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵および秘密鍵からなる鍵ペアを生成（更新）する（図７の（１）を参照）。
【００６７】
次に、受信クライアント１００は、公開鍵送信部１１２において、新たに更新された鍵ペアの公開鍵を、ユーザを識別するためのユーザ識別子とともにサーバ２００の公開鍵受信部２１１に送信し、公開鍵の保管を要求する（図７の（２）を参照）。
【００６８】
すると、サーバ２００は、公開鍵受信部２１１において、受信クライアント１００から公開鍵とともにユーザ識別子を受信し、これらを公開鍵保管部２１２に送信して、公開鍵とユーザ識別子とを対応づけて保管する（図７の（３）を参照）。
【００６９】
続いて、受信クライアント１００は、秘密鍵保管部１１３において、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を保管する（図７の（４）を参照）。
【００７０】
次に、送信クライアント１００が平文データを暗号化してサーバ２００に送信するまでの段階について説明すると、図７に示すように、実施例１における送信クライアント１００は、公開鍵受信部１３１において、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵を、ユーザ識別子を送信してサーバ２００に要求する（図７の（５）を参照）。
【００７１】
そして、サーバ２００は、公開鍵送信部２１３において、送信クライアント１００から公開鍵送信要求（ユーザ識別子）を受け付け、これを公開鍵保管部２１２に通知し、公開鍵保管部２１２からユーザ識別子に対応づけられた公開鍵を受信して、送信クライアント１００の公開鍵受信部１３１に送信する（図７の（６）を参照）。
【００７２】
続いて、送信クライアント１００は、公開鍵受信部１３１において、ユーザの公開鍵をサーバ２００から受信し、データ暗号化部１３２において、平文データをこの公開鍵で暗号化する（図７の（７）を参照）。
【００７３】
そして、送信クライアント１００は、データ送信部１３３において、データ暗号化部１３２において暗号化された暗号データを、ユーザ識別子とともにサーバ２００のデータ受信部２２１に送信する（図７の（８）を参照）。
【００７４】
すると、サーバ２００は、データ受信部２２１において、平文データがいずれかの世代の公開鍵で暗号化された暗号データとユーザ識別子とを送信クライアントのデータ送信部１３３から受信し、暗号データのファイル名とユーザ識別子とをデータ保管部２２２に送信し、データ保管部２２２において、暗号データのファイル名とユーザ識別子とを対応づけて保管する（図７の（９）を参照）。
【００７５】
次に、受信クライアント１００がサーバ２００から暗号データを受信して復号するまでの段階について説明すると、図７に示すように、受信クライアント１００は、データ受信部１２１において、ユーザ識別子をサーバ２００のデータ送信部２２３に通知することで、暗号データを受信する（図７の（１０）を参照）。
【００７６】
そして、受信クライアント１００は、複数の世代の秘密鍵の全てで復号し終えるまで、秘密鍵取得部１２２において、秘密鍵保管部１１３によって保管された複数の世代の秘密鍵から秘密鍵を取得してデータ復号部１２３に送信し、データ復号部１２３において、取得された秘密鍵で暗号データを復号する（図７の（１１）を参照）。
【００７７】
なお、上記では、サーバ２００が公開鍵を保管した後に、受信クライアント１００が秘密鍵を管理する場合を説明したが、この発明はこれに限定されるものではなく、受信クライアント１００が秘密鍵を管理した後に、サーバ２００が公開鍵を保管する場合にも、本発明を同様に適用することができる。また、上記では、サーバ２００が新たに更新された公開鍵を保管した後に、送信クライアント１００が公開鍵を要求する場合を説明したが、この発明はこれに限定されるものではなく、サーバ２００が新たに更新された公開鍵を保管する前に、送信クライアント１００が公開鍵を要求する場合にも、本発明を同様に適用することができる。
【００７８】
［実施例１の効果］
上記してきたように、実施例１によれば、平文データを公開鍵で暗号化した暗号データを送信する送信端末と、暗号データを送信端末から受信して公開鍵とペアとなる秘密鍵で復号する受信端末とを含んで構成される公開鍵暗号通信システムであって、受信端末は、公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理し、いずれかの世代の公開鍵によって暗号化された暗号データを送信端末から受信して、管理された複数の世代の秘密鍵から秘密鍵を取得して暗号データを復号し、送信端末は、平文データをいずれかの世代の公開鍵で暗号化した暗号データを受信端末に送信するので、公開鍵および秘密鍵の鍵ペアが更新される度に、古い世代の公開鍵（更新前の公開鍵）とペアで生成された古い世代の秘密鍵（更新前の秘密鍵）が廃棄されないことから、古い世代の公開鍵が利用されて暗号化された暗号データを復号することができ、さらに、秘密鍵の管理がユーザの手作業によって行われないことから、公開鍵暗号通信における利便性を維持することができ、また、ユーザによる操作ミスを原因として秘密鍵が漏洩または紛失されるリスクを回避することができ、これらの結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【００７９】
また、実施例１によれば、受信端末は、所定の終了命令を受け付けるまで、もしくは、管理された複数の世代の秘密鍵の全てで復号し終えるまで、秘密鍵を順に取得して暗号データを復号するので、いずれかの世代の秘密鍵とペアとなる公開鍵によって暗号化された暗号データを、複数の世代の秘密鍵から、そのいずれかの世代の秘密鍵を取得して復号することから、正しい復号結果を得ることができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【００８０】
また、実施例１によれば、受信端末は、複数の世代にわたる秘密鍵を秘密鍵の更新に係る順番に基づく時系列に管理するので、鍵ペアの生成時刻などの順番に基づいて管理することから、鍵ペアの生成時刻などの順番に基づいた処理を行うことができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【００８１】
また、実施例１によれば、受信端末は、ひとつまたは複数個の秘密鍵を新たに管理する場合に、秘密鍵の更新に係る順番に基づく時系列で古い方からひとつまたは複数個の既に管理されている秘密鍵と置き換えて管理するので、複数の世代にわたる秘密鍵の新しい方を優先的に管理することから、暗号データを復号できる確率を高めることができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【実施例２】
【００８２】
ところで、上記の実施例１では、受信クライアント１００が、管理する複数の世代の秘密鍵の全てで復号し終えるまで、秘密鍵を順に取得して暗号データを復号する場合を説明したが、この発明はこれに限定されるものではなく、秘密鍵とペアとなる公開鍵から生成された公開鍵識別子をさらに管理し、この公開鍵識別子に対応づけられた秘密鍵を取得して暗号データを復号する場合にも、この発明を同様に適用することができる。そこで、以下では、実施例２として、秘密鍵とペアとなる公開鍵から生成された公開鍵識別子をさらに管理し、この公開鍵識別子に対応づけられた秘密鍵を取得して暗号データを復号する場合を説明する。
【００８３】
［実施例２に係る公開鍵暗号通信システムの概要および特徴］
まず最初に、図８を用いて、実施例２に係る公開鍵暗号通信システムの概要および特徴を説明する。図８は、実施例２に係る公開鍵暗号通信システムの概要および特徴を説明するための図である。なお、以下では、受信クライアントが鍵ペアを更新して秘密鍵を管理するまでの段階、送信クライアントが平文データを暗号化してサーバに送信するまでの段階、および、受信クライアントがサーバから暗号データを受信して復号するまでの段階の３つの段階に分けて、実施例２に係る公開鍵暗号通信システムの主たる特徴を説明する。
【００８４】
まず、受信クライアントが鍵ペアを更新して秘密鍵を管理するまでの段階について説明すると、図８に示すように、実施例２における受信クライアントは、最初に、公開鍵および秘密鍵の鍵ペアを更新する（図８の（１）を参照）。ここで、実施例２において更新された鍵ペアは、３回目に生成された鍵ペア（第３世代の鍵ペア）であるので、公開鍵を「PubKey_A03」と表し、秘密鍵を「PrvKey_A03」と表すこととする。次に、受信クライアントは、新たに更新された公開鍵（PubKey_A03）を識別するための公開鍵識別子（Ｈ（PubKey_A03））を生成する（図８の（２）を参照）。そして、受信クライアントは、サーバに保管し公開してもらうことを目的として、公開鍵（PubKey_A03）をサーバに送信する（図８の（３）を参照）。すると、サーバは、受信クライアントから公開鍵（PubKey_A03）を受信し、これを保管する（図８の（４）を参照）。
【００８５】
一方、実施例２における受信クライアントは、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理するだけでなく、秘密鍵に対応づけて、秘密鍵とペアとなる公開鍵から生成された公開鍵識別子をさらに管理する（図８の（５）を参照）。
【００８６】
続いて、送信クライアントが平文データを暗号化してサーバに送信するまでの段階について説明すると、実施例２における送信クライアントは、最初に、公開鍵を公開するサーバに対して、暗号データを送信したい通信相手が公開している公開鍵を要求する。ここでは、暗号データを送信したい通信相手は「Ａ」であるので、Ａの公開鍵を要求する（図８の（６）を参照）。
【００８７】
次に、送信クライアントは、受信クライアントＡの第３世代の公開鍵（PubKey_A03）をサーバから受信する（図８の（７）を参照）。そして、送信クライアントは、平文データを第３世代の公開鍵で暗号化する（図８の（８）を参照）。また、送信クライアントは、サーバから受信した公開鍵から公開鍵識別子（Ｈ（PubKey_A03））を生成する（図８の（９）を参照）。そして、送信クライアントは、公開鍵で暗号化した暗号データとともに、公開鍵から生成された公開鍵識別子をサーバに送信する（図８の（１０）を参照）。すると、サーバは、送信クライアントから送信された暗号データと公開鍵識別子とを保管する（図８の（１１）を参照）。
【００８８】
続いて、受信クライアントがサーバから暗号データを受信して復号するまでの段階について説明すると、実施例２における受信クライアントは、第３世代の公開鍵によって暗号化された暗号データとともに、公開鍵から生成された公開鍵識別子（Ｈ（PubKey_A03））を、送信クライアントからサーバ経由で受信する（図８の（１２）を参照）。なお、サーバ経由で受信するとは、送信クライアントから送信された暗号データおよび公開鍵識別子をサーバが保管し、サーバが保管する受信クライアント宛の暗号データおよび公開識別子を受信クライアントが受信することである。
【００８９】
そして、受信クライアントは、管理された複数の世代の秘密鍵から秘密鍵を取得して、受信した暗号データを復号する（図８の（１３）を参照）。ここで、実施例２における受信クライアントは、管理された複数の世代の秘密鍵から、サーバから受信した公開鍵識別子に対応づけられた秘密鍵を取得して暗号データを復号する。すなわち、サーバから受信した公開鍵識別子は「Ｈ（PubKey_A03）」であるので、公開鍵識別子（Ｈ（PubKey_A03））に対応づけられた秘密鍵（PrvKey_A03）を取得して暗号データを復号する。こうして、第３世代の秘密鍵とペアとなる公開鍵によって暗号化された暗号データを、第３世代の公開鍵から生成された公開鍵識別子に対応づけられた秘密鍵を取得して復号するので、公開鍵識別子の比較に基づいて公開鍵と秘密鍵との対応関係を短時間で確実に把握することから、本来不必要な復号（正しい復号結果を得られない復号）を発生させないことができる。
【００９０】
ところで、上記では、第３世代の公開鍵（PubKey_A03）によって暗号化された暗号データを復号する場合を説明したが、例えば、送信クライアントが過去に入手した第１世代の公開鍵（PubKey_A01）もしくは第２世代の公開鍵（PubKey_A02）で平文データを暗号化した場合であっても、同様に、本来不必要な復号を発生させずに正しい復号結果を得ることができる。すなわち、実施例２に係る受信クライアントは、公開鍵によって暗号化された暗号データとともに、公開鍵から生成された公開鍵識別子をさらに受信して、公開鍵識別子に対応づけられた秘密鍵を取得して暗号データを復号するので、受信クライアントは、第１世代の公開鍵（PubKey_A01）によって暗号化された暗号データとともに、第１世代の公開鍵の公開鍵識別子（Ｈ（PubKey_A01））をさらに受信して、公開鍵識別子（Ｈ（PubKey_A01））に対応づけられた秘密鍵（PrvKey_A01）を取得して暗号データを復号するので、本来不必要な復号を発生させずに正しい復号結果を得ることができ、また、受信クライアントは、第２世代の公開鍵（PubKey_A02）によって暗号化された暗号データとともに、第２世代の公開鍵の公開鍵識別子（Ｈ（PubKey_A02））をさらに受信して、公開鍵識別子（Ｈ（PubKey_A02））に対応づけられた秘密鍵（PrvKey_A02）を取得して暗号データを復号するので、本来不必要な復号を発生させずに正しい復号結果を得ることができる。
【００９１】
このようなことから、実施例２に係る公開鍵暗号通信システムは、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【００９２】
［実施例２に係る公開鍵暗号通信システムの構成］
続いて、図９〜図１２を用いて、実施例２に係る公開鍵暗号通信システムの構成を説明する。図９は、実施例１における受信クライアントおよび送信クライアントの構成を示すブロック図であり、図１０は、実施例１における秘密鍵保管部を説明するための図であり、図１１は、実施例１におけるサーバの構成を示すブロック図であり、図１２は、実施例１におけるデータ保管部を説明するための図である。なお、以下では、実施例１に係る公開鍵暗号通信システムと同様に構成される点については、簡単に説明することとする。
【００９３】
[クライアントの構成]
まず、図９に示すように、実施例２におけるクライアント３００は、秘密鍵管理部３１０と、データ受信復号部３２０と、データ暗号化送信部３３０とから主に構成される。
【００９４】
秘密鍵管理部３１０は、公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理する手段であり、特にこの発明に密接に関連するものとしては、図９に示すように、鍵ペア生成部３１１と、公開鍵送信部３１２と、識別子生成部３１３と、秘密鍵保管部３１４とを備える。なお、秘密鍵管理部３１０は、特許請求の範囲に記載の「秘密鍵管理手段」に対応する。
【００９５】
かかる秘密鍵管理部３１０のなかで、鍵ペア生成部３１１は、実施例１における鍵ペア生成部１１１と同様、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵および秘密鍵からなる鍵ペアを生成（更新）する手段である。また、公開鍵送信部３１２は、実施例１における公開鍵送信部１１２と同様、鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵をサーバ４００に送信する手段である。
【００９６】
識別子生成部３１３は、公開鍵を識別するための公開鍵識別子を、秘密鍵とペアとなる公開鍵から生成する手段である。具体的には、識別子生成部３１３は、鍵ペア生成部３１１で鍵ペアが生成（更新）される度に、新たに更新されて識別子生成部３１３に送信された鍵ペアの公開鍵から、公開鍵識別子を生成し、秘密鍵保管部３１４に送信する。例えば、実施例２における識別子生成部３１３は、ハッシュアルゴリズムとしてＳＨＡ−１（Secure Hash Algorithm 1）を用いて公開鍵のハッシュ値を計算することによって、公開鍵識別子を生成する。なお、実施例２では、ハッシュアルゴリズムとしてＳＨＡ−１（Secure Hash Algorithm 1）を用いる場合を説明したが、この発明はこれに限定されるものではなく、ハッシュアルゴリズムとしてＭＤ５（Message Digest 5）を用いる場合や、ＳＨＡ−２を用いる場合など、いずれでもよい。
【００９７】
秘密鍵保管部３１４は、鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を保管するだけでなく、秘密鍵に対応づけて、秘密鍵とペアとなる公開鍵から生成された公開鍵識別子をさらに管理する手段である。具体的には、秘密鍵保管部３１４は、鍵ペア生成部３１１で鍵ペアが生成（更新）される度に、新たに更新されて秘密鍵保管部３１４に送信された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を保管するが、その際に、秘密鍵に対応づけて、識別子生成部３１３から送信された公開鍵識別子をさらに保管する。例えば、実施例２における秘密鍵保管部３１４は、鍵ペア生成部３１１から、秘密鍵を時系列に保管するための時系列情報として鍵ペアの生成時刻情報を、秘密鍵とともに受信し、図１０に示すように、この生成時刻情報と秘密鍵と公開鍵識別子とを対応づけて保管する。
【００９８】
ここで、図９に戻ると、データ受信復号部３２０は、いずれかの世代の公開鍵によって暗号化された暗号データを送信クライアント３００から受信して、秘密鍵管理部３１０によって管理された複数の世代の秘密鍵から秘密鍵を取得して暗号データを復号する手段であり、特にこの発明に密接に関連するものとしては、図９に示すように、データ受信部３２１と、秘密鍵取得部３２２と、データ復号部３２３とを備える。なお、データ受信復号部３２０は、特許請求の範囲に記載の「データ受信復号手段」に対応する。
【００９９】
かかるデータ受信復号部３２０のなかで、データ受信部３２１は、いずれかの世代の公開鍵によって暗号化された暗号データを送信クライアント３００から受信するだけでなく、公開鍵によって暗号化された暗号データとともに、公開鍵から生成された公開鍵識別子を送信クライアント３００からさらに受信する手段である。具体的には、データ受信部３２１は、後述するサーバ４００のデータ保管部４２２に保管されたいずれかの世代の公開鍵によって暗号化された暗号データとともに、公開鍵から生成された公開鍵識別子を後述するサーバ４００のデータ送信部４２３経由で送信クライアント３００から受信し、暗号データをデータ復号部３２３に送信し、公開鍵識別子を秘密鍵取得部３２２に送信する。例えば、実施例２におけるデータ受信部３２１は、ユーザを識別するためのユーザ識別子（例えば、UserＡなど）をサーバ４００のデータ送信部４２３に通知することで、ユーザＡ宛の暗号データとともに公開鍵識別子（例えば、Ｈ（PubKey_A03））を受信し、暗号データをデータ復号部３２３に送信し、公開鍵識別子（例えば、Ｈ（PubKey_A03））を秘密鍵取得部３２２に送信する。
【０１００】
秘密鍵取得部３２２は、複数の世代の秘密鍵から公開鍵識別子に対応づけられた秘密鍵を取得する手段である。具体的には、秘密鍵取得部３２２は、秘密鍵保管部３１４によって保管された複数の世代の秘密鍵から、データ受信部３２１から送信された公開鍵識別子（例えば、Ｈ（PubKey_A03））に対応づけられた秘密鍵を取得し、データ復号部３２３に送信する。例えば、実施例２における秘密鍵取得部３２２は、データ受信部３２１から公開鍵識別子としてＨ（PubKey_A03）を受信すると、Ｈ（PubKey_A03）をキーにして秘密鍵を検索し、Ｈ（PubKey_A03）に対応づけられた秘密鍵（Prvkey_A03）を取得し、データ復号部３２３に送信する。
【０１０１】
データ復号部３２３は、取得された秘密鍵で暗号データを復号する手段である。具体的には、データ復号部３２３は、秘密鍵取得部３２２によって取得された秘密鍵で、データ受信部３２１から送信された暗号データを復号する。
【０１０２】
データ暗号化送信部３３０は、平文データをいずれかの世代の公開鍵で暗号化した暗号データを受信クライアント３００に送信する手段であり、特にこの発明に密接に関連するものとしては、図９に示すように、公開鍵受信部３３１と、識別子生成部３３２と、データ暗号化部３３３と、データ送信部３３４とを備える。なお、データ暗号化送信部３３０は、特許請求の範囲に記載の「データ暗号化送信手段」に対応する。
【０１０３】
かかるデータ暗号化送信部３３０のなかで、公開鍵受信部３３１は、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵をサーバ４００に要求してサーバ４００から受信する手段である。具体的には、公開鍵受信部３３１は、ユーザの公開鍵を、後述するサーバ４００の公開鍵送信部４１３に要求して公開鍵送信部から受信し、識別子生成部３３２およびデータ暗号化部３３３に送信する。
【０１０４】
識別子生成部３３２は、公開鍵を識別するための公開鍵識別子を、秘密鍵とペアとなる公開鍵から生成する手段である。具体的には、識別子生成部３３２は、公開鍵受信部３３１から送信された公開鍵から、公開鍵識別子を生成し、データ送信部３３４に送信する。
例えば、実施例２における識別子生成部３３２は、ハッシュアルゴリズムとしてＳＨＡ−１（Secure Hash Algorithm 1）を用いて公開鍵のハッシュ値を計算することによって、公開鍵識別子を生成する。なお、実施例２では、ハッシュアルゴリズムとしてＳＨＡ−１（Secure Hash Algorithm 1）を用いる場合を説明したが、この発明はこれに限定されるものではなく、ハッシュアルゴリズムとしてＭＤ５（Message Digest 5）を用いる場合や、ＳＨＡ−２を用いる場合など、いずれでもよい。
【０１０５】
データ暗号化部３３３は、実施例１におけるデータ暗号化部１３２と同様、平文データをいずれかの世代の公開鍵で暗号化する手段である。また、データ送信部３３４は、いずれかの世代の公開鍵で暗号化された暗号データをサーバ４００に送信する手段である。具体的には、データ送信部３３４は、データ暗号化部３３３で暗号化された暗号データを受信し、識別子生成部３３２から公開鍵識別子を受信し、後述するサーバ４００のデータ受信部４２１に送信する。
【０１０６】
[サーバの構成]
続いて、図１１に示すように、実施例２におけるサーバ４００は、公開鍵管理部４１０と、データ送受信部４２０とから主に構成される。
【０１０７】
公開鍵管理部４１０は、受信クライアント３００において公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を受信クライアント３００から受信して管理する手段であり、特にこの発明に密接に関連するものとしては、図１１に示すように、公開鍵受信部４１１と、公開鍵保管部４１２と、公開鍵送信部４１３とを備える。
【０１０８】
かかる公開鍵管理部４１０のなかで、公開鍵受信部４１１は、実施例１における公開鍵受信部２１１と同様、受信クライアント３００において公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を受信クライアント３００から受信する手段である。
【０１０９】
公開鍵保管部４１２は、実施例１における公開鍵保管部２１２と同様、受信クライアント３００から受信された公開鍵を保管する手段である。また、公開鍵送信部４１３は、実施例１における公開鍵送信部２１３と同様、送信クライアント３００から、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵送信要求を受け付け、送信クライアント３００に送信する手段である。
【０１１０】
データ送受信部４２０は、いずれかの世代の公開鍵で暗号化された暗号データを送信クライアント３００から受信し、受信クライアント３００に送信する手段であり、特にこの発明に密接に関連するものとしては、図１１に示すように、データ受信部４２１と、データ保管部４２２と、データ送信部４２３と、暗号データファイル部４２４とを備える。
【０１１１】
かかるデータ送受信部４２０のなかで、データ受信部４２１は、平文データがいずれかの世代の公開鍵で暗号化された暗号データを送信クライアント３００から受信する手段である。具体的には、データ受信部４２１は、平文データがいずれかの世代の公開鍵で暗号化された暗号データおよび公開鍵識別子を送信クライアント３００のデータ送信部３３３から受信し、暗号データに係る情報および公開鍵識別子をデータ保管部４２２に送信する。
【０１１２】
データ保管部４２２は、送信クライアント３００から受信した暗号データに係る情報および公開鍵識別子を保管する手段である。具体的には、データ保管部４２２は、データ受信部４２１が送信クライアント３００から受信した暗号データに係る情報および公開鍵識別子を保管し、データ送信部４２３に送信する。例えば、実施例２におけるデータ保管部４２２は、データ受信部４２１から暗号データのファイル名とユーザ識別子と公開鍵識別子とを受信し、図１２に示すように、ファイル名とユーザ識別子と公開鍵識別子とを対応づけて保管する。そして、データ送信部４２３から受信したユーザ識別子をキーにしてファイル名を検索し、ユーザ識別子に対応づけられた暗号データのファイル名を取得し、データ送信部４２３に、ファイル名および公開鍵識別子を送信する。
【０１１３】
データ送信部４２３は、サーバ４００において保管される暗号データおよび公開鍵識別子を、受信クライアント３００に送信する手段である。具体的には、データ送信部４２３は、データ保管部４２２から受信した暗号データに係る情報に基づいて、暗号データファイル部４２４に保管する暗号データファイルおよび公開鍵識別子を、受信クライアント３００のデータ受信部３２１に送信する。例えば、実施例２におけるデータ送信部４２３は、受信クライアント３００のデータ受信部３２１から受信したユーザ識別子をデータ保管部４２２に送信し、データ保管部４２２からユーザ識別子に対応する暗号データファイル名を受信し、暗号データファイル部４２４からこの暗号データファイル名に対応する暗号データファイルを取得して、さらに、データ保管部４２２から送信された公開鍵識別子とともに、受信クライアント３００のデータ受信部３２１に送信する。また、暗号データファイル部４２４は、実施例１における暗号データファイル部２２４と同様、送信クライアント３００から受信した暗号データを保管する手段である。
【０１１４】
[実施例２に係る公開鍵暗号通信システムによる処理]
次に、図１３を用いて、実施例２に係る公開鍵暗号通信システムによる処理を説明する。図１３は、実施例２における公開鍵暗号通信処理の流れを示すシーケンス図である。なお、以下では、受信クライアント３００が鍵ペアを更新して秘密鍵を管理するまでの段階（図１３の（１）〜（５））、送信クライアント３００が平文データを暗号化してサーバ４００に送信するまでの段階（図１３の（６）〜（１１））、受信クライアント３００がサーバ４００から暗号データを受信して復号するまでの段階（図１３の（１２）〜（１３））の３つの段階に分けて、実施例２に係る公開鍵暗号通信システムによる処理を説明する。
【０１１５】
まず、受信クライアント３００が鍵ペアを更新して秘密鍵を管理するまでの段階について説明すると、図１３に示すように、実施例２における受信クライアント３００は、鍵ペア生成部３１１において、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵および秘密鍵からなる鍵ペアを生成（更新）する（図１３の（１）を参照）。
【０１１６】
次に、受信クライアント３００は、識別子生成部３１３において、新たに更新された鍵ペアの公開鍵から公開鍵識別子を生成する（図１３の（２）を参照）。
【０１１７】
そして、受信クライアント３００は、公開鍵送信部３１２において、新たに更新された鍵ペアの公開鍵を、ユーザを識別するためのユーザ識別子とともにサーバ４００の公開鍵受信部４１１に送信し、公開鍵の保管を要求する（図１３の（３）を参照）。
【０１１８】
すると、サーバ４００は、公開鍵受信部４１１において、受信クライアント３００から公開鍵とともにユーザ識別子を受信し、これらを公開鍵保管部４１２に送信して、公開鍵とユーザ識別子とを対応づけて保管する（図１３の（４）を参照）。
【０１１９】
続いて、受信クライアント３００は、秘密鍵保管部３１４において、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を保管するだけでなく、秘密鍵に対応づけて、秘密鍵とペアとなる公開鍵から生成された公開鍵識別子をさらに保管する（図１３の（５）を参照）。
【０１２０】
次に、送信クライアント３００が平文データを暗号化してサーバ４００に送信するまでの段階について説明すると、図１３に示すように、実施例２における送信クライアント３００は、公開鍵受信部３３１において、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵を、ユーザ識別子を送信してサーバ４００に要求する（図１３の（６）を参照）。
【０１２１】
そして、サーバ４００は、公開鍵送信部４１３において、送信クライアント３００から公開鍵送信要求（ユーザ識別子）を受け付け、これを公開鍵保管部４１２に通知し、公開鍵保管部４１２からユーザ識別子に対応づけられた公開鍵を受信して、送信クライアント３００の公開鍵受信部３３１に送信する（図１３の（７）を参照）。
【０１２２】
続いて、送信クライアント３００は、公開鍵受信部３３１において、ユーザの公開鍵をサーバ４００から受信し、データ暗号化部３３３において、平文データをこの公開鍵で暗号化する（図１３の（８）を参照）。
【０１２３】
次に、送信クライアント３００は、識別子生成部３３２において、サーバ４００から受信した公開鍵から公開鍵識別子を生成する（図１３の（９）を参照）。
【０１２４】
そして、送信クライアント３００は、データ送信部３３４において、データ暗号化部３３３において暗号化された暗号データを、公開鍵識別子とユーザ識別子とともにサーバ４００の受信部４２１に送信する（図１３の（１０）を参照）。
【０１２５】
すると、サーバ４００は、データ受信部４２１において、平文データがいずれかの世代の公開鍵で暗号化された暗号データと公開鍵識別子とユーザ識別子とを送信クライアントのデータ送信部３３４から受信し、暗号データのファイル名と公開鍵識別子とユーザ識別子とを対応づけて保管する（図１３の（１１）を参照）。
【０１２６】
次に、受信クライアント３００がサーバ４００から暗号データを受信して復号するまでの段階について説明すると、図１３に示すように、受信クライアント３００は、データ受信部３２１において、ユーザ識別子をサーバ４００のデータ送信部４２３に通知することで、暗号データおよび公開鍵識別子を受信する（図１３の（１２）を参照）。
【０１２７】
そして、受信クライアント３００は、秘密鍵取得部３２２において、複数の世代の秘密鍵から公開鍵識別子に対応づけられた秘密鍵を取得してデータ復号部４２３に送信し、データ復号部４２３において、取得された秘密鍵で暗号データを復号する（図１３の（１３）を参照）。
【０１２８】
［実施例２の効果］
上記してきたように、実施例２によれば、平文データを公開鍵で暗号化した暗号データを送信する送信端末と、暗号データを送信端末から受信して公開鍵とペアとなる秘密鍵で復号する受信端末とを含んで構成される公開鍵暗号通信システムであって、受信端末は、公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理し、いずれかの世代の公開鍵によって暗号化された暗号データを送信端末から受信して、管理された複数の世代の秘密鍵から秘密鍵を取得して暗号データを復号し、送信端末は、平文データをいずれかの世代の公開鍵で暗号化した暗号データを受信端末に送信するので、公開鍵および秘密鍵の鍵ペアが更新される度に、古い世代の公開鍵（更新前の公開鍵）とペアで生成された古い世代の秘密鍵（更新前の秘密鍵）が廃棄されないことから、古い世代の公開鍵が利用されて暗号化された暗号データを復号することができ、さらに、秘密鍵の管理がユーザの手作業によって行われないことから、公開鍵暗号通信における利便性を維持することができ、また、ユーザによる操作ミスを原因として秘密鍵が漏洩または紛失されるリスクを回避することができ、これらの結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【０１２９】
また、実施例２によれば、受信端末は、秘密鍵に対応づけて、秘密鍵とペアとなる公開鍵から生成された公開鍵識別子をさらに管理し、公開鍵によって暗号化された暗号データとともに、公開鍵から生成された公開鍵識別子を送信端末からさらに受信して、管理された複数の世代の秘密鍵から公開鍵識別子に対応づけられた秘密鍵を取得して暗号データを復号し、送信端末は、公開鍵で暗号化した暗号データとともに、公開鍵から生成された公開鍵識別子を受信端末にさらに送信するので、公開鍵識別子の比較に基づいて公開鍵と秘密鍵との対応関係を短時間で確実に把握することから、本来不必要な復号（正しい復号結果を得られない復号）を発生させないことができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【０１３０】
また、実施例２によれば、受信端末は、複数の世代にわたる秘密鍵を秘密鍵の更新に係る順番に基づく時系列に管理するので、鍵ペアの生成時刻などの順番に基づいて管理することから、鍵ペアの生成時刻などの順番に基づいた処理を行うことができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【０１３１】
また、実施例２によれば、受信端末は、ひとつまたは複数個の秘密鍵を新たに管理する場合に、秘密鍵の更新に係る順番に基づく時系列で古い方からひとつまたは複数個の既に管理されている秘密鍵と置き換えて管理するので、複数の世代にわたる秘密鍵の新しい方を優先的に管理することから、暗号データを復号できる確率を高めることができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【実施例３】
【０１３２】
ところで、上記の実施例１では、受信クライアント１００が、管理する複数の世代の秘密鍵の全てで復号し終えるまで、秘密鍵を順に取得して暗号データを復号する場合を説明し、上記の実施例２では、受信クライアント３００が、秘密鍵とペアとなる公開鍵から生成された公開鍵識別子をさらに管理し、この公開鍵識別子に対応づけられた秘密鍵を取得して暗号データを復号する場合を説明したが、この発明はこれに限定されるものではなく、所定のアルゴリズムによって生成された鍵ペア特定情報とともに公開鍵を公開し、この鍵ペア特定情報に対応づけられた秘密鍵を取得して暗号データを復号する場合にも、この発明を同様に適用することができる。そこで、以下では、実施例３として、所定のアルゴリズムによって生成された鍵ペア特定情報とともに公開鍵を公開し、この鍵ペア特定情報に対応づけられた秘密鍵を取得して暗号データを復号する場合を説明する。
【０１３３】
［実施例３に係る公開鍵暗号通信システムの概要および特徴］
まず最初に、図１４を用いて、実施例３に係る公開鍵暗号通信システムの概要および特徴を説明する。図１４は、実施例３に係る公開鍵暗号通信システムの概要および特徴を説明するための図である。なお、以下では、なお、受信クライアントが鍵ペアを更新して秘密鍵を管理するまでの段階、送信クライアントが平文データを暗号化してサーバに送信するまでの段階、および、受信クライアントがサーバから暗号データを受信して復号するまでの段階の３つの段階に分けて、実施例３に係る公開鍵暗号通信システムの主たる特徴を説明する。
【０１３４】
まず、受信クライアントが鍵ペアを更新して秘密鍵を管理するまでの段階について説明すると、図１４に示すように、実施例３における受信クライアントは、最初に、公開鍵および秘密鍵の鍵ペアを更新する（図１４の（１）を参照）。ここで、実施例３において更新された鍵ペアは、３回目に生成された鍵ペア（第３世代の鍵ペア）であるので、公開鍵を「PubKey_A03」と表し、秘密鍵を「PrvKey_A03」と表すこととする。また、鍵ペア生成時刻を「T_A03」と表すこととする。次に、受信クライアントは、所定のアルゴリズムによって鍵ペア特定情報（Ｂ（PubKey_A03+T_A03））を生成する（図１４の（２）を参照）。そして、受信クライアントは、サーバの保管し公開してもらうことを目的として、公開鍵（PubKey_A03）および鍵ペア特定情報（Ｂ（PubKey_A03+T_A03））をサーバに送信する（図１４の（３）を参照）。すると、サーバは、受信クライアントから公開鍵（PubKey_A03）および鍵ペア特定情報（Ｂ（PubKey_A03+T_A03））を受信し、これを保管する（図１４の（４）を参照）。
【０１３５】
一方、実施例３における受信クライアントは、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理するだけでなく、秘密鍵に対応づけて、所定のアルゴリズムによって生成され、秘密鍵とペアとなる公開鍵とともに公開されている鍵ペア特定情報をさらに管理する（図１４の（５）を参照）。
【０１３６】
続いて、送信クライアントが平文データを暗号化してサーバに送信するまでの段階について説明すると、実施例３における送信クライアントは、最初に、公開鍵を公開するサーバに対して、暗号データを送信した通信相手が公開している公開鍵を要求する。ここで、暗号データを送信したい通信相手は「Ａ」であるので、Ａの公開鍵を要求する（図１４の（６）を参照）。
【０１３７】
次に、送信クライアントは、受信クライアントＡの第３世代の公開鍵（PubKey_A03）および鍵ペア特定情報（Ｂ（PubKey_A03+T_A03））をサーバから受信する（図１４の（７）を参照）。そして、送信クライアントは、平文データを第３世代の公開鍵で暗号化する（図１４の（８）を参照）。続いて、送信クライアントは、公開鍵で暗号化した暗号データとともに、鍵ペア特定情報をサーバに送信する（図１４の（９））。すると、サーバは、送信クライアントから送信された暗号データと鍵ペア特定情報とを保管する（図１４の（１０）を参照）。
【０１３８】
続いて、受信クライアントがサーバから暗号データを受信して復号するまでの段階について説明すると、実施例３における受信クライアントは、第３世代の公開鍵によって暗号化された暗号データとともに、鍵ペア特定情報（Ｂ（PubKey_A03+T_A03））を、送信クライアントからサーバ経由で受信する（図１４の（１１）を参照）。なお、サーバ経由で受信するとは、送信クライアントから送信された暗号データおよび鍵ペア特定情報をサーバが保管し、サーバが保管する受信クライアント宛の暗号データおよび鍵ペア特定情報を受信クライアントが受信することである。
【０１３９】
そして、受信クライアントは、管理された複数の世代の秘密鍵から秘密鍵を取得して、受信した暗号データを復号する（図１４の（１２）を参照）。ここで、実施例３における受信クライアントは、管理された複数の秘密鍵から、サーバから受信した鍵ペア特定情報に対応づけられた秘密鍵を取得して暗号データを復号する。すなわち、サーバから受信した鍵ペア特定情報は「Ｂ（PubKey_A03+T_A03）」であるので、鍵ペア特定情報（Ｂ（PubKey_A03+T_A03））に対応づけられた秘密鍵（PrvKey_A03）を取得して暗号データを復号する。こうして、第３世代の秘密鍵とペアとなる公開鍵とともに公開されている鍵ペア特定情報に対応づけられた秘密鍵を取得して復号するので、鍵ペア特定情報の比較に基づいて公開鍵と秘密鍵との対応関係を短時間で確実に把握することから、本来不必要な復号（正しい復号結果を得られない復号）を発生させないことができる。
【０１４０】
ところで、上記では、第３世代の公開鍵（PubKey_A03）によって暗号化された暗号データを復号する場合を説明したが、例えば、送信クライアントが過去に入手した第１世代の公開鍵（PubKey_A01）もしくは第２世代の公開鍵（PubKey_A02）で平文データを暗号化した場合であっても、同様に、本来不必要な復号を発生させずに正しい復号結果を得ることができる。すなわち、実施例３に係る受信クライアントは、公開鍵によって暗号化された暗号データとともに、公開鍵とともに公開されている鍵ペア特定情報をさらに受信して、鍵ペア特定情報に対応づけられた秘密鍵を取得して暗号データを復号するので、受信クライアントは、第１世代の公開鍵（PubKey_A01）によって暗号化された暗号データとともに、鍵ペア特定情報（Ｂ（PubKey_A01+T_A01））をさらに受信して、鍵ペア特定情報（Ｂ（PubKey_A01+T_A01））に対応づけられた秘密鍵（PrvKey_A01）を取得して暗号データを復号するので、本来不必要な復号を発生させずに正しい復号結果を得ることができ、また、受信クライアントは、第２世代の公開鍵（PubKey_A02）によって暗号化された暗号データとともに、鍵ペア特定情報（Ｂ（PubKey_A02+T_A02））をさらに受信して、鍵ペア特定情報（Ｂ（PubKey_A02+T_A02））に対応づけられた秘密鍵（PrvKey_A02）を取得して暗号データを復号するので、本来不必要な復号を発生させずに正しい復号結果を得ることができる。
【０１４１】
このようなことから、実施例３に係る公開鍵暗号通信システムは、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【０１４２】
［実施例３に係る公開鍵暗号通信システムの構成］
続いて、図１５〜図１９を用いて、実施例３に係る公開鍵暗号通信システムの構成を説明する。図１５は、実施例３における受信クライアントおよび送信クライアントの構成を示すブロック図であり、図１６は、実施例３における秘密鍵保管部を説明するための図であり、図１７は、実施例３におけるサーバの構成を示すブロック図であり、図１８は、実施例３における公開鍵保管部を説明するための図であり、図１９は、実施理３におけるデータ保管部を説明するための図である。なお、以下では、実施例１に係る公開鍵暗号通信システムと同様に構成される点については、簡単に説明することとする。
【０１４３】
［クライアントの構成］
まず、図１５に示すように、実施例３におけるクライアント５００は、秘密鍵管理部５１０と、データ受信復号部５２０と、データ暗号化送信部５３０とから主に構成される。
【０１４４】
秘密鍵管理部５１０は、公開鍵および公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理する手段であり、特にこの発明に密接に関連するものとしては、図１５に示すように、鍵ペア生成部５１１と、公開鍵送信部５１２と、鍵ペア特定情報生成部５１３と、秘密鍵保管部５１４とを備える。なお、秘密鍵管理部５１０は、特許請求の範囲に記載の「秘密鍵管理手段」に対応する。
【０１４５】
かかる秘密鍵管理部５１０のなかで、鍵ペア生成部５１１は、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵および秘密鍵からなる鍵ペアを生成（更新）する手段である。具体的には、鍵ペア生成部５１１は、ユーザの公開鍵および秘密鍵からなる鍵ペアを生成（更新）し、生成した公開鍵を公開鍵送信部５１２に送信し、生成した秘密鍵を秘密鍵保管部５１３に送信するが、その際に、鍵ペア特定情報を生成するための鍵ペア属性情報を、鍵ペア特定情報生成部５１３に送信する。
【０１４６】
公開鍵送信部５１２は、鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵をサーバ６００に送信する手段である。具体的には、公開鍵送信部５１２は、鍵ペア生成部５１１で鍵ペアが生成（更新）される度に、新たに更新されて公開鍵送信部５１２に送信された鍵ペアの公開鍵を、鍵ペア特定情報生成部５１３で生成された鍵ペア特定情報とともに、後述するサーバ６００の公開鍵受信部６１１に送信する。
【０１４７】
鍵ペア特定情報生成部５１３は、秘密鍵とペアとなる公開鍵とともに公開される鍵ペア特定情報を、所定のアルゴリズムによって生成する手段である。具体的には、鍵ペア特定情報生成部５１３は、鍵ペア生成部５１１で鍵ペアが生成（更新）される度に、新たに更新されて鍵ペア特定情報生成部５１３に送信された鍵ペア属性情報を用いて、鍵ペア特定情報を生成し、秘密鍵保管部５１４に送信する。例えば、実施例３における鍵ペア特定情報生成部５１３は、公開鍵と鍵ペアの生成時刻情報とを鍵ペア属性情報として受け取り、公開鍵と生成時刻情報とを連結した情報に対してＢａｓｅ６４符号化を行い、鍵ペア特定情報（Ｂ（PubKey_A03+T_A03））とする。なお、実施例３では、公開鍵と生成時刻情報とを連結した情報に対してＢａｓｅ６４符号化を行って鍵ペア特定情報を生成する場合を説明したが、この発明はこれに限定されるものではなく、秘密鍵の識別子を生成して鍵ペア特定情報とする場合や、鍵ペア作成日時を表す文字列を用いて鍵ペア特定情報を生成する場合や、公開鍵と秘密鍵とを連結した情報に対して非可逆的な演算を施して得られるデータ列などを鍵ペア特定情報として生成する場合など、いずれでもよい。なお、このような鍵ペア特定情報を用いることは、サービスレベルやシステム負荷軽減などの各種の観点に基づき、鍵ペア特定情報の生成アルゴリズムを柔軟に選択できるという利点をもたらす。
【０１４８】
秘密鍵保管部５１４は、鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を保管するだけでなく、秘密鍵に対応づけて、秘密鍵とペアとなる公開鍵とともに公開される鍵ペア特定情報をさらに管理する手段である。具体的には、秘密鍵保管部５１４は、鍵ペア生成部５１１で鍵ペアが生成（更新）される度に、新たに更新されて秘密鍵保管部５１４に送信された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を保管するが、その際に、秘密鍵に対応づけて、鍵ペア特定情報生成部５１３から送信された鍵ペア特定情報をさらに保管する。例えば、実施例３における秘密鍵保管部５１４は、鍵ペア生成部５１１から、秘密鍵を時系列に保管するための時系列情報として鍵ペアの生成時刻情報を、秘密鍵とともに受信し、図１６に示すように、この生成時刻情報と秘密鍵と鍵ペア特定情報とを対応づけて保管する。
【０１４９】
ここで、図１５に戻ると、データ受信復号部５２０は、いずれかの世代の公開鍵によって暗号化された暗号データを送信クライアント５００から受信して、秘密鍵管理部５１０によって管理された複数の世代の秘密鍵から秘密鍵を取得して暗号データを復号する手段であり、特にこの発明に密接に関連するものとしては、図１５に示すように、データ受信部５２１と、秘密鍵取得部５２２と、データ復号部５２３とを備える。なお、データ受信復号部５２０は、特許請求の範囲に記載の「データ受信復号手段」に対応する。
【０１５０】
かかるデータ受信復号部５２０のなかで、データ受信部５２１は、いずれかの世代の公開鍵によって暗号化された暗号データを送信クライアント５００から受信するだけでなく、公開鍵によって暗号化された暗号データとともに、公開鍵とともに公開された鍵ペア特定情報を送信クライアント５００からさらに受信する手段である。具体的には、データ受信部５２１は、後述するサーバ６００のデータ保管部６２２に保管されたいずれかの世代の公開鍵によって暗号化された暗号データとともに、公開鍵から生成された公開鍵識別子を後述するサーバ６００のデータ送信部６２３経由で送信クライアント５００から受信し、暗号データをデータ復号部５２３に送信し、鍵ペア特定情報を秘密鍵取得部３２２に送信する。例えば、実施例３におけるデータ受信部５２１は、ユーザを識別するためのユーザ識別子（例えば、UserＡなど）をサーバ６００のデータ送信部６２３に通知することで、ユーザＡ宛の暗号データとともに鍵ペア特定情報（例えば、Ｂ（PubKey_A03+T_A03））を受信し、暗号データをデータ復号部５２３に送信し、鍵ペア特定情報（例えば、Ｂ（PubKey_A03+T_A03））を秘密鍵取得部５２２に送信する。
【０１５１】
秘密鍵取得部５２２は、複数の世代の秘密鍵から鍵ペア特定情報に対応づけられた秘密鍵を取得する手段である。具体的には、秘密鍵取得部５２２は、秘密鍵保管部５１４によって保管された複数の世代の秘密鍵から、データ受信部５２１から送信された鍵ペア特定情報（例えば、Ｂ（PubKey_A03+T_A03））に対応づけられた秘密鍵を取得し、データ復号部５２３に送信する。例えば、実施例３における秘密鍵取得部５２２は、データ受信部５２１から公開鍵識別子としてＢ（PubKey_A03+T_A03）を受信すると、Ｂ（PubKey_A03+T_A03）をキーにして秘密鍵を検索し、Ｂ（PubKey_A03+T_A03）に対応づけられた秘密鍵（Prvkey_A03）を取得し、データ復号部５２３に送信する。
【０１５２】
データ復号部５２３は、取得された秘密鍵で暗号データを復号する手段である。具体的には、データ復号部５２３は、秘密鍵取得部５２２によって取得された秘密鍵で、データ受信部５２１から送信された暗号データを復号する。
【０１５３】
データ暗号化送信部５３０は、平文データをいずれかの世代の公開鍵で暗号化した暗号データを受信クライアント５００に送信する手段であり、特にこの発明に密接に関連するものとしては、図１５に示すように、公開鍵受信部５３１と、データ暗号化部５３２と、データ送信部５３３とを備える。なお、データ暗号化送信部５３０は、特許請求の範囲に記載の「データ暗号化送信手段」に対応する。
【０１５４】
かかるデータ暗号化送信部５３０のなかで、公開鍵受信部５３１は、実施例１における公開鍵受信部１３１と同様、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵をサーバ６００に要求してサーバ６００から受信する手段である。また、データ暗号化部５３２は、実施例１におけるデータ暗号化部１３２と同様、平文データをいずれかの世代の公開鍵で暗号化する手段である。
【０１５５】
データ送信部５３３は、いずれかの世代の公開鍵で暗号化された暗号データをサーバ６００に送信する手段である。具体的には、データ送信部５３３は、データ暗号化部５３２で暗号化された暗号データを受信し、公開鍵受信部５３１から鍵ペア特定情報を受信し、後述するサーバ６００のデータ受信部６２１に送信する。
【０１５６】
[サーバの構成]
続いて、図１７に示すように、実施例３におけるサーバ６００は、公開鍵管理部６１０と、データ送受信部６２０とから主に構成される。
【０１５７】
公開鍵管理部６１０は、受信クライアント５００において公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵を受信クライアント５００から受信して管理する手段であり、特にこの発明に密接に関連するものとしては、図１７に示すように、公開鍵受信部６１１と、公開鍵保管部６１２と、公開鍵送信部６１３とを備える。
【０１５８】
かかる公開鍵管理部６１０のなかで、公開鍵受信部６１１は、実施例１における公開鍵受信部２１１と同様、受信クライアント５００において公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの公開鍵および鍵ペア特定情報を受信クライアント５００から受信する手段である。
【０１５９】
公開鍵保管部６１２は、受信クライアント５００から受信された公開鍵を保管する手段である。例えば、実施例３における公開鍵保管部６１２は、公開鍵受信部６１１によって受信クライアント５００から受信された公開鍵（例えば、PubKey_A03など）と鍵ペア特定情報（例えば、Ｂ（PubKey_A03+T_A03））とユーザ識別子（例えば、UserAなど）とを公開鍵受信部６１１から受信し、図１８に示すように、公開鍵（PubKey_A03）と鍵ペア特定情報（例えば、Ｂ（PubKey_A03+T_A03））とユーザ識別子（UserA）とを対応づけて保管する。また、公開鍵送信部６１３は、実施例１における公開鍵送信部２１３と同様、送信クライアント５００から、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵送信要求を受け付け、送信クライアント５００に送信する手段である。
【０１６０】
ここで、図１７に戻ると、データ送受信部６２０は、いずれかの世代の公開鍵で暗号化された暗号データを送信クライアント５００から受信し、受信クライアント５００に送信する手段であり、特にこの発明に密接に関連するものとしては、図１７に示すように、データ受信部６２１と、データ保管部６２２と、データ送信部６２３と、暗号データファイル部６２４とを備える。
【０１６１】
かかるデータ送受信部６２０のなかで、データ受信部６２１は、平文データがいずれかの世代の公開鍵で暗号化された暗号データを送信クライアント５００から受信する手段である。具体的には、データ受信部６２１は、平文データがいずれかの世代の公開鍵で暗号化された暗号データおよび鍵ペア特定情報を送信クライアント５００のデータ送信部５３３から受信し、暗号データに係る情報および鍵ペア特定情報をデータ保管部６２２に送信する。
【０１６２】
データ保管部６２２は、送信クライアント５００から受信した暗号データに係る情報および鍵ペア特定情報を保管する手段である。具体的には、データ保管部６２２は、データ受信部６２１が送信クライアント５００から受信した暗号データに係る情報および鍵ペア特定情報を保管し、データ送信部６２３に送信する。例えば、実施例３におけるデータ保管部６２２は、データ受信部６２１から暗号データのファイル名とユーザ識別子と鍵ペア特定情報とを受信し、図１９に示すように、ファイル名とユーザ識別子と鍵ペア特定情報とを対応づけて保管する。そして、データ送信部６２３から受信したユーザ識別子をキーにしてファイル名を検索し、ユーザ識別子に対応づけられた暗号データのファイル名を取得し、データ送信部６２３に、ファイル名および鍵ペア特定情報を送信する。
【０１６３】
データ送信部６２３は、サーバ６００において保管される暗号データおよび鍵ペア特定情報を、受信クライアント５００に送信する手段である。具体的には、データ送信部６２３は、データ保管部６２２から受信した暗号データに係る情報に基づいて、暗号データファイル部６２４に保管する暗号データファイルおよび鍵ペア特定情報を、受信クライアント５００のデータ受信部５２１に送信する。例えば、実施例３におけるデータ送信部６２３は、受信クライアント５００のデータ受信部５２１から受信したユーザ識別子をデータ保管部６２２に送信し、データ保管部６２２からユーザ識別子に対応する暗号データファイル名を受信し、暗号データファイル部６２４からこの暗号データファイル名に対応する暗号データファイルを取得して、さらに、データ保管部６２２から送信された鍵ペア特定情報とともに、受信クライアント５００のデータ受信部５２１に送信する。また、暗号データファイル部６２４は、実施例１における暗号データファイル部２２４と同様、送信クライアント５００から受信した暗号データを保管する手段である。
【０１６４】
[実施例３に係る公開鍵暗号通信システムによる処理]
次に、図２０を用いて、実施例３に係る公開鍵暗号通信システムによる処理を説明する。図２０は、実施例３における公開鍵暗号通信処理の流れを示すシーケンス図である。なお、以下では、受信クライアント５００が鍵ペアを更新して秘密鍵を管理するまでの段階（図２０の（１）〜（５））、送信クライアント５００が平文データを暗号化してサーバ４００に送信するまでの段階（図２０の（６）〜（１０））、受信クライアント５００がサーバ６００から暗号データを受信して復号するまでの段階（図２０の（１１）〜（１２））の３つの段階に分けて、実施例３に係る公開鍵暗号通信システムによる処理を説明する。
【０１６５】
まず、受信クライアント５００が鍵ペアを更新して秘密鍵を管理するまでの段階について説明すると、図２０に示すように、実施例３における受信クライアント５００は、鍵ペア生成部５１１において、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵および秘密鍵からなる鍵ペアを生成（更新）する（図２０の（１）を参照）。
【０１６６】
次に、受信クライアント５００は、識別子生成部５１３において、新たに更新された鍵ペアの公開鍵から鍵ペア特定情報を生成する（図２０の（２）を参照）。
【０１６７】
そして、受信クライアント５００は、公開鍵送信部５１２において、新たに更新された鍵ペアの公開鍵および鍵ペア特定情報を、ユーザを識別するためのユーザ識別子とともにサーバ６００の公開鍵受信部６１１に送信し、公開鍵および鍵ペア特定情報の保管を要求する（図２０の（３）を参照）。
【０１６８】
すると、サーバ６００は、公開鍵受信部６１１において、受信クライアント５００から公開鍵および鍵ペア特定情報とともにユーザ識別子を受信し、これらを公開鍵保管部６１２に送信して、公開鍵と鍵ペア特定情報とユーザ識別子とを対応づけて保管する（図２０の（４）を参照）。
【０１６９】
続いて、受信クライアント５００は、秘密鍵保管部５１４において、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を保管するだけでなく、秘密鍵に対応づけて、秘密鍵とペアとなる公開鍵とともに公開される鍵ペア特定情報をさらに保管する（図２０の（５）を参照）。
【０１７０】
次に、送信クライアント５００が平文データを暗号化してサーバ６００に送信するまでの段階について説明すると、図２０に示すように、実施例３における送信クライアント５００は、公開鍵受信部５３１において、ユーザ（公開鍵暗号通信を行いたい者）の公開鍵を、ユーザ識別子を送信してサーバ６００に要求する（図２０の（６）を参照）。
【０１７１】
そして、サーバ６００は、公開鍵送信部６１３において、送信クライアント５００から公開鍵送信要求（ユーザ識別子）を受け付け、これを公開鍵保管部６１２に通知し、公開鍵保管部６１２からユーザ識別子に対応づけられた公開鍵および鍵ペア特定情報を受信して、送信クライアント５００の公開鍵受信部５３１に送信する（図２０の（７）を参照）。
【０１７２】
続いて、送信クライアント５００は、公開鍵受信部５３１において、ユーザの公開鍵および鍵ペア特定情報をサーバ６００から受信し、データ暗号化部５３２において、平文データをこの公開鍵で暗号化する（図２０の（８）を参照）。
【０１７３】
そして、送信クライアント５００は、データ送信部５３３において、データ暗号化部５３２において暗号化された暗号データを、鍵ペア特定情報とユーザ識別子とともにサーバ６００の受信部６２１に送信する（図２０の（９）を参照）。
【０１７４】
すると、サーバ６００は、データ受信部６２１において、平文データがいずれかの世代の公開鍵で暗号化された暗号データと鍵ペア特定情報とユーザ識別子とを送信クライアントのデータ送信部５３４から受信し、暗号データのファイル名と鍵ペア特定情報とユーザ識別子とを対応づけて保管する（図２０の（１０）を参照）。
【０１７５】
次に、受信クライアント５００がサーバ６００から暗号データを受信して復号するまでの段階について説明すると、図２０に示すように、受信クライアント５００は、データ受信部５２１において、ユーザ識別子をサーバ６００のデータ送信部６２３に通知することで、暗号データおよび鍵ペア特定情報を受信する（図２０の（１１）を参照）。
【０１７６】
そして、受信クライアント５００は、秘密鍵取得部５２２において、複数の世代の秘密鍵から鍵ペア特定情報に対応づけられた秘密鍵を取得してデータ復号部５２３に送信し、データ復号部５２３において、取得された秘密鍵で暗号データを復号する（図２０の（１２）を参照）。
【０１７７】
［実施例３の効果］
上記してきたように、実施例３によれば、平文データを公開鍵で暗号化した暗号データを送信する送信端末と、暗号データを送信端末から受信して公開鍵とペアとなる秘密鍵で復号する受信端末とを含んで構成される公開鍵暗号通信システムであって、受信端末は、公開鍵および秘密鍵からなる鍵ペアが更新される度に、新たに更新された鍵ペアの秘密鍵を含む複数の世代にわたる秘密鍵を管理し、いずれかの世代の公開鍵によって暗号化された暗号データを送信端末から受信して、管理された複数の世代の秘密鍵から秘密鍵を取得して暗号データを復号し、送信端末は、平文データをいずれかの世代の公開鍵で暗号化した暗号データを受信端末に送信するので、公開鍵および秘密鍵の鍵ペアが更新される度に、古い世代の公開鍵（更新前の公開鍵）とペアで生成された古い世代の秘密鍵（更新前の秘密鍵）が廃棄されないことから、古い世代の公開鍵が利用されて暗号化された暗号データを復号することができ、さらに、秘密鍵の管理がユーザの手作業によって行われないことから、公開鍵暗号通信における利便性を維持することができ、また、ユーザによる操作ミスを原因として秘密鍵が漏洩または紛失されるリスクを回避することができ、これらの結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【０１７８】
また、実施例３によれば、公開鍵は、所定のアルゴリズムによって生成された鍵ペア特定情報によって特定され、鍵ペア特定情報とともに公開されるものであって、受信端末は、秘密鍵に対応づけて、秘密鍵とペアとなる公開鍵とともに公開されている鍵ペア特定情報をさらに管理し、公開鍵によって暗号化された暗号データとともに、公開鍵とともに公開されている鍵ペア特定情報を送信端末からさらに受信して、管理された複数の世代の秘密鍵から鍵ペア特定情報に対応づけられた秘密鍵を取得して暗号データを復号し、送信端末は、公開鍵で暗号化した暗号データとともに、公開鍵とともに公開されている鍵ペア特定情報を受信端末にさらに送信するので、鍵ペア特定情報の比較に基づいて公開鍵と秘密鍵との対応関係を短時間で確実に把握することから、本来不必要な復号（正しい復号結果を得られない復号）を発生させないことができ、また、鍵ペア特定情報が公開鍵とともに公開されることから、送信端末は鍵ペア特定情報を生成せずに鍵ペア特定情報を利用することができ、これらの結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【０１７９】
また、実施例３によれば、受信端末は、複数の世代にわたる秘密鍵を秘密鍵の更新に係る順番に基づく時系列に管理するので、鍵ペアの生成時刻などの順番に基づいて管理することから、鍵ペアの生成時刻などの順番に基づいた処理を行うことができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【０１８０】
また、実施例３によれば、受信端末は、ひとつまたは複数個の秘密鍵を新たに管理する場合に、秘密鍵の更新に係る順番に基づく時系列で古い方からひとつまたは複数個の既に管理されている秘密鍵と置き換えて管理するので、複数の世代にわたる秘密鍵の新しい方を優先的に管理することから、暗号データを復号できる確率を高めることができる結果、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理がより簡易かつ安全な公開鍵暗号通信を実現することが可能になる。
【実施例４】
【０１８１】
ところで、これまで実施例１〜３に係る公開鍵暗号通信システムについて説明したが、この発明は上記した実施例以外にも種々の異なる形態にて実施されてよいものである。そこで、以下では、実施例４に係る公開鍵暗号通信システムとして、異なる実施例を説明する。
【０１８２】
［秘密鍵の管理］
上記の実施例では、複数の世代にわたる秘密鍵を、秘密鍵の更新に係る順番に基づく時系列に管理する場合を説明したが、この発明はこれに限定されるものではなく、秘密鍵を時系列に管理しない場合や、秘密鍵をその他の順番に基づいて管理する場合などにも、この発明を同様に適用することができる。
【０１８３】
また、上記の実施例では、ひとつまたは複数個の秘密鍵を新たに管理する場合に、秘密鍵の更新にかかる順番に基づく時系列で古い方からひとつまたは複数個の既に管理されている秘密鍵と置き換えて管理する場合を説明したが、この発明はこれに限定されるものではなく、生成（更新）された秘密鍵を全て管理する場合などにも、この発明を同様に適用することができる。
【０１８４】
また、上記の実施例では、秘密鍵保管部としてオリジナルに作成したテーブルで保管する場合を説明したが、この発明はこれに限定されるものではなく、例えば、Ｊａｖａ（登録商標）言語でシステムを実装する際には、Ｊａｖａ（登録商標）２ ＫｅｙＳｔｏｒｅのような汎用ライブラリを利用する場合などにも、この発明を同様に適用することができる。
【０１８５】
［鍵ペア等生成方法］
また、上記の実施例では、受信クライアントにおいて鍵ペアを生成（更新）する方法を説明したが、この発明はこれに限定されるものではなく、別途、鍵ペアを生成（更新）する機能を有する端末が生成（更新）した鍵ペアを、ＩＣカード等の媒体によって受信クライアントに入力させる方法など、受信クライアントが鍵ペアを保有することができる方法であれば、いずれでもよい。
【０１８６】
また、上記の実施例では、送信クライアントにおいて公開鍵識別子を生成する方法を説明したが、この発明はこれに限定されるものではなく、別途、公開鍵識別子を生成する機能を有する端末が生成した公開鍵識別子を、通信等の手段によって送信クライアントに入力させる方法など、送信クライアントが公開鍵識別子を暗号データとともに送信することができる方法であれば、いずれでもよい。
【０１８７】
また、上記の実施例では、受信クライアントにおいて鍵ペア特定情報を生成する方法を説明したが、この発明はこれに限定されるものではなく、別途、鍵ペア特定情報を生成する機能を有する端末が生成した鍵ペア特定情報を、通信等の手段によって受信クライアントに入力させる方法など、鍵ペア特定情報が公開鍵とともに公開される方法であれば、いずれでもよい。
【０１８８】
［システム構成等］
また、上記の実施例では、公開鍵暗号通信システムの構成として、送信クライアントと、受信クライアントと、サーバとで構成されるシステムを説明したが、この発明はこれに限定されるものではなく、送信端末と受信端末とが直接的に公開鍵その他のデータを送受信するシステムなどにも、この発明を同様に適用することができる。
【０１８９】
また、上記の実施例では、送信クライアントと受信クライアントとを同じ端末で実現する（ひとつの端末が送信クライアントの機能および受信クライアントの機能の双方を備える）場合を説明したが、この発明はこれに限定されるものではなく、送信クライアントの機能のみを有する送信クライアントと、受信クライアントの機能のみを有する受信クライアントとで実現する場合にも、この発明を同様に適用することができる。
【０１９０】
また、上記の実施例では、クライアントとサーバとの間の通信プロトコルとして、ＨＴＴＰ／１．１とＨＴＴＰＳ（ＳＳＬｖ３）とを組み合わせて使用する場合を説明したが、この発明はこれに限定されるものではなく、ＨＴＴＰ／１．１の代用としてＨＴＴＰ／１．０を用いる場合や、ＳＳＬｖ３の代用としてＴＬＳ（Transport Layer Security）バージョン１．０を用いる場合や、通信路暗号化を行わない場合など、いずれでもよい。
【０１９１】
また、上記の実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１９２】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１９３】
なお、上記の実施例では、この発明を実現する各装置（例えば、受信クライアント、送信クライアントなど）を機能面から説明したが、各装置の各機能はパーソナルコンピュータやワークステーションなどのコンピュータにプログラムを実行させることによって実現することもできる。すなわち、上記の実施例で説明した各種の処理手順は、あらかじめ用意されたプログラムをコンピュータ上で実行することによって実現することができる。そして、これらのプログラムは、インターネットなどのネットワークを介して配布することができる。さらに、これらのプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。つまり、例を挙げれば、実施例１〜３に示したような公開鍵暗号通信プログラムを格納したＣＤ−ＲＯＭ（装置ごとに別個のＣＤ−ＲＯＭであってもよい）を配布し、このＣＤ−ＲＯＭに格納されたプログラムを各コンピュータが読み出して実行するようにしてもよい。
【産業上の利用可能性】
【０１９４】
以上のように、この発明に係る公開鍵暗号通信システム、公開鍵暗号通信方法および公開鍵暗号通信プログラムは、平文データを公開鍵で暗号化した暗号データを送信する送信端末と、当該暗号データを当該送信端末から受信して前記公開鍵とペアとなる秘密鍵で復号する受信端末とを含んで構成される公開鍵暗号通信システムに有用であり、特に、公開鍵および秘密鍵の鍵ペアが随時更新される場合でも、秘密鍵の管理が簡易かつ安全な公開鍵暗号通信を実現することに適する。
【図面の簡単な説明】
【０１９５】
【図１】実施例１に係る公開鍵暗号通信システムの概要および特徴を説明するための図である。
【図２】実施例１における受信クライアントおよび送信クライアントの構成を示すブロック図である。
【図３】実施例１における秘密鍵保管部を説明するための図である。
【図４】実施例１におけるサーバの構成を示すブロック図である。
【図５】実施例１における公開鍵保管部を説明するための図である。
【図６】実施例１におけるデータ保管部を説明するための図である。
【図７】実施例１における公開鍵暗号通信処理の流れを示すシーケンス図である。
【図８】実施例２に係る公開鍵暗号通信システムの概要および特徴を説明するための図である。
【図９】実施例２における受信クライアントおよび送信クライアントの構成を示すブロック図である。
【図１０】実施例２における秘密鍵保管部を説明するための図である。
【図１１】実施例２におけるサーバの構成を示すブロック図である。
【図１２】実施例２におけるデータ保管部を説明するための図である。
【図１３】実施例２における公開鍵暗号通信処理の流れを示すシーケンス図である。
【図１４】実施例３に係る公開鍵暗号通信システムの概要および特徴を説明するための図である。
【図１５】実施例３における受信クライアントおよび送信クライアントの構成を示すブロック図である。
【図１６】実施例３における秘密鍵保管部を説明するための図である。
【図１７】実施例３におけるサーバの構成を示すブロック図である。
【図１８】実施例３における公開鍵保管部を説明するための図である。
【図１９】実施例３におけるデータ保管部を説明するための図である。
【図２０】実施例３における公開鍵暗号通信処理の流れを示すシーケンス図である。
【符号の説明】
【０１９６】
１００  クライアント
１１０  秘密鍵管理部
１１１  鍵ペア生成部
１１２  公開鍵送信部
１１３  秘密鍵保管部
１２０  データ受信復号部
１２１  データ受信部
１２２  秘密鍵取得部
１２３  データ復号部
１３０  データ暗号化部
１３１  公開鍵受信部
１３２  データ暗号化部
１３３  データ送信部
２００  サーバ
２１０  公開鍵管理部
２１１  公開鍵受信部
２１２  公開鍵保管部
２１３  公開鍵送信部
２２０  データ送受信部
２２１  データ受信部
２２２  データ保管部
２２３  データ送信部
２２４  暗号データファイル部
３００  クライアント
３１０  秘密鍵管理部
３２０  データ受信復号部
３３０  データ暗号化部
４００  サーバ
４１０  公開鍵管理部
４２０  データ送受信部
５００  クライアント
５１０  秘密鍵管理部
５２０  データ受信復号部
５３０  データ暗号化部
６００  サーバ
６１０  公開鍵管理部
６２０  データ送受信部
【図１】
0004629602.tif 000002
【図２】
0004629602.tif 000003
【図３】
0004629602.tif 000004
【図４】
0004629602.tif 000005
【図５】
0004629602.tif 000006
【図６】
0004629602.tif 000007
【図７】
0004629602.tif 000008
【図８】
0004629602.tif 000009
【図９】
0004629602.tif 000010
【図１０】
0004629602.tif 000011
【図１１】
0004629602.tif 000012
【図１２】
0004629602.tif 000013
【図１３】
0004629602.tif 000014
【図１４】
0004629602.tif 000015
【図１５】
0004629602.tif 000016
【図１６】
0004629602.tif 000017
【図１７】
0004629602.tif 000018
【図１８】
0004629602.tif 000019
【図１９】
0004629602.tif 000020
【図２０】
0004629602.tif 000021