(57)【要約】  サーバ装置において、共有鍵とグループ識別子とから生成されたメッセージ鍵によりメッセージを暗号化して生成されたメッセージ暗号文を、当該メッセージ鍵の識別子であるメッセージ鍵識別子をキーにして保存する記憶部と、前記メッセージ鍵を、共有鍵を用いて再暗号化可能なように暗号化して生成されたメッセージ鍵暗号文を、前記メッセージ鍵識別子をキーにして保存する記憶部と、前記共有鍵が更新された後、前記共有鍵と更新後の共有鍵を用いて再暗号化鍵を生成した通信端末から当該再暗号化鍵を受信し、当該再暗号化鍵を用いて、再暗号化したメッセージ鍵暗号文を生成し、再暗号化したメッセージ鍵暗号文を、再暗号化前のメッセージ鍵暗号文に上書きして保存する再暗号化処理部とを備える。
2020085151.tif 000002
【特許請求の範囲】
【請求項１】
グループ識別子が割り当てられたグループを形成する複数の通信端末間で、サーバ装置に対しメッセージを秘匿したまま、当該サーバ装置を介してメッセージの送受信を実行する通信システムにおいて使用されるサーバ装置であって、
前記グループに属する複数の通信端末において共有される共有鍵と前記グループ識別子とから生成されたメッセージ鍵によりメッセージを暗号化して生成されたメッセージ暗号文を、当該メッセージ鍵の識別子であるメッセージ鍵識別子をキーにして保存するメッセージ暗号文記憶部と、
前記メッセージ鍵を、共有鍵を用いて再暗号化可能なように暗号化して生成されたメッセージ鍵暗号文を、前記メッセージ鍵識別子をキーにして保存するメッセージ鍵暗号文記憶部と、
前記共有鍵が更新された後、前記共有鍵と更新後の共有鍵を用いて再暗号化鍵を生成した通信端末から当該再暗号化鍵を受信し、当該再暗号化鍵を用いて、再暗号化したメッセージ鍵暗号文を生成し、前記メッセージ鍵暗号文記憶部において、再暗号化したメッセージ鍵暗号文を、再暗号化前のメッセージ鍵暗号文に上書きして保存する再暗号化処理部と
を備えることを特徴とするサーバ装置。
【請求項２】
前記メッセージ鍵は、前記共有鍵と前記グループ識別子とをねじれ疑似ランダム関数または疑似ランダム関数に入力することにより生成された鍵である
ことを特徴とする請求項１に記載のサーバ装置。
【請求項３】
グループ識別子が割り当てられたグループを形成する複数の通信端末間で、サーバ装置に対しメッセージを秘匿したまま、当該サーバ装置を介してメッセージの送受信を実行する通信システムにおいて使用される通信端末であって、
前記グループに属する複数の通信端末において共有される共有鍵と前記グループ識別子とからメッセージ鍵を生成するメッセージ鍵生成部と、
前記メッセージ鍵を、共有鍵を用いて再暗号化可能なように暗号化することによりメッセージ鍵暗号文を生成するメッセージ鍵暗号化部と、
前記メッセージ鍵の識別子であるメッセージ鍵識別子を生成するメッセージ鍵識別子生成部と、
メッセージを前記メッセージ鍵により暗号化することでメッセージ暗号文を生成するメッセージ暗号化部と、
前記メッセージ鍵暗号文、前記メッセージ鍵識別子、及び前記メッセージ暗号文を前記サーバ装置に送信する送信部と
を備えることを特徴とする通信端末。
【請求項４】
前記共有鍵が更新された後、前記共有鍵と更新後の共有鍵を用いて再暗号化鍵を生成する再暗号化鍵生成部を更に備え、
前記送信部は、前記再暗号化鍵を前記サーバ装置に送信する
ことを特徴とする請求項３に記載の通信端末。
【請求項５】
グループ識別子が割り当てられたグループを形成する複数の通信端末間で、サーバ装置に対しメッセージを秘匿したまま、当該サーバ装置を介してメッセージの送受信を実行する通信システムであって、
前記グループに属する各通信端末は、
前記グループに属する複数の通信端末において共有される共有鍵と前記グループ識別子とからメッセージ鍵を生成するメッセージ鍵生成部と、
前記メッセージ鍵を、共有鍵を用いて再暗号化可能なように暗号化することによりメッセージ鍵暗号文を生成するメッセージ鍵暗号化部と、
前記メッセージ鍵の識別子であるメッセージ鍵識別子を生成するメッセージ鍵識別子生成部と、
メッセージを前記メッセージ鍵により暗号化することでメッセージ暗号文を生成するメッセージ暗号化部と、
前記メッセージ鍵暗号文、前記メッセージ鍵識別子、及び前記メッセージ暗号文を前記サーバ装置に送信する送信部と、を備え、
前記サーバ装置は、
前記メッセージ暗号文を、前記メッセージ鍵識別子をキーにして保存するメッセージ暗号文記憶部と、
前記メッセージ鍵暗号文を、前記メッセージ鍵識別子をキーにして保存するメッセージ鍵暗号文記憶部と、
前記メッセージ鍵暗号文と前記メッセージ暗号文を、前記グループに属する通信端末に送信する送信部と、
前記共有鍵が更新された後、前記共有鍵と更新後の共有鍵を用いて再暗号化鍵を生成した通信端末から当該再暗号化鍵を受信し、当該再暗号化鍵を用いて、再暗号化したメッセージ鍵暗号文を生成し、前記メッセージ鍵暗号文記憶部において、再暗号化したメッセージ鍵暗号文を、再暗号化前のメッセージ鍵暗号文に上書きして保存する再暗号化処理部と、を備える
ことを特徴とする通信システム。
【請求項６】
コンピュータを、請求項１又は２に記載のサーバ装置における各部として機能させるためのプログラム。
【請求項７】
コンピュータを、請求項３又は４に記載の通信端末における各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ装置に対しメッセージを秘匿したまま通信端末間でメッセージをやりとりする技術に関連するものである。
【背景技術】
【０００２】
スマートフォン・タブレットの普及に伴い、メールにとって変わるメッセージングシステムとして近年、簡易な操作でメッセージ交換を行うことができるシステムが一般に使われるようになってきた。【０００３】
そこで、情報共有が気軽にかつ即座に行えるという利点から、ビジネスでの使用を前提とするグループチャットシステム（例えば非特許文献１）も登場してきた。このようなグループチャットシステムは、企業の機密情報漏えいを考慮し、通信端末にデータを残さないクラウドベースのシステムになっている。【０００４】
このようなグループチャットシステムにおけるデータはクラウドに保存されるため、グループから途中参加した場合や、通信端末を変更した場合であっても、それ以前の過去のデータをすべて閲覧することができる。これによって、例えば、人事異動等によって新たな部署に異動したり、プロジェクトに途中参加したりした場合でも、過去のやりとりされたデータを見ることで所属グループの状況把握が容易になる。【０００５】
このようなクラウドベースのグループチャットシステムにおいては、通信路を暗号化することで通信経路上の盗聴防止がなされていたり、既に述べたように、通信端末にデータを残さないことによって通信端末の紛失や不正な持ち出しに起因する情報漏えい防止がなされていたりする。このように、従来のグループチャットシステムは「通信経路」と「通信端末」に対する脅威に対処している一方、サーバ装置に対する脅威への対処は不十分である。【０００６】
ここでいうサーバ装置に対する脅威として「サーバ装置に対する外部からの攻撃」や「サーバ管理者等による内部不正」等が挙げられる。これらの脅威に対し、メッセージを暗号化して保存する、という対策が考えられる。しかしながら、サーバ装置側でメッセージを復号可能である以上、前述の脅威に対してサーバ装置からのメッセージ漏えいの可能性が依然として存在する。送受信・保存を行うサーバ装置に送られてくるメッセージがサーバ装置に対して秘匿化されている（サーバ装置側で盗聴されない）ことが重要である。【０００７】
１つの方法として、サーバ装置に対してメッセージを秘匿し、通信端末でのみ復号可能なエンドツーエンドの暗号化通信を実現することが考えられる。この場合、通信端末間で用いる鍵をどのように共有するかが問題となる。この問題の解決策として例えば非特許文献２が開示されている。非特許文献２では中央に認証サーバをもつスター型のネットワークにおいて、認証サーバに対していかなる情報ももらさずに利用者間で鍵（以下、共有鍵）を共有するプロトコルが提案されている。【０００８】
これによって、サーバ装置に対しメッセージを秘匿したまま通信端末間でやりとりすることができる。また、現在参加している通信端末でのみメッセージが読めるよう共有鍵の共有を行うため、ユーザの追加・削除等のイベントにより共有鍵が更新される。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】NTTソフトウェア、"ビジネス向けグループチャットTopicRoom"、[online]、NTTソフトウェア、[平成29年9月28日検索]、インターネット<URL:https://www.ntt-yx.co.jp/products/topicroom/index.html>
【非特許文献２】小林鉄太郎、米山一樹、吉田麗生、川原祐人、冨士仁、山本具英「スケーラブルな動的多者鍵配布プロトコル」、SCIS2016-暗号と情報セキュリティシンポジウム-講演論文集、一般社団法人電子情報通信学会、平成28年1月、4E2-3
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上記非特許文献２の技術によれば、サーバ装置に知られないよう、通信端末間で共有鍵を共有することで、サーバ装置に対しメッセージを秘匿したままやりとりすることができる。しかし、上記のような通信システムにおいては、共有鍵の更新に連動して、サーバ装置上で他の処理が発生する場合があり、サーバ装置の負荷が増大するおそれがある。特にグループチャットシステムのような、リアルタイム性が求められるシステムにおいて、サーバ装置上の処理に時間がかかるのは望ましくない。【００１１】
本発明は、上記の点に鑑みてなされたものであり、サーバ装置に対しメッセージを秘匿したまま通信端末間でメッセージをやりとりするシステムにおいて、サーバ装置の負荷を軽減する技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
開示の技術によれば、グループ識別子が割り当てられたグループを形成する複数の通信端末間で、サーバ装置に対しメッセージを秘匿したまま、当該サーバ装置を介してメッセージの送受信を実行する通信システムにおいて使用されるサーバ装置であって、
前記グループに属する複数の通信端末において共有される共有鍵と前記グループ識別子とから生成されたメッセージ鍵によりメッセージを暗号化して生成されたメッセージ暗号文を、当該メッセージ鍵の識別子であるメッセージ鍵識別子をキーにして保存するメッセージ暗号文記憶部と、
前記メッセージ鍵を、共有鍵を用いて再暗号化可能なように暗号化して生成されたメッセージ鍵暗号文を、前記メッセージ鍵識別子をキーにして保存するメッセージ鍵暗号文記憶部と、
前記共有鍵が更新された後、前記共有鍵と更新後の共有鍵を用いて再暗号化鍵を生成した通信端末から当該再暗号化鍵を受信し、当該再暗号化鍵を用いて、再暗号化したメッセージ鍵暗号文を生成し、前記メッセージ鍵暗号文記憶部において、再暗号化したメッセージ鍵暗号文を、再暗号化前のメッセージ鍵暗号文に上書きして保存する再暗号化処理部と
を備えることを特徴とするサーバ装置が提供される。
【発明の効果】
【００１３】
開示の技術によれば、サーバ装置に対しメッセージを秘匿したまま通信端末間でメッセージをやりとりするシステムにおいて、サーバ装置の負荷を軽減する技術を提供することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】関連技術を説明するための図である。
【図２】関連技術を説明するための図である。
【図３】関連技術を説明するための図である。
【図４】本発明に係る技術の概要を説明するための図である。
【図５】本発明に係る技術の概要を説明するための図である。
【図６】本発明に係る技術の概要を説明するための図である。
【図７】実施例における通信システムの構成を示すブロック図である。
【図８】実施例におけるサーバ装置の構成を示すブロック図である。
【図９】メッセージ暗号文記憶部におけるデータテーブルの例を示す図である。
【図１０】メッセージ鍵暗号文記憶部におけるデータテーブルの例を示す図である。
【図１１】実施例における通信端末の構成を示すブロック図である。
【図１２】各装置のハードウェア構成の例を示す図である。
【図１３】実施例の動作を説明するためのシーケンス図である。
【図１４】実施例の動作を説明するためのフローチャートである。
【図１５】実施例の動作を説明するためのフローチャートである。
【図１６】実施例の動作を説明するためのシーケンス図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施の形態を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【００１６】
（関連技術について）
本発明の実施例を説明するにあたり、まず、想定される関連技術とその課題を説明する。ただし、本発明が解決しようとする課題は、以下で説明する関連技術の課題に限られるわけではない。
【００１７】
前述した非特許文献２の技術によれば、サーバ装置に知られないよう、通信端末間で鍵を共有することで、サーバ装置に対しメッセージを秘匿したままやりとりすることができる。しかし、非特許文献２では、現在の参加メンバのみで共有鍵を共有するため、共有鍵はログイン・ログアウトイベントのようなユーザの追加・削除に伴って更新されたり、それ以外にも定期的に更新されたりすることがある。従って、現在参加している通信端末でのみ過去に蓄積されたメッセージを読めるようにするために、以前にサーバ装置に保存されたデータをサーバ装置側で復号することなく、更新された共有鍵を用いて通信端末側で復号可能なデータに更新する必要がある。これを再暗号化と呼ぶ。
【００１８】
この再暗号化を実現するために想定される関連技術を図１〜図３を参照して説明する。本関連技術では、図１の右側部分に示すように、共有鍵が鍵１から鍵２に更新された後、鍵１と鍵２の両方を持つ通信端末が再暗号化鍵（「鍵１→２」）を生成し、当該再暗号化鍵をサーバ装置に送信する。サーバ装置は、当該再暗号化鍵を用いて再暗号化を実施する。再暗号化後のデータは、更新後の鍵２により復号可能である。より詳細な例を図２、図３を参照して説明する。
【００１９】
本関連技術では、図２に示すように、Ｃａｍｅｌｌｉａ等の共通鍵暗号方式により、メッセージ鍵でメッセージを暗号化するとともに、そのメッセージ鍵を共有鍵で暗号化し、暗号化したメッセージ鍵と暗号化したメッセージを合わせた暗号文とする。そして、復号時には、共有鍵でメッセージ鍵を復号し、復号したメッセージ鍵でメッセージを復号する。
【００２０】
図３に示すように、再暗号化鍵による再暗号化は、暗号化したメッセージ鍵のみに対して実施される。これにより、再暗号化処理を効率的に行うことができる。
【００２１】
本関連技術において、メッセージ鍵が漏えいした際の安全性の観点から、メッセージ鍵をユーザの使う通信端末毎に生成することが想定される。しかしながら、メッセージ鍵をユーザの使う通信端末毎に生成すると、サーバ装置での再暗号化処理時間は共有鍵の更新回数×ユーザ数に比例する。従って、サーバ装置の負荷が大きくなるという課題がある。特に、チャットグループの人数が多い場合、サーバ装置の負荷増大の影響が大きくなる。
【００２２】
（本発明に係る技術の概要）
本発明に係る技術では、共有鍵の生存期間に合わせて、メッセージ鍵を同じチャットグループのユーザ全員で使い回すことを可能としている。これにより、再暗号化対象となる暗号文を削減でき、サーバ装置の負荷を軽減することができる。
【００２３】
そのために、メッセージ鍵を、チャットグループ間で共有した共有鍵と、サーバ装置＋チャットグループ間で共有するグループ識別子ｇｒｏｕｐＩＤとを混ぜ合わせて生成する。より具体的には、一例として、図４に示すように、共有鍵とｇｒｏｕｐＩＤのうちの一方が漏えいしてもメッセージ鍵が漏えいしないようにするために、ねじれ疑似ランダム関数（あるいは疑似ランダム関数）を用いて混ぜ合わせる。
【００２４】
本発明に係る技術ではメッセージ鍵は共有鍵の更新に合わせて、グループ共通で生成される。したがって、関連技術では、再暗号化処理時間が「現時点までの共有鍵の更新回数×ユーザ数」に依存していたが、本発明に係る技術により再暗号化処理時間が「現時点までの共有鍵の更新回数」に依存することになり、再暗号化処理時間が格段に減少する。
【００２５】
すなわち、関連技術では、図５に例示しているように、メッセージの暗号文とメッセージ鍵暗号文とが一対一に対応しており、メッセージの数のメッセージ鍵暗号文が再暗号化の対象となり負荷が大きい。
【００２６】
一方、本発明に係る技術では、図６に例示しているように、同じ共有鍵における複数メッセージに１つのメッセージ鍵（鍵ＩＤで識別）が対応するので、再暗号化の対象となるメッセージ鍵暗号文を大幅に減少させることができる。
【００２７】
以下、本発明の実施例を説明する。
【００２８】
（事前準備）
まず、実施例で説明する動作を実現するための事前準備について説明する。
【００２９】
集合Ｎを正の整数全体の集合とする。Ｋｓｐａｃｅ１、Ｋｓｐａｃｅ２を鍵空間とする。実施例で使用する共通鍵ベースの再暗号可能な暗号方式は次の４つのアルゴリズム（ＫＥＭ．Ｅｎｃ，ＫＥＭ．Ｄｅｃ，ＫＥＭ．ＲｅＫｅｙＧｅｎ，ＫＥＭ．ＲｅＥｎｃ）からなる。以下、各アルゴリズムを説明する。なお、アルゴリズムを「関数」と呼んでもよい。
【００３０】
ＫＥＭ．Ｅｎｃ（ＳＫｉ１，Ｋ）→Ｃ１（ｉ１）
このアルゴリズムは、Ｋｓｐａｃｅ１の元ＳＫｉ１とＫｓｐａｃｅ２の元Ｋを入力とし、暗号文Ｃ１（ｉ１）を出力するアルゴリズムである。
【００３１】
ＫＥＭ．Ｄｅｃ（ＳＫｊ，Ｃ１（ｉ））→Ｋ´
このアルゴリズムは、Ｋｓｐａｃｅ１の元ＳＫと暗号文Ｃ１（ｉ）を入力とし、Ｋｓｐａｃｅ２の元Ｋを出力するアルゴリズムである。
【００３２】
ＫＥＭ．ＲｅＫｅｙＧｅｎ（ＳＫｉ１，ＳＫｉ２）→ＲＫｉ１，ｉ２
このアルゴリズムは、Ｋｓｐａｃｅ１の２つの元ＳＫｉ１、ＳＫｉ２を入力とし、再暗号化鍵ＲＫｉ１，ｉ２を出力するアルゴリズムである。
【００３３】
ＫＥＭ．ＲｅＥｎｃ（ＲＫｉ１，ｉ２，Ｃ１（ｉ１））→Ｃ１（ｉ２）
このアルゴリズムは、再暗号化鍵ＲＫｉ１，ｉ２と暗号文Ｃ１（ｉ１）を入力とし、再暗号化暗号文Ｃ１（ｉ２）を出力するアルゴリズムである。
【００３４】
なお、明細書における文字の記載の都合上、「ＳＫｉ１」のように、添字を「ｉ１」と記載しているが、これは「ｉ１」のことである。本明細書において、添字の添字に関しては、同様の記載方法を使用している。例えば、後述する「ＩＤＫ１」の添字「Ｋ１」は「Ｋ１」を意図している。
【００３５】
上記のアルゴリズムは以下の２条件を満たすものとする。
【００３６】
条件１．Ｋｓｐａｃｅ１の任意の元ＳＫとＫｓｐａｃｅ２の任意の元Ｋに対し、ＫＥＭ．Ｄｅｃ（ＳＫ，ＫＥＭ．Ｅｎｃ（ＳＫ，Ｋ））＝Ｋ
条件２．任意の整数ｎ＞１とＫｓｐａｃｅ１の任意の鍵の列ＳＫ１，…，ＳＫｎと任意のｉ∈｛１，…，ｎ−１｝に対してＫＥＭ．ＲｅＫｅｙＧｅｎ（ＳＫｉ，ＳＫｉ＋１）によって出力される再暗号化鍵の列ＲＫ１，２，…，ＲＫｎ−１，ｎとＫｓｐａｃｅ１の任意の元Ｋ，１≦ｉ１＜ｉ２≦ｎを満たす任意のｉ１，ｉ２に対して、
ＫＥＭ．Ｄｅｃ（ＳＫｉ２，ＫＥＭ．ＲｅＥｎｃ（ＲＫｉ２−１，ｉ２，…ＫＥＭ．ＲｅＥｎｃ（ＲＫｉ１，ｉ１＋１，ＫＥＭ．Ｅｎｃ（ＳＫｉ１，Ｋ））））＝Ｋ
上記を満たす再暗号方式の例として参考文献１での方式が挙げられる。なお、参考文献名は明細書の最後にまとめて記載した。
【００３７】
これは以下のようにして構成される。まず、ｑを素数とし、Ｚｑを整数環Ｚに対する、ｑを法とする剰余環とする。Ｇを位数ｑの巡回群とし、Ｋｓｐａｃｅ２＝Ｇとする。ここでは、巡回群Ｇを乗法群で考えるが、加法群と考えてもよい。また、Ｋｓｐａｃｅ１＝Ｚｑとする。さらに、Ｒａｎｄを乱数空間とし、Ｈ：Ｒａｎｄ→ＧをＲａｎｄの定義域とし、Ｇを値域とするハッシュ関数とする。Ｋｓｐａｃｅ１＝ＺｑとＲａｎｄとの直積を定義域とし、Ｇを値域とする関数Ｆ：Ｋｓｐａｃｅ×Ｒａｎｄ→ＧをＦ（ＳＫ，ｒ）＝Ｈ（ｒ）ＳＫで定義する。
【００３８】
ＫＥＭ．Ｅｎｃ（ＳＫｉ１，Ｋ）→Ｃ１（ｉ１）
ｒ∈Ｒａｎｄを一様ランダムに抽出し、Ｃ１（ｉ１）＝（ｒ，Ｋ＋Ｆ（ＳＫ，ｒ））を出力する。
【００３９】
ＫＥＭ．Ｄｅｃ（ＳＫｊ，Ｃ１（ｉ））→Ｋ´
Ｃ１（ｉ）＝（ｒ，Ｃ）と分解し、Ｋ´＝Ｃ−Ｆ（ＳＫ，ｒ）を出力する。
【００４０】
ＫＥＭ．ＲｅＫｅｙＧｅｎ（ＳＫｉ１，ＳＫｉ２）→ＲＫｉ１，ｉ２
ＲＫｉ１，ｉ２＝ＳＫｉ２−ＳＫｉ１を出力する。
【００４１】
ＫＥＭ．ＲｅＥｎｃ（ＲＫｉ１，ｉ２，Ｃ１（ｉ１））→Ｃ１（ｉ２）
Ｃ１（ｉ１）＝（ｒ，Ｃ）と分解し、Ｃ１（ｉ２）＝（ｒ，Ｃ＋Ｆ（ＲＫｉ１，ｉ２，ｒ））を出力する。
【００４２】
なお、再暗号可能な暗号方式（ＫＥＭ．Ｅｎｃ，ＫＥＭ．Ｄｅｃ，ＫＥＭ．ＲｅＫｅｙＧｅｎ，ＫＥＭ．ＲｅＥｎｃ）の例として参考文献１に開示された技術を挙げたが、上記以外の方法によって再暗号可能な暗号方式を実現してもよく、再暗号可能な暗号方式の実現方法は特定の方法に限定されない。
【００４３】
実施例で使用される共通鍵暗号方式は次の２つのアルゴリズム（Ｅｎｃ，Ｄｅｃ）からなり、それぞれ、以下の入出力をもつアルゴリズムである。
【００４４】
Ｅｎｃ（Ｋ，ｍ）→Ｃ２
このアルゴリズムは、Ｋｓｐａｃｅ２の元Ｋとメッセージｍを入力とし、暗号文Ｃ２を出力するアルゴリズムである。
【００４５】
Ｄｅｃ（Ｋ，Ｃ２）→ｍ
このアルゴリズムは、Ｋｓｐａｃｅ２の元Ｋと暗号文Ｃ２を入力とし、メッセージｍを出力するアルゴリズムである。
【００４６】
上記のアルゴリズムは以下の条件を満たすものとする。
【００４７】
Ｋｓｐａｃｅ２の任意の元Ｋと任意のメッセージｍに対して、Ｄｅｃ（Ｋ，Ｅｎｃ（Ｋ，ｍ））＝ｍ
上記を満たす暗号方式の例として、ＡＥＳやＣａｍｅｌｌｉａ等が挙げられるが、特定の方法に限定されない。
【００４８】
ｋをセキュリティパラメータとする。Ｄｏｍｋ、Ｒｎｇｋをｋに依存するサイズの空間とする。Ｆ＝｛Ｆｓ：Ｄｏｍｋ→Ｒｎｇｋ｝ｓ∈｛０，１｝ｋを関数族とする。任意の多項式時間識別器Ｄに対して、この関数族とランダム関数族ＲＦｋ＝｛ｆ：Ｄｏｍｋ→Ｒｎｇｋ｝が識別困難であるとき、関数族Ｆを疑似ランダム関数族とよび、その元を疑似ランダム関数と呼
ぶ。疑似ランダム関数の例については参考文献２に記載されている。
【００４９】
ＦＳｋをｋに依存するサイズの鍵空間とし、疑似ランダム関数Ｆｓ：｛０，１｝ｋ×ＦＳｋ→Ｒｎｇｋに対して、ねじれ疑似ランダム関数ｔＰＲＦ：｛０，１｝ｋ×ＦＳｋ２×｛０，１｝ｋ→Ｒｎｇｋを
【００５０】
【数１】
2020085151.tif 000003
で定義する。なお、
【００５１】
【数２】
2020085151.tif 000004
は排他的論理和である。参考文献３で挙げられるように、ねじれ疑似ランダム関数は入力（ａ，ａ´）か（ｂ，ｂ´）が漏えいしたとしても出力値が一様ランダムに選ばれた数と識別不可能であることがわかっている。
【００５２】
（システム構成）
次に、実施例のシステム構成を説明する。図７は、本実施例における通信システムの構成を示す図である。
【００５３】
図７に示すように、この通信システムは、サーバ装置１００と、通信端末１１、１２、１３を含む。これらの装置は、ネットワーク１を介して通信可能に接続されている。通信端末１１、通信端末１２、通信端末１１はそれぞれ、例えば、パソコンやスマートフォン等であるが、特定の種類の装置に限定されない。図７に示すように、ユーザＡが通信端末１１を使用し、ユーザＢが通信端末１２を使用し、ユーザＣが通信端末１３を使用することを想定している。
【００５４】
本実装例の通信システムにおいては、通信端末１１、通信端末１２、通信端末１１は、チャットメッセージをやり取りするユーザのグループを形成することができる。なお、やり取りするメッセージが「チャット」のメッセージであることは一例であり、「チャット」以外のアプリケーションのメッセージを対象としてもよい。
【００５５】
（装置構成）
以下、各装置の機能構成を説明する。各装置を構成する機能部の具体的な処理動作については、後の動作例のところでシーケンス図及びフローチャートを参照して説明する。
【００５６】
図８は、サーバ装置１００の構成を示すブロック図である。図８に示すように、サーバ装置１００は、メッセージ暗号文とメッセージ鍵識別子の組を保存するメッセージ暗号文記憶部１０１、メッセージ鍵暗号文とメッセージ鍵識別子の組を保存するメッセージ鍵暗号文記憶部１０２、グループ毎のユーザ情報を記憶するグループユーザ記憶部１０３、再暗号化処理部１０４、暗号文受信部１０５、暗号文送信部１０６を有する。
【００５７】
再暗号化処理部１０４は、通信端末から再暗号化鍵を受信すると、メッセージ鍵暗号文と再暗号化鍵から、更新後の共有鍵でメッセージ鍵暗号文を復号できるような新しいメッセージ鍵暗号文を生成する処理部である。
【００５８】
サーバ装置１００のメッセージ暗号文記憶部１０１には、図９に示すとおり、メッセージ暗号文とメッセージ鍵識別子（１つのメッセージ鍵が複数のメッセージに使用される）が対応付けて格納される。また、メッセージ鍵暗号文記憶部１０２には、図１０に示すとおり、メッセージ鍵識別子とメッセージ鍵暗号文が対応付けて格納される。なお、図１０は、再暗号化前後の状態を示している。
【００５９】
図１１は、通信端末１１、１２、１３の構成を示すブロック図である。図１１に示すように、通信端末１１、１２、１３は、共有鍵を保存する共有鍵記憶部１１１、メッセージ鍵を保存するメッセージ鍵記憶部１１２、メッセージ鍵識別子を保存するメッセージ鍵識別子記憶部１１３、共有鍵とグループ識別子からメッセージ鍵を生成するメッセージ鍵生成部１２１、メッセージ鍵からメッセージ鍵識別子を生成するメッセージ鍵識別子生成部１２２、共有鍵更新後の最初のメッセージ送信かを判定するメッセージ鍵管理部１２３、共有鍵が更新された際に、更新前の共有鍵と更新後の共有鍵から再暗号化鍵を生成する再暗号化鍵生成部１２４、共通鍵暗号方式に基づいてメッセージ鍵とメッセージからメッセージ暗号文を生成するメッセージ暗号化部１２５、共通鍵暗号方式に基づいてメッセージ鍵とメッセージ暗号文からメッセージを復号するメッセージ復号部１２６、再暗号可能な共通鍵暗号方式に基づいて共有鍵とメッセージ鍵からメッセージ鍵暗号文を生成するメッセージ鍵暗号化部１２７、再暗号可能な共通鍵暗号方式に基づいて共有鍵とメッセージ鍵暗号文からメッセージ鍵を復号するメッセージ鍵復号部１２８、暗号文送信部１２９、暗号文受信部１３０を有する。
【００６０】
本実施例では、通信端末１１、１２、１３は同じ機能構成を有することを想定している。ただし、ある通信端末は再暗号化鍵生成部１２４を持たず、別の通信端末は再暗号化鍵生成部１２４を持つようなシステム構成であってもよい。
【００６１】
サーバ装置１００、通信端末１１、１２、１３はいずれも、コンピュータに内蔵されるＣＰＵやメモリ等のハードウェア資源を用いて、当該装置で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【００６２】
図１２は、上記コンピュータのハードウェア構成例を示す図である。図１２のコンピュータは、それぞれバスＢで相互に接続されているドライブ装置１５０、補助記憶装置１５２、メモリ装置１５３、ＣＰＵ１５４、インタフェース装置１５５、表示装置１５６、及び入力装置１５７等を有する。
【００６３】
当該コンピュータでの処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ又はメモリカード等の記録媒体１５１によって提供される。プログラムを記憶した記録媒体１５１がドライブ装置１５０にセットされると、プログラムが記録媒体１５１からドライブ装置１５０を介して補助記憶装置１５２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１５１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１５２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００６４】
メモリ装置１５３は、プログラムの起動指示があった場合に、補助記憶装置１５２からプログラムを読み出して格納する。ＣＰＵ１５４は、メモリ装置１５３に格納されたプログラムに従って、当該装置に係る機能を実現する。インタフェース装置１５５は、ネットワークに接続するためのインタフェースとして用いられ、ネットワークを介した入力手段及び出力手段として機能する。表示装置１５６はプログラムによるＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）等を表示する。表示装置１５６は出力手段の例でもある。入力装置１５７はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。
【００６５】
以下、本実施例に係る通信システムの動作について詳細に説明する。
【００６６】
（システムの動作）
＜グループ識別子と共有鍵について＞
前述したように、本実施例の通信端末は、チャットメッセージをやり取りするユーザのグループを形成する。各グループには識別子が与えられている。
【００６７】
図７に示したように、通信端末１１、通信端末１２、通信端末１３の利用者をそれぞれユーザＡ、ユーザＢ、ユーザＣとする。ユーザＡ、ユーザＢ、ユーザＣはグループ識別子ｇｒｏｕｐＩＤを持つグループに属しているものとし、各通信端末はｇｒｏｕｐＩＤをメモリ等に記憶しているものとする。
【００６８】
なお、ｇｒｏｕｐＩＤの生成方法は特定の方法に限定されないが、ｇｒｏｕｐＩＤはサーバ装置１０が擬似乱数生成器によって生成したものであることが望ましい。また、ｇｒｏｕｐＩＤはこのグループに属するユーザ（Ａ、Ｂ、Ｃ含む）とサーバ装置１０以外には知られないようにすることが望ましい。そのために、例えば、サーバ装置１０が各通信端末にｇｒｏｕｐＩＤを共有する際、ＴＬＳ等の暗号通信プロトコルを使って秘匿化して送信する。
【００６９】
次に、実施例で使用される共有鍵について説明する。共有鍵は、グループ毎で、そのグループに属するユーザが利用する通信端末間で共有される鍵のことをいう。その通信端末以外の、例えばサーバ装置１０に対して共有鍵に関していかなる情報ももらさずに鍵を共有するプロトコルとして、例えば参考文献３に記載された方法が挙げられるが、共有鍵共有方法については特定の方法に限定されるわけではない。
【００７０】
なお、本実施例では、共有鍵を安全に共有するために、グループにユーザが追加される、グループからユーザが離脱する、一定時間が経過する、ユーザがログイン／ログアウトする度に共有鍵が生成されるものとする。ただし、これも一例であり、共有鍵が生成されるタイミングはこれら以外のタイミングであってもよい。以降、グループ識別子ｇｒｏｕｐＩＤの集合をＧＩＤと記載する。
【００７１】
以下、Ｋｓｐａｃｅ＝Ｋｓｐａｃｅ１＝Ｋｓｐａｃｅ２＝ＧＩＤとする。
【００７２】
（動作シーケンス）
以下、図１３〜図１６のシーケンス図及びフローチャートに示す手順に沿って、本実施例の通信システムの動作を説明する。
【００７３】
＜共有鍵とメッセージ鍵の生成＞
図１３に示す動作の前提として、ユーザＡ，Ｂ，Ｃはそれぞれ通信端末１１、通信端末１２、通信端末１３を使ってグループチャットシステムにログインしているとする。また、通信端末１１、通信端末１２、通信端末１３が属するグループｇｒｏｕｐＩＤにおいて共有鍵ＳＫ１が生成されたとする。共有鍵の空はＫｓｐａｃｅ１＝Ｋｓｐａｃｅであるとする。通信端末１１、１２、１３は共有鍵ＳＫ１をそれぞれ共有鍵記憶部１１１に保存しているものとする。
【００７４】
ここで、Ｆｓ：Ｋｓｐａｃｅ２→Ｋｓｐａｃｅを疑似ランダム関数とする。シードｓ∈｛０，１｝ｋは通信端末１１、１２、１３であらかじめ共有されているものとする。なお、｛０，１｝ｋはｋビット長のバイナリ系列の集合を表す。
【００７５】
図１３のＳ１０１において、通信端末１１、１２、１３ではそれぞれ、メッセージ鍵生成部１２１が、メッセージ鍵Ｋ１：＝Ｆｓ（ｇｒｏｕｐＩＤ，ＳＫ１）を計算する。メッセージ鍵Ｋ１はメッセージ鍵記憶部１１２に記憶される。
【００７６】
このメッセージ鍵は疑似ランダム関数でなく、ねじれ疑似ランダム関数で生成してもよい。例えば、Ｋ１：＝ｔＰＲＦ（ｇｒｏｕｐＩＤ，ｇｒｏｕｐＩＤ，ＳＫ１，ＳＫ１）として生成する。
【００７７】
Ｓ１０２において、通信端末１１、１２、１３ではそれぞれ、メッセージ鍵識別子生成部１２２が、Ｋ１に対するメッセージ鍵識別子ＩＤＫ１を生成する。ＩＤＫ１は各通信端末において同じ値を生成するものとする。ＩＤＫ１の生成方法として、例えば、ＳＨＡ２５６ハッシュ関数を用いて、Ｋ１をＳＨＡ２５６ハッシュ関数に入力した際の出力値をＩＤＫ１とする方法がある。ただし、ＩＤＫ１の生成方法は特定の方法に限定されない。
【００７８】
通信端末１１、１２、１３はＩＤＫ１をそれぞれメッセージ鍵識別子記憶部１１３に保存する。
【００７９】
＜メッセージ送信＞
本実施例では、ユーザＡが通信端末１１を用いて、グループｇｒｏｕｐＩＤにメッセージｍを送るものとする（図１３のＳ１０３、Ｓ１０４）。なお、この時点で通信端末１１は、メッセージ鍵Ｋ１とその識別子ＩＤＫ１を生成しているものとする。
【００８０】
図１３のＳ１０３、Ｓ１０４の処理内容を図１４のフローチャートを参照して説明する。
【００８１】
通信端末１１がメッセージｍを送信する際、まず、Ｓ２０１において、メッセージ鍵管理部１２３が、この送信しようとするメッセージが、共有鍵ＳＫ１生成後、通信端末１１における最初のメッセージ送信であるか否かを判定する。
【００８２】
Ｓ２０１の判定結果がＹｅｓである場合、Ｓ２０２に進み、通信端末１１のメッセージ暗号化部１２５は、メッセージｍの暗号文Ｃ２，ｍ←Ｅｎｃ（Ｋ１，ｍ）を生成する。
【００８３】
また、Ｓ２０３において、メッセージ鍵暗号化部１２７は、メッセージ鍵の暗号文Ｃ（１）１，Ｋ１←ＫＥＭ．Ｅｎｃ（ＳＫ１，Ｋ１）を生成する。
【００８４】
そして、Ｓ２０４において、暗号文送信部１２９が、サーバ装置１０に（ｇｒｏｕｐＩＤ，ＩＤＫ１，Ｃ（１）１，Ｋ１，Ｃ２，ｍ）を送信する。送信された（ｇｒｏｕｐＩＤ，ＩＤＫ１，Ｃ（１）１，Ｋ１，Ｃ２，ｍ）は、サーバ装置１０の暗号文受信部１０５が受信する。（Ｃ（１）１，Ｋ１，Ｃ２，ｍ）に関して、他のメッセージや他のメッセージ鍵の暗号文との区別をつけるため、便宜上Ｋ１，ｍを記しているだけであり、暗号文からＫ１，ｍがただちに推測されるわけではない。
【００８５】
Ｓ２０１の判定結果がＮｏである場合、Ｓ２１１に進み、通信端末１１のメッセージ暗号化部１２５が、メッセージの暗号文Ｃ２，ｍ←Ｅｎｃ（Ｋ１，ｍ）を生成する。通信端末１１の暗号文送信部１２９は、メッセージ鍵識別子記憶部１１３からメッセージ鍵識別子ＩＤＫ１を取り出し（Ｓ２１２）、サーバ装置１０に（ｇｒｏｕｐＩＤ，ＩＤＫ１，Ｃ２，ｍ）を送信する（Ｓ２１３）。送信された（ｇｒｏｕｐＩＤ，ＩＤＫ１，Ｃ２，ｍ）は、サーバ装置１０の暗号文受信部１０５が受信する。
【００８６】
＜メッセージ配信＞
サーバ装置１０が通信端末１１から上述した暗号化メッセージを受信すると、配信のための処理を実行する（図１３のＳ１０５〜Ｓ１０７）。なお、ここでは、メッセージ受信をトリガーにして他の通信端末への配信動作を行うこととしているが、これは一例に過ぎない。ユーザの追加やログイン、その他通信端末からの要求に応じて、サーバは保存された暗号化メッセージを当該通信端末に配信することもある。
【００８７】
図１３のＳ１０５〜Ｓ１０７の動作を、図１５のフローチャートを参照して説明する。
【００８８】
まず、サーバ装置１０は、通信端末１１から送信され、サーバ装置１０の暗号文受信部１０５が受信したメッセージの形式を判断する。
【００８９】
通信端末１１から送信されたメッセージの形式が（ｇｒｏｕｐＩＤ，ＩＤＫ１，Ｃ（１）１，Ｋ１，Ｃ２，ｍ）である場合、Ｓ３０２に進み、メッセージ暗号文記憶部１０１に（ＩＤＫ１，Ｃ２，ｍ）を保存する。
【００９０】
また、Ｓ３０３において、サーバ装置１０は、メッセージ鍵暗号文記憶部１０２に（ＩＤＫ１，Ｃ（１）１，Ｋ１）を保存する。なお、他の通信端末からのメッセージを受信し、（ＩＤＫ１，Ｃ（１）１，Ｋ１）を既に保存していた場合は、ここでの保存は行わない。
【００９１】
Ｓ３０４（図１３のＳ１０６、Ｓ１０７）において、サーバ装置１０の暗号文送信部１０６は、グループユーザ記憶部１０３に保存されている、ｇｒｏｕｐＩＤのグループに所属するユーザ（ユーザＢ、Ｃを含む）の情報（例：宛先アドレス）を取り出し、当該情報を用いて、各ユーザに向けて（Ｃ（１）１，Ｋ１，Ｃ２，ｍ）を送信する。なお、本実施例では、サーバ装置１０の暗号文送信部１０６は通信端末１２、通信端末１３に（Ｃ（１）１，Ｋ１，Ｃ２，ｍ）を送信する。
【００９２】
Ｓ３０１の判断の結果、通信端末１１から送信されたメッセージの形式が（ｇｒｏｕｐＩＤ，ＩＤＫ１，Ｃ２，ｍ）である場合、Ｓ３１１に進む。Ｓ３１１において、サーバ装置１０は、メッセージ暗号文記憶部１０１に（ＩＤＫ１，Ｃ２，ｍ）を保存する。
【００９３】
続いて、サーバ装置１０の暗号文送信部１０６は、メッセージ鍵暗号文記憶部１０２から、ＩＤＫ１に紐付くメッセージ鍵暗号文Ｃ（１）１，Ｋ１を取り出し（Ｓ３１２）、グループユーザ記憶部１０３に保存されている、ｇｒｏｕｐＩＤのグループに所属するユーザ（ユーザＢ、Ｃを含む）の情報を取り出し、当該情報を用いて各ユーザに向けて（Ｃ（１）１，Ｋ１，Ｃ２，ｍ）を送信する（Ｓ３１３）。なお、本実施例では、サーバ装置１０は通信端末１２、通信端末１３に（Ｃ（１）１，Ｋ１，Ｃ２，ｍ）を送信する。
【００９４】
＜メッセージ受信＞
次に、メッセージの受信について説明する。この時点でチャットグループで共有されている共有鍵をＳＫ２とする。通信端末１２、１３のそれぞれがメッセージ鍵暗号文とメッセージ暗号文の組（Ｃ（２）１，Ｋ１，Ｃ２，ｍ）を受信するが、ここでは、通信端末１２の動作のみを図１３を参照して説明する。通信端末１３においても同様の動作が実施される。なお、ここで使用されるメッセージ鍵Ｋ１は必ずしも共有鍵ＳＫ２で生成されたメッセージ鍵であるとは限らない。
【００９５】
図１３のＳ１０６により、通信端末１２の暗号文受信部１３０が、サーバ装置１０から（Ｃ（２）１，Ｋ１，Ｃ２，ｍ）を受信すると、Ｓ１０８において、メッセージ鍵復号部１２８は、共有鍵記憶部１１１から最新の共有鍵ＳＫ２を取り出し、Ｋ１←ＫＥＭ．Ｄｅｃ（ＳＫ２，Ｃ（２）１，Ｋ１）を計算してメッセージ鍵Ｋ１を復号する。
【００９６】
その後、Ｓ１０９において、メッセージ復号部１２６が、Ｓ１０８で復号したメッセージ鍵Ｋ１を用いて、ｍ←Ｄｅｃ（Ｋ１，ｍ）を計算してメッセージｍを復号する。これによって、通信端末１２は通信端末１１から送信されたメッセージｍを正しく表示できる。
【００９７】
＜共有鍵更新と再暗号化鍵生成＞
共有鍵更新と再暗号化鍵生成の動作を図１６のシーケンス図を参照して説明する。ここでは、更新前後の共有鍵がＳＫａ、ＳＫｂであるとする。
【００９８】
Ｓ４０１において、通信端末１１、通信端末１２、通信端末１３が属するグループｇｒｏｕｐＩＤにおいて、メッセージ鍵の暗号化に使用される共有鍵がＳＫａからＳＫｂに更新されたとする。このとき、通信端末１１、通信端末１２、通信端末１３は最新の共有鍵ＳＫｂを共有しており、各通信端末の共有鍵記憶部１１１に共有鍵ＳＫｂを保持している。
【００９９】
また、通信端末１３は、共有鍵記憶部１１において更新前の共有鍵ＳＫｂも保持しているものとする。なお、共有鍵ＳＫａ，ＳＫｂはサーバ装置１０は知らない。
【０１００】
また、サーバ装置１０は、メッセージ鍵暗号文記憶部１０２において、ｇｒｏｕｐＩＤに付随する暗号文、すなわち、グループｇｒｏｕｐＩＤ向けに送信されたメッセージ鍵暗号文、Ｃ（ａ）１，Ｋｉ１，...．，Ｃ（ａ）１，Ｋｉｎを保持しているものとする。なお、ｉ１，...．，ｉｎは本実施例を記述する上で用いた、メッセージ鍵を区別する添字である。例えば、図１０に示す例では、メッセージ鍵としてＫ１、Ｋ２、Ｋ３が使用されたことが示されている。
【０１０１】
Ｓ４０２において、通信端末１３の再暗号化鍵生成部１２４は、ＲＫａ，ｂ←ＫＥＭ．ＲｅＫｅｙＧｅｎ（ＳＫａ，ＳＫｂ）を計算して再暗号化鍵ＲＫａ，ｂを生成する。Ｓ４０３において、通信端末１３の暗号文送信部１２９（他の送信機能が実施してもよい）は、グループ識別子と再暗号化鍵の組（ｇｒｏｕｐＩＤ，ＲＫａ，ｂ）をサーバ装置１０に送信する。
【０１０２】
＜再暗号化＞
Ｓ４０３において、サーバ装置１０の暗号文受信部１０５（他の受信機能が実施してもよい）が通信端末１３からグループ識別子と再暗号化鍵の組（ｇｒｏｕｐＩＤ，ＲＫａ，ｂ）を受信する。
【０１０３】
続いて、再暗号化処理部１０４が、各ｊ∈｛ｉ１，...．，ｉｎ｝に対して、以下のＳ４０４〜Ｓ４０６の処理を繰り返し実行する。
【０１０４】
再暗号化処理部１０４は、メッセージ鍵暗号文記憶部１０２からメッセージ鍵暗号文Ｃ（ａ）１，Ｋｊを取り出し（Ｓ４０４）、Ｃ（ｂ）１，Ｋｊ←ＫＥＭ．ＲｅＥｎｃ（ＲＫａ，ｂ，Ｃ（ａ）１，Ｋｊ）を実行して、再暗号化後のメッセージ鍵暗号文Ｃ（ｂ）１，Ｋｊを算出する（Ｓ４０５）。
【０１０５】
再暗号化処理部１０４は、メッセージ鍵暗号文記憶部１０２において、メッセージ鍵暗号文Ｃ（ａ）１，Ｋｊに対して再暗号化後のメッセージ鍵暗号文Ｃ（ｂ）１，Ｋｊを上書き保存する（Ｓ４０５）。図１０に、再暗号化後のメッセージ鍵暗号文Ｃ（ｂ）１，Ｋｊが上書き保存されることが示されている。
【０１０６】
図１０に示すとおり、この処理後、各メッセージ鍵識別子には変更はない。そのため、メッセージ暗号文記憶部１０１にあるメッセージ暗号文とメッセージ鍵暗号文記憶部１０２にあるメッセージ鍵暗号文の対応関係に変化はない。上記処理後、サーバ装置１０から配信されたｇｒｏｕｐＩＤに付随する暗号文を受信した通信端末は、最新の共有鍵ＳＫｂを保持していれば、メッセージ受信時と同じ動作によって、各メッセージを正しく復号することができる。
【０１０７】
（実施例の効果等）
以上、説明したように、本実施例では、グループごとに一意のＩＤであるグループ識別子が存在し、グループ識別子は、サーバ装置とそのグループに存在するユーザ間であらかじめ共有されている。
【０１０８】
メッセージの暗号化には共通鍵暗号方式を利用し、メッセージの暗号化に利用した鍵であるメッセージ鍵は、共通鍵ベースの再暗号可能な暗号方式を利用して共有鍵で暗号化する。本実施例では、メッセージ鍵を各メッセージの暗号化ごとに生成するのではなく、共有鍵とグループ識別子を擬似ランダム関数またはねじれ疑似ランダム関数に入力して得た出力をメッセージ鍵として、そのグループで共通に使用する。これにより、共有鍵とグループ識別子の一方が漏えいしてもメッセージ鍵は漏えいしないので、グループのユーザ全員で安全にメッセージ鍵を共有できる。
【０１０９】
サーバ装置ではメッセージの暗号文とメッセージ鍵の暗号文とを別テーブル（例：図９、図１０）で保存するが、その際、サーバ装置側でどのメッセージに対してどの鍵が使いまわされているかを知ることができるようにするために鍵の識別子（鍵ＩＤ）を付加し、これをキーに別テーブルに保存する。
【０１１０】
既に説明したとおり、再暗号化処理が行われる際、サーバ装置はメッセージ鍵の暗号文を保存しているテーブル（例：図１０）のみを更新する。再暗号化処理が行われる対象であるメッセージ鍵の暗号文の数は、現在までの共有鍵の更新回数に等しいため、関連技術と比べて、再暗号化処理のためのサーバ装置の負荷が軽減される。
【０１１１】
すなわち、再暗号化処理が効率化されるため、ユーザのログイン時の複数メッセージダウンロードや、複数ユーザが短い間隔で行うときのログアウト処理時間が削減され、ユーザの体感時間の軽減が実現される。
【０１１２】
また、メッセージ鍵をメッセージ毎に生成するのではなく、複数メッセージに使いまわすため、メッセージ投稿時の暗号化処理時間も減少する。
【０１１３】
よって、本技術を実装した暗号ビジネスチャットにおけるログイン／ログアウト／メッセージ投稿におけるユーザの体感時間を、エンドツーエンド暗号化のされていない従来のビジネスチャットでのログイン／ログアウト／メッセージ投稿に関する体感時間に近づけることができ、安全かつ効率的な暗号ビジネスチャットを実現できる。
【０１１４】
（まとめ）
本明細書には、少なくとも、以下の事項が開示されている。
【０１１５】
（第１項）
グループ識別子が割り当てられたグループを形成する複数の通信端末間で、サーバ装置に対しメッセージを秘匿したまま、当該サーバ装置を介してメッセージの送受信を実行する通信システムにおいて使用されるサーバ装置であって、
前記グループに属する複数の通信端末において共有される共有鍵と前記グループ識別子とから生成されたメッセージ鍵によりメッセージを暗号化して生成されたメッセージ暗号文を、当該メッセージ鍵の識別子であるメッセージ鍵識別子をキーにして保存するメッセージ暗号文記憶部と、
前記メッセージ鍵を、共有鍵を用いて再暗号化可能なように暗号化して生成されたメッセージ鍵暗号文を、前記メッセージ鍵識別子をキーにして保存するメッセージ鍵暗号文記憶部と、
前記共有鍵が更新された後、前記共有鍵と更新後の共有鍵を用いて再暗号化鍵を生成した通信端末から当該再暗号化鍵を受信し、当該再暗号化鍵を用いて、再暗号化したメッセージ鍵暗号文を生成し、前記メッセージ鍵暗号文記憶部において、再暗号化したメッセージ鍵暗号文を、再暗号化前のメッセージ鍵暗号文に上書きして保存する再暗号化処理部と
を備えることを特徴とするサーバ装置。
（第２項）
前記メッセージ鍵は、前記共有鍵と前記グループ識別子とをねじれ疑似ランダム関数または疑似ランダム関数に入力することにより生成された鍵である
ことを特徴とする第１項に記載のサーバ装置。
（第３項）
グループ識別子が割り当てられたグループを形成する複数の通信端末間で、サーバ装置に対しメッセージを秘匿したまま、当該サーバ装置を介してメッセージの送受信を実行する通信システムにおいて使用される通信端末であって、
前記グループに属する複数の通信端末において共有される共有鍵と前記グループ識別子とからメッセージ鍵を生成するメッセージ鍵生成部と、
前記メッセージ鍵を、共有鍵を用いて再暗号化可能なように暗号化することによりメッセージ鍵暗号文を生成するメッセージ鍵暗号化部と、
前記メッセージ鍵の識別子であるメッセージ鍵識別子を生成するメッセージ鍵識別子生成部と、
メッセージを前記メッセージ鍵により暗号化することでメッセージ暗号文を生成するメッセージ暗号化部と、
前記メッセージ鍵暗号文、前記メッセージ鍵識別子、及び前記メッセージ暗号文を前記サーバ装置に送信する送信部と
を備えることを特徴とする通信端末。
（第４項）
前記共有鍵が更新された後、前記共有鍵と更新後の共有鍵を用いて再暗号化鍵を生成する再暗号化鍵生成部を更に備え、
前記送信部は、前記再暗号化鍵を前記サーバ装置に送信する
ことを特徴とする第３項に記載の通信端末。
（第５項）
グループ識別子が割り当てられたグループを形成する複数の通信端末間で、サーバ装置に対しメッセージを秘匿したまま、当該サーバ装置を介してメッセージの送受信を実行する通信システムであって、
前記グループに属する各通信端末は、
前記グループに属する複数の通信端末において共有される共有鍵と前記グループ識別子とからメッセージ鍵を生成するメッセージ鍵生成部と、
前記メッセージ鍵を、共有鍵を用いて再暗号化可能なように暗号化することによりメッセージ鍵暗号文を生成するメッセージ鍵暗号化部と、
前記メッセージ鍵の識別子であるメッセージ鍵識別子を生成するメッセージ鍵識別子生成部と、
メッセージを前記メッセージ鍵により暗号化することでメッセージ暗号文を生成するメッセージ暗号化部と、
前記メッセージ鍵暗号文、前記メッセージ鍵識別子、及び前記メッセージ暗号文を前記サーバ装置に送信する送信部と、を備え、
前記サーバ装置は、
前記メッセージ暗号文を、前記メッセージ鍵識別子をキーにして保存するメッセージ暗号文記憶部と、
前記メッセージ鍵暗号文を、前記メッセージ鍵識別子をキーにして保存するメッセージ鍵暗号文記憶部と、
前記メッセージ鍵暗号文と前記メッセージ暗号文を、前記グループに属する通信端末に送信する送信部と、
前記共有鍵が更新された後、前記共有鍵と更新後の共有鍵を用いて再暗号化鍵を生成した通信端末から当該再暗号化鍵を受信し、当該再暗号化鍵を用いて、再暗号化したメッセージ鍵暗号文を生成し、前記メッセージ鍵暗号文記憶部において、再暗号化したメッセージ鍵暗号文を、再暗号化前のメッセージ鍵暗号文に上書きして保存する再暗号化処理部と、を備える
ことを特徴とする通信システム。
（第６項）
コンピュータを、第１項又は第２項に記載のサーバ装置における各部として機能させるためのプログラム。
（第７項）
コンピュータを、第３項又は第４項に記載の通信端末における各部として機能させるためのプログラム。
【０１１６】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１１７】
（参考文献）
参考文献１.D. Boneh, K. Lewi, H. Montgomery, and A. Raghunathan. 2015.Key Homomorphic PRFs and Their Applications. CryptologyePrint Archive, Report 2015/220. (2015). http://eprint.iacr.org/2015/220.
参考文献２.森山大輔，西巻陵，岡本龍明．公開鍵暗号の数理．共立出版，２０１１年．
参考文献３．YONEYAMA, K.,YOSHIDA, R., KAWAHARA, Y., KOBAYASHI, T., FUJI, H., and YAMAMOTO, T. (2018). Exposure-Resilient Identity-Based Dynamic Multi-Cast Key Distribution. IEICE TRANSACTIONS on Fundamentals of Electronics, Communications and Computer Sciences, 101(6), 929-944.
【０１１８】
本特許出願は２０１８年１０月２４日に出願した日本国特許出願第２０１８−２００３３３号に基づきその優先権を主張するものであり、日本国特許出願第２０１８−２００３３３号の全内容を本願に援用する。
【符号の説明】
【０１１９】
１  ネットワーク
１１、１２、１３  通信端末
１００  サーバ装置
１０１  メッセージ暗号文記憶部
１０２  メッセージ鍵暗号文記憶部
１０３  グループユーザ記憶部
１０４  再暗号化処理部
１０５  暗号文受信部
１０６  暗号文送信部
１１１  共有鍵記憶部
１１２  メッセージ鍵記憶部
１１３  メッセージ鍵識別子記憶部
１２１  メッセージ鍵生成部
１２２  メッセージ鍵識別子生成部
１２３  メッセージ鍵管理部
１２４  再暗号化鍵生成部
１２５  メッセージ暗号化部
１２６  メッセージ復号部
１２７  メッセージ鍵暗号化部
１２８  メッセージ鍵復号部
１２９  暗号文送信部
１３０  暗号文受信部
１５０  ドライブ装置
１５１  記録媒体
１５２  補助記憶装置
１５３  メモリ装置
１５４  ＣＰＵ
１５５  インターフェース装置
１５６  表示装置
１５７  入力装置
【図１】
2020085151.tif 000005
【図２】
2020085151.tif 000006
【図３】
2020085151.tif 000007
【図４】
2020085151.tif 000008
【図５】
2020085151.tif 000009
【図６】
2020085151.tif 000010
【図７】
2020085151.tif 000011
【図８】
2020085151.tif 000012
【図９】
2020085151.tif 000013
【図１０】
2020085151.tif 000014
【図１１】
2020085151.tif 000015
【図１２】
2020085151.tif 000016
【図１３】
2020085151.tif 000017
【図１４】
2020085151.tif 000018
【図１５】
2020085151.tif 000019
【図１６】
2020085151.tif 000020
【国際調査報告】
2020085151.tif 000021
2020085151.tif 000022
2020085151.tif 000023
2020085151.tif 000024
2020085151.tif 000025