(57)【要約】  以前にサーバに保存されたデータをサーバ側で復号することなく、更新されたセッション鍵を用いて通信端末側で復号可能なデータに更新することができ、削除されたユーザが当該復号可能なデータを復号することができないデータ共有技術を提供する。データ共有サーバが、グループの世代を示す世代識別子を生成する世代識別子生成ステップと、暗号化セッション鍵を更新する通信端末が、データ共有サーバから受信した世代識別子、記録部に記録している公開パラメータとセッション鍵を用いて、セッション鍵を暗号化した暗号化セッション鍵を生成するセッション鍵暗号化ステップと、データ共有サーバが、暗号化セッション鍵を更新する通信端末から受信した暗号化セッション鍵を現時点で有効な暗号化セッション鍵として記録する暗号化セッション鍵管理ステップとを含む。
2019088279.tif 000002
【特許請求の範囲】
【請求項１】
データを共有するn台(nは1以上の整数)の通信端末と前記データを暗号化した暗号化データを記録するデータ共有サーバと公開パラメータを生成する鍵生成サーバとを含むデータ共有システムにおいて、前記n台の通信端末のうちの何れかの通信端末を利用するユーザが前記n台の通信端末を利用するユーザから構成されるグループから離脱した場合に、前記離脱したユーザが前記暗号化データを復号することができないように、データを共有する通信端末の間で共有されるセッション鍵を暗号化した暗号化セッション鍵を更新するデータ共有方法であって、
前記離脱したユーザが利用する通信端末を除くn-1台の通信端末のうちの何れかの通信端末を、暗号化セッション鍵を更新する通信端末として、
前記暗号化セッション鍵を更新する通信端末の記録部には、前記公開パラメータと現時点で有効なセッション鍵が記録されており、
前記データ共有サーバが、前記グループの世代を示す世代識別子を生成する世代識別子生成ステップと、
前記暗号化セッション鍵を更新する通信端末が、前記データ共有サーバから受信した前記世代識別子、前記記録部に記録している前記公開パラメータと前記セッション鍵を用いて、前記セッション鍵を暗号化した暗号化セッション鍵を生成するセッション鍵暗号化ステップと、
前記データ共有サーバが、前記暗号化セッション鍵を更新する通信端末から受信した前記暗号化セッション鍵を現時点で有効な暗号化セッション鍵として記録する暗号化セッション鍵管理ステップと
を含むデータ共有方法。
【請求項２】
データを共有するn台(nは1以上の整数)の通信端末と前記データを暗号化した暗号化データを記録するデータ共有サーバと公開パラメータを生成する鍵生成サーバとを含み、前記n台の通信端末のうちの何れかの通信端末を利用するユーザが前記n台の通信端末を利用するユーザから構成されるグループから離脱した場合に、前記離脱したユーザが前記暗号化データを復号することができないように、データを共有する通信端末の間で共有されるセッション鍵を暗号化した暗号化セッション鍵を更新するデータ共有システムであって、
前記離脱したユーザが利用する通信端末を除くn-1台の通信端末のうちの何れかの通信端末を、暗号化セッション鍵を更新する通信端末として、
前記データ共有サーバは、
前記グループの世代を示す世代識別子を生成する世代識別子生成部と、
前記暗号化セッション鍵を更新する通信端末から受信した暗号化セッション鍵を現時点で有効な暗号化セッション鍵として記録する暗号化セッション鍵管理部と
を含み、
前記暗号化セッション鍵を更新する通信端末は、
前記公開パラメータと現時点で有効なセッション鍵を記録する記録部と、
前記データ共有サーバから受信した前記世代識別子、前記記録部に記録している前記公開パラメータと前記セッション鍵を用いて、前記セッション鍵を暗号化した暗号化セッション鍵を生成するセッション鍵暗号化部と
を含むデータ共有システム。
【請求項３】
データを共有するn台(nは1以上の整数)の通信端末と前記データを暗号化した暗号化データを記録するデータ共有サーバと公開パラメータを生成する鍵生成サーバとを含み、前記n台の通信端末のうちの何れかの通信端末を利用するユーザが前記n台の通信端末を利用するユーザから構成されるグループから離脱した場合に、前記離脱したユーザが前記暗号化データを復号することができないように、データを共有する通信端末の間で共有されるセッション鍵を暗号化した暗号化セッション鍵を更新するデータ共有システムに含まれるデータ共有サーバであって、
前記離脱したユーザが利用する通信端末を除くn-1台の通信端末のうちの何れかの通信端末を、暗号化セッション鍵を更新する通信端末として、
前記グループの世代を示す世代識別子を生成する世代識別子生成部と、
前記暗号化セッション鍵を更新する通信端末から受信した暗号化セッション鍵を現時点で有効な暗号化セッション鍵として記録する暗号化セッション鍵管理部と
を含むデータ共有サーバ。
【請求項４】
データを共有するn台(nは1以上の整数)の通信端末と前記データを暗号化した暗号化データを記録するデータ共有サーバと公開パラメータを生成する鍵生成サーバとを含み、前記n台の通信端末のうちの何れかの通信端末を利用するユーザが前記n台の通信端末を利用するユーザから構成されるグループから離脱した場合に、前記離脱したユーザが前記暗号化データを復号することができないように、データを共有する通信端末の間で共有されるセッション鍵を暗号化した暗号化セッション鍵を更新するデータ共有システムに含まれる通信端末であって、
前記通信端末は、暗号化セッション鍵を更新する、前記離脱したユーザが利用する通信端末を除くn-1台の通信端末のうちの何れかの通信端末であり、
前記公開パラメータと現時点で有効なセッション鍵を記録する記録部と、
前記データ共有サーバから受信した世代識別子、前記記録部に記録している前記公開パラメータと前記セッション鍵を用いて、前記セッション鍵を暗号化した暗号化セッション鍵を生成するセッション鍵暗号化部と
を含む通信端末。
【請求項５】
請求項３に記載のデータ共有サーバまたは請求項４に記載の通信端末としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は情報セキュリティ技術の応用に関し、特にグループを形成する複数のユーザがデータを共有するデータ共有技術に関する。
【背景技術】
【０００２】
ビジネスでの使用を前提とするデータ共有システムとしてパソコンやスマートフォン等のマルチデバイスに対応可能なシステムが存在する。マルチデバイスに対応可能なシステムのうち、企業の機密情報漏えいを考慮し、通信端末にデータを残さないクラウドベース型のデータ共有システムが存在する。クラウドベース型のメッセージ送信システムの例として、非特許文献１が挙げられる。【０００３】
このようなデータ共有システムにおいては、通信路を暗号化することで通信経路上の盗聴防止がなされていたり、既に述べたように、通信端末にデータを残さないことによって通信端末の紛失や不正な持ち出しに起因する情報漏えい防止がなされていたりする。このように、従来のデータ共有システムは「通信経路」と「通信端末」に対する脅威に対処している一方、サーバに対する脅威への対処は不十分である。【０００４】
ここでいうサーバに対する脅威として「サーバに対する外部からの攻撃」や「サーバ管理者等による内部不正」等が挙げられる。これらの脅威に対し、共有対象となるデータを暗号化して保存する、という対策が考えられる。しかしながら、サーバ側でデータを復号可能である以上、前述の脅威に対してサーバからのデータ漏えいの可能性が依然として存在する。送受信・保存を行うサーバに送られてくるデータがサーバに対して秘匿化されている（サーバ側で盗聴されない）ことが重要である。【０００５】
１つの方法として、サーバに対してデータを秘匿し、通信端末でのみ復号可能なエンドツーエンドの暗号化通信を実現することが考えられる。この場合、通信端末間で用いる共通鍵をどのように共有するかが問題となる。この問題の解決策として例えば非特許文献２が開示されている。非特許文献２では中央に認証サーバをもつスター型のネットワークにおいて、認証サーバに対していかなる情報ももらさずに利用者間で鍵（以下、セッション鍵）を共有するプロトコルが提案されている。【０００６】
これによって、サーバに対しデータを秘匿したまま通信端末間でやりとりすることができる。また、現在参加している通信端末でのみデータが読めるようセッション鍵の共有を行うため、ユーザの追加・削除等のイベントによりセッション鍵が更新される。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】“ビジネス向けグループチャットTopicRoom”，［online］，［平成２９年１０月１６日検索］，インターネット <URL: https://www.ntt-tx.co.jp/products/topicroom/>
【非特許文献２】小林鉄太郎，米山一樹，吉田麗生，川原祐人，冨士仁，山本具英，“スケーラブルな動的多者鍵配布プロトコル”，SCIS2016−暗号と情報セキュリティシンポジウム−講演論文集，一般社団法人電子情報通信学会，4E2-3，2016．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記非特許文献２の技術によれば、サーバに知られないよう、通信端末間で鍵を共有することで、サーバに対しデータを秘匿したままやりとりすることができる。【０００９】
しかし、非特許文献２では、現在の参加メンバのみでセッション鍵を共有するため、セッション鍵はログイン・ログアウトイベントのようなユーザの追加・削除に伴って更新されたり、それ以外にも定期的に更新されたりすることがある。したがって、現在参加している通信端末でのみ過去に蓄積されたデータを読めるようにするために、以前にサーバに保存されたデータをサーバ側で復号することなく、更新されたセッション鍵を用いて通信端末側で復号可能なデータに更新しなければならない、という課題がある。そのため、実用上、クラウドベース型データ共有システムに上記プロトコルをそのまま適用させることは難しい。【００１０】
また、削除されたユーザに対しては、上記復号可能なデータが読めないようにする必要がある。【００１１】
そこで本発明は、以前にサーバに保存されたデータをサーバ側で復号することなく、更新されたセッション鍵を用いて通信端末側で復号可能なデータに更新することができ、削除されたユーザが当該復号可能なデータを復号することができないデータ共有技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一態様は、データを共有するn台(nは1以上の整数)の通信端末と前記データを暗号化した暗号化データを記録するデータ共有サーバと公開パラメータを生成する鍵生成サーバとを含むデータ共有システムにおいて、前記n台の通信端末のうちの何れかの通信端末を利用するユーザが前記n台の通信端末を利用するユーザから構成されるグループから離脱した場合に、前記離脱したユーザが前記暗号化データを復号することができないように、データを共有する通信端末の間で共有されるセッション鍵を暗号化した暗号化セッション鍵を更新するデータ共有方法であって、前記離脱したユーザが利用する通信端末を除くn-1台の通信端末のうちの何れかの通信端末を、暗号化セッション鍵を更新する通信端末として、前記暗号化セッション鍵を更新する通信端末の記録部には、前記公開パラメータと現時点で有効なセッション鍵が記録されており、前記データ共有サーバが、前記グループの世代を示す世代識別子を生成する世代識別子生成ステップと、前記暗号化セッション鍵を更新する通信端末が、前記データ共有サーバから受信した前記世代識別子、前記記録部に記録している前記公開パラメータと前記セッション鍵を用いて、前記セッション鍵を暗号化した暗号化セッション鍵を生成するセッション鍵暗号化ステップと、前記データ共有サーバが、前記暗号化セッション鍵を更新する通信端末から受信した前記暗号化セッション鍵を現時点で有効な暗号化セッション鍵として記録する暗号化セッション鍵管理ステップとを含む。
【発明の効果】
【００１３】
この発明によれば、以前にサーバに保存されたデータをサーバ側で復号することなく、更新されたセッション鍵を用いて更新された通信端末側で復号可能なデータを、データ共有を行うグループから削除されたユーザは復号することができない。
【図面の簡単な説明】
【００１４】
【図１】データ共有システム１０の構成の一例を示す図である。
【図２】データ共有サーバ１００の構成の一例を示すブロック図である。
【図３】鍵生成サーバ２００の構成の一例を示すブロック図である。
【図４】通信端末３００の構成の一例を示すブロック図である。
【図５】世代識別子生成処理の一例を示すシークエンス図である。
【図６】セッション鍵暗号化処理の一例を示すシークエンス図である。
【図７】データ共有処理の一例を示すシークエンス図である。
【図８】再暗号化処理の一例を示すシークエンス図である。
【図９】ユーザ削除に伴うセッション鍵暗号化処理の一例を示すシークエンス図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００１６】
＜定義＞
Nを正の整数全体の集合とする。
【００１７】
IDベース暗号方式は、次の4つのアルゴリズム(Setup, Keygen, Enc, Dec)から構成される。Setup, Keygen, Enc, Decは、それぞれ以下の入出力をもつアルゴリズムである。ここで、k∈Nをセキュリティパラメータとする。
【００１８】
［Setup(1k)→(params, msk)］
Setupは、セキュリティパラメータkを入力とし、公開パラメータparamsとマスター秘密鍵mskを出力するアルゴリズムである。
【００１９】
［Keygen(params, msk, ID)→ dID］
Keygenは、公開パラメータparams、マスター秘密鍵msk、識別子IDを入力とし、識別子IDに対する秘密鍵dIDを出力するアルゴリズムである。
【００２０】
［Enc(params, ID, m)→C］
Encは、公開パラメータparams、識別子ID、平文mを入力とし、暗号文Cを出力するアルゴリズムである。
【００２１】
［Dec(params, dID, C)→m'］
Decは、公開パラメータparams、秘密鍵dID、暗号文Cを入力とし、平文m'を出力するアルゴリズムである。
【００２２】
さらに、上記アルゴリズムは、以下の条件を満たすものとする。
（条件）任意のセキュリティパラメータk、Setup(1k)によって出力された任意の公開パラメータとマスター秘密鍵の組(params, msk)、任意の識別子IDに対してKeygen(params, msk, ID)によって出力された秘密鍵dID、任意の平文mに対して、Dec(params, dID, Enc(params, ID, m))=mが成り立つ。
【００２３】
このようなIDベース暗号方式の例は、例えば、参考非特許文献１に記載がある。
（参考非特許文献１：森山大輔，西巻陵，岡本龍明，“公開鍵暗号の数理”，共立出版，2011年．）
【００２４】
k1∈Nとし、k1ビット長の鍵空間をKEY={0,1}k1とする。関数fk1:KEY×KEY→KEYに対して、以下の条件(a)、条件(b)を満たすhk1:KEY×KEY→KEYと関数gk1:KEY×KEY→KEYが存在するものとする。
【００２５】
（条件(a)）任意のK,K'∈KEYに対し、関数hk1:KEY×KEY→KEYは次式を満たす。
【００２６】
【数１】
2019088279.tif 000003
【００２７】
（条件(b)）任意のK,K',K''∈KEYに対し、関数gk1:KEY×KEY→KEYは次式を満たす。
【００２８】
【数２】
2019088279.tif 000004
【００２９】
このような関数の組(fk1, gk1, hk1)として、例えば、(fk1, gk1, hk1)=(((x1, x2)→x1-x2), ((y1, y2)→y1+y2), ((z1, z2)→z1+z2))や(fk1, gk1, hk1)=(((x1, x2)→x1/x2), ((y1, y2)→y1・y2), ((z1, z2)→z1・z2))がある。なお、x1-x2の演算-は、鍵空間に加法群としての構造が入っているときの加法群における差を意味する。x1/x2の演算/は、鍵空間に乗法群としての構造が入っているときの乗法群における商を意味する。
【００３０】
＜第一実施形態＞
［システム構成］
以下、図１を参照して、データ共有システム１０について説明する。図１は、データ共有システム１０の構成の一例を示す図である。データ共有システム１０は、データ共有サーバ１００、鍵生成サーバ２００、通信端末３００1、…、通信端末３００n (n≧1)を含む。
【００３１】
データ共有サーバ１００、鍵生成サーバ２００、通信端末３００1、…、通信端末３００nは、インターネットなどのネットワーク９００に接続し、相互に通信可能である。ただし、データ共有サーバ１００と鍵生成サーバ２００が直接通信することがないよう構成するのが好ましい。
【００３２】
データ共有システム１０は、n台の通信端末３００1、…、通信端末３００nがデータを共有するためのシステムである。なお、通信端末３００i(1≦i≦n)が他の通信端末３００j(1≦j≦n)とデータを共有する際には、共有対象となるデータを暗号化した暗号化データを生成した上で、データ共有サーバ１００を介して共有される。
【００３３】
データ共有サーバ１００は、通信端末３００iから送信された暗号化データを記録し、他の通信端末３００jへ暗号化データを送信する。また、鍵生成サーバ２００は、後述するセッション鍵の暗号化・復号に必要な情報である公開パラメータ、マスター秘密鍵、秘密鍵を生成する。公開パラメータ、マスター秘密鍵、秘密鍵の生成には、IDベース暗号方式を用いる。
【００３４】
通信端末３００を用いてデータを共有する者をユーザという。ユーザはデータを共有するためのグループを形成する。各グループにはグループ識別子が与えられる。例えば、通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4のユーザをそれぞれユーザA、B、C、Dとし、ユーザA、B、C、Dはグループ識別子groupIDを有するグループに属しているとする。なお、通信端末３００は、パソコンやスマートフォンなどユーザが利用できる通信機能を持つ端末であればどのようなものでもよい。
【００３５】
また、ユーザは、通信端末３００を用いて、他のユーザとセッション鍵を共有する。セッション鍵は、グループ単位で生成されるものであり、そのグループに属するユーザが利用する通信端末３００間でのみ共有される鍵である。なお、データ共有サーバ１００や鍵生成サーバ２００など通信端末３００以外の装置に対してセッション鍵に関するいかなる情報も漏らさない形で、セッション鍵が共有されるものとする。そのような共有方法として、例えば、参考非特許文献２に記載のプロトコルが挙げられる。ただし、セッション鍵の共有方法は、参考非特許文献２に記載のプロトコルに限られるものではなく、どのような方法を用いてセッション鍵を共有してもよい。
（参考非特許文献２：K. Yoneyama, R. Yoshida, Y. Kawahara, T. Kobayashi, H. Fuji,and T. Yamamoto, “Multi-Cast Key Distribution: Scalable, Dynamic and Provably Secure Construction”, Cryptology ePrint Archive, Report 2016/833, http://eprint.iacr.org/2016/833, 2016）
【００３６】
セッション鍵の安全性を確保するために、例えば、グループに新しいユーザが追加される、グループからユーザが離脱する（削除される）など所定のイベントが発生した場合や一定時間が経過した場合に新しいセッション鍵が生成されるものする。また、セッション鍵の使用可能期間が少なくともひとりのユーザがログインしている間となるように、セッション鍵を生成してもよい。つまり、一人目のユーザがログインすると、セッション鍵が生成され、すべてのユーザがログアウトするとそのセッション鍵は破棄されることになるようにしてもよい。
【００３７】
次に、図２〜図４を参照して、データ共有サーバ１００、鍵生成サーバ２００、通信端末３００の各装置について説明する。図２は、データ共有サーバ１００の構成の一例を示すブロック図である。データ共有サーバ１００は、グループ情報管理部１０５、世代識別子生成部１１０、暗号化セッション鍵管理部１１５、暗号文管理部１１７、暗号化セッション鍵送信部１２０、再暗号化部１３０、送受信部１８０、記録部１９０を含む。送受信部１８０は、データ共有サーバ１００がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部１９０は、データ共有サーバ１００の処理に必要な情報を適宜記録する構成部である。例えば、記録部１９０は、暗号化データを記録する。
【００３８】
図３は、鍵生成サーバ２００の構成の一例を示すブロック図である。鍵生成サーバ２００は、鍵管理部２０５、セットアップ処理部２１０、秘密鍵生成部２２０、送受信部２８０、記録部２９０を含む。送受信部２８０は、鍵生成サーバ２００がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部２９０は、鍵生成サーバ２００の処理に必要な情報を適宜記録する構成部である。例えば、記録部２９０は、公開パラメータやマスター秘密鍵を記録する。
【００３９】
図４は、通信端末３００の構成の一例を示すブロック図である。通信端末３００は、グループ情報管理部３０５、セッション鍵暗号化部３１０、データ暗号化部３２０、第一鍵演算部３３０、第二鍵演算部３４０、データ復号部３５０、秘密鍵生成要求部３６０、秘密鍵管理部３６３、暗号化セッション鍵取得要求部３６５、セッション鍵復号部３７０、再暗号化鍵生成部３７５、セッション鍵共有部３７７、送受信部３８０、記録部３９０を含む。送受信部３８０は、通信端末３００がその他の装置と交換する必要がある情報を適宜送受信するための構成部である。記録部３９０は、通信端末３００の処理に必要な情報を適宜記録する構成部である。例えば、記録部３９０は、グループ識別子を記録する。
【００４０】
以下、先述した通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4のユーザA、B、C、Dをメンバとするグループでのデータ共有を例に説明していく。
【００４１】
［システムセットアップ］
データ共有サーバ１００のグループ情報管理部１０５は、通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4のユーザA、B、C、Dをメンバとするグループに対してグループ識別子groupIDを生成し、グループ識別子groupIDを記録部１９０に記録する。グループ情報管理部１０５がグループ識別子groupIDとともに、グループ識別子groupIDを有するグループを構成するユーザA、B、C、Dのユーザ識別子をあわせて記録部１９０に記録することにより、データ共有サーバ１００はグループに関する情報を総括的に管理するものとする。したがって、データ共有サーバ１００は、現在そのグループに属しているユーザを把握できる。
【００４２】
また、データ共有サーバ１００は、送信部１８０を用いてグループ識別子groupIDを通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4に送信、各通信端末３００のグループ情報管理部３０５は、グループ識別子groupIDを記録部３９０に記録しておく。
【００４３】
以上、説明したグループ識別子に関する処理は、上記の方法に限られるものでなく、データ共有サーバ１００、通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4の各記録部にグループ識別子groupIDが記録されるようになるのであれば、どのような処理方法であってもよい。
【００４４】
鍵生成サーバ２００のセットアップ処理部２１０は、所定のセキュリティパラメータk∈N（例えば、鍵長）を入力としてアルゴリズムSetup(1k)により、公開パラメータparamsとマスター秘密鍵mskを生成し、鍵生成サーバ２００の鍵管理部２０５は公開パラメータとマスター鍵の組(params, msk)を記録部２９０に記録しておく。
【００４５】
公開パラメータparamsは通信端末３００が利用する情報であるため、ユーザがデータ共有システム１０にログインするタイミングで、鍵生成サーバ２００から通信端末３００に送信されるものとする。通信端末３００は、公開パラメータparamsを記録部３９０に記録しておく。一方、マスター秘密鍵は鍵生成サーバ２００以外の装置に秘匿される情報であるため、鍵生成サーバ２００は、マスター秘密鍵mskを記録部２９０に秘密裏に記録しておくものとする。
【００４６】
以上、説明した公開パラメータとマスター秘密鍵に関する処理は、上記の方法に限られるものでなく、鍵生成サーバ２００の記録部２９０に公開パラメータとマスター鍵の組(params, msk)が、通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4の記録部３９０に公開パラメータparamsが記録されるようになるのであれば、どのような処理方法であってもよい。
【００４７】
［世代識別子生成処理］
グループ識別子は、あるグループが生成されてから消滅する（例えば、メンバ数がゼロになる）までデータ共有システム１０で利用される識別子である。このグループ識別子とは別に、そのグループのメンバの構成が変わるたびに生成される識別子（以下、世代識別子という）もデータ共有システム１０は利用する。つまり、世代識別子はグループの世代を示す識別子といえる。ここでは、世代識別子生成処理について説明する。
【００４８】
世代識別子を生成する最初のタイミングは、例えば、グループ識別子groupIDを有するグループを構成するユーザのひとり（例えば、ユーザA）がデータ共有システム１０にグループ識別子groupID生成後最初にログインしたタイミングである。つまり、通信端末３００1が世代識別子を受信する通信端末となる。以下、図５を参照して、世代識別子生成処理について説明する。
【００４９】
ユーザAが通信端末３００1を用いてデータ共有システム１０にログインする（Ｓ１１０）と、データ共有サーバ１００の世代識別子生成部１１０は、世代識別子gIDを生成する（Ｓ１２０）。世代識別子gIDは、グループ識別子groupIDと当該世代形成時の時刻（例えば、ログイン時刻）gen-timeを連結した文字列groupID||gen-timeとする。なお、世代識別子はこれに限ったものでなく、例えば乱数としてもよい。データ共有サーバ１００のグループ情報管理部１０５は、生成した世代識別子gIDを記録部１９０に記録しておく。つまり、データ共有サーバ１００は、世代識別子もグループ識別子やグループを構成するユーザ識別子とともに管理する。
【００５０】
データ共有サーバ１００は、送受信部１８０を用いてＳ１２０で生成した世代識別子gIDを通信端末３００1に送信する（Ｓ１３０）。
【００５１】
通信端末３００1が送受信部３８０を用いて世代識別子gIDを受信すると、通信端末３００1のグループ情報管理部３０５は世代識別子gIDを記録部３９０に記録する（Ｓ１４０）。なお、この世代識別子gIDは、グループ識別子groupIDを有するグループを構成するユーザA以外のユーザ（ユーザB、C、D）が通信端末３００を用いてデータ共有システム１０にログインしたときに、当該通信端末３００にデータ共有サーバ１００から送信され、当該通信端末３００は受信した世代識別子gIDを記録部３９０に記録するものとする。
【００５２】
［セッション鍵暗号化処理］
上述した通り、セッション鍵は、安全性を確保するために、適宜更新される。以下、図６を参照して、現時点で有効なセッション鍵を暗号化し、データ共有サーバ１００に記録するセッション鍵暗号化処理について説明する。現時点で有効なセッション鍵を暗号化する通信端末３００は、例えば、現在データ共有システム１０にログインしているユーザBの通信端末３００2であるとする。つまり、通信端末３００2がセッション鍵を暗号化する通信端末となる。また、現時点で有効なセッション鍵をSKとする。セッション鍵SKは、通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4のセッション鍵共有部３７７により生成したものであり、通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4の記録部３９０に記録されるものとする。
【００５３】
通信端末３００2のセッション鍵暗号化部３１０は、記録部３９０に記録している公開パラメータparamsと世代識別子gID、セッション鍵SKを入力としてアルゴリズムEnc(params, gID, SK)により、セッション鍵SKを暗号化した暗号化セッション鍵CSKを生成する（Ｓ２１０）。
【００５４】
通信端末３００2は、送受信部３８０を用いてＳ２１０で生成した暗号化セッション鍵CSKをデータ共有サーバ１００に送信する（Ｓ２２０）。
【００５５】
データ共有サーバ１００が送受信部１８０を用いて暗号化セッション鍵CSKを受信すると、データ共有サーバ１００の暗号化セッション鍵管理部１１５は、暗号化セッション鍵CSKを記録部１９０に記録する（Ｓ２３０）。
【００５６】
［データ共有処理］
通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4の間で、世代識別子gIDとセッション鍵SKが共有されているものとする。すなわち、各通信端末３００の記録部３９０には、世代識別子gIDとセッション鍵SKが記録されている。以下、図７を参照して、通信端末３００があるデータを別の通信端末３００と共有するデータ共有処理について説明する。ここでは、送信元となる通信端末３００を通信端末３００3、送信先となる通信端末３００を通信端末３００4とする。つまり、通信端末３００3が共有対象となるデータを送信する通信端末、通信端末３００4が共有対象となるデータを受信する通信端末となる。
【００５７】
送信元となる通信端末３００3は、共有対象となるデータの暗号化に用いる共通鍵Kをあらかじめ生成し、記録部３９０に記録しておく。共通鍵Kは、例えば乱数でよい。
【００５８】
通信端末３００3のデータ暗号化部３２０は、記録部３９０に記録している共通鍵Kを用いて共有対象となるデータmを暗号化し、暗号化データCmを生成する（Ｓ３１０）。
【００５９】
通信端末３００3の第一鍵演算部３３０は、記録部３９０に記録しているセッション鍵SKとＳ３１０の暗号化に用いた共通鍵Kから、関数fk1による演算結果鍵fk1(K, SK)を生成する（Ｓ３２０）。
【００６０】
通信端末３００は、送受信部３８０を用いてＳ３１０で生成した暗号化データCmとＳ３２０で生成した演算結果鍵fk1(K, SK)の組である暗号文(Cm, fk1(K, SK))をデータ共有サーバ１００に送信する（Ｓ３３０）。このとき、送信先となる通信端末３００4の情報（例えば、通信端末３００4のIPアドレス）があわせて指定されデータ共有サーバ１００に送信される。
【００６１】
データ共有サーバ１００が送受信部１８０を用いて暗号文(Cm, fk1(K, SK))を受信すると、データ共有サーバ１００の暗号文管理部１１７は暗号文(Cm, fk1(K, SK))を記録部１９０に記録する（Ｓ３４０）。その際、データ共有サーバ１００は、送信先となる通信端末３００4の情報もあわせて受信する。
【００６２】
データ共有サーバ１００は、送受信部１８０を用いてＳ３４０で受信した暗号文(Cm, fk1(K, SK))を送信先として指定されている通信端末３００4に送信する（Ｓ３５０）。
【００６３】
送信先として指定されている通信端末３００4が送受信部３８０を用いて暗号文(Cm, fk1(K, SK))を受信すると、通信端末３００4の第二鍵演算部３４０は、暗号文の要素であるfk1(K, SK)と記録部３９０に記録しているセッション鍵SKから、関数hk1による演算結果鍵hk1(fk1(K, SK), SK)を生成する（Ｓ３６０）。ここで、hk1(fk1(K, SK), SK)=Kが成り立つから、通信端末３００4は、共通鍵Kを得ることになる。
【００６４】
通信端末３００4のデータ復号部３５０は、Ｓ３６０で生成した演算結果鍵hk1(fk1(K, SK), SK)である共通鍵Kを用いて、暗号文の要素であるCmを復号してデータmを取得する（Ｓ３７０）。
【００６５】
［再暗号化処理］
以下、図８を参照して、セッション鍵の更新に伴う、共有データサーバ１００における暗号文の再暗号化処理処理について説明する。共有データサーバ１００の記録部１９０には暗号化セッション鍵CSKが記録されている。通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4の記録部３９０には世代識別子gIDが記録されている。また、通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4は、セッション鍵共有部３７７を用いて、新たなセッション鍵SK'を生成、共有しているものとする。暗号文を再暗号化するための鍵である再暗号化鍵を生成する通信端末３００は、現在データ共有システム１０にログインしているユーザの通信端末３００1であるとする。つまり、通信端末３００1が再暗号化鍵を送信する通信端末となる。また、通信端末３００1、通信端末３００2、通信端末３００3、通信端末３００4はいずれも更新前の１世代前のセッション鍵SKを持っていないものとする。例えば、すべての通信端末３００がデータ共有システム１０からいったんログアウトしたタイミングで、セッション鍵SKを保持しない状態となったとする。
【００６６】
通信端末３００1の秘密鍵生成要求部３６０は、秘密鍵生成要求を生成し、記録部３９０に記録している世代識別子gIDとともに鍵生成サーバ２００に送信する（Ｓ４１０）。
【００６７】
鍵生成サーバ２００が送受信部２８０を用いて秘密鍵生成要求を受信すると、鍵生成サーバ２００の秘密鍵生成部２２０は、記録部２９０に記録している公開パラメータとマスター秘密鍵の組(params, msk)と世代識別子gIDを入力としてアルゴリズムKeygen(params,msk, gID)により、世代識別子gIDに対する秘密鍵dgIDを生成する（Ｓ４２０）。鍵生成サーバ２００の鍵管理部２０５は秘密鍵dgIDを記録部２９０に記録しておく。
【００６８】
鍵生成サーバ２００は、送受信部２８０を用いてＳ４２０で生成した秘密鍵dgIDを通信端末３００1に送信する（Ｓ４３０）。
【００６９】
通信端末３００1が送受信部３８０を用いて秘密鍵dgIDを受信すると、通信端末３００1の秘密鍵管理部３６３は秘密鍵dgIDを記録部３９０に記録する（Ｓ４４０）。
【００７０】
通信端末３００1の暗号化セッション鍵取得要求部３６５は、暗号化セッション鍵取得要求を生成し、データ共有サーバ１００に送信する（Ｓ４５０）。
【００７１】
データ共有サーバ１００が送受信部１８０を用いて暗号化セッション鍵取得要求を受信すると、データ共有サーバ１００の暗号化セッション鍵送信部１２０は、記録部１９０に記録している暗号化セッション鍵CSKを通信端末３００1に送信する（Ｓ４６０）。
【００７２】
通信端末３００1が送受信部３８０を用いて暗号化セッション鍵CSKを受信すると、通信端末３００1のセッション鍵復号部３７０は、記録部３９０に記録している公開パラメータparamsと秘密鍵dgID、暗号化セッション鍵CSKを入力としてアルゴリズムDec(params, dgID, CSK)により、セッション鍵SKを取得する（Ｓ４７０）。
【００７３】
通信端末３００1の再暗号化鍵生成部３７５は、Ｓ４７０で取得したセッション鍵SKとセッション鍵SK'から、関数fk1による演算結果である再暗号化鍵fk1(SK, SK')を生成する（Ｓ４８０）。
【００７４】
通信端末３００1は、送受信部３８０を用いてＳ４８０で生成した再暗号化鍵fk1(SK, SK')をデータ共有サーバ１００に送信する（Ｓ４９０）。
【００７５】
データ共有サーバ１００が送受信部１８０を用いて再暗号化鍵fk1(SK, SK')を受信すると、データ共有サーバ１００の再暗号化部１３０は、記録部１９０に記録している暗号文(Cm, fk1(K, SK))の要素である演算結果鍵fk1(K, SK)と再暗号化鍵fk1(SK, SK')から関数gk1による演算結果鍵gk1(fk1(K, SK), fk1(SK, SK')= fk1(K, SK')を生成、当該演算結果鍵fk1(K, SK')を用いて暗号文(Cm, fk1(K, SK'))を生成し、データ共有サーバ１００の暗号文管理部１１７は、暗号文(Cm, fk1(K, SK'))を記録部１９０に記録する（Ｓ４９５）。
【００７６】
［ユーザ削除に伴うセッション鍵暗号化処理］
世代識別子を生成する２番目以降のタイミング（つまり、世代識別子を更新するタイミング）は、例えば、グループを構成するユーザのひとりがそのグループから削除された（離脱した）後、グループを構成するユーザのひとりがデータ共有システム１０にログインしたタイミングである。その際、データ共有サーバ１００に記録されている暗号化セッション鍵を更新する。以下、図９を参照して、ユーザ削除に伴うセッション鍵暗号化処理について説明する。共有データサーバ１００の記録部１９０には暗号化セッション鍵CSKが記録されているものとする。また、グループから削除されたユーザはDであるとする。現時点で有効なセッション鍵を暗号化する通信端末３００は、例えば、現在データ共有システム１０にログインしているユーザAの通信端末３００1であるとする。つまり、通信端末３００1が暗号化セッション鍵を更新する通信端末となる。また、現時点で有効なセッション鍵をSK''とする。このセッション鍵SK''は通信端末３００1の記録部３９０に記録されている。
【００７７】
ユーザAが通信端末３００1を用いてデータ共有システム１０にログインする（Ｓ５１０）と、データ共有サーバ１００の世代識別子生成部１１０は、世代識別子gID'を生成する（Ｓ５２０）。世代識別子gID'は、グループ識別子groupIDとユーザDがグループから削除された時刻del-timeを連結した文字列groupID||del-timeとする。なお、世代識別子はこれに限ったものでなく、例えば乱数としてもよい。また、データ共有サーバ１００のグループ情報管理部１０５は、世代識別子を更新する形で、世代識別子gID'を記録部１９０に記録する。つまり、グループ情報管理部１０５は、１世代前の世代識別子gIDを削除、現時点で有効な世代識別子gID'を記録する。
【００７８】
データ共有サーバ１００は、送受信部１８０を用いてＳ５２０で生成した世代識別子gID'を通信端末３００1に送信する（Ｓ５３０）。
【００７９】
通信端末３００1が送受信部３８０を用いて世代識別子gID'を受信すると、通信端末３００1のグループ情報管理部３０５は世代識別子gID'を記録部３９０に記録する（Ｓ５４０）。なお、この世代識別子gID'は、グループ識別子groupIDを有するグループを構成するユーザA以外のユーザ（ユーザB、C）が通信端末３００を用いてデータ共有システム１０にログインしたときに、当該通信端末３００にデータ共有サーバ１００から送信され、当該通信端末３００は受信した世代識別子gID'を記録部３９０に記録するものとする。
【００８０】
通信端末３００のセッション鍵暗号化部３１０は、公開パラメータparams、世代識別子gID'、セッション鍵SK''を入力としてEnc(params, gID', SK'')により、セッション鍵SK''を暗号化した暗号化セッション鍵CSK''を生成する（Ｓ５５０）。
【００８１】
通信端末３００1は、送受信部３８０を用いてＳ５５０で生成した暗号化セッション鍵CSK''をデータ共有サーバ１００に送信する（Ｓ５６０）。
【００８２】
データ共有サーバ１００が送受信部１８０を用いて暗号化セッション鍵CSK''を受信すると、データ共有サーバ１００の暗号化セッション鍵管理部１１５は、暗号化セッション鍵CSK''を現時点で有効な暗号化セッション鍵として記録部１９０に記録する（Ｓ５７０）。なお、その際、１世代前のセッション鍵を暗号化した暗号化セッション鍵CSKについては削除するのが好ましい。
【００８３】
この時点で、グループから削除されたユーザDは１世代前の秘密鍵dgIDを知りえることはあっても、現在の秘密鍵dgID''については知りえないため、これ以降、データ共有サーバ１００に記録されている暗号化セッション鍵CSK''を復号することはできない。
【００８４】
本実施形態によると、以前にサーバに保存されたデータをサーバ側で復号することなく、更新されたセッション鍵を用いて更新された通信端末側で復号可能なデータを、データ共有を行うグループから削除されたユーザは復号することができない。
【００８５】
＜補記＞
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい）、メモリであるＲＡＭやＲＯＭ、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、ＣＰＵ、ＲＡＭ、ＲＯＭ、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、ＣＤ−ＲＯＭなどの記録媒体を読み書きできる装置（ドライブ）などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
【００８６】
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている（外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるＲＯＭに記憶させておくこととしてもよい）。また、これらのプログラムの処理によって得られるデータなどは、ＲＡＭや外部記憶装置などに適宜に記憶される。
【００８７】
ハードウェアエンティティでは、外部記憶装置（あるいはＲＯＭなど）に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にＣＰＵで解釈実行・処理される。その結果、ＣＰＵが所定の機能（上記、…部、…手段などと表した各構成要件）を実現する。
【００８８】
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
【００８９】
既述のように、上記実施形態において説明したハードウェアエンティティ（本発明の装置）における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
【００９０】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【００９１】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００９２】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００９３】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【００９４】
上述の本発明の実施形態の記載は、例証と記載の目的で提示されたものである。網羅的であるという意思はなく、開示された厳密な形式に発明を限定する意思もない。変形やバリエーションは上述の教示から可能である。実施形態は、本発明の原理の最も良い例証を提供するために、そして、この分野の当業者が、熟考された実際の使用に適するように本発明を色々な実施形態で、また、色々な変形を付加して利用できるようにするために、選ばれて表現されたものである。すべてのそのような変形やバリエーションは、公正に合法的に公平に与えられる幅にしたがって解釈された添付の請求項によって定められた本発明のスコープ内である。
【図１】
2019088279.tif 000005
【図２】
2019088279.tif 000006
【図３】
2019088279.tif 000007
【図４】
2019088279.tif 000008
【図５】
2019088279.tif 000009
【図６】
2019088279.tif 000010
【図７】
2019088279.tif 000011
【図８】
2019088279.tif 000012
【図９】
2019088279.tif 000013
【手続補正書】
【提出日】令和2年3月3日(2020.3.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
ビジネスでの使用を前提とするデータ共有システムとしてパソコンやスマートフォン等のマルチデバイスに対応可能なシステムが存在する。マルチデバイスに対応可能なシステムのうち、企業の機密情報漏えいを考慮し、通信端末にデータを残さないクラウドベース型のデータ共有システムが存在する。クラウドベース型のメッセージ送信システムの例として、非特許文献１のシステムが挙げられる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
k1∈Nとし、k1ビット長の鍵空間をKEY={0,1}k1とする。関数fk1:KEY×KEY→KEYに対して、以下の条件(a)、条件(b)を満たす関数hk1:KEY×KEY→KEYと関数gk1:KEY×KEY→KEYが存在するものとする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００４９
【補正方法】変更
【補正の内容】
【００４９】
ユーザAが通信端末３００1を用いてデータ共有システム１０にログインする（Ｓ１１０）と、データ共有サーバ１００の世代識別子生成部１１０は、世代識別子gIDを生成する（Ｓ１２０）。世代識別子gIDは、グループ識別子groupIDと当該世代形成時の時刻（例えば、ログイン時刻）gen-timeを連結した文字列groupID||gen-timeとする。なお、世代識別子はこれに限ったものでなく、例えば乱数としてもよい。データ共有サーバ１００のグループ情報管理部１０５は、生成した世代識別子gIDを記録部１９０に記録しておく。つまり、データ共有サーバ１００は、世代識別子もグループ識別子やグループを構成するユーザのユーザ識別子とともに管理する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６０
【補正方法】変更
【補正の内容】
【００６０】
通信端末３００3は、送受信部３８０を用いてＳ３１０で生成した暗号化データCmとＳ３２０で生成した演算結果鍵fk1(K, SK)の組である暗号文(Cm, fk1(K, SK))をデータ共有サーバ１００に送信する（Ｓ３３０）。このとき、送信先となる通信端末３００4の情報（例えば、通信端末３００4のIPアドレス）があわせて指定されデータ共有サーバ１００に送信される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７５
【補正方法】変更
【補正の内容】
【００７５】
データ共有サーバ１００が送受信部１８０を用いて再暗号化鍵fk1(SK, SK')を受信すると、データ共有サーバ１００の再暗号化部１３０は、記録部１９０に記録している暗号文(Cm, fk1(K, SK))の要素である演算結果鍵fk1(K, SK)と再暗号化鍵fk1(SK, SK')から関数gk1による演算結果鍵gk1(fk1(K, SK), fk1(SK, SK'))= fk1(K, SK')を生成、当該演算結果鍵fk1(K, SK')を用いて暗号文(Cm, fk1(K, SK'))を生成し、データ共有サーバ１００の暗号文管理部１１７は、暗号文(Cm, fk1(K, SK'))を記録部１９０に記録する（Ｓ４９５）。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００８０
【補正方法】変更
【補正の内容】
【００８０】
通信端末３００1のセッション鍵暗号化部３１０は、公開パラメータparams、世代識別子gID'、セッション鍵SK''を入力としてEnc(params, gID', SK'')により、セッション鍵SK''を暗号化した暗号化セッション鍵CSK''を生成する（Ｓ５５０）。
【国際調査報告】
2019088279.tif 000014
2019088279.tif 000015
2019088279.tif 000016
2019088279.tif 000017