(57)【要約】【課題】サーバ装置が有する秘密情報が漏えいしても復号できず、特定の通信端末のみが復号できるように平文を暗号化して暗号文を生成し、当該特定の通信端末が当該暗号文を復号する。【解決手段】第１の通信端末と第２の通信端末とを含む複数の通信端末とサーバ装置とがネットワークを介して通信可能に接続されて構成された通信システムにおいて、前記第１の通信端末は、前記第２の通信端末を含む特定の複数の通信端末におけるそれぞれの通信端末が復号できるように平文を暗号化して暗号文を生成し、当該暗号文を前記サーバ装置に送信する暗号化手段を備え、前記サーバ装置は、前記第２の通信端末のみが前記暗号文を復号できるように当該暗号文を変換し、変換後暗号文を前記第２の通信端末に送信する暗号文変換手段を備え、前記第２の通信端末は、前記変換後暗号文を復号して前記平文を取得する復号手段を備える。【選択図】図１９
2020053772.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信端末と第２の通信端末とを含む複数の通信端末とサーバ装置とがネットワークを介して通信可能に接続されて構成された通信システムであって、
前記第１の通信端末は、前記第２の通信端末を含む特定の複数の通信端末におけるそれぞれの通信端末が復号できるように平文を暗号化して暗号文を生成し、当該暗号文を前記サーバ装置に送信する暗号化手段を備え、
前記サーバ装置は、前記第２の通信端末のみが前記暗号文を復号できるように当該暗号文を変換し、変換後暗号文を前記第２の通信端末に送信する暗号文変換手段を備え、
前記第２の通信端末は、前記変換後暗号文を復号して前記平文を取得する復号手段を備える
ことを特徴とする通信システム。
【請求項２】
前記変換後暗号文は、非対称双線形群から得られた前記特定の複数の通信端末ごとの暗号情報を含み、
前記暗号文変換手段は、前記特定の複数の通信端末ごとの暗号情報から、前記第２の通信端末の暗号情報を分割することにより、前記変換後暗号文を生成する
ことを特徴とする請求項１に記載の通信システム。
【請求項３】
前記サーバ装置は、
サーバ秘密鍵及びサーバ公開鍵を生成し、前記サーバ秘密鍵、前記サーバ公開鍵、及び前記第１の通信端末のＩＤに基づいて部分秘密鍵を生成し、前記サーバ公開鍵及び前記部分秘密鍵を前記第１の通信端末に送信する鍵生成手段を備え、
前記第１の通信端末は、
前記サーバ公開鍵及び前記第１の通信端末のＩＤに基づいて秘密値を生成し、前記サーバ公開鍵、前記部分秘密鍵、及び前記秘密値に基づいて完全秘密鍵を生成し、前記サーバ公開鍵及び前記秘密値に基づいてユーザ公開鍵を生成し、当該ユーザ公開鍵を前記サーバ装置に送信する鍵生成手段を備え、
前記第１の通信端末における前記暗号化手段は、前記特定の複数の通信端末のそれぞれのユーザ公開鍵を用いることにより、前記平文を前記サーバ秘密鍵では復号できないように暗号化して前記暗号文を生成する
ことを特徴とする請求項１又は２に記載の通信システム。
【請求項４】
第１の通信端末と第２の通信端末とを含む複数の通信端末とサーバ装置とがネットワークを介して通信可能に接続されて構成された通信システムにおける前記サーバ装置であって、
前記第１の通信端末は、前記第２の通信端末を含む特定の複数の通信端末におけるそれぞれの通信端末が復号できるように平文を暗号化して暗号文を生成し、当該暗号文を前記サーバ装置に送信し、前記サーバ装置は、
前記第１の通信端末から前記暗号文を受信する受信手段と、
前記第２の通信端末のみが前記暗号文を復号できるように当該暗号文を変換し、変換後暗号文を前記第２の通信端末に送信する暗号文変換手段と
を備えることを特徴とするサーバ装置。
【請求項５】
第１の通信端末と第２の通信端末とを含む複数の通信端末とサーバ装置とがネットワークを介して通信可能に接続されて構成された通信システムにおける前記第１の通信端末として機能する通信端末であって、
前記サーバ装置から、前記第２の通信端末を含む特定の複数の通信端末の公開鍵を受信する受信手段と、
前記特定の複数の通信端末の公開鍵を用いて、当該特定の複数の通信端末におけるそれぞれの通信端末が復号できるように平文を暗号化して暗号文を生成し、当該暗号文を前記サーバ装置に送信する暗号化手段と
を備えることを特徴とする通信端末。
【請求項６】
第１の通信端末と第２の通信端末とを含む複数の通信端末とサーバ装置とがネットワークを介して通信可能に接続されて構成された通信システムにより実行される通信方法であって、
前記第１の通信端末が、前記第２の通信端末を含む特定の複数の通信端末におけるそれぞれの通信端末が復号できるように平文を暗号化して暗号文を生成し、当該暗号文を前記サーバ装置に送信する暗号化ステップと、
前記サーバ装置が、前記第２の通信端末のみが前記暗号文を復号できるように当該暗号文を変換し、変換後暗号文を前記第２の通信端末に送信する暗号文変換ステップと、
前記第２の通信端末が、前記変換後暗号文を復号して前記平文を取得する復号ステップと
を備えることを特徴とする通信方法。
【請求項７】
コンピュータを、請求項４に記載のサーバ装置における各手段として機能させるためのプログラム。
【請求項８】
コンピュータを、請求項５に記載の通信端末における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、平文を暗号化して、暗号文を安全にサーバ装置に保存し、通信端末において暗号文を復号できるようにする技術に関するものである。
【背景技術】
【０００２】
ビジネスでの使用を前提とするメッセージ送信システムとしてパソコンやスマートフォン等のマルチデバイスに対応可能なシステムが存在する。マルチデバイスに対応可能なシステムのうち、企業の機密情報漏えいを考慮し、通信端末にデータを残さないクラウドベース型のメッセージ送信システムが存在する。クラウドベース型のメッセージ送信システムの例として、非特許文献１に開示されたシステムが挙げられる。
【０００３】
このようなメッセージ送信システムにおいては、通信路を暗号化することで通信経路上の盗聴防止がなされていたり、既に述べたように、通信端末にデータを残さないことによって通信端末の紛失や不正な持ち出しに起因する情報漏えい防止がなされていたりする。このように、従来のメッセージ送信システムは「通信経路」と「通信端末」に対する脅威に対処している一方、サーバ装置に対する脅威への対処は不十分である。
【０００４】
ここでいうサーバ装置に対する脅威として「サーバ装置に対する外部からの攻撃」や「サーバ管理者等による内部不正」等が挙げられる。これらの脅威に対し、メッセージを暗号化して保存する、という対策が考えられる。しかしながら、サーバ装置側でメッセージを復号可能である以上、前述の脅威に対してサーバ装置からのメッセージ漏えいの可能性が依然として存在する。送受信・保存を行うサーバ装置に送られてくるメッセージがサーバ装置に対して秘匿化されている（サーバ装置側で盗聴されない）ことが重要である。
【０００５】
１つの方法として、サーバ装置に対してメッセージを秘匿し、通信端末でのみ復号可能なエンドツーエンドの暗号化通信を実現することが考えられる。この場合、通信端末間で用いる共通鍵をどのように共有するかが問題となる。この問題の解決策として例えば非特許文献２が開示されている。非特許文献２では中央に認証サーバをもつスター型のネットワークにおいて、認証サーバに対していかなる情報ももらさずに利用者間で鍵（以下、セッション鍵）を共有するプロトコルが提案されている。
【０００６】
これによって、サーバ装置に対しメッセージを秘匿したまま通信端末間でやりとりすることができる。また、現在参加している通信端末でのみメッセージが読めるようセッション鍵の共有を行うため、ユーザの追加・削除等のイベントによりセッション鍵が更新される。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】ＮＴＴソフトウェア、"ビジネス向けグループチャットＴｏｐｉｃ  Ｒｏｏｍ"、［online］、ＮＴＴソフトウェア、[平成29年9月28日検索]、インターネット〈URL：https://www.ntt-yx.co.jp/products/topicroom/index.html〉
【非特許文献２】小林鉄太郎、米山一樹、吉田麗生、川原祐人、冨士仁、山本具英「スケーラブルな動的多者鍵配布プロトコル」、SCIS2016-暗号と情報セキュリティシンポジウム-講演論文集、一般社団法人電子情報通信学会、平成28年1月、4E2-3
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記非特許文献２の技術によれば、サーバ装置に知られないよう、通信端末間で鍵を共有することで、サーバ装置に対しメッセージを秘匿したままやりとりすることができる。しかし、非特許文献２では、現在の参加メンバのみでセッション鍵を共有するため、セッション鍵はログイン・ログアウトイベントのようなユーザの追加・削除に伴って更新されたり、それ以外にも定期的に更新されたりすることがある。従って、現在参加している通信端末でのみ過去に蓄積されたメッセージを読めるようにするために、以前にサーバ装置に保存されたデータをサーバ装置側で復号することなく、更新されたセッション鍵を用いて通信端末側で復号可能なデータに更新する必要がある。
【０００９】
上記のようなデータの更新（再暗号化と呼ぶ）を実現するために、通信端末が更新前のセッション鍵と更新後のセッション鍵とを用いて再暗号化鍵を生成し、それをサーバ装置に送信し、サーバ装置が当該再暗号化鍵を使用してデータの再暗号化を行う技術がある。
【００１０】
上記の再暗号化鍵生成を実現するには、少なくとも１通信端末はセッション鍵更新前後でログイン継続中でなければならない。しかし、全通信端末がログアウトし、その後に、セッション鍵更新、及び通信端末ログインが生じた場合、当該通信端末は、更新前のセッション鍵を保持していない可能性があり、その場合、データの再暗号化を実施することができない。この問題を解決するために、所定のサーバ装置（鍵共有サーバ装置と呼ぶ）が生成した鍵を用いて更新前のセッション鍵を暗号化して、サーバ装置に保存しておく方法が考えられる。しかし、この方法では、鍵共有サーバ装置が攻撃されることで、鍵に関する秘密情報が漏えいし、攻撃者により更新前のセッション鍵が復号される可能性がある。
【００１１】
なお、上記のような課題は、セッション鍵の暗号化に限らずに生じ得る課題である。
【００１２】
本発明は上記の点に鑑みてなされたものであり、サーバ装置が有する秘密情報が漏えいしても復号できず、特定の通信端末のみが復号できるように平文を暗号化して暗号文を生成し、当該特定の通信端末が当該暗号文を復号することを可能ならしめる技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
開示の技術によれば、第１の通信端末と第２の通信端末とを含む複数の通信端末とサーバ装置とがネットワークを介して通信可能に接続されて構成された通信システムであって、
前記第１の通信端末は、前記第２の通信端末を含む特定の複数の通信端末におけるそれぞれの通信端末が復号できるように平文を暗号化して暗号文を生成し、当該暗号文を前記サーバ装置に送信する暗号化手段を備え、
前記サーバ装置は、前記第２の通信端末のみが前記暗号文を復号できるように当該暗号文を変換し、変換後暗号文を前記第２の通信端末に送信する暗号文変換手段を備え、
前記第２の通信端末は、前記変換後暗号文を復号して前記平文を取得する復号手段を備える
ことを特徴とする通信システムが提供される。
【発明の効果】
【００１４】
開示の技術によれば、サーバ装置が有する秘密情報が漏えいしても復号できず、特定の通信端末のみが復号できるように平文を暗号化して暗号文を生成し、当該特定の通信端末が当該暗号文を復号することを可能ならしめる技術が提供される。
【図面の簡単な説明】
【００１５】
【図１】基本例１の通信システムの構成を示すブロック図である。
【図２】基本例１の送信機能を有する通信端末の構成を示すブロック図である。
【図３】基本例１の受信機能を有する通信端末の構成を示すブロック図である。
【図４】基本例１の鍵更新機能を有する通信端末の構成を示すブロック図である。
【図５】基本例１のサーバ装置の構成を示すブロック図である。
【図６】基本例１の送信機能と受信機能と鍵更新機能を全て有する通信端末の構成を示すブロック図である。
【図７】基本例１の通信システムの送受信動作を示すシーケンス図である。
【図８】基本例１の通信システムの鍵更新動作を示すシーケンス図である。
【図９】基本例２の通信システムの構成を示すブロック図である。
【図１０】基本例２の送信機能を有する通信端末の構成を示すブロック図である。
【図１１】基本例２の受信機能を有する通信端末の構成を示すブロック図である。
【図１２】基本例２の鍵更新機能を有する通信端末の構成を示すブロック図である。
【図１３】基本例２のサーバ装置の構成を示すブロック図である。
【図１４】基本例２の送信機能と受信機能と鍵更新機能を全て有する通信端末の構成を示すブロック図である。
【図１５】基本例２の通信システムの送受信動作を示すシーケンス図である。
【図１６】基本例２の通信システムの鍵更新動作を示すシーケンス図である。
【図１７】課題を説明するための図である。
【図１８】課題を解決するための技術の概要を説明するための図である。
【図１９】実施例の通信システムの構成を示すブロック図である。
【図２０】実施例の鍵共有サーバ装置の構成を示すブロック図である。
【図２１】実施例のセットアップ処理部の構成を示すブロック図である。
【図２２】実施例の暗号文分割処理部の構成を示すブロック図である。
【図２３】実施例の旧セッションに参加する通信端末の構成を示すブロック図である。
【図２４】実施例のセットアップ処理部の構成を示すブロック図である。
【図２５】実施例の旧セッション鍵暗号化処理部の構成を示すブロック図である。
【図２６】実施例の新セッションに参加する通信端末の構成を示すブロック図である。
【図２７】実施例の旧セッション鍵復号処理部の構成を示すブロック図である。
【図２８】ハードウェア構成の例を示す図である。
【図２９】実施例の動作を説明するためのシーケンス図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施の形態（本実施の形態）を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【００１７】
以下では、まず、本発明の実施例の前提となる再暗号化技術を基本例（基本例１、基本例２を含む）として説明し、その後に、本発明の実施例を説明する。ここでの再暗号化技術とは、以前にサーバ装置に保存された暗号化されたデータをサーバ装置側で復号することなく、更新後のセッション鍵を用いて復号可能なデータに更新することである。
【００１８】
なお、実施例は再暗号化技術を前提とし、その課題を解決することを想定しているが、本発明の適用先は、実施例で説明した再暗号化技術を前提とするものに限られない。本発明は、平文を暗号化して、通信端末に配信する様々な技術分野に適用することが可能である。
【基本例】
【００１９】
基本例の具体的な説明をするため、クラウドベース型のメッセージ送信システムに適用する場合のセットアップ（事前準備）について述べる。なお基本例１では、公開鍵暗号方式を用いた例を、基本例２では、公開鍵暗号方式を用いない例を開示するため、セットアップ（事前準備）についてもそれぞれの場合について記述する。
【００２０】
＜セットアップ：共通＞
集合Ｎを正の整数全体の集合とする。以下で記載する共通鍵暗号方式（ＤＥＭ．Ｇｅｎ，ＤＥＭ．Ｅｎｃ，ＤＥＭ．Ｄｅｃ）について述べておく。ＤＥＭ．Ｇｅｎはｋビット（ｋ∈Ｎ）列１ｋを入力とし，ｋ１ビット（ｋ１∈Ｎ）長の鍵Ｋを出力するアルゴリズムである。ＤＥＭ．Ｅｎｃは、平文ｍと鍵Ｋとを入力とし、暗号文ＣＤＥＭを出力するアルゴリズムである。ＤＥＭ．Ｄｅｃは暗号文ＣＤＥＭと鍵Ｋを入力とし，平文ｍを出力するアルゴリズムである。
【００２１】
＜セットアップ：公開鍵暗号方式を用いる場合＞
集合Ｎを正の整数全体の集合とする。以下で記載する公開鍵暗号方式（ＫＥＭ．Ｇｅｎ，ＫＥＭ．Ｅｎｃ，ＫＥＭ．Ｄｅｃ）について述べておく。ＫＥＭ．Ｇｅｎはｋビット（ｋ∈Ｎ）列１ｋを入力とし、ｋ２ビット（ｋ２∈Ｎ）長の公開鍵ｐｋとｋ３ビット（ｋ３∈Ｎ）長の秘密鍵ｓｋの組（ｐｋ，ｓｋ）を出力するアルゴリズムである。ＫＥＭ．Ｅｎｃは公開鍵ｐｋとｋ１ビット（ｋ１∈Ｎ）長の平文Ｍを入力とし、暗号文ＣＫＥＭを出力するアルゴリズムである。ＫＥＭ．Ｄｅｃは秘密鍵ｓｋと暗号文ＣＫＥＭを入力とし、平文Ｍを出力するアルゴリズムである。まず、ｋ１ビット長の鍵空間をＫＥＹ１＝｛０，１｝ｋ１、ｋ２ビット長の鍵空間をＫＥＹ２＝｛０，１｝ｋ２とし、関数ｆｋ１、ｈｋ１、ｇｋ１はそれぞれ以下の条件（１）（２）（３）を満たす。ただし、条件（１）は必須条件ではなく、満足することが好適な条件とされる。
【００２２】
（１）関数族｛ｆｋ１：ＫＥＹ１×ＫＥＹ１→ＫＥＹ１｝ｋ１∈Ｎは以下の条件を満たせば好適である。すなわち、任意の正整数ｋ１に対し、次の命題が成り立つ。ｎビット列１ｎと関数ｆｋ１の出力とを入力とし、ＫＥＹ１の元を出力する任意の確率的多項式時間アルゴリズムＡと、任意のｃ＞０に対し、以下を満たす正整数ｎ´が存在する。
【００２３】
ｎ´よりも大きい任意の正整数ｎに対し、
【００２４】
【数１】
2020053772.tif 000003
【００２５】
Ｐｒ［Ｘ｜Ｙ］は事象Ｙにおける事象Ｘの条件つき確率を表す。上式は関数ｆｋ１の安全性として好適な水準を示す数式である。上式はいかなる確率的多項式時間アルゴリズムＡによってｆｋ１（Ｋ，Ｋ１）を演算したとしても、Ｋ´＝ＫとなるＫ´を求めることができる確率が非常に低い（Ｐｒ［...］＜１／ｎｃ）ことを示している。ただし、関数ｆｋ１が上式の安全性を満たすことは必須の条件ではなく、関数ｆｋ１は上式に限定されない。
【００２６】
（２）任意のｋ１∈Ｎ、任意のＫ，Ｋ１∈ＫＥＹ１に対し、次式を満たす関数ｈｋ１：ＫＥＹ１×ＫＥＹ１→ＫＥＹ１が存在する。
【００２７】
【数２】
2020053772.tif 000004
【００２８】
（３）暗号化関数ＫＥＭ．Ｅｎｃ：ＫＥＹ２×ＫＥＹ１→ＫＥＹ１と関数ｆｋ１：ＫＥＹ１×ＫＥＹ１→ＫＥＹ１に対し、関数ｇｋ１：ＫＥＹ１×ＫＥＹ１→ＫＥＹ１が存在し、任意のＫ，Ｋ１，Ｋ２∈ＫＥＹ１に対し次式を満たす。
【００２９】
【数３】
2020053772.tif 000005
【００３０】
上式は、関数ｇｋ１を定義する数式である。上式は、暗号文ｃ１（共通鍵Ｋとセッション鍵Ｋ１を関数ｆｋ１でマスクした値を公開鍵ｐｋで暗号化した暗号文）と暗号文ｃ２（セッション鍵Ｋ１と更新後のセッション鍵Ｋ２を関数ｆｋ１でマスクした値を公開鍵ｐｋで暗号化した暗号文）を関数ｇｋ１によってマスクして得た値を秘密鍵ｓｋで復号した場合、復号結果Ｍ´が必ずｆｋ１（Ｋ，Ｋ２）（共通鍵Ｋとセッション鍵Ｋ２を関数ｆｋ１でマスクした値）となる（Ｐｒ［...］＝１）ことを示している。
【００３１】
上記のような公開鍵暗号として、例えばＲＳＡ暗号方式が考えられる。すなわち、（ＫＥＭ．Ｇｅｎ，ＫＥＭ．Ｅｎｃ，ＫＥＭ．Ｄｅｃ）＝（ＲＳＡ．Ｇｅｎ，ＲＳＡ．Ｅｎｃ，ＲＳＡ．Ｄｅｃ）である。このとき（ｆｋ１，ｇｋ１，ｈｋ１）として例えば、（ｆｋ１，ｇｋ１，ｈｋ１）＝（（（ｘ１，ｘ２）→ｘ１／ｘ２），（（ｙ１，ｙ２）→ｙ１・ｙ２），（（ｚ１，ｚ２）→ｚ１・ｚ２））が挙げられ、これらは上記の（ｆｋ１，ｇｋ１，ｈｋ１）の条件を満たす。なお、演算／は、ＲＳＡ暗号方式のセットアップ時に生成した２つの素数ｐ，ｑの積ｎ＝ｐｑを法とする剰余環での乗法を・とし、この演算におけるｘ２の逆元をｘ２−１としたとき、ｘ１／ｘ２＝ｘ１・ｘ２−１と表される。
【００３２】
また上記のような公開鍵暗号として、例えば楕円ＥｌＧａｍａｌ暗号方式が考えられる。すなわち、（ＫＥＭ．Ｇｅｎ，ＫＥＭ．Ｅｎｃ，ＫＥＭ．Ｄｅｃ）＝（ＥＣＥＧ．Ｇｅｎ，ＥＣＥＧ．Ｅｎｃ，ＥＣＥＧ．Ｄｅｃ）である。このとき（ｆｋ１，ｇｋ１，ｈｋ１）として例えば、（ｆｋ１，ｇｋ１，ｈｋ１）＝（（（ｘ１，ｘ２）→ｘ１−ｘ２），（（ｙ１，ｙ２）→ｙ１＋ｙ２），（（ｚ１，ｚ２）→ｚ１＋ｚ２））が挙げられ、これらは上記の（ｆｋ１，ｇｋ１，ｈｋ１）の条件を満たす。なお、演算−は、楕円ＥｌＧａｍａｌ暗号方式のセットアップ時に生成した楕円曲線上の点がなす加法（＋）群におけるｘ２の逆元を−ｘ２としたとき、ｘ１−ｘ２＝ｘ１＋（−ｘ２）と表される。
【００３３】
ただし、基本例で利用できる公開鍵暗号方式は上記の二つ（ＲＳＡ暗号方式、楕円ＥｌＧａｍａｌ暗号方式）に限定されないものとする。
【００３４】
＜セットアップ：公開鍵暗号方式を用いない場合＞
ｋ１ビット長の鍵空間をＫＥＹ１とし、ｋ２ビット（ｋ２∈Ｎ）長の鍵空間をＫＥＹ２とし、関数ｆｋ１、ｈｋ１、ｇｋ１はそれぞれ上述の条件（１）（２）、および以下の（３ａ）を満たす。ただし、上述の条件は必須条件ではなく、満足することが好適な条件とされる。
【００３５】
（３ａ）任意のｋ１∈Ｎに対し、関数ｇｋ１：ＫＥＹ１×ＫＥＹ１→ＫＥＹ１が存在し、任意のＫ，Ｋ１，Ｋ２∈ＫＥＹ１に対しｇｋ１（ｆｋ１（Ｋ０，Ｋ１），ｆｋ１（Ｋ１，Ｋ２））＝ｆｋ１（Ｋ０，Ｋ２）を満たす。
【００３６】
このような関数の組（ｆｋ１，ｇｋ１，ｈｋ１）として例えば、（ｆｋ１，ｇｋ１，ｈｋ１）＝（（（ｘ１，ｘ２）→ｘ１−ｘ２），（（ｙ１，ｙ２）→ｙ１＋ｙ２），（（ｚ１，ｚ２）→ｚ１＋ｚ２））や、（ｆｋ１，ｇｋ１，ｈｋ１）＝（（（ｘ１，ｘ２）→ｘ１／ｘ２），（（ｙ１，ｙ２）→ｙ１・ｙ２），（（ｚ１，ｚ２）→ｚ１・ｚ２））があり、これらは上記の（ｆｋ１，ｇｋ１，ｈｋ１）の性質を満たす。なお、ｘ１−ｘ２について、演算−は鍵空間に加法群としての構造が入っているときの加法（＋）群における差を意味する。ｘ１／ｘ２について、演算／は鍵空間に乗法群としての構造が入っているときの乗法（・）群における商を意味する。以下では、（ｆｋ１，ｇｋ１，ｈｋ１）＝（（（ｘ１，ｘ２）→ｘ１ｘ２），（（ｙ１，ｙ２）→ｙ１＋ｙ２），（（ｚ１，ｚ２）→ｚ１＋ｚ２））や、（ｆｋ１，ｇｋ１，ｈｋ１）＝（（（ｘ１，ｘ２）→ｘ１／ｘ２），（（ｙ１，ｙ２）→ｙ１・ｙ２），（（ｚ１，ｚ２）→ｚ１・ｚ２））の場合で説明する。
【基本例１】
【００３７】
以下、公開鍵暗号を用いるバリエーションである、基本例１の通信システムについて説明する。
【００３８】
図１に示すように、本基本例１の通信システム１は、送信機能を有する通信端末１１と、受信機能を有する通信端末１２と、鍵更新機能を有する通信端末１３と、サーバ装置１４を含む構成である。これらの装置はネットワーク９を介して通信可能に接続されている。なお、通信端末１１、通信端末１２、通信端末１３、サーバ装置１４はそれぞれが複数存在してもよい。説明の便宜上、以下ではこれらの装置が各一つずつ存在するものとする。
【００３９】
図２に示すように、通信端末１１は、共通鍵暗号文取得部１１１と、共通鍵記憶部１１１Ａと、関数演算結果取得部１１２と、セッション鍵記憶部１１２Ａと、公開鍵暗号文取得部１１３と、公開鍵記憶部１１３Ａと、暗号文送信部１１４を含む構成であって、共通鍵記憶部１１１Ａには共通鍵Ｋが予め記憶され、セッション鍵記憶部１１２Ａには他の通信端末と共有するセッション鍵Ｋ１が予め記憶され、公開鍵記憶部１１３Ａには公開鍵ｐｋが予め記憶されているものとする。
【００４０】
図７に示すように、共通鍵暗号文取得部１１１は、共通鍵Ｋに基づいてメッセージｍを暗号化（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ））して共通鍵暗号文ＣＤＥＭを取得する（Ｓ１１１）。関数演算結果取得部１１２は、関数ｆｋ１に基づいて共通鍵Ｋとセッション鍵Ｋ１を演算して関数演算結果ｆｋ１（Ｋ，Ｋ１）を取得する（Ｓ１１２）。公開鍵暗号文取得部１１３は、関数演算結果ｆｋ１（Ｋ，Ｋ１）を公開鍵ｐｋに基づいて暗号化（ＫＥＭ．Ｅｎｃ（ｐｋ，ｆｋ１（Ｋ，Ｋ１）））して公開鍵暗号文ＣＫＥＭを取得する（Ｓ１１３）。暗号文送信部１１４は、共通鍵暗号文ＣＤＥＭと公開鍵暗号文ＣＫＥＭをサーバ装置１４に送信する（Ｓ１１４）。
【００４１】
図３に示すように、通信端末１２は、暗号文受信部１２１と、関数演算結果復号部１２２と、秘密鍵記憶部１２２Ａと、共通鍵取得部１２３と、セッション鍵記憶部１２３Ａと、メッセージ復号部１２４を含む構成であって、秘密鍵記憶部１２２Ａには秘密鍵ｓｋが予め記憶され、セッション鍵記憶部１２３Ａには、他の通信端末と共有するセッション鍵Ｋ１が予め記憶されているものとする。
【００４２】
図７に示すように、暗号文受信部１２１は、サーバ装置１４から共通鍵暗号文ＣＤＥＭと公開鍵暗号文ＣＫＥＭを受信する（Ｓ１２１）。関数演算結果復号部１２２は、受信した公開鍵暗号文ＣＫＥＭを秘密鍵ｓｋに基づいて復号（ＫＥＭ．Ｄｅｃ（ｓｋ，ＣＫＥＭ））して関数演算結果ｆｋ１（Ｋ，Ｋ１）を取得する（Ｓ１２２）。共通鍵取得部１２３は、関数ｈｋ１に基づいてセッション鍵Ｋ１と関数演算結果ｆｋ１（Ｋ，Ｋ１）を演算（ｈｋ１（ｆｋ１（Ｋ，Ｋ１），Ｋ１））して共通鍵Ｋを取得する（Ｓ１２３）。メッセージ復号部１２４は、受信した共通鍵暗号文ＣＤＥＭを、取得した共通鍵Ｋに基づいて復号（ＤＥＭ．Ｄｅｃ（Ｋ，ＣＤＥＭ））してメッセージｍを取得する（Ｓ１２４）。
【００４３】
図４に示すように、通信端末１３は、鍵更新用関数演算結果取得部１３１と、セッション鍵記憶部１３１Ａと、鍵更新用公開鍵暗号文取得部１３２と、公開鍵記憶部１３２Ａと、鍵更新用データ送信部１３３を含む構成であって、セッション鍵記憶部１３１Ａには、他の通信端末と共有するセッション鍵Ｋ１が予め記憶され（更新後のセッション鍵Ｋ２なども記憶される）、公開鍵記憶部１３２Ａには公開鍵ｐｋが予め記憶されているものとする。
【００４４】
図８に示すように、鍵更新用関数演算結果取得部１３１は、関数ｆｋ１に基づいてセッション鍵Ｋ１と更新済セッション鍵Ｋ２（以下、更新後のセッション鍵Ｋ２ともいう）とを演算して鍵更新用関数演算結果ｆｋ１（Ｋ１，Ｋ２）を取得する（Ｓ１３１）。鍵更新用公開鍵暗号文取得部１３２は、鍵更新用関数演算結果ｆｋ１（Ｋ１，Ｋ２）を公開鍵ｐｋに基づいて暗号化（ＫＥＭ．Ｅｎｃ（ｐｋ，ｆｋ１（Ｋ１，Ｋ２））））して鍵更新用公開鍵暗号文Ｃ´ＫＥＭを取得する（Ｓ１３２）。鍵更新用データ送信部１３３は、鍵更新用公開鍵暗号文Ｃ´ＫＥＭをサーバ装置１４に送信する（Ｓ１３３）。
【００４５】
図５に示すように、サーバ装置１４は、暗号文受信部１４１と、暗号文記憶部１４１Ａと、暗号文送信部１４２と、鍵更新用データ受信部１４３と、新規データ取得部１４４を含む構成である。
【００４６】
図７に示すように、暗号文受信部１４１は、通信端末１１から共通鍵暗号文ＣＤＥＭと公開鍵暗号文ＣＫＥＭを受信する（Ｓ１４１）。暗号文記憶部１４１Ａは、受信した共通鍵暗号文ＣＤＥＭと公開鍵暗号文ＣＫＥＭを記憶する（Ｓ１４１Ａ１）。暗号文送信部１４２は、通信端末１２に共通鍵暗号文ＣＤＥＭと公開鍵暗号文ＣＫＥＭを送信する（Ｓ１４２）。
【００４７】
図８に示すように、鍵更新用データ受信部１４３は、通信端末１３から鍵更新用公開鍵暗号文Ｃ´ＫＥＭを受信する（Ｓ１４３）。新規データ取得部１４４は、関数ｇｋ１に基づいて公開鍵暗号文ＣＫＥＭと鍵更新用公開鍵暗号文Ｃ´ＫＥＭを演算（ｇｋ１（ＣＫＥＭ，Ｃ´ＫＥＭ））して新たな公開鍵暗号文Ｃ´´ＫＥＭを取得する（Ｓ１４４）。
【００４８】
なお、ステップＳ１２２において新たな公開鍵暗号文Ｃ´´ＫＥＭを秘密鍵ｓｋに基づいて復号（ＫＥＭ．Ｄｅｃ（ｓｋ，Ｃ´´ＫＥＭ））すると関数演算結果ｆｋ１（Ｋ，Ｋ２）を取得することができる。さらにステップＳ１２３において関数ｈｋ１に基づいて更新後のセッション鍵Ｋ２と関数演算結果ｆｋ１（Ｋ，Ｋ２）を演算（ｈｋ１（ｆｋ１（Ｋ，Ｋ２），Ｋ２））することで共通鍵Ｋを取得することができるため、更新後のセッション鍵Ｋ２を用いたメッセージｍの復号が可能であることが確認された。また、サーバ装置１４で取り扱われているＣ´ＫＥＭやＣ´´ＫＥＭによっても、更新後のセッション鍵Ｋ２を知ることは困難であるため、サーバ装置１４に対してセッション鍵を秘匿しながら更新することが可能であることが確認された。
【００４９】
上述の基本例１では、送信機能を有する通信端末１１、受信機能を有する通信端末１２、鍵更新機能を有する通信端末１３を例示した。しかし、基本例の通信端末は上記の例に限定されない。例えば、送信機能、受信機能、鍵更新機能のうちいずれか二つの機能を備える通信端末として実現してもよい。また図６に示すように、送信機能、受信機能、鍵更新機能の全てを備える通信端末１０として実現してもよい。
【００５０】
［基本例１の実装例Ａ］
以下の実装例Ａでは、公開鍵暗号方式としてＲＳＡ暗号方式を用いた例を説明する。通信端末１１、通信端末１２、通信端末１３は、サーバ装置１４と通信を行うものとする。通信端末１１、通信端末１２、通信端末１３はパソコンやスマートフォン等挙げられるが特に限定しない。なお、本実装例の通信システムにおいては、メッセージをやり取りするユーザのグループを形成することができる。各グループをここではメッセージルームと呼ぶことにする。
【００５１】
・所属するメッセージルームの識別子をｒｏｏｍＩＤとする。
【００５２】
・公開鍵暗号方式（ＫＥＭ．Ｅｎｃ，ＫＥＭ．Ｄｅｃ）に関する、所属するルーム（ｒｏｏｍＩＤ）の公開鍵をｐｋｒｏｏｍＩＤとし秘密鍵をｓｋｒｏｏｍＩＤとする。
【００５３】
＜暗号化、メッセージ送信＞
通信端末１１の利用者をＡ、通信端末１２の利用者をＢとする。通信端末１１、通信端末１２はセッション鍵Ｋ１を取得済みとし、これをそれぞれセッション鍵記憶部１１２Ａ、セッション鍵記憶部１２３Ａに保持しているものとする。このセッション鍵Ｋ１をサーバ装置１４は知らない。利用者Ａが利用者Ｂにメッセージｍ１を送るものとする。
【００５４】
通信端末１１は、乱数Ｋをメッセージ暗号化のための共通鍵として予め生成し、共通鍵記憶部１１１Ａに予め記憶しておくものとする。メッセージ暗号化の際に用いる共通鍵暗号方式を（ＤＥＭ．Ｅｎｃ，ＤＥＭ．Ｄｅｃ）とする。
【００５５】
通信端末１１は、共通鍵記憶部１１１Ａから共通鍵Ｋを、セッション鍵記憶部１１２Ａからセッション鍵Ｋ１を、公開鍵記憶部１１３Ａから公開鍵ｐｋｒｏｏｍＩＤを取り出し、（ＣＤＥＭ，ＣＲＳＡ）＝（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ１），ＲＳＡ．Ｅｎｃ（ｐｋｒｏｏｍＩＤ，Ｋ／Ｋ１））を計算する。なお、ＲＳＡ．Ｅｎｃ関数に入力するＫ／Ｋ１について、演算／は、ＲＳＡ暗号方式のセットアップ時に生成した２つの素数ｐ，ｑの積ｎ＝ｐｑを法とする剰余環での乗法を・とし、この演算におけるＫ１の逆元をＫ１−１としたとき、Ｋ／Ｋ１＝Ｋ・Ｋ１−１と表される。通信端末１１は、サーバ装置１４に（ＣＤＥＭ，ＣＲＳＡ）を送信する。
【００５６】
＜メッセージ受信、復号＞
サーバ装置１４は通信端末１１から受信した（ＣＤＥＭ，ＣＲＳＡ）を暗号文記憶部１４１Ａに保存する。なお、通信端末１１から送信されたメッセージ毎に（ＣＤＥＭ，ＣＲＳＡ）は保存する必要がある。サーバ装置１４は、通信端末１２に（ＣＤＥＭ，ＣＲＳＡ）を送信する。通信端末１２はサーバ装置１４から（ＣＤＥＭ，ＣＲＳＡ）を受信する。
【００５７】
通信端末１２は、秘密鍵記憶部１２２Ａから秘密鍵ｓｋｒｏｏｍＩＤを取り出し、Ｔｅｍｐ＝ＲＳＡ．Ｄｅｃ（ｓｋｒｏｏｍＩＤ，ＣＲＳＡ）を計算する。通信端末１２は、セッション鍵記憶部１２３Ａからセッション鍵Ｋ１を取り出し、共通鍵Ｋ＝Ｔｅｍｐ・Ｋ１を得る。通信端末１２は、この共通鍵Ｋを用いてメッセージｍ１を復号（ｍ１＝ＤＥＭ．Ｄｅｃ（Ｋ１，ＣＤＥＭ））する。
【００５８】
＜セッション鍵更新＞
通信端末１３はセッション鍵をＫ１からＫ２に更新するものとする。サーバ装置１４は事前に通信端末１１から（ＣＤＥＭ，ＣＲＳＡ）＝（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ１），ＲＳＡ．Ｅｎｃ（ｐｋｒｏｏｍＩＤ，Ｋ／Ｋ１））を得ているものとする。ここで、ｍ１は通信端末１１がｒｏｏｍＩＤが指し示すメッセージルームにおいて鍵更新以前に送信したメッセージであり、Ｋはそのメッセージを送信する際に生成した共通鍵である。通信端末１３は、セッション鍵記憶部１３１Ａから古いセッション鍵Ｋ１と新しいセッション鍵Ｋ２、公開鍵記憶部１３２Ａから公開鍵ｐｋｒｏｏｍＩＤを取り出し、Ｃ´ＲＳＡ＝ＲＳＡ．Ｅｎｃ（ｐｋｒｏｏｍＩＤ，Ｋ１／Ｋ２）を計算する。通信端末１３は、サーバ装置１４にＣ´ＲＳＡを送信する。サーバ装置１４は通信端末１３からＣ´ＲＳＡを受信し、さらに暗号文記憶部１４１ＡからＣＲＳＡを取り出し、Ｃ´´ＲＳＡ＝ＣＲＳＡ・Ｃ´ＲＳＡ＝ＲＳＡ．Ｅｎｃ（ｐｋｒｏｏｍＩＤ，Ｋ／Ｋ２）を計算し、暗号文記憶部１４１Ａに既に保存されているＣＲＳＡをＣ´´ＲＳＡに上書き保存する処理を実行する。
【００５９】
［基本例１の実装例Ｂ］
以下の実装例Ｂでは、公開鍵暗号方式として楕円ＥｌＧａｍａｌ暗号方式を用いた例を説明する。
【００６０】
＜暗号化、メッセージ送信＞
通信端末１１は、前述と同様に共通鍵Ｋ、セッション鍵Ｋ１、公開鍵ｐｋｒｏｏｍＩＤを用いて、（ＣＤＥＭ，ＣＥＣＥＧ）＝（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ１），ＥＣＥＧ．Ｅｎｃ（ｐｋｒｏｏｍＩＤ，Ｋ−Ｋ１））を計算する。なお、ＥＣＥＧ．Ｅｎｃ関数に入力するＫ−Ｋ１について、演算−は、楕円ＥｌＧａｍａｌ暗号方式のセットアップ時に生成した楕円曲線上の点がなす加法（＋）群における差を意味する。通信端末１１はサーバ装置１４に（ＣＤＥＭ，ＣＥＣＥＧ）を送信する。
【００６１】
＜メッセージ受信、復号＞
サーバ装置１４は通信端末１１から（ＣＤＥＭ，ＣＥＣＥＧ）を受信し、暗号文記憶部１４１Ａに保存する。なお、通信端末１１から送信されたメッセージ毎に（ＣＤＥＭ，ＣＥＣＥＧ）は保存する必要がある。サーバ装置１４は、通信端末１２に（ＣＤＥＭ，ＣＥＣＥＧ）を送信する。通信端末１２はサーバ装置１４から（ＣＤＥＭ，ＣＥＣＥＧ）を受信する。通信端末１２は、秘密鍵記憶部１２２Ａから秘密鍵ｓｋｒｏｏｍＩＤを取り出し、Ｔｅｍｐ＝ＥＣＥＧ．Ｄｅｃ（ｓｋｒｏｏｍＩＤ，ＣＥＣＥＧ）を計算する。通信端末１２は、セッション鍵記憶部１２３Ａからセッション鍵Ｋ１を取り出し、共通鍵Ｋ＝Ｔｅｍｐ＋Ｋ１を得る。この共通鍵Ｋを用いて、メッセージｍ１を復号（ｍ１＝ＤＥＭ．Ｄｅｃ（Ｋ，ＣＤＥＭ））する。
【００６２】
＜セッション鍵更新＞
通信端末１３はセッション鍵をＫ１からＫ２に更新するものとする。サーバ装置１４は事前に通信端末１１から（ＣＤＥＭ，ＣＥＣＥＧ）＝（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ１），ＥＣＥＧ．Ｅｎｃ（ｐｋｒｏｏｍＩＤ，Ｋ−Ｋ１））を得ているものとする。ここで、ｍ１は通信端末１１がｒｏｏｍＩＤが指し示すメッセージルームにおいて鍵更新以前に送信したメッセージであり、Ｋはそのメッセージを送信する際に生成した共通鍵である。通信端末１３は、セッション鍵記憶部１３１Ａから古いセッション鍵Ｋ１と新しいセッション鍵Ｋ２、公開鍵記憶部１３２Ａから公開鍵ｐｋｒｏｏｍＩＤを取り出し、Ｃ´ＥＣＥＧ＝ＥＣＥＧ．Ｅｎｃ（ｐｋｒｏｏｍＩＤ，Ｋ１−Ｋ２）を計算する。通信端末１３はサーバ装置１４にＣ´ＥＣＥＧを送信する。サーバ装置１４は通信端末１３からＣ´ＥＣＥＧを受信し、さらに暗号文記憶部１４１ＡからＣＥＣＥＧを取り出し、Ｃ´´ＥＣＥＧ＝ＣＥＣＥＧ＋Ｃ´ＥＣＥＧ＝ＥＣＥＧ．Ｅｎｃ（ｐｋｒｏｏｍＩＤ，Ｋ−Ｋ２）を計算し、暗号文記憶部１４１Ａに既に保存されているＣＥＣＥＧをＣ´´ＥＣＥＧに上書き保存する処理を実行する。
【基本例２】
【００６３】
以下、公開鍵暗号を用いないバリエーションである、基本例２の通信システムについて説明する。
【００６４】
図９に示すように、本基本例２の通信システム２は、送信機能を有する通信端末２１と、受信機能を有する通信端末２２と、鍵更新機能を有する通信端末２３と、サーバ装置２４を含む構成である。これらの装置はネットワーク９を介して通信可能に接続されている。なお、通信端末２１、通信端末２２、通信端末２３、サーバ装置２４はそれぞれが複数存在してもよい。説明の便宜上、以下ではこれらの装置が各一つずつ存在するものとする。
【００６５】
図１０に示すように、通信端末２１は、共通鍵暗号文取得部１１１と、共通鍵記憶部１１１Ａと、関数演算結果取得部１１２と、セッション鍵記憶部１１２Ａと、暗号文送信部２１４を含む構成であって、暗号文送信部２１４以外の構成要件については、基本例１と同様である。なお、本基本例では公開鍵暗号を用いないため基本例１に存在した公開鍵暗号文取得部１１３、公開鍵記憶部１１３Ａは不要である。
【００６６】
図１５に示すように、共通鍵暗号文取得部１１１は、共通鍵Ｋに基づいてメッセージｍを暗号化（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ））して共通鍵暗号文ＣＤＥＭを取得する（Ｓ１１１）。関数演算結果取得部１１２は、関数ｆｋ１に基づいて共通鍵Ｋとセッション鍵Ｋ１を演算して関数演算結果ｆｋ１（Ｋ，Ｋ１）を取得する（Ｓ１１２）。以下、関数演算結果をＺとも表記する。暗号文送信部２１４は、共通鍵暗号文ＣＤＥＭと関数演算結果Ｚをサーバ装置１４に送信する（Ｓ２１４）。
【００６７】
図１１に示すように、通信端末２２は、暗号文受信部２２１と、共通鍵取得部１２３と、セッション鍵記憶部１２３Ａと、メッセージ復号部１２４を含む構成であって、暗号文受信部２２１以外の構成要件については、基本例１と同様である。なお、本基本例では公開鍵暗号を用いないため基本例１に存在した関数演算結果復号部１２２と、秘密鍵記憶部１２２Ａは不要である。
【００６８】
図１５に示すように、暗号文受信部２２１は、サーバ装置１４から共通鍵暗号文ＣＤＥＭと関数演算結果Ｚを受信する（Ｓ２２１）。共通鍵取得部１２３は、関数ｈｋ１に基づいてセッション鍵Ｋ１と関数演算結果ｆｋ１（Ｋ，Ｋ１）を演算（ｈｋ１（ｆｋ１（Ｋ，Ｋ１），Ｋ１））して共通鍵Ｋを取得する（Ｓ１２３）。メッセージ復号部１２４は、受信した共通鍵暗号文ＣＤＥＭを、取得した共通鍵Ｋに基づいて復号（ＤＥＭ．Ｄｅｃ（Ｋ，ＣＤＥＭ））してメッセージｍを取得する（Ｓ１２４）。
【００６９】
図１２に示すように、通信端末２３は、鍵更新用関数演算結果取得部１３１と、セッション鍵記憶部１３１Ａと、鍵更新用データ送信部２３３を含む構成であって、鍵更新用データ送信部２３３以外の構成要件については、基本例１と同様である。なお、本基本例では公開鍵暗号を用いないため基本例１に存在した鍵更新用公開鍵暗号文取得部１３２と、公開鍵記憶部１３２Ａは不要である。
【００７０】
図１６に示すように、鍵更新用関数演算結果取得部１３１は、関数ｆｋ１に基づいてセッション鍵Ｋ１と更新済セッション鍵Ｋ２（以下、更新後のセッション鍵Ｋ２ともいう）とを演算して鍵更新用関数演算結果ｆｋ１（Ｋ１，Ｋ２）を取得する（Ｓ１３１）。以下、鍵更新用関数演算結果をＺ´とも表記する。鍵更新用データ送信部２３３は、鍵更新用関数演算結果Ｚ´をサーバ装置２４に送信する（Ｓ２３３）。
【００７１】
図１３に示すように、サーバ装置２４は、暗号文受信部２４１と、暗号文記憶部２４１Ａと、暗号文送信部２４２と、鍵更新用データ受信部２４３と、新規データ取得部２４４を含む構成である。
【００７２】
図１５に示すように、暗号文受信部２４１は、通信端末２１から共通鍵暗号文ＣＤＥＭと関数演算結果Ｚを受信する（Ｓ２４１）。暗号文記憶部２４１Ａは、受信した共通鍵暗号文ＣＤＥＭ  と関数演算結果Ｚを記憶する（Ｓ２４１Ａ１）。暗号文送信部２４２は、通信端末２２に共通鍵暗号文ＣＤＥＭと関数演算結果Ｚを送信する（Ｓ２４２）。
【００７３】
図１６に示すように、鍵更新用データ受信部２４３は、通信端末２３から鍵更新用関数演算結果Ｚ´を受信する（Ｓ２４３）。新規データ取得部２４４は、関数ｇｋ１に基づいて関数演算結果Ｚと鍵更新用関数演算結果Ｚ´を演算（ｇｋ１（Ｚ，Ｚ´））して新たな関数演算結果Ｚ´´を取得する（Ｓ２４４）。
【００７４】
なお、ステップＳ１２３において関数ｈｋ１に基づいて更新後のセッション鍵Ｋ２と関数演算結果ｆｋ１（Ｋ，Ｋ２）を演算（ｈｋ１（ｆｋ１（Ｋ，Ｋ２），Ｋ２））することで共通鍵Ｋを取得することができるため、更新後のセッション鍵Ｋ２を用いたメッセージｍの復号が可能であることが確認された。また、サーバ装置２４で取り扱われているＺ´やＺ´´によっても、更新後のセッション鍵Ｋ２を知ることは困難であるため、サーバ装置２４に対してセッション鍵を秘匿しながら更新することが可能であることが確認された。
【００７５】
上述の基本例２では、送信機能を有する通信端末２１、受信機能を有する通信端末２２、鍵更新機能を有する通信端末２３を例示した。しかし、本基本例の通信端末は上記の例に限定されない。例えば、送信機能、受信機能、鍵更新機能のうちいずれか二つの機能を備える通信端末として実現してもよい。また図１４に示すように、送信機能、受信機能、鍵更新機能の全てを備える通信端末２０として実現してもよい。
【００７６】
［基本例２の実装例］
以下に、基本例２の実装例を示す。
【００７７】
＜暗号化、メッセージ送信＞
通信端末２１は、（ＣＤＥＭ，Ｋｅｙ）＝（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ１），Ｋ／Ｋ１）（または、（ＣＤＥＭ，Ｋｅｙ）＝（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ１），Ｋ−Ｋ１））を計算する。通信端末２１はサーバ装置２４に（ＣＤＥＭ，Ｋｅｙ）を送信する。
【００７８】
＜メッセージ受信、復号＞
サーバ装置２４は通信端末２１から（ＣＤＥＭ，Ｋｅｙ）を受信し、暗号文記憶部２４１Ａに保存する。なお、通信端末２１から送信されたメッセージ毎に（ＣＤＥＭ，Ｋｅｙ）は保存する必要がある。サーバ装置２４は、通信端末２２に（ＣＤＥＭ，Ｋｅｙ）を送信する。通信端末２２はサーバ装置２４から（ＣＤＥＭ，Ｋｅｙ）を受信する。ここから通信端末２２はＫ＝Ｔｅｍｐ・Ｋ１（またはＫ＝Ｔｅｍｐ＋Ｋ１）を得る。通信端末２２は、この共通鍵Ｋを用いてメッセージｍ１を復号（ｍ１＝ＤＥＭ．Ｄｅｃ（Ｋ，ＣＤＥＭ））する。
【００７９】
＜セッション鍵更新＞
通信端末２３はセッション鍵をＫ１からＫ２に更新するものとする。
【００８０】
サーバ装置２４は事前に通信端末２１から（ＣＤＥＭ，Ｋｅｙ）＝（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ１），Ｋ／Ｋ１）（または、（ＣＤＥＭ，Ｋｅｙ）＝（ＤＥＭ．Ｅｎｃ（Ｋ，ｍ１），Ｋ−Ｋ１））を得ているものとする。ここで、ｍ１は通信端末２１がｒｏｏｍＩＤが指し示すメッセージルームにおいて鍵更新以前に送信したメッセージであり、Ｋはそのメッセージを送信する際に生成した共通鍵である。通信端末２３はセッション鍵記憶部１３１Ａから古いセッション鍵Ｋ１と新しいセッション鍵Ｋ２を取り出し、Ｋｅｙ´＝Ｋ１／Ｋ２（または、Ｋｅｙ´＝Ｋ１−Ｋ２）を計算する。通信端末２３はサーバ装置２４にＫｅｙ´を送信する。サーバ装置２４は通信端末２３からＫｅｙ´を受信し、さらに暗号文記憶部２４１ＡからＫｅｙを取り出し、Ｋｅｙ´´＝Ｋｅｙ・Ｋｅｙ´＝Ｋ／Ｋ２（または、Ｋｅｙ´´＝Ｋｅｙ＋Ｋｅｙ´＝Ｋ−Ｋ２）を計算し、暗号文記憶部２４１Ａに既に保存されているＫｅｙをＫｅｙ´´に上書き保存する処理を実行する。
【００８１】
上述の基本例２の通信システム２によれば、基本例１と同程度の安全性を確保しながら、公開鍵暗号アルゴリズムの実装を省略することができるため、実装のコストを低減することができる。
【００８２】
＜補記＞
本基本例の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（CentralProcessingUnit、キャッシュメモリやレジスタなどを備えていてもよい）、メモリであるＲＡＭやＲＯＭ、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、ＣＰＵ、ＲＡＭ、ＲＯＭ、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、ＣＤＲＯＭなどの記録媒体を読み書きできる装置（ドライブ）などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【００８３】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている（外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるＲＯＭに記憶させておくこととしてもよい）。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに適宜に記憶される。
【００８４】
ハードウェアエンティティでは、外部記憶装置（あるいはＲＯＭなど）に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にＣＰＵで解釈実行・処理される。その結果、ＣＰＵが所定の機能（上記、…部、…手段などと表した各構成要件）を実現する。
【００８５】
既述のように、上記基本例において説明したハードウェアエンティティにおける処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【００８６】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（DigitalVersatileDisc）、ＤＶＤ−ＲＡＭ（RandomAccessMemory）、ＣＤ−ＲＯＭ（CompactDiscReadOnlyMemory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Opticaldisc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（ElectronicallyErasableandProgrammableReadOnlyMemory）等を用いることができる。
【００８７】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００８８】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（ApplicationServiceProvider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００８９】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【００９０】
なお、上記のように、各装置がコンピュータとプログラムとで実現できる点や、プログラムが記録媒体やネットワークにより流通できる点は、後述する実施例についても同様である。
【００９１】
（基本例における課題について）
基本例においては、セッション鍵の更新に伴って、データを再暗号化するために、更新直前のセッション鍵と更新後の現在のセッション鍵の２つが必要である。すなわち、少なくとも１ユーザはセッション鍵更新の前後でログイン継続中でなければならない。
【００９２】
しかし、例えばチャットルームメンバが全員ログアウト状態になり、その後あるユーザがチャットにログインした場合、そのユーザは直前のセッション鍵を保持していない可能性がある。
【００９３】
図１７にその場合の例を示す。図１７の左側は、更新前のセッション鍵１が複数ユーザにより使用されている状態を示す。その後、全員がログアウトし、セッション鍵がセッション鍵１からセッション鍵２に更新される。図１７の右側に示すように、セッション鍵更新後に、あるユーザがセッション鍵２を用いてセッションに入る。しかし、当該ユーザは、セッション鍵２とともに再暗号化鍵生成に必要なセッション鍵１とセッション鍵２の両方を保持しないので、サーバ装置においてデータの再暗号化を行うことができない。
【００９４】
上記の課題を解決するために、例えば、鍵共有サーバ装置の持つ暗号機能を利用して、直前のセッション鍵を暗号化し、サーバ装置（チャットサーバ等）に保存する方法が考えられる。しかしながら、この方法では、セッション鍵暗号化に使う鍵は鍵共有サーバ装置に生成してもらう必要があり、鍵共有サーバ装置が攻撃されると、この鍵に関する秘密情報が漏えいし、攻撃者により更新後セッション鍵が復号される可能性が残る。
【００９５】
（実施例の概要）
上記の課題を解決するために、本発明の実施例において、更新直前のセッション鍵を暗号化し、保存しておく。ただし、本発明の実施例では、鍵更新前のセッションに参加しているユーザの通信端末におけるセッション鍵の暗号化の際に、特定の複数ユーザのみが復号できるように暗号化して、セッション鍵の暗号文を鍵共有サーバ装置にアップロードする。セッション鍵の更新後に、指定したいずれかのユーザがログインすると、鍵共有サーバ装置は保持している暗号文に基づいて、そのユーザのみが復号できる暗号文を生成し、送信する。そのユーザのみが復号できる暗号文の生成方法の一例として、保持している暗号文を分割する方法がある。そのため、以下で説明する実施例では、便宜上、保持している暗号文を分割して、特定のユーザのみが復号できる暗号文を生成する旨の説明を行っている。
【００９６】
図１８は、課題を解決するための技術の概要を示している。図１８の左側に示すように、ユーザＡの通信端末において、セッション鍵１を特定のユーザ（ここではユーザＢ，Ｃ，Ｄ，Ｅとする）の公開鍵の集合を用いて暗号化し、鍵共有サーバ装置に保存する。その後、全ユーザがログアウトする。
【００９７】
図１８の右側に示すように、セッション鍵更新後、ユーザＣがログインすると、鍵共有サーバ装置は、公開鍵の集合を用いて暗号化されたセッション鍵１の暗号文を分割し、ユーザＣのみが復号できる暗号文を取得して、当該暗号文をユーザＣの通信端末にダウンロードする。ユーザＣは、自身の秘密鍵を用いることで暗号文を復号して、セッション鍵１を取得する。
【００９８】
ユーザＣにダウンロードされる暗号文は、鍵共有サーバ装置の秘密情報を知っていても復号できないので、仮に鍵共有サーバ装置がもつ秘密情報が漏えいしたとしても、セッション鍵１が漏えいすることはない。また、復号処理時間は復号可能なユーザ数に依存しないので、ユーザＣはログイン後に素早くセッション鍵１を得られる。
【実施例】
【００９９】
以下、本発明の実施例を説明する。以下の実施例における通信システム及び各装置については、本発明に関わる構成要素のみを示している。本実施例の各通信端末は、本発明に関わる構成要素以外に、基本例で説明した通信端末１１の機能、通信端末１２の機能、及び通信端末１３の機能のうちのいずれかの機能もしくは全ての機能を含むこととしてもよい。また、本実施例の通信システムにおいて、基本例で説明したサーバ装置１４が存在することとしてもよい。また、本実施例の各通信端末は、本発明に関わる構成要素以外に、基本例で説明した通信端末２１の機能、通信端末２２の機能、及び通信端末２３の機能のうちのいずれかの機能もしくは全ての機能を含むこととしてもよい。また、本実施例の通信システムにおいて、基本例で説明したサーバ装置２４が存在することとしてもよい。
【０１００】
ただし、本実施例における通信システム及び各装置が、基本例における機能を含むことは必須ではなく、基本例における機能を含まないこととしてもよい。
【０１０１】
図１９は、本実施例における通信システムの構成を示す図である。図１９に示すように、本実施例の通信システムは、鍵共有サーバ装置１０００と、セッション鍵の更新前にセッションに参加している通信端末１１００と、セッション鍵の更新後にセッションに参加する通信端末１２００を含む。これらの装置はネットワーク２０００を介して通信可能に接続されている。鍵共有サーバ装置１０００、通信端末１１００、通信端末１２００はそれぞれが複数存在してもよい。また、鍵共有サーバ装置を"サーバ装置"と称してもよい。
【０１０２】
以下、各装置の機能構成を説明する。各装置を構成する機能部の動作については、後の動作例のところでシーケンス図を参照して説明する。以下の説明において、便宜上、更新前のセッション鍵を旧セッション鍵と呼び、更新後のセッション鍵を新セッション鍵と呼ぶ。
【０１０３】
また、以下では、便宜上、セッション鍵の更新前にセッションに参加している通信端末１１００と、セッション鍵の更新後にセッションに参加する通信端末１２００として通信端末を分類しているが、１つの通信端末が、通信端末１１００の機能と通信端末１２００の機能の両方を含むこととしてもよい。
【０１０４】
（各装置の機能構成）
図２０は、鍵共有サーバ装置１０００の構成を示すブロック図である。図２０に示すように、鍵共有サーバ装置１０００は、ユーザ公開鍵記憶部１００１、セットアップ処理部１００２、暗号文分割処理部１００３を有する。
【０１０５】
図２１は、鍵共有サーバ装置１０００におけるセットアップ処理部１００２の構成を示すブロック図である。図２１に示すように、セットアップ処理部１００２は、セットアップ関数処理部１００２−１、部分鍵鍵導出関数処理部１００２−２、共有秘密鍵生成部１００２−３、共有秘密鍵記憶部１００２−４、ユーザ公開鍵配信部１００２−５、静的鍵記憶部１００２−６、部分秘密鍵配信部１００２−７を有する。
【０１０６】
図２２は、鍵共有サーバ装置１０００における暗号文分割処理部１００３の構成を示すブロック図である。図２２に示すように、暗号文分割処理部１００３は、復号関数処理部１００３−１、分割関数処理部１００３−２、暗号化関数処理部１００３−３、分割暗号化旧セッション鍵送信部１００３−４を有する。
【０１０７】
図２３は、通信端末１１００の構成を示すブロック図である。図２３に示すように、通信端末１１００は、セットアップ処理部１１０１、旧セッション鍵暗号化処理部１１０２を有する。
【０１０８】
図２４は、通信端末１１００におけるセットアップ処理部１１０１の構成を示すブロック図である。図２４に示すように、セットアップ処理部１１０１は、秘密値生成関数処理部１１０１−１、完全秘密鍵生成関数処理部１１０１−２、公開鍵生成関数処理部１１０１−３、公開鍵送信部１１０１−４、共有秘密鍵生成部１１０１−５、静的秘密鍵記憶部１１０１−６、共有秘密鍵記憶部１１０１−７、部分秘密鍵受信部１１０１−８を有する。
【０１０９】
図２５は、通信端末１１００における旧セッション鍵暗号化処理部１１０２の構成を示すブロック図である。図２４に示すように、旧セッション鍵暗号化処理部１１０２は、暗号化関数処理部１１０２−１、及び暗号化関数処理部１１０２−２、暗号化旧セッション鍵送信部１１０２−３を有する。
【０１１０】
図２６は、通信端末１２００の構成を示すブロック図である。図２６に示すように、通信端末１２００は、セットアップ処理部１２０１、旧セッション鍵復号処理部１２０２を有する。通信端末１２００におけるセットアップ処理部１２０１は、通信端末１１００におけるセットアップ処理部１１０１と同様の構成を有する。
【０１１１】
図２７は、通信端末１２００における旧セッション鍵復号処理部１２０２の構成を示すブロック図である。図２７に示すように、旧セッション鍵復号処理部１２０２は、復号関数処理部１２０２−１、及び復号関数処理部１２０２−２を有する。
【０１１２】
（ハードウェア構成例）
上述した鍵共有サーバ装置１０００、通信端末１１００、及び通信端末１２００（これらを総称して"装置"と呼ぶ）はいずれも、例えば、コンピュータに、本実施例で説明する処理内容を記述したプログラムを実行させることにより実現可能である。
【０１１３】
すなわち、当該装置は、コンピュータに内蔵されるＣＰＵやメモリ等のハードウェア資源を用いて、当該装置で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【０１１４】
図２８は、本実施の形態における上記コンピュータのハードウェア構成例を示す図である。図２８のコンピュータは、それぞれバスＢで相互に接続されているドライブ装置１３００、補助記憶装置１３０２、メモリ装置１３０３、ＣＰＵ１３０４、インタフェース装置１３０５、表示装置１３０６、及び入力装置１３０７等を有する。
【０１１５】
当該コンピュータでの処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ又はメモリカード等の記録媒体１３０１によって提供される。プログラムを記憶した記録媒体１３０１がドライブ装置１３００にセットされると、プログラムが記録媒体１３０１からドライブ装置１３００を介して補助記憶装置１３０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１３０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１３０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【０１１６】
メモリ装置１３０３は、プログラムの起動指示があった場合に、補助記憶装置１３０２からプログラムを読み出して格納する。ＣＰＵ１３０４は、メモリ装置１３０３に格納されたプログラムに従って、当該装置に係る機能を実現する。インタフェース装置１３０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１３０６はプログラムによるＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）等を表示する。入力装置１５７はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。
【０１１７】
（動作例）
次に、上述した構成を備える本実施例における通信システムの動作例を説明する。
【０１１８】
本実施例における通信システムの動作は、大きく分けて、静的鍵の生成、状態情報の生成、旧セッション鍵の暗号文の生成、旧セッション鍵の暗号文を特定の通信端末のみが復号できるように変換、旧セッション鍵の暗号文の復号、を含む。以下では、これらのそれぞれについて説明する。
【０１１９】
＜関数について＞
説明にあたって、種々の関数が使用されるので、まず、各関数について説明しておく。本実施例に係る方式は、分割可能証明書不要複数受信者暗号方式と認証付き暗号方式を用いる。
【０１２０】
分割可能証明書不要複数受信者暗号方式は以下の８つの関数の組
（Ｓｅｔｕｐ，Ｄｅｒ，ＳｅｔＳＶ，ＳｅｔＳＫ，ＳｅｔＰＫ，Ｅｎｃ，Ｄｉｖ，Ｄｅｃ）
からなり、これは証明書不要で複数のユーザが復号可能なように平文を暗号化し、暗号情報を分割して特定のユーザに配付する方式を実現する暗号方式である。
【０１２１】
また、認証付き暗号方式は以下の３つの関数の組
（ＡＥＧｅｎ，ＡＥｎｃ，ＡＤｅｃ）からなり、これはメッセージの秘匿と認証の機能を提供する暗号方式である。
【０１２２】
以下、各関数について説明する。以下の説明では、「出力←関数名（入力）」という記述方法を使用する。これは、"関数名"で表わされる関数に、"入力"で表わされる入力値を入力した場合に、"出力"で表わされる出力値が得られることを示す。なお、関数をアルゴリズムと呼んでもよい。
【０１２３】
（Ｐａｒａｍｓ，ｍｓｋ）←Ｓｅｔｕｐ（１ｋ）：関数Ｓｅｔｕｐは、セットアップアルゴリズムであり、１のｋビット列（ｋはセキュリティパラメータ）を入力とし、公開パラメータＰａｒａｍｓと、マスタ秘密鍵ｍｓｋを出力する。
【０１２４】
ｐｓｋＩ←Ｄｅｒ（Ｐａｒａｍｓ，ｍｓｋ，ＵＩ）：関数Ｄｅｒは、部分秘密鍵導出アルゴリズムであり、Ｐａｒａｍｓ、ｍｓｋ、及びユーザ（通信端末）のＩＤであるＵＩを入力とし、部分秘密鍵ｐｓｋＩを出力する。
【０１２５】
ｓｖＩ←ＳｅｔＳＶ（Ｐａｒａｍｓ，ＵＩ）：関数ＳｅｔＳＶは、秘密値生成アルゴリズムであり、ＰａｒａｍｓとＵＩを入力として、秘密値ｓｖＩを出力する。
【０１２６】
ｃｓｋＩ←ＳｅｔＳＫ（Ｐａｒａｍｓ，ｐｓｋＩ，ｓｖＩ）：関数ＳｅｔＳＫは、完全秘密鍵生成アルゴリズムであり、公開パラメータＰａｒａｍｓ、部分秘密鍵ｐｓｋＩ、秘密値ｓｖＩを入力として、完全秘密鍵ｃｓｋＩを出力する。
【０１２７】
ｃｐｋＩ←ＳｅｔＰＫ（Ｐａｒａｍｓ，ｓｖＩ）：関数ＳｅｔＰＫは、公開鍵生成アルゴリズムであり、公開パラメータＰａｒａｍｓ、秘密値ｓｖＩを入力として、公開鍵ｃｐｋＩを出力する。
【０１２８】
ＣＴ←Ｅｎｃ（Ｐａｒａｍｓ，Ｓ，｛ｃｐｋＩ｝ＵＩ∈Ｓ，ｍ）：関数Ｅｎｃは、暗号化アルゴリズムであり、公開パラメータＰａｒａｍｓ、ＩＤの集合Ｓ、Ｓの要素であるＵＩについての公開鍵ｃｐｋＩの集合、及び平文ｍを入力とし、暗号文ＣＴを出力する。
【０１２９】
ＣＴ´←Ｄｉｖ（Ｐａｒａｍｓ，ＣＴ，Ｓ´，｛ｃｐｋＩ｝ＵＩ∈Ｓ´）：関数Ｄｉｖは、公開パラメータＰａｒａｍｓ、暗号文ＣＴ、復号を可能とするユーザのＩＤの集合Ｓ´（Ｓ´⊆Ｓ）、Ｓ´の要素であるＵＩについての公開鍵ｃｐｋＩの集合を入力とし、暗号文ＣＴ´を出力する。
【０１３０】
ｍ←Ｄｅｃ（Ｐａｒａｍｓ，ｃｓｋＩ，ＣＴ´）：関数Ｄｅｃは、復号アルゴリズムであり、公開パラメータＰａｒａｍｓ、完全秘密鍵ｃｓｋＩ、暗号文ＣＴ´を入力とし、平文ｍあるいは復号不可能を出力する。
【０１３１】
ａｋ←ＡＥＧｅｎ（１ｋ）：関数ＡＥＧｅｎは、鍵生成アルゴリズムであり、１のｋビット列（ｋはセキュリティパラメータ）を入力とし、秘密鍵ａｋを出力する。
【０１３２】
ｃｔ←ＡＥｎｃ（ａｋ，ｍ）：関数ＡＥｎｃは、暗号化アルゴリズムであり、秘密鍵ａｋ、平文ｍを入力とし、暗号文ｃｔを出力する。
【０１３３】
ｍ←ＡＤｅｃ（ａｋ，ｃｔ）：関数ＡＤｅｃは、復号アルゴリズムであり、秘密鍵ａｋ、暗号文ｃｔを入力とし、平文ｍあるいは復号不可能を出力する。
【０１３４】
以下、図２９のシーケンス図の手順に沿って、通信システムの動作を説明する。以下の動作説明において、最初に通信端末１１００は、旧セッション鍵が使用されるセッションに参加しており、通信端末１１００がセッションから離脱した後、セッション鍵が新セッション鍵に更新され、通信端末１２００がセッションに参加することを想定している。
【０１３５】
＜静的鍵の生成＞
Ｓ１００１において、鍵共有サーバ装置１０００は、鍵共有サーバ装置１０００の静的な公開鍵であるＳＰＫ｛Ｓｅｒｖｅｒ｝と、鍵共有サーバ装置１０００の静的な秘密鍵であるＳＳＫ｛Ｓｅｒｖｅｒ｝を取得する。より詳細には、鍵共有サーバ装置１０００のセットアップ処理部１００２におけるセットアップ関数処理部１００２−１が、演算Ｓｅｔｕｐ（１ｋ）を行うことにより公開パラメータＰａｒａｍｓ及びマスタ秘密鍵ｍｓｋを生成し、ＰａｒａｍｓをＳＰＫ｛Ｓｅｒｖｅｒ｝とし、ｍｓｋをＳＳＫ｛Ｓｅｒｖｅｒ｝とする。ＳＰＫ｛Ｓｅｒｖｅｒ｝とＳＳＫ｛Ｓｅｒｖｅｒ｝は静的鍵記憶部１００２−６に格納される。
【０１３６】
Ｓ１００２において、鍵共有サーバ装置１０００は、部分秘密鍵ｐｓｋＩを取得する。セッションに参加している複数の通信端末（ユーザ）が存在する場合、それぞれの通信端末についての部分秘密鍵ｐｓｋＩが取得される。
【０１３７】
より詳細には、鍵共有サーバ装置１０００の部分鍵導出関数処理部１００２−２が、Ｐａｒａｍｓ、ｍｓｋ、及び通信端末１１００のＩＤであるＵＩを入力として、演算Ｄｅｒ（Ｐａｒａｍｓ，ｍｓｋ，ＵＩ）を行うことにより、通信端末１１００についての部分秘密鍵ｐｓｋＩを生成する。セッションに参加している他の通信端末についても同様にして、当該通信端末についての部分秘密鍵ｐｓｋＩが生成される。
【０１３８】
Ｓ１００３において、部分秘密鍵配信部１００２−７は、通信端末１１００に対する部分秘密鍵ｐｓｋＩを通信端末１１００に配信する。他の通信端末に対しても同様である。また、このとき、通信端末１１００において以降の処理で使用されるＰａｒａｍｓ（＝サーバの公開鍵ＳＰＫ｛Ｓｅｒｖｅｒ｝）も通信端末１１００に配信される。なお、サーバの公開鍵ＳＰＫ｛Ｓｅｒｖｅｒ｝についてはこれよりも前のタイミングで配信されることとしてもよい。部分秘密鍵ｐｓｋＩは、通信端末１１００の部分秘密鍵受信部１１０１−８が受信する。
【０１３９】
Ｓ１００４において、通信端末１１００は、通信端末１１００の静的な公開鍵であるユーザ公開鍵ＳＰＫＩ、及び通信端末１１００の静的な秘密鍵であるユーザ秘密鍵ＳＳＫＩを取得する。セッションに参加している他の通信端末も同様である。
【０１４０】
より具体的には、通信端末１１００のセットアップ処理部１１０１における秘密値生成関数処理部１１０１−１が、ＰａｒａｍｓとＵＩを入力として、演算ＳｅｔＳＶ（Ｐａｒａｍｓ，ＵＩ）を行うことにより秘密値ｓｖＩを生成する。そして、完全秘密鍵生成関数処理部１１０１−２が、Ｐａｒａｍｓ、部分秘密鍵ｐｓｋＩ、秘密値ｓｖＩを入力として、演算ＳｅｔＳＫ（Ｐａｒａｍｓ，ｐｓｋＩ，ｓｖＩ）を行うことにより完全秘密鍵ｃｓｋＩを生成し、これをユーザ秘密鍵ＳＳＫＩとする。
【０１４１】
また、公開鍵生成関数処理部１１０１−３は、Ｐａｒａｍｓ、秘密値ｓｖＩを入力として、演算ＳｅｔＰＫ（Ｐａｒａｍｓ，ｓｖＩ）を行うことにより、公開鍵ｃｐｋＩを生成し、これをユーザ公開鍵ＳＰＫＩとする。
【０１４２】
ユーザ公開鍵ＳＰＫＩとユーザ秘密鍵ＳＳＫＩは、静的鍵記憶部１１０１−６に格納される。
【０１４３】
Ｓ１００５において、通信端末１１００の公開鍵送信部１１０１−４は、ユーザ公開鍵ＳＰＫＩを鍵共有サーバ装置１０００に送信する。セッションに参加している他の通信端末も同様に送信を行う。鍵共有サーバ装置１０００は、各通信端末から受信したユーザ公開鍵ＳＰＫＩをユーザ公開鍵記憶部１００１に格納する。
【０１４４】
次に、Ｓ１００６において、鍵共有サーバ装置１０００のユーザ公開鍵配信部１００２−５は、各通信端末から受信したユーザ公開鍵ＳＰＫＩの集合｛ＳＰＫＩ｝［１，Ｎ］を通信端末１１００に送信する。セッションに参加している他の各通信端末にも同様に集合｛ＳＰＫＩ｝［１，Ｎ］を送信する。
【０１４５】
＜状態情報の生成＞
Ｓ１００７において、鍵共有サーバ装置１０００の共有秘密鍵生成部１００２−３は、１のｋビット列（ｋはセキュリティパラメータ）を入力として、演算ＡＥＧｅｎ（１ｋ）を行うことにより秘密鍵ａｋＩを生成し、当該秘密鍵ａｋＩを状態情報ｋＩとし、当該状態情報ｋＩを共有秘密鍵記憶部１００２−４に格納する。鍵共有サーバ装置１０００は、演算ＡＥＧｅｎ（１ｋ）を行って得られた秘密鍵ａｋＩをＴＬＳ等の暗号通信で通信端末１１００に送信する（Ｓ１００８）。これにより当該秘密鍵ａｋＩを通信端末１１００との間で共有する。
【０１４６】
上記のように鍵共有サーバ装置１０００が秘密鍵ａｋＩを生成することに代えて、通信端末１１００の共有秘密鍵生成部１１０１−５が、１のｋビット列（ｋはセキュリティパラメータ）を入力として、演算ＡＥＧｅｎ（１ｋ）を行うことにより秘密鍵ａｋＩを生成し、当該秘密鍵ａｋＩを状態情報ｋＩとし、当該状態情報ｋＩを共有秘密鍵記憶部１１０１−７に格納することとしてもよい。この場合、通信端末１１００は、演算ＡＥＧｅｎ（１ｋ）を行って得られた秘密鍵ａｋＩをＴＬＳ等の暗号通信で鍵共有サーバ装置１０００に送信することで、当該秘密鍵ａｋＩを鍵共有サーバ装置１０００との間で共有する。
【０１４７】
また、演算ＡＥＧｅｎ（１ｋ）を行うことにより秘密鍵ａｋＩを生成することに代えて、鍵共有サーバ装置１０００と通信端末１１００との間で認証付き鍵交換を実行し、得た鍵を演算ＡＥＧｅｎ（１ｋ）で得られた鍵とみなすこととしてもよい。
【０１４８】
なお、Ｓ１００７、Ｓ１００８を実行するタイミング、あるいは上記の認証付き鍵交換を実行するタイミングは、図２９に示すタイミングでなくてもよい。状態情報ｋＩを使用する処理の前までに状態情報ｋＩが生成されればよい。また、状態情報ｋＩは、セッション毎あるいは所定の時間間隔で更新される。状態情報ｋＩは、各通信端末と鍵共有サーバ装置１０００間で共有される秘密鍵である。
【０１４９】
＜旧セッション鍵の暗号文の生成＞
Ｓ１００９において、通信端末１１００は、旧セッション鍵の暗号文ＣＴｏｌｄを取得する。ここでは、通信端末１１００における旧セッション鍵暗号化処理部１１０２が、状態情報ｋｉ、ＩＤの集合Ｓ、旧セッション鍵ＳＫｏｌｄ、ユーザ公開鍵の集合｛ＳＰＫＩ｝［１，Ｎ］、及びサーバ公開鍵ＳＰＫ｛Ｓｅｒｖｅｒ｝を入力として、演算ＥｎｃＯｌｄ（ｋｉ，Ｓ、ＳＫｏｌｄ，｛ＳＰＫＩ｝［１，Ｎ］，ＳＰＫ｛Ｓｅｒｖｅｒ｝）を行って、ＣＴｏｌｄを生成する。
【０１５０】
より詳細には、旧セッション鍵暗号化処理部１１０２における暗号化関数処理部１１０２−１が、サーバ公開鍵ＳＰＫ｛Ｓｅｒｖｅｒ｝（＝Ｐａｒａｍｓ）、Ｓ、ユーザ公開鍵の集合｛ＳＰＫＩ｝［１，Ｎ］（＝｛ｃｐｋＩ｝ＵＩ∈Ｓ）、旧セッション鍵ＳＫｏｌｄを入力として、演算Ｅｎｃ（Ｐａｒａｍｓ，Ｓ，｛ｃｐｋＩ｝ＵＩ∈Ｓ，ＳＫｏｌｄ）を行ってＣＴを生成する。ここで、本実施例の通信システムにおける全ユーザのＩＤの集合を｛Ｕ１，…．ＵＮ｝とすると、Ｓは｛Ｕ１，…．ＵＮ｝の部分集合である。例えば、Ｓはあるチャットルームに属するユーザの集合である。また、ここでは、Ｓに対応する通信端末の集合のそれぞれが復号できるように旧セッション鍵が暗号化される。
【０１５１】
続いて、暗号化関数処理部１１０２−２が、状態情報ｋｉ（＝ａｋｉ）とＣＴを入力として、演算ＡＥｎｃ（ａｋｉ，ＣＴ）を行って、ｃｔｉを生成し、これをＣＴｏｌｄとする。
【０１５２】
Ｓ１０１０において、暗号化旧セッション鍵送信部１１０２−３が、ＣＴｏｌｄを鍵共有サーバ装置１０００に送信する。鍵共有サーバ装置１０００の暗号文分割処理部１００３が、ＣＴｏｌｄを受信する。
【０１５３】
＜旧セッション鍵の暗号文を特定の通信端末のみが復号できるように変換＞
この段階において、セッション鍵が更新され、通信端末１２００が新セッションに参加するものとする。また、通信端末１２００は、通信端末１１０と同様にして、セットアップを行って、以降の処理で使用する鍵を保持しているものとする。なお、通信端末１２００のＩＤはＳに含まれているＩＤである。
【０１５４】
Ｓ１０１１において、鍵共有サーバ装置１０００の暗号文分割処理部１００３が、暗号化旧セッション鍵ＣＴｏｌｄを特定の通信端末（ここでは通信端末１２００とする）のみが復号できるように変換し、変換後の暗号化旧セッション鍵ＣＴｎｅｗを取得する。なお、指定する特定の通信端末は１つに限られず、Ｓに含まれるＩＤを持つ通信端末であれば、複数の通信端末であってもよい。
【０１５５】
ここでは、暗号文分割処理部１００３が、暗号化旧セッション鍵ＣＴｏｌｄ、通信端末１２００のＩＤであるＵｉ´、セッション更新前の状態情報ｋｉ、セッション更新後の状態情報ｋｉ´、ユーザ公開鍵ＳＰＫｉ、サーバ公開鍵ＳＰＫ｛Ｓｅｒｖｅｒ｝、サーバ秘密鍵ＳＳＫ｛Ｓｅｒｖｅｒ｝を入力として、演算ＳｅｒｖｅｒＤｉｖ（ＣＴｏｌｄ，Ｕｉ´，ｋｉ，ｋｉ´，ＳＰＫｉ，ＳＰＫ｛Ｓｅｒｖｅｒ｝，ＳＳＫ｛Ｓｅｒｖｅｒ｝）を行うことにより、ＣＴｎｅｗを生成する。
【０１５６】
より詳細には、まず、暗号文分割処理部１００３の復号関数処理部１００３−１が、セッション更新前の状態情報ｋｉ（＝ａｋｉ）、暗号化旧セッション鍵ＣＴｏｌｄ（＝ｃｔｉ）を入力として、演算ＡＤｅｃ（ａｋｉ，ｃｔｉ）を実行することにより、〜ＣＴを生成する。なお、明細書の記載において、記載の便宜上、文字の頭につく波線"〜"を、例えば"〜ＣＴ"のように、文字の前に付けている。
【０１５７】
次に、分割関数処理部１００３−２は、サーバ公開鍵ＳＰＫ｛Ｓｅｒｖｅｒ｝（＝Ｐａｒａｍｓ）、〜ＣＴ、復号を可能とするユーザのＩＤの集合Ｓ´（ここでは通信端末１２００のＩＤ）、Ｓ´の要素であるＵＩについての公開鍵ｃｐｋＩの集合｛ｃｐｋＩ｝ＵＩ∈Ｓ´（ここでは、通信端末１２００のユーザ公開鍵ＳＰＫｉ）を入力して、演算Ｄｉｖ（Ｐａｒａｍｓ，〜ＣＴ，Ｓ´，｛ｃｐｋＩ｝ＵＩ∈Ｓ´）を実行して、ＣＴ´を生成する。
【０１５８】
続いて、暗号化関数処理部１００３−３が、セッション更新後の状態情報ｋｉ´（＝ａｋｉ´）とＣＴ´を入力として、演算ＡＥｎｃ（ａｋｉ´，ＣＴ´）を実行し、ｃｔＳを生成し、これをＣＴｎｅｗとする。
【０１５９】
Ｓ１０１２において、分割暗号化旧セッション鍵送信部１００３−４は、分割後（変換後）の暗号化旧セッション鍵ＣＴｎｅｗを通信端末１２００に送信する。通信端末１２００の旧セッション鍵復号処理部１２０２がＣＴｎｅｗを受信する。
【０１６０】
＜旧セッション鍵の暗号文の復号＞
Ｓ１０１３において、通信端末１２００がＣＴｎｅｗを復号して旧セッション鍵ＳＫｏｌｄを取得する。
【０１６１】
ここでは、通信端末１２００の旧セッション鍵復号処理部１２０２が、セッション更新後の状態情報ｋｉ´、ＣＴｎｅｗ、ユーザ秘密鍵ＳＳＫｉ´、サーバ公開鍵ＳＰＫ｛Ｓｅｒｖｅｒ｝を入力として、演算ＤｅｃＯｌｄ（ｋｉ´，ＣＴｎｅｗ，ＳＳＫｉ´，ＳＰＫ｛Ｓｅｒｖｅｒ｝）を実行することにより、旧セッション鍵ＳＫｏｌｄを生成する。
【０１６２】
より詳細には、まず、旧セッション鍵復号処理部１２０４の復号関数処理部１２０２−１が、セッション更新後の状態情報ｋｉ´（＝ａｋｉ´）とＣＴｎｅｗ（＝ｃｔＳ）を入力として、ＡＤｅｃ（ａｋｉ´，ｃｔＳ）を実行して、〜ＣＴＳを生成する。次に、復号関数処理部１２０２−２が、サーバ公開鍵ＳＰＫ｛Ｓｅｒｖｅｒ｝（＝Ｐａｒａｍｓ）、通信端末１２００のユーザ秘密鍵ＳＳＫｉ´（＝ｃｓｋｉ´）、及び〜ＣＴＳを入力として、演算Ｄｅｃ（Ｐａｒａｍｓ，ｃｓｋｉ´，〜ＣＴＳ）を実行することにより、旧セッション鍵ＳＫｏｌｄを生成する。
【０１６３】
通信端末１２００は、基本例で説明したように、旧セッション鍵ＳＫｏｌｄと、新セッションへの参加によって取得した新セッション鍵ＳＫｎｅｗとを用いて再暗号化鍵を生成し、それをサーバ装置に送信することで、サーバ装置においてデータの再暗号化を実施することができる。
【０１６４】
（具体例）
次に、上記の実施例で用いた関数であるＳｅｔｕｐ（１ｋ）、Ｄｅｒ（Ｐａｒａｍｓ，ｍｓｋ，ＵＩ）、ＳｅｔＳＶ（Ｐａｒａｍｓ，ＵＩ）、ＳｅｔＳＫ（Ｐａｒａｍｓ，ｐｓｋＩ，ｓｖＩ）、ＳｅｔＰＫ（Ｐａｒａｍｓ，ｓｖＩ）、Ｅｎｃ（Ｐａｒａｍｓ，Ｓ，｛ｃｐｋＩ｝ＵＩ∈Ｓ，ｍ）、Ｄｉｖ（Ｐａｒａｍｓ，ＣＴ，Ｓ´，｛ｃｐｋＩ｝ＵＩ∈Ｓ´）、Ｄｅｃ（Ｐａｒａｍｓ，ｃｓｋＩ，ＣＴ´）についてのより具体的な例（実装例）を説明する。
【０１６５】
なお、以下の具体例は、エルガマル暗号、ＩＤベース暗号、証明書不要暗号等の技術を組み合わせた例であるが、これらの技術を使用することは一例に過ぎない。本発明を実装するための具体的な方法は下記で説明する例に限られるわけではない。
【０１６６】
具体例を説明する前に、具体例で使用される非対称双線形群について説明する。Ｇ１，Ｇ２，ＧＴを素数位数ｐの巡回群とし、ｇ１をＧ１の生成元とし、ｇ２をＧ２の生成元とする。いかなるＸ∈Ｇ１、Ｙ∈Ｇ２、及びａ，ｂ∈Ｚｐに対しても、ｅ（Ｘａ，Ｙｂ）＝ｅ（Ｘ，Ｙ）ａｂ、及びｅ（ｇ１，ｇ２）≠１ＧＴである場合、ｅ：Ｇ１×Ｇ２→ＧＴを非対称双線形写像と呼ぶ。（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｐ）は、写像ｅの非対称双線形群である。なお、１ＧＴはＧＴの単位元である。Ｇ１，Ｇ２，ＧＴは効率的に計算可能である。
【０１６７】
（Ｐａｒａｍｓ，ｍｓｋ）←Ｓｅｔｕｐ（１ｋ）：本具体例では、まず、非対称双線形群（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｐ）、及びｓ∈ＲＺｐを生成する。Ｚｐは０以上ｐ未満の整数の集合であり、ｓ∈ＲＺｐは、ｓをＺｐから一様に選択することを意味する。次に、Ｖ＝ｇ１ｓを計算する。ハッシュ関数Ｈ１：ＩＤＳ→Ｇ２、Ｈ２：Ｇ１→ＭＳ、及びＨ３：ＧＴ→Ｇ１をランダムオラクルとして選択する。ここで、ＩＤＳはＩＤ空間であり、ＭＳは平文空間である。そして、Ｐａｒａｍｓ＝（Ｇ１，Ｇ２，ＧＴ，ｇ１，ｇ２，ｐ，Ｖ，Ｈ１，Ｈ２，Ｈ３）とｍｓｋ＝ｓを出力する。以下の説明において、ＳはＩＤＳの部分集合である。
【０１６８】
ｐｓｋＩ←Ｄｅｒ（Ｐａｒａｍｓ，ｍｓｋ，ＵＩ）：ｐｓｋＩ＝Ｈ１（ＵＩ）ｓを出力する。
【０１６９】
ｓｖＩ←ＳｅｔＳＶ（Ｐａｒａｍｓ，ＵＩ）：ｓｖＩ∈ＲＺｐを出力する。
【０１７０】
ｃｓｋＩ←ＳｅｔＳＫ（Ｐａｒａｍｓ，ｐｓｋＩ，ｓｖＩ）：ｃｓｋＩ＝（ｐｓｋＩ，ｓｖＩ）を出力する。
【０１７１】
ｃｐｋＩ←ＳｅｔＰＫ（Ｐａｒａｍｓ，ｓｖＩ）：ｃｐｋＩ＝ｇ１ｓｖＩを出力する。
【０１７２】
ＣＴ←Ｅｎｃ（Ｐａｒａｍｓ，Ｓ，｛ｃｐｋＩ｝ＵＩ∈Ｓ，ｍ）：ｒ１，ｒ２∈ＲＺｐ２を生成し、ＵＩ∈Ｓに対する
【０１７３】
【数４】
2020053772.tif 000006
を計算し、Ｘ＝ｇ１ｒ２を計算し、ＵＩ∈Ｓに対するＹＩ＝Ｈ１（ＵＩ）ｒ２ｇ２ｒ２を計算し、
【０１７４】
【数５】
2020053772.tif 000007
を計算し、ＣＴ＝（｛ＷＩ｝ＵＩ∈Ｓ，Ｘ，｛ＹＩ｝ＵＩ∈Ｓ，Ｚ）を出力する。
【０１７５】
ＣＴ´←Ｄｉｖ（Ｐａｒａｍｓ，ＣＴ，Ｓ´，｛ｃｐｋＩ｝ＵＩ∈Ｓ´）：ＣＴ´＝（｛ＷＩ｝ＵＩ∈Ｓ´，Ｘ，｛ＹＩ｝ＵＩ∈Ｓ´，Ｚ）を出力する。
【０１７６】
上記のとおり、Ｄｉｖにより、ＣＴにおける｛ＷＩ｝ＵＩ∈Ｓと｛ＹＩ｝ＵＩ∈Ｓがそれぞれ｛ＷＩ｝ＵＩ∈Ｓ´と｛ＹＩ｝ＵＩ∈Ｓ´になっており、全てのユーザＳに対する暗号情報から特定のユーザＳ´に対する暗号情報が分割されたことを表している。
【０１７７】
ｍ←Ｄｅｃ（Ｐａｒａｍｓ，ｃｓｋＩ，ＣＴ´）：
【０１７８】
【数６】
2020053772.tif 000008
を出力する。
【０１７９】
なお、下記に示すように、上記のＤｅｃにより、ｍが復号されることがわかる。
【０１８０】
【数７】
2020053772.tif 000009
本具体例の方法において、Ｓ´＝Ｕｉとすると、ＣＴ´＝（Ｗｉ，Ｘ，Ｙｉ，Ｚ）となり、Ｕｉの通信端末に送信される暗号文のサイズは、ＣＴを復号可能なユーザ数に依存しないので（ユーザ数が多くてもサイズが大きくならないので）、Ｕｉの通信端末は迅速に復号を行うことができる。
【０１８１】
（実施例の効果）
本実施例によれば、鍵共有サーバ装置が有する秘密情報が漏えいしても復号できず、特定の通信端末のみが復号できるように旧セッション鍵を暗号化して暗号文を生成し、当該特定の通信端末が当該暗号文を復号することが可能になる。
【０１８２】
また、実施例の方式は証明書が不要であるため、ユーザの公開鍵については公開鍵とユーザとの結びつきを保証するための仕組み（ＰＫＩ）をわざわざ設ける必要がない。従って、実装が容易であり、処理も高速であるという効果がある。
【０１８３】
（実施の形態のまとめ）
上述したように、本実施の形態により、第１の通信端末と第２の通信端末とを含む複数の通信端末とサーバ装置とがネットワークを介して通信可能に接続されて構成された通信システムであって、前記第１の通信端末は、前記第２の通信端末を含む特定の複数の通信端末におけるそれぞれの通信端末が復号できるように平文を暗号化して暗号文を生成し、当該暗号文を前記サーバ装置に送信する暗号化手段を備え、前記サーバ装置は、前記第２の通信端末のみが前記暗号文を復号できるように当該暗号文を変換し、変換後暗号文を前記第２の通信端末に送信する暗号文変換手段を備え、前記第２の通信端末は、前記変換後暗号文を復号して前記平文を取得する復号手段を備えることを特徴とする通信システムが提供される。
【０１８４】
実施例で説明した鍵共有サーバ装置１０００、通信端末１１００、及び通信端末１２０はそれぞれ、上記及び下記のサーバ装置、第１の通信端末、及び第２の通信端末の例である。
【０１８５】
前記変換後暗号文は、非対称双線形群から得られた前記特定の複数の通信端末ごとの暗号情報を含み、前記暗号文変換手段は、前記特定の複数の通信端末ごとの暗号情報から、前記第２の通信端末の暗号情報を分割することにより、前記変換後暗号文を生成することとしてもよい。
【０１８６】
前記復号手段は、前記第２の通信端末のＩＤから生成された秘密鍵を用いて前記変換後暗号文を復号することとしてもよい。
【０１８７】
また、前記サーバ装置は、サーバ秘密鍵及びサーバ公開鍵を生成し、前記サーバ秘密鍵、前記サーバ公開鍵、及び前記第１の通信端末のＩＤに基づいて部分秘密鍵を生成し、前記サーバ公開鍵及び前記部分秘密鍵を前記第１の通信端末に送信する鍵生成手段を備え、前記第１の通信端末は、前記サーバ公開鍵及び前記第１の通信端末のＩＤに基づいて秘密値を生成し、前記サーバ公開鍵、前記部分秘密鍵、及び前記秘密値に基づいて完全秘密鍵を生成し、前記サーバ公開鍵及び前記秘密値に基づいてユーザ公開鍵を生成し、当該ユーザ公開鍵を前記サーバ装置に送信する鍵生成手段を備え、前記第１の通信端末における前記暗号化手段は、前記特定の複数の通信端末のそれぞれのユーザ公開鍵を用いることにより、前記平文を前記サーバ秘密鍵では復号できないように暗号化して前記暗号文を生成することとしてもよい。
【０１８８】
また、本実施の形態によれば、第１の通信端末と第２の通信端末とを含む複数の通信端末とサーバ装置とがネットワークを介して通信可能に接続されて構成された通信システムにおける前記サーバ装置であって、前記第１の通信端末は、前記第２の通信端末を含む特定の複数の通信端末におけるそれぞれの通信端末が復号できるように平文を暗号化して暗号文を生成し、当該暗号文を前記サーバ装置に送信し、前記サーバ装置は、前記第１の通信端末から前記暗号文を受信する受信手段と、前記第２の通信端末のみが前記暗号文を復号できるように当該暗号文を変換し、変換後暗号文を前記第２の通信端末に送信する暗号文変換手段とを備えることを特徴とするサーバ装置が提供される。
【０１８９】
また、本実施の形態によれば、第１の通信端末と第２の通信端末とを含む複数の通信端末とサーバ装置とがネットワークを介して通信可能に接続されて構成された通信システムにおける前記第１の通信端末として機能する通信端末であって、前記サーバ装置から、前記第２の通信端末を含む特定の複数の通信端末の公開鍵を受信する受信手段と、前記特定の複数の通信端末の公開鍵を用いて、当該特定の複数の通信端末におけるそれぞれの通信端末が復号できるように平文を暗号化して暗号文を生成し、当該暗号文を前記サーバ装置に送信する暗号化手段とを備えることを特徴とする通信端末が提供される。
【０１９０】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１９１】
１０００  鍵共有サーバ装置
１１００  通信端末
１２００  通信端末
１００１  ユーザ公開鍵記憶部
１００２  セットアップ処理部
１００３  暗号文分割処理部
１００２−１  セットアップ関数処理部
１００２−２  部分鍵鍵導出関数処理部
１００２−３  共有秘密鍵生成部
１００２−４  共有秘密鍵記憶部
１００２−５  ユーザ公開鍵配信部
１００２−６  静的鍵記憶部
１００２−７  部分秘密鍵配信部
１００３−１  復号関数処理部
１００３−２  分割関数処理部
１００３−３  暗号化関数処理部
１００３−４  分割暗号化旧セッション鍵送信部
１１０１  セットアップ処理部
１１０２  旧セッション鍵暗号化処理部
１１０１−１  秘密値生成関数処理部
１１０１−２  完全秘密鍵生成関数処理部
１１０１−３  公開鍵生成関数処理部
１１０１−４  公開鍵送信部
１１０１−５  共有秘密鍵生成部
１１０１−６  静的秘密鍵記憶部
１１０１−７  共有秘密鍵記憶部
１１０１−８  部分秘密鍵受信部
１１０２−１  暗号化関数処理部
１１０２−２  暗号化関数処理部
１１０２−３  暗号化旧セッション鍵送信部
１２０１  セットアップ処理部
１２０２  旧セッション鍵復号処理部
１２０２−１  復号関数処理部
１２０２−２  復号関数処理部
１３００  ドライブ装置
１３０１  記録媒体
１３０２  補助記憶装置
１３０３  メモリ装置
１３０４  ＣＰＵ
１３０５  インタフェース装置
１３０６  表示装置
１３０７  入力装置
２０００  ネットワーク
【図１】
2020053772.tif 000010
【図２】
2020053772.tif 000011
【図３】
2020053772.tif 000012
【図４】
2020053772.tif 000013
【図５】
2020053772.tif 000014
【図６】
2020053772.tif 000015
【図７】
2020053772.tif 000016
【図８】
2020053772.tif 000017
【図９】
2020053772.tif 000018
【図１０】
2020053772.tif 000019
【図１１】
2020053772.tif 000020
【図１２】
2020053772.tif 000021
【図１３】
2020053772.tif 000022
【図１４】
2020053772.tif 000023
【図１５】
2020053772.tif 000024
【図１６】
2020053772.tif 000025
【図１７】
2020053772.tif 000026
【図１８】
2020053772.tif 000027
【図１９】
2020053772.tif 000028
【図２０】
2020053772.tif 000029
【図２１】
2020053772.tif 000030
【図２２】
2020053772.tif 000031
【図２３】
2020053772.tif 000032
【図２４】
2020053772.tif 000033
【図２５】
2020053772.tif 000034
【図２６】
2020053772.tif 000035
【図２７】
2020053772.tif 000036
【図２８】
2020053772.tif 000037
【図２９】
2020053772.tif 000038