(57)【要約】【課題】再暗号化鍵と更新前の鍵が漏洩したとしても、暗号化データの中身が知られる可能性が限りなく低い、安全性の高いデータ共有技術を提供する。【解決手段】通信端末Ui_2は、公開鍵pkと秘密鍵skと公開鍵pk'から再暗号化鍵rkを生成し、再暗号化鍵rkをデータ共有サーバに送信する再暗号化鍵生成ステップと、データ共有サーバは、通信端末Ui_2から受信した再暗号化鍵rkを用いて暗号化データC1, …, Ckを再暗号化することにより、暗号化データC'1, …, C'kを生成する暗号化データ更新ステップとを含む。【選択図】図８
2019121999.tif 000002
【特許請求の範囲】
【請求項１】
データを共有するグループに属する2台以上の通信端末と前記グループに属する通信端末間で共有されるデータを暗号化した暗号化データを管理するデータ共有サーバとを含むデータ共有システムにおいて、前記データ共有サーバが、前記グループに属する何れかの通信端末Ui_0が共有対象となるデータmから生成した暗号化データCを管理するデータ共有方法であって、
前記通信端末Ui_0の記録部は、前記データ共有サーバが生成した公開パラメータparamsと前記グループに属する通信端末間で共有されたセッション鍵SKから生成された公開鍵pkと秘密鍵skの鍵ペアを記録しており、
前記通信端末Ui_0は、前記公開鍵pkを用いて前記データmを暗号化することにより前記暗号化データCを生成し、前記暗号化データCを前記データ共有サーバに送信する暗号化データ生成ステップと、
前記データ共有サーバは、前記通信端末Ui_0から受信した前記暗号化データCを前記グループに属する通信端末間で共有できるよう管理する暗号化データ管理ステップと
を含むデータ共有方法。
【請求項２】
データを共有するグループに属する2台以上の通信端末と前記グループに属する通信端末間で共有されるデータを暗号化した暗号化データを管理するデータ共有サーバとを含むデータ共有システムにおいて、前記グループに属する何れかの通信端末Ui_1が、前記データ共有サーバが管理する暗号化データCから当該暗号化データCを生成する前の元データであるデータmを生成するデータ共有方法であって、
前記通信端末Ui_1の記録部は、前記データ共有サーバが生成した公開パラメータparamsと前記グループに属する通信端末間で共有されたセッション鍵SKから生成された公開鍵pkと秘密鍵skの鍵ペアを記録しており、
前記通信端末Ui_1は、前記暗号化データCを特定するための暗号化データ取得要求を生成し、前記暗号化データ取得要求を前記データ共有サーバに送信する暗号化データ取得要求生成ステップと、
前記データ共有サーバは、前記通信端末Ui_1から受信した前記暗号化データ取得要求を用いて前記暗号化データCを取得し、前記暗号化データCを前記通信端末Ui_1に送信する暗号化データ取得ステップと、
前記通信端末Ui_1は、前記秘密鍵skを用いて、前記データ共有サーバから受信した前記暗号化データCを復号することにより、前記データmを生成する復号ステップと
を含むデータ共有方法。
【請求項３】
データを共有するグループに属する2台以上の通信端末と前記グループに属する通信端末間で共有されるデータを暗号化した暗号化データを管理するデータ共有サーバとを含むデータ共有システムにおいて、前記グループに属する通信端末間で共有されるセッション鍵がSKからSK'に更新された場合に、前記データ共有サーバが、前記グループに属する通信端末間で共有されるデータm1, …, mk (kは1以上の整数)を暗号化した暗号化データC1, …, Ckから暗号化データC'1, …, C'kを生成するデータ共有方法であって、
通信端末Ui_2を前記データ共有サーバが前記暗号化データC'1, …, C'kを生成する際に用いる再暗号化鍵rkを生成する前記グループに属する何れかの通信端末とし、
前記通信端末Ui_2の記録部は、前記データ共有サーバが生成した公開パラメータparamsと前記セッション鍵SKから生成された公開鍵pkと秘密鍵skの鍵ペアと、前記公開パラメータparamsと前記セッション鍵SK'から生成された公開鍵pk'と秘密鍵sk'の鍵ペアを記録しており、
前記通信端末Ui_2は、前記公開鍵pkと前記秘密鍵skと前記公開鍵pk'から前記再暗号化鍵rkを生成し、前記再暗号化鍵rkを前記データ共有サーバに送信する再暗号化鍵生成ステップと、
前記データ共有サーバは、前記通信端末Ui_2から受信した前記再暗号化鍵rkを用いて前記暗号化データC1, …, Ckを再暗号化することにより、前記暗号化データC'1, …, C'kを生成する暗号化データ更新ステップと
を含むデータ共有方法。
【請求項４】
請求項１ないし３のいずれか１項に記載のデータ共有方法を実行するデータ共有システム。
【請求項５】
請求項１ないし３のいずれか１項に記載のデータ共有方法を実行するデータ共有システムに含まれる通信端末。
【請求項６】
請求項１ないし３のいずれか１項に記載のデータ共有方法を実行するデータ共有システムに含まれるデータ共有サーバ。
【請求項７】
請求項１ないし３のいずれか１項に記載のデータ共有方法を実行するデータ共有システムに含まれる通信端末またはデータ共有サーバとしてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報セキュリティ技術の応用に関し、特にグループを形成する複数の通信端末がデータを共有するデータ共有技術に関する。
【背景技術】
【０００２】
スマートフォンやタブレットの普及に伴って、サーバにデータを預託して多人数でデータを共有するようなサービスが増えてきた。このようなデータ共有サービスの例として、例えば、オンラインストレージ、グループチャット、グループメールと呼ばれるサービスがある。
【０００３】
このデータ共有サービスを提供するシステム（データ共有システム）においては、通信路を暗号化することで通信経路上の盗聴防止がなされていたり、通信端末にデータを残さないことによって通信端末の紛失や不正な持ち出しに起因する情報漏えい防止がなされていたりする。このように、従来のデータ共有システムは「通信経路」と「通信端末」に対する脅威に対処している一方、共有対象となるデータを保存するサーバ（データ共有サーバ）に対する脅威への対処は必ずしも十分なものとは言えない状況であった。
【０００４】
ここでいうサーバに対する脅威として「サーバに対する外部からの攻撃」や「サーバ管理者などによる内部不正」等が挙げられる。これらの脅威に対して、共有対象となるデータを暗号化してサーバに保存するという対策が考えられる。しかしながら、サーバ側でデータを復号可能である場合、前述の脅威に対してサーバからのデータ漏えいの可能性が依然として存在する。このサーバからのデータ漏えいを防ぐためには、共有対象データがサーバに対して秘匿化されている（つまり、サーバ側で盗聴されない）ことが重要である。
【０００５】
サーバ側での盗聴に対応する１つの方法として、サーバに対してデータを秘匿し、通信端末でのみ復号可能なエンドツーエンドの暗号化通信を実現することが考えられる。この場合、通信端末がデータの暗号化に用いる鍵を通信端末間でどのように共有するかが問題となる。この問題の解決策が例えば非特許文献１に開示されている。非特許文献１では中央に認証サーバをもつスター型のネットワークにおいて、認証サーバに対していかなる情報ももらさずに通信端末間で鍵を共有するプロトコルが提案されている。これにより、サーバに対してデータを秘匿したまま通信端末間でデータをやりとりすることができるようになる。
【０００６】
また、データを共有しているグループにおいては、新たに通信端末が追加されたり、既存の通信端末がグループから離脱したりするなどのイベントが発生する。このような場合、現在グループに参加している通信端末ではデータを閲覧できるようにする必要があるために、追加・離脱等のイベントにより鍵を更新すると同時に、サーバに保存している暗号化データを再暗号化する必要がある。このような技術が非特許文献２に開示されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】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.
【非特許文献２】岡野裕樹，吉田麗生，小林鉄太郎，奥山浩伸，“セキュアビジネスチャットにおける代理人再暗号化付き検索可能暗号”，SCIS2017，Jan. 2017．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、この非特許文献２に記載の技術では、再暗号化鍵が更新前後の鍵から生成されているため、通信路の盗聴や通信端末の紛失等により再暗号化鍵と更新前の鍵が漏洩してしまうと、現在の鍵がわかってしまい、暗号化データの中身が容易に知られてしまうという問題がある。
【０００９】
そこで本発明では、再暗号化鍵と更新前の鍵が漏洩したとしても、暗号化データの中身が知られる可能性が限りなく低い、安全性の高いデータ共有技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様は、データを共有するグループに属する2台以上の通信端末と前記グループに属する通信端末間で共有されるデータを暗号化した暗号化データを管理するデータ共有サーバとを含むデータ共有システムにおいて、前記データ共有サーバが、前記グループに属する何れかの通信端末Ui_0が共有対象となるデータmから生成した暗号化データCを管理するデータ共有方法であって、前記通信端末Ui_0の記録部は、前記データ共有サーバが生成した公開パラメータparamsと前記グループに属する通信端末間で共有されたセッション鍵SKから生成された公開鍵pkと秘密鍵skの鍵ペアを記録しており、前記通信端末Ui_0は、前記公開鍵pkを用いて前記データmを暗号化することにより前記暗号化データCを生成し、前記暗号化データCを前記データ共有サーバに送信する暗号化データ生成ステップと、前記データ共有サーバは、前記通信端末Ui_0から受信した前記暗号化データCを前記グループに属する通信端末間で共有できるよう管理する暗号化データ管理ステップとを含む。
【００１１】
本発明の一態様は、データを共有するグループに属する2台以上の通信端末と前記グループに属する通信端末間で共有されるデータを暗号化した暗号化データを管理するデータ共有サーバとを含むデータ共有システムにおいて、前記グループに属する何れかの通信端末Ui_1が、前記データ共有サーバが管理する暗号化データCから当該暗号化データCを生成する前の元データであるデータmを生成するデータ共有方法であって、前記通信端末Ui_1の記録部は、前記データ共有サーバが生成した公開パラメータparamsと前記グループに属する通信端末間で共有されたセッション鍵SKから生成された公開鍵pkと秘密鍵skの鍵ペアを記録しており、前記通信端末Ui_1は、前記暗号化データCを特定するための暗号化データ取得要求を生成し、前記暗号化データ取得要求を前記データ共有サーバに送信する暗号化データ取得要求生成ステップと、前記データ共有サーバは、前記通信端末Ui_1から受信した前記暗号化データ取得要求を用いて前記暗号化データCを取得し、前記暗号化データCを前記通信端末Ui_1に送信する暗号化データ取得ステップと、前記通信端末Ui_1は、前記秘密鍵skを用いて、前記データ共有サーバから受信した前記暗号化データCを復号することにより、前記データmを生成する復号ステップとを含む。
【００１２】
本発明の一態様は、データを共有するグループに属する2台以上の通信端末と前記グループに属する通信端末間で共有されるデータを暗号化した暗号化データを管理するデータ共有サーバとを含むデータ共有システムにおいて、前記グループに属する通信端末間で共有されるセッション鍵がSKからSK'に更新された場合に、前記データ共有サーバが、前記グループに属する通信端末間で共有されるデータm1, …, mk (kは1以上の整数)を暗号化した暗号化データC1, …, Ckから暗号化データC'1, …, C'kを生成するデータ共有方法であって、通信端末Ui_2を前記データ共有サーバが前記暗号化データC'1, …, C'kを生成する際に用いる再暗号化鍵rkを生成する前記グループに属する何れかの通信端末とし、前記通信端末Ui_2の記録部は、前記データ共有サーバが生成した公開パラメータparamsと前記セッション鍵SKから生成された公開鍵pkと秘密鍵skの鍵ペアと、前記公開パラメータparamsと前記セッション鍵SK'から生成された公開鍵pk'と秘密鍵sk'の鍵ペアを記録しており、前記通信端末Ui_2は、前記公開鍵pkと前記秘密鍵skと前記公開鍵pk'から前記再暗号化鍵rkを生成し、前記再暗号化鍵rkを前記データ共有サーバに送信する再暗号化鍵生成ステップと、前記データ共有サーバは、前記通信端末Ui_2から受信した前記再暗号化鍵rkを用いて前記暗号化データC1, …, Ckを再暗号化することにより、前記暗号化データC'1, …, C'kを生成する暗号化データ更新ステップとを含む。
【発明の効果】
【００１３】
この発明によれば、再暗号化鍵と更新前の鍵が漏洩したとしても、暗号化データの中身が知られる可能性が限りなく低い、安全性の高いデータ共有を実現することができる。
【図面の簡単な説明】
【００１４】
【図１】データ共有システム１０の構成の一例を示す図。
【図２】データ共有サーバ１００の構成の一例を示すブロック図。
【図３】通信端末２００の構成の一例を示すブロック図。
【図４】セットアップ処理の一例を示す図。
【図５】暗号化鍵・復号鍵の生成処理の一例を示す図。
【図６】データの暗号化処理の一例を示す図。
【図７】暗号化データの復号処理の一例を示す図。
【図８】暗号化データの再暗号化処理の一例を示す図。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００１６】
^（キャレット）は上付き添字を表す。例えば、xy^zはyzがxに対する上付き添字であり、xy^zはyzがxに対する下付き添字であることを表す。また、_（アンダースコア）は下付き添字を表す。例えば、xy_zはyzがxに対する上付き添字であり、xy_zはyzがxに対する下付き添字であることを表す。
＜定義＞
Nを正の整数全体の集合とする。
【００１７】
一方向性複数ホップ代理人再暗号方式(Unidirectional multi-hop proxy re-encryption scheme) PREは、次の6つのアルゴリズムSetup, KeyGen, ReKeyGen, Enc, ReEnc, Decから構成される。つまり、PRE=(Setup, KeyGen, ReKeyGen, Enc, ReEnc, Dec)である。
【００１８】
Setup, KeyGen, ReKeyGen, Enc, ReEnc, Decは、それぞれ以下の入出力をもつアルゴリズムである。ここで、λ∈Nをセキュリティパラメータとする。
［Setup(1λ)］
セットアップアルゴリズムSetupは、セキュリティパラメータλを入力とし、公開パラメータparamsを出力するアルゴリズムである。つまり、Setup(1λ)→paramsである。
［KeyGen(params; r)］
鍵生成アルゴリズムKeyGenは、公開パラメータparamsと乱数rを入力とし、公開鍵pkと秘密鍵skの鍵ペアを出力するアルゴリズムである。つまり、KeyGen(params; r)→(pk, sk)である。なお、秘密鍵skは、公開パラメータparamsと乱数rのみから決まるものとする。
［ReKeyGen(pk, sk, pk')］
再暗号化鍵生成アルゴリズムReKeyGenは、１つの鍵ペア(pk, sk)と他の公開鍵pk'を入力とし、再暗号化鍵rkを出力するアルゴリズムである。つまり、ReKeyGen(pk, sk, pk')→rkである。
［Enc(pk, m)］
暗号化アルゴリズムEncは、公開鍵pkと平文mを入力とし、暗号文Cを出力するアルゴリズムである。つまり、Enc(pk, m)→Cである。
［ReEnc(rk, C)］
再暗号化アルゴリズムReEncは、再暗号化鍵rkと暗号文Cを入力とし、再暗号化暗号文C'を出力するアルゴリズムである。つまり、ReEnc(rk, C)→C'である。
［Dec(sk, C)］
復号アルゴリズムDecは、秘密鍵skと暗号文Cを入力とし、平文m'を出力するアルゴリズムである。つまり、Dec(sk, C)→m'である。なお、復号に失敗した場合、平文の代わりに⊥（エラー）を出力する。
【００１９】
上記暗号方式PREは以下の条件も満たすものとする。
（条件１）任意の公開パラメータparams←Setup(1λ)、任意の乱数r、任意の公開鍵と秘密鍵の鍵ペア(pk, sk)←KeyGen(params; r)、任意の平文mに対して、Dec(sk, Enc(pk, m))=mが成り立つ。
（条件２）任意の正の整数n、任意の公開パラメータparams←Setup(1λ)、任意の乱数列{ri}1≦i≦n、各i（1≦i≦n）に対してKeyGen(params; ri)により出力される任意の鍵ペア列{(pki, ski)}1≦i≦n、各i（1≦i≦n-1）に対してReKeyGen(pki, ski, pki+1)により出力される任意の再暗号化鍵列rk1→2, …,rkn-1→n、任意の平文mに対して、Dec(skn, ReEnc(rkn-1→n, …, ReEnc(rk1→2, Enc(pk1, m))…))=mが成り立つ。
【００２０】
上記暗号方式PREは、さらに以下の条件を満たすものとする。
（条件３）秘密鍵skiで復号することができる暗号文Cに対して、それ以前の秘密鍵skj（j≦i-1）が漏えいしいたり、再暗号化鍵rkj→j+1, …, rki-1→iが知られていたとしても、暗号文Cの中身が知られる確率は、セキュリティパラメータλに関して無視可能(negligible)である。
【００２１】
（条件１）、（条件２）、（条件３）を満たす暗号方式PREの例が、参考非特許文献１、参考非特許文献２に記載されている。
（参考非特許文献１：N. Chandran, M. Chase, F.-H. Liu, R. Nishimaki, and K. Xagawa, “Re-encryption, functional re-encryption, and multi-hop re-encryption: A framework for achieving obfuscation-based security and instantiations from lattices”, in Proc. PKC 2014, pp. 95-112, 2014.）
（参考非特許文献２：Y. Aono, X. Boyen, L. T. Phong, and L. Wang, “Key-private proxy re-encryption under LWE”, in Proc. INDOCRYPT 2013, pp.1-18, 2013.）
なお、（条件３）の無視可能性に関する定義については、参考非特許文献３に記載がある。
（参考非特許文献３：森山大輔，西巻陵，岡本龍明，“公開鍵暗号の数理(シリーズ応用数理 2)”，共立出版，2011年．）
以下、鍵生成アルゴリズムKeyGen(params; r)の処理について具体例を用いて説明する。参考非特許文献１における鍵生成アルゴリズムを例にとる。qを素数とし、Zqを標数qの有限体、ZqmをZq上のm次元ベクトル空間、ZqMをZq上のM次元ベクトル空間、ZqM×mを各成分がZqであるM×m行列の集合とする。また、τをlog2q以上の最小の整数とする。関数Gは乱数rを入力とし、τ×mビット列を出力する擬似乱数生成器とする。そのような擬似乱数生成器として、SHA256のようなハッシュ関数を用いて構成することができる。詳細については、例えば参考非特許文献４に記載されている。さらに、セットアップアルゴリズムSetup(1λ)は行列A∈ZqM×mを一様ランダムに生成し、params=Aとする。
（参考非特許文献４：結城浩，“暗号技術入門 第3版”，SBクリエイティブ，pp317-331，2015年．）
鍵生成アルゴリズムKeyGen(params; r)において、まず、G(r)を計算し、τ×mビット列を得る。これを整数値に変換した後、q進展開を行い、得られた各係数をベクトルの成分としてZqmの元sを得る。各成分が、ガウス正規分布にしたがってランダムに選ばれた実数値を整数値に丸めたものからなるM次元ベクトルeをとり、M次元ベクトルb:=As+eを計算する。なお、Asは行列の積である。sk=sとし、pk=(A, b)とする。この組(pk, sk)がKeyGen(params; r)の出力である。
【００２２】
なお、上記はKeyGen(params; r)の計算例であって、用いる暗号方式に応じて計算方法は変わる。
＜第一実施形態＞
［システム構成］
以下、図１を参照して、データ共有システム１０について説明する。図１は、データ共有システム１０の構成の一例を示す図である。データ共有システム１０は、データ共有サーバ１００、通信端末２００1、…、通信端末２００n (n≧2)を含む。
【００２３】
データ共有サーバ１００、通信端末２００1、…、通信端末２００nは、インターネットなどのネットワーク９００に接続している。データ共有サーバ１００は、通信端末２００1、…、通信端末２００nそれぞれと通信可能である。なお、通信端末２００1、…、通信端末２００n同士は通信できなくともよい。
【００２４】
データ共有システム１０は、n台の通信端末２００1、…、通信端末２００nがデータを共有するためのシステムである。なお、通信端末２００i(1≦i≦n)が他の通信端末２００j(1≦j≦n)とデータを共有する際には、共有対象となるデータを暗号化した暗号化データを生成した上で、データ共有サーバ１００を介して共有する。
【００２５】
データ共有サーバ１００は、通信端末２００iから送信された暗号化データを記録し、他の通信端末２００jへ暗号化データを送信する。
【００２６】
通信端末２００を用いてデータを共有する者をユーザという。通信端末はデータを共有するためのグループを形成する。各グループにはグループ識別子が与えられる。例えば、通信端末２００1、…、通信端末２００nはグループ識別子groupIDを有するグループに属しているものとする。なお、通信端末２００は、パソコンやスマートフォンなどユーザが利用できる通信機能を持つ端末であればどのようなものでもよい。
【００２７】
また、通信端末２００iは、他の通信端末２００jとセッション鍵を共有する。セッション鍵は、グループ単位で生成されるものであり、そのグループに属する通信端末２００間でのみ共有される鍵である。なお、データ共有サーバ１００に対してセッション鍵に関するいかなる情報も漏らさない形で、通信端末２００間でセッション鍵が共有されるものとする。そのような共有方法として、例えば、非特許文献１に記載のプロトコルが挙げられる。ただし、セッション鍵の共有方法は、非特許文献１に記載のプロトコルに限るものではなく、どのような方法を用いてセッション鍵を共有してもよい。
【００２８】
セッション鍵の安全性を確保するために、例えば、グループに新しい通信端末が追加される、グループから通信端末が離脱する（削除される）など所定のイベントが発生した場合や一定時間が経過した場合に新しいセッション鍵が生成、更新されるものする。
【００２９】
次に、図２〜図３を参照して、データ共有サーバ１００、通信端末２００の各装置について説明する。図２は、データ共有サーバ１００の構成の一例を示すブロック図である。データ共有サーバ１００は、セットアップ部１１０、暗号化データ管理部１２０、暗号化データ取得部１３０、暗号化データ更新部１４０、記録部１９０を含む。記録部１９０は、データ共有サーバ１００の処理に必要な情報を適宜記録する構成部である。例えば、暗号化データを記録する。また、セキュリティパラメータを記録しておく。
【００３０】
図３は、通信端末２００の構成の一例を示すブロック図である。通信端末２００は、鍵ペア生成部２１０、暗号化データ生成部２２０、暗号化データ取得要求生成部２３０、暗号化データ復号部２４０、再暗号化鍵生成部２５０、記録部２９０を含む。記録部２９０は、通信端末２００の処理に必要な情報を適宜記録する構成部である。例えば、セッション鍵を記録する。
【００３１】
以降の説明では、以下のように記号を定義する。Sはデータ共有サーバ１００を示し、Ui（i∈{1, …, n}）はn台の通信装置２００1, …, ２００nを示すものとする。
【００３２】
［セットアップ処理］
図４を参照して、セットアップ処理について説明する。
【００３３】
Ｓ１１０において、データ共有サーバSのセットアップ部１１０は、セキュリティパラメータλから公開パラメータparamsを生成し、記録部１９０に記録する。公開パラメータparamsの生成には、PREのSetupを用いる。具体的には、params←Setup(1λ)とする。また、データ共有サーバSは、通信端末Ui（i∈{1, …, n}）に対して公開パラメータparamsを公開する。例えば、通信装置Uiがアクセスできる領域に公開パラメータparamsをアップロードし、通信端末Uiが適宜ダウンロードするようにすればよい。公開パラメータparamsに関する処理は、上記に限られるものではなく、データ共有サーバS、通信端末Ui（i∈{1, …, n}）の各記録部に公開パラメータparamsが記録されるようになるのであれば、どのようなものであってもよい。
【００３４】
なお、公開パラメータの生成はデータを共有するグループごとに行われる処理である。
【００３５】
［暗号化鍵・復号鍵の生成処理］
図５を参照して、暗号化鍵・復号鍵の生成処理について説明する。ここで通信端末Uiにおいて生成される暗号化鍵は、共有対象となるデータを暗号化し、暗号化データを生成するために用いられるものである。また、復号鍵は、生成した暗号化データを復号し、元のデータを生成するために用いられるものである。
【００３６】
グループ識別子groupIDを有するグループに属する通信端末U1、…、通信端末Unの間で共有されるセッション鍵が新たに生成されたものとする。このセッション鍵をSKとする。通信端末Ui（i∈{1, …, n}）は、セッション鍵SKを取得し、記録部２９０に記録する。
【００３７】
Ｓ２１０において、通信端末Ui（i∈{1, …, n}）の鍵ペア生成部２１０は、記録部２９０に記録してある公開パラメータparamsとセッション鍵SKから、暗号化鍵である公開鍵pkと復号鍵である秘密鍵skの鍵ペア(pk, sk)を生成する。鍵ペア(pk, sk)の生成には、PREのKeyGenを用いる。具体的には、(pk, sk)←KeyGen(params; SK)とする。生成した鍵ペア(pk, sk)は記録部２９０に記録する。なお、セッション鍵SKが同一であったとしても、公開鍵pkは常に同じものになるとは限らない。一方、秘密鍵skは、PREの定義から、常に同じものが生成される。
【００３８】
［データの暗号化処理］
図６を参照して、データの暗号化処理について説明する。グループ識別子groupIDを有するグループに属する通信端末U1、…、通信端末Unの間でセッション鍵SKが共有され、記録部２９０に記録されているものとする。また、通信端末Ui_0（1≦i0≦n）において、公開パラメータparamsとセッション鍵SKから生成された公開鍵・秘密鍵の鍵ペア(pk, sk)が記録部２９０に記録されているものとする。
【００３９】
Ｓ２２０において、通信端末Ui_0（1≦i0≦n）の暗号化データ生成部２２０は、暗号化鍵である公開鍵pkを用いて、共有対象となるデータmから、暗号化データCを生成する。暗号化データCの生成には、PREのEncを用いる。具体的には、C←Enc(pk, m)とする。暗号化データ生成部２２０は、生成した暗号化データCをデータ共有サーバSに送信する。
【００４０】
Ｓ１２０において、データ共有サーバSの暗号化データ管理部１２０は、通信端末Ui_0が送信した暗号化データCを受信し、暗号化データCをグループに属する通信端末間で共有できるよう記録部１９０に記録、管理する。例えば、暗号化データを記録する際、当該暗号化データを共有することができるグループが特定できるよう、暗号化データを送信した通信端末Ui_0が属するグループのグループ識別子groupIDとともに暗号化データを記録すればよい。
【００４１】
［暗号化データの復号処理］
図７を参照して、暗号化データの復号処理について説明する。先ほどと同様、グループ識別子groupIDを有するグループに属する通信端末U1、…、通信端末Unの間でセッション鍵SKが共有され、記録部２９０に記録されているものとする。また、通信端末Ui_1（1≦i1≦n）において、公開パラメータparamsとセッション鍵SKから生成された公開鍵・秘密鍵の鍵ペア(pk, sk)が記録部２９０に記録されているものとする。
【００４２】
Ｓ２３０において、通信端末Ui_1（1≦i1≦n）の暗号化データ取得要求生成部２３０は、暗号化データCを特定するための暗号化データ取得要求を生成し、当該取得要求をデータ共有サーバSに送信する。取得対象とする暗号化データCの特定方法は、どのようなものでもよい。例えば、グループで共有されているデータの一覧から選択するのでよい。
【００４３】
Ｓ１３０において、データ共有サーバSの暗号化データ取得部１３０は、通信端末Ui_1が送信した暗号化データ取得要求を受信し、当該暗号化データ取得要求を用いて取得対象である暗号化データCを取得する。データ共有サーバSは、取得した暗号化データCを通信端末Ui_1に送信する。
【００４４】
Ｓ２４０において、通信端末Ui_1の暗号化データ復号部２３０は、データ共有サーバSが送信した暗号化データCを受信し、秘密鍵skを用いて、暗号化データCを復号し、暗号化データCを生成する前の元データであるデータmを生成する。暗号化データCの復号には、PREのDecを用いる。具体的には、m←Dec(sk, C)とする。
【００４５】
［暗号化データの再暗号化処理］
図８を参照して、暗号化データの再暗号化処理について説明する。グループ識別子groupIDを有するグループに属する通信端末U1、…、通信端末Unの間でセッション鍵SKが共有されていたが、更新され新たにセッション鍵SK'が共有されたものとする。その結果、セッション鍵SK及びセッション鍵SK'は、通信端末Ui（1≦i≦n）の記録部２９０に記録されているものとする。
【００４６】
以下、データ共有サーバSには、当該グループの共有対象データm1, …, mk (kは1以上の整数)が暗号化された暗号化データC1, …, Ckが記録部１９０に記録されているものとする。また、通信端末Ui_2（1≦i2≦n）の記録部２９０には、公開パラメータparamsとセッション鍵SKから生成した鍵ペア(pk, sk)、公開パラメータparamsとセッション鍵SK'から生成した鍵ペア(pk', sk')も記録されているものとする。
【００４７】
Ｓ２５０において、通信端末Ui_2の再暗号化鍵生成部２５０は、記録部２９０に記録している鍵ペア(pk, sk)と公開鍵pk'から、再暗号化鍵rkを生成する。再暗号化鍵rkの生成には、PREのReKeyGenを用いる。具体的には、rk←ReKeyGen(pk, sk, pk')とする。再暗号化鍵生成部２５０は、生成した再暗号化鍵rkをデータ共有サーバSに送信する。
【００４８】
Ｓ１４０において、データ共有サーバSの暗号化データ更新部１４０は、通信端末Ui_2が送信した再暗号化鍵rkを受信し、再暗号化鍵rkを用いて、記録部１９０に記録されている、通信端末Ui_2が属するグループで共有対象となっているデータの暗号化データC1, …, Ckを再暗号化し、暗号化データC'1, …, C'kを生成する。暗号化データC1, …, Ckの再暗号化には、PREのReEncを用いる。具体的には、C'i←ReEnc(rk, Ci) (i=1, …, k)とする。生成した暗号化データC'1, …, C'kを記録部１９０に記録する。なお、再暗号化前の暗号化データC1, …, Ckは削除するのが好ましい。
【００４９】
本実施形態によると、セッション鍵が更新されたタイミングでデータ共有サーバが暗号化データを更新後のセッション鍵から生成される秘密鍵で復号できるように再暗号化する過程において、更新後のセッション鍵や暗号化データの中身についてデータ共有サーバは知りえないようにすることができる。また、再暗号化鍵や過去のセッション鍵から現在のセッション鍵を知ることは困難であるため、現在共有されている暗号化データが不正に復号されることはなく、データ共有サーバに対してデータを秘匿したまま通信端末間で安全にデータを共有することができる。
【００５０】
＜補記＞
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（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）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００５８】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2019121999.tif 000003
【図２】
2019121999.tif 000004
【図３】
2019121999.tif 000005
【図４】
2019121999.tif 000006
【図５】
2019121999.tif 000007
【図６】
2019121999.tif 000008
【図７】
2019121999.tif 000009
【図８】
2019121999.tif 000010