(57)【要約】【課題】前回ログイン中に用いられたセッション鍵を再ログイン時に共有することができるデータ共有サーバ装置を提供する。【解決手段】ユーザＡの通信端末から、セッション鍵ＳＫの暗号化に用いる公開鍵ｐｋＡを受信し、公開鍵ｐｋＡと対になる秘密鍵ｓｋＡの暗号文である秘密鍵暗号文ＣｓｋＡを受信する受信部と、ユーザＡの通信端末に、他の通信端末の公開鍵を送信する送信部を含み、受信部は、ユーザＢの通信端末から、セッション鍵ＳＫの暗号文であるセッション鍵暗号文ＣＳＫ，Ｂと、再暗号化鍵を受信し、送信部は、ユーザＣの通信端末の秘密鍵暗号文ＣｓｋＣを送信し、ユーザＣの秘密鍵ｓｋＣでセッション鍵ＳＫを復号可能な再暗号化暗号文ＣＳＫ，Ｃを生成する再暗号化処理部を含み、送信部は、再暗号化暗号文ＣＳＫ，ＣをユーザＣの通信端末に送信する。【選択図】図２
2019102970.tif 000002
【特許請求の範囲】
【請求項１】
データ共有サーバ装置と、鍵生成サーバ装置と、少なくともユーザＡとユーザＢとユーザＣの各々に対応する通信端末を含む複数の通信端末と、を含む通信システムにおける、前記データ共有サーバ装置であって、
前記ユーザＡの前記通信端末から、前記通信端末間で共有され他の装置に知られていないセッション鍵ＳＫの暗号化に用いる公開鍵ｐｋＡを受信し、前記公開鍵ｐｋＡと対になる秘密鍵ｓｋＡの暗号文である秘密鍵暗号文ＣｓｋＡを受信する受信部と、
前記ユーザＡの前記通信端末に、他の前記通信端末の公開鍵を送信する送信部を含み、
前記受信部は、
前記ユーザＢの前記通信端末から、前記セッション鍵ＳＫの暗号文であるセッション鍵暗号文ＣＳＫ，Ｂと、前記ユーザＢの前記通信端末の前記公開鍵ｐｋＢと前記秘密鍵ｓｋＢ、および前記ユーザＣの前記通信端末の前記公開鍵ｐｋＣを用いて生成される再暗号化鍵ｒｋＢ→Ｃ、すなわち（ＣＳＫ，Ｂ，ｒｋＢ→Ｃ）を受信し、
前記送信部は、
前記ユーザＣの前記通信端末の要求に応じて、前記ユーザＣの前記通信端末の前記秘密鍵暗号文ＣｓｋＣを送信し、
前記ユーザＣの前記通信端末の要求に応じて、前記再暗号化鍵ｒｋＢ→Ｃ、前記セッション鍵暗号文ＣＳＫ，Ｂを用いて、前記ユーザＣの前記秘密鍵ｓｋＣで前記セッション鍵ＳＫを復号可能な再暗号化暗号文ＣＳＫ，Ｃを生成する再暗号化処理部を含み、
前記送信部は、
前記再暗号化暗号文ＣＳＫ，Ｃを前記ユーザＣの前記通信端末に送信する
データ共有サーバ装置。
【請求項２】
データ共有サーバ装置と、鍵生成サーバ装置と、少なくともユーザＡに対応する通信端末を含む複数の通信端末と、を含む通信システムにおける、前記鍵生成サーバ装置であって、
所定のセキュリティパラメータｋを用いて、公開パラメータｐａｒａｍｓと、マスター秘密鍵ｍｓｋを生成する暗号セットアップ処理部と、
前記公開パラメータｐａｒａｍｓを前記通信システムにログインした前記通信端末に送信する送信部と、
前記ユーザＡの前記通信端末の識別子ＩＤＡを受信する受信部と、
前記公開パラメータｐａｒａｍｓと、前記マスター秘密鍵ｍｓｋと、前記識別子ＩＤＡを用いて、前記ユーザＡの前記通信端末の部分秘密鍵ｐｓｋＡ、すなわち、前記公開パラメータｐａｒａｍｓおよび前記識別子ＩＤＡと共に用いることで、前記通信端末間で共有され他の装置に知られていないセッション鍵ＳＫの暗号化に用いる公開鍵ｐｋＡおよび対になる秘密鍵ｓｋＡを生成できる前記部分秘密鍵ｐｓｋＡ、を生成する部分秘密鍵生成部を含み、
前記送信部は、
前記ユーザＡの前記通信端末に、前記部分秘密鍵ｐｓｋＡを送信する
鍵生成サーバ装置。
【請求項３】
データ共有サーバ装置と、鍵生成サーバ装置と、少なくともユーザＡに対応する通信端末を含む複数の通信端末と、を含む通信システムにおける、前記ユーザＡの前記通信端末であって、
前記ユーザＡの前記通信端末の識別子ＩＤＡを前記鍵生成サーバ装置に送信する送信部と、
前記鍵生成サーバ装置から、公開パラメータｐａｒａｍｓと、部分秘密鍵ｐｓｋＡを受信する受信部と、
前記公開パラメータｐａｒａｍｓと、前記識別子ＩＤＡを用いて、秘密値ｓｖＡを生成する秘密値生成部と、
前記公開パラメータｐａｒａｍｓと、前記秘密値ｓｖＡを用いて、前記通信端末間で共有され他の装置に知られていないセッション鍵ＳＫの暗号化に用いる公開鍵ｐｋＡを生成する公開鍵生成部と、
前記公開パラメータｐａｒａｍｓと、前記部分秘密鍵ｐｓｋＡと、前記秘密値ｓｖＡを用いて、前記公開鍵ｐｋＡと対になる秘密鍵ｓｋＡを生成する秘密鍵生成部と、
前記秘密鍵ｓｋＡの暗号文である秘密鍵暗号文ＣｓｋＡを生成する秘密鍵暗号化処理部を含み、
前記送信部は、
前記公開鍵ｐｋＡと、前記秘密鍵暗号文ＣｓｋＡを前記データ共有サーバ装置に送信し、
前記受信部は、
他の前記通信端末の前記公開鍵を受信する
通信端末。
【請求項４】
データ共有サーバ装置と、鍵生成サーバ装置と、少なくともユーザＢに対応する通信端末を含む複数の通信端末と、を含む通信システムにおける、前記ユーザＢの前記通信端末であって、
前記鍵生成サーバ装置から送信された公開パラメータｐａｒａｍｓと、前記ユーザＢの前記通信端末の識別子ＩＤＢと、前記ユーザＢの前記通信端末の公開鍵ｐｋＢを用いて、前記通信端末間で共有され他の装置に知られていないセッション鍵ＳＫの暗号文であるセッション鍵暗号文ＣＳＫ，Ｂを生成するセッション鍵暗号化処理部と、
前記公開鍵ｐｋＢ、前記公開鍵ｐｋＢと対になる秘密鍵ｓｋＢ、および他の前記通信端末の前記公開鍵を用いて再暗号化鍵を生成する再暗号化鍵生成部と、
前記セッション鍵暗号文ＣＳＫ，Ｂと、前記再暗号化鍵を、前記データ共有サーバ装置に送信する送信部を含む
通信端末。
【請求項５】
データ共有サーバ装置と、鍵生成サーバ装置と、少なくともユーザＢとユーザＣの各々に対応する通信端末を含む複数の通信端末と、を含む通信システムにおける、前記ユーザＣの前記通信端末であって、
前記データ共有サーバ装置から、前記ユーザＣの前記通信端末の秘密鍵ｓｋＣの暗号文である秘密鍵暗号文ＣｓｋＣを受信する受信部と、
前記ユーザＣの認証情報を用いて、前記秘密鍵暗号文ＣｓｋＣから、前記秘密鍵ｓｋＣを復号する秘密鍵復号処理部を含み、
前記受信部は、
前記ユーザＢの前記通信端末の公開鍵ｐｋＢと前記秘密鍵ｓｋＢ、および前記ユーザＣの前記通信端末の前記公開鍵ｐｋＣを用いて生成される再暗号化鍵ｒｋＢ→Ｃ、前記秘密鍵ｓｋＢでセッション鍵ＳＫを復号可能な暗号文であるセッション鍵暗号文ＣＳＫ，Ｂ、すなわち（ｒｋＢ→Ｃ，ＣＳＫ，Ｂ）を用いて生成される再暗号化暗号文ＣＳＫ，Ｃであって、前記秘密鍵ｓｋＣで前記セッション鍵ＳＫを復号可能な前記再暗号化暗号文ＣＳＫ，Ｃを受信し、
前記秘密鍵ｓｋＣを用いて、前記再暗号化暗号文ＣＳＫ，Ｃから、前記セッション鍵ＳＫであって、前記通信端末間で共有され他の装置に知られていない前記セッション鍵ＳＫを復号するセッション鍵復号処理部を含む
通信端末。
【請求項６】
コンピュータを請求項１に記載のデータ共有サーバ装置として機能させるプログラム。
【請求項７】
コンピュータを請求項２に記載の鍵生成サーバ装置として機能させるプログラム。
【請求項８】
コンピュータを請求項３から５の何れかに記載の通信端末として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンドツーエンド暗号化を実現するデータ共有サーバ装置、鍵生成サーバ装置、通信端末、プログラムに関する。
【背景技術】
【０００２】
ビジネスでの使用を前提とするメッセージ送信システムとしてパソコンやスマートフォン等のマルチデバイスに対応可能なシステムが存在する。マルチデバイスに対応可能なシステムのうち、企業の機密情報漏えいを考慮し、通信端末にデータを残さないクラウドベース型のメッセージ送信システムが存在する。クラウドベース型のメッセージ送信システムの例として、非特許文献１が挙げられる。
【０００３】
このようなメッセージ送信システムにおいては、通信路を暗号化することで通信経路上の盗聴防止がなされていたり、既に述べたように、通信端末にデータを残さないことによって通信端末の紛失や不正な持ち出しに起因する情報漏えい防止がなされていたりする。このように、従来のメッセージ送信システムは「通信経路」と「通信端末」に対する脅威に対処している一方、サーバ装置に対する脅威への対処は不十分である。
【０００４】
ここでいうサーバ装置に対する脅威として「サーバ装置に対する外部からの攻撃」や「サーバ装置管理者等による内部不正」等が挙げられる。これらの脅威に対し、メッセージを暗号化して記憶する、という対策が考えられる。しかしながら、サーバ装置側でメッセージを復号可能である以上、前述の脅威に対してサーバ装置からのメッセージ漏えいの可能性が依然として存在する。送受信・記憶を行うサーバ装置に送られてくるメッセージがサーバ装置に対して秘匿化されている（サーバ装置側で盗聴されない）ことが重要である。
【０００５】
１つの方法として、サーバ装置に対してメッセージを秘匿し、通信端末でのみ復号可能なエンドツーエンドの暗号化通信を実現することが考えられる。この場合、通信端末間で用いる共通鍵をどのように共有するかが問題となる。この問題の解決策として例えば非特許文献２が開示されている。非特許文献２では中央に認証サーバ装置をもつスター型のネットワークにおいて、認証サーバ装置に対していかなる情報ももらさずに利用者間で鍵（以下、セッション鍵）を共有するプロトコルが提案されている。
【０００６】
これによって、サーバ装置に対しメッセージを秘匿したまま通信端末間でやりとりすることができる。また、現在参加している通信端末でのみメッセージが読めるようセッション鍵の共有を行うため、ユーザの追加・削除等のイベントによりセッション鍵が更新される。
【０００７】
また、再暗号化技術によって現在閲覧を認可されているユーザはそのグループで共有されているデータを、サーバ装置（以降、データ共有サーバ装置と呼ぶ）から秘匿したまま、すべて閲覧することが可能である。例えば、共有メンバ向けに再暗号化鍵を発行して暗号化データを共有したいユーザが復号できるよう、データ共有サーバ装置から秘匿したまま変換処理を行うサービスが存在する。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】ＮＴＴソフトウェア、“ビジネス向けグループチャットＴｏｐｉｃＲｏｏｍ”、［online］、ＮＴＴソフトウェア、[平成29年10月18日検索]、インターネット〈URL:https://www.ntt-tx.co.jp/products/topicroom/〉
【非特許文献２】小林鉄太郎、米山一樹、吉田麗生、川原祐人、冨士仁、山本具英「スケーラブルな動的多者鍵配布プロトコル」、SCIS2016-暗号と情報セキュリティシンポジウム-講演論文集、一般社団法人電子情報通信学会、平成28年1月、4E2-3
【発明の概要】
【発明が解決しようとする課題】
【０００９】
データ共有サーバ装置で再暗号化を行うためには、再暗号化鍵が必要である。再暗号化鍵に必要な情報は更新前後のセッション鍵である。一方、グループ内のユーザが全員ログアウトした場合、データを通信端末に残さないという安全上の仕様に従ってグループ内で共有されていたセッション鍵が削除され、グループ内の任意のユーザがログインするときに新たなセッション鍵が生成される。従って各通信端末は、それ以前に使われたセッション鍵を保持しておらず、再暗号化鍵を生成することができない。
【００１０】
そこで本発明では、前回ログイン中に用いられたセッション鍵を再ログイン時に共有することができるデータ共有サーバ装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、データ共有サーバ装置と、鍵生成サーバ装置と、少なくともユーザＡとユーザＢとユーザＣの各々に対応する通信端末を含む複数の通信端末と、を含む通信システムにおける、データ共有サーバ装置であって、受信部と、送信部と、再暗号化処理部を含む。
【００１２】
受信部は、ユーザＡの通信端末から、通信端末間で共有され他の装置に知られていないセッション鍵ＳＫの暗号化に用いる公開鍵ｐｋＡを受信し、公開鍵ｐｋＡと対になる秘密鍵ｓｋＡの暗号文である秘密鍵暗号文ＣｓｋＡを受信する。送信部は、ユーザＡの通信端末に、他の通信端末の公開鍵を送信する。受信部は、ユーザＢの通信端末から、セッション鍵ＳＫの暗号文であるセッション鍵暗号文ＣＳＫ，Ｂと、ユーザＢの通信端末の公開鍵ｐｋＢと秘密鍵ｓｋＢ、およびユーザＣの通信端末の公開鍵ｐｋＣを用いて生成される再暗号化鍵ｒｋＢ→Ｃ、すなわち（ＣＳＫ，Ｂ，ｒｋＢ→Ｃ）を受信する。送信部は、ユーザＣの通信端末の要求に応じて、ユーザＣの通信端末の秘密鍵暗号文ＣｓｋＣを送信する。再暗号化処理部は、ユーザＣの通信端末の要求に応じて、再暗号化鍵ｒｋＢ→Ｃ、セッション鍵暗号文ＣＳＫ，Ｂを用いて、ユーザＣの秘密鍵ｓｋＣでセッション鍵ＳＫを復号可能な再暗号化暗号文ＣＳＫ，Ｃを生成する。送信部は、再暗号化暗号文ＣＳＫ，ＣをユーザＣの通信端末に送信する。
【発明の効果】
【００１３】
本発明のデータ共有サーバ装置によれば、前回ログイン中に用いられたセッション鍵を再ログイン時に共有することができる。
【図面の簡単な説明】
【００１４】
【図１】実施例１の通信システムの構成を示すブロック図。
【図２】実施例１のデータ共有サーバ装置の構成を示すブロック図。
【図３】実施例１の鍵生成サーバ装置の構成を示すブロック図。
【図４】実施例１の公開鍵／秘密鍵生成を実行する通信端末の構成を示すブロック図。
【図５】実施例１の再暗号化鍵生成を実行する通信端末の構成を示すブロック図。
【図６】実施例１のセッション鍵取得を実行する通信端末の構成を示すブロック図。
【図７】実施例１の通信システムの公開鍵／秘密鍵生成動作を示すシーケンス図。
【図８】実施例１の通信システムの再暗号化鍵生成動作およびセッション鍵取得動作を示すシーケンス図。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例１】
【００１６】
＜概要＞
実施例１の通信システムでは、証明書不要代理人再暗号化技術と、ユーザの認証情報を利用した共通鍵暗号技術を利用する。各ユーザ（例えば、ユーザＡとする）の通信端末は、公開鍵と秘密鍵のペアを生成し、一度ログアウトした後のログイン後でも同じ鍵を保持できるよう、秘密鍵を通信システムにログインする際の認証情報を利用した共通鍵暗号で暗号化して、サーバ装置に記憶する。
【００１７】
セッション鍵が更新された際、当該グループの現在ログイン中のユーザのうち１ユーザ（ユーザＢとする）が自分の公開鍵で、証明書不要代理人再暗号化の暗号化機能を使ってセッション鍵を暗号化する。また、ユーザＢから同じグループに属するすべてのユーザ向けにそれぞれ再暗号化鍵を生成する。例えばユーザＡから同じグループに属するユーザＢに再暗号化鍵を生成した場合、これをＡ→Ｂへの再暗号化鍵と呼ぶ。セッション鍵の暗号文とすべての再暗号化鍵はサーバ装置に記憶される。
【００１８】
グループのユーザ全員がログアウト後、当該グループのユーザ（ユーザＣとする）がログインする場合、まず、自身の秘密鍵の暗号文をサーバ装置からダウンロードし、認証情報を用いて自身の秘密鍵を復号する。サーバ装置では、セッション鍵の暗号文を、Ａ→Ｃへの再暗号化鍵を用いて再暗号化する。ユーザＣは再暗号化された暗号文をダウンロードし、自身の秘密鍵を用いてセッション鍵を復号する。
【００１９】
これにより、グループのユーザが全員ログアウトした後にログインした場合でも、前に共有されたセッション鍵を共有することができ、その鍵と現在のセッション鍵を用いて再暗号化鍵を生成し、サーバ装置に記憶されている共有データをすべて現在のセッション鍵で復号できるように変換できる。また、この一連の手続きの中で、サーバ装置からは共有データの内容が漏れることがない。したがって、エンドツーエンド暗号化を達成するクラウドベースの通信システムが実現できる。また、証明書不要暗号化方式なので、ＰＫＩが不要となり、証明書管理や鍵とユーザの対応を管理する必要がなく、さらにユーザの認証情報を用いた秘密鍵は暗号化してサーバ装置に記憶するため、ログアウト後に通信端末にデータを残さないというポリシーも実現することができる。
【００２０】
＜準備＞
集合Nを正の整数全体の集合とする。一方向性証明書不要代理人再暗号方式（Unidirectional certi cateless proxy re-encryption scheme）は次の９つのアルゴリズム(CLSetup,CLDer,SetSV,SetPK,SetSK,CLEnc,SetRK,CLReEnc,CLDec)からなり、それぞれ、以下の入出力をもつアルゴリズムである。また、k∈Nをセキュリティパラメータとする。なお、この暗号方式を以後CLPREと呼ぶことにする。
【００２１】
≪CLSetup(1k)→(params,msk)≫
セキュリティパラメータkを入力とし、公開パラメータparamsとマスター秘密鍵mskを出力するアルゴリズムである。
【００２２】
≪CLDer(params,msk,IDA)→pskA≫
公開パラメータparamsとマスター秘密鍵msk、ユーザAの識別子IDAを入力とし、ユーザAの部分秘密鍵pskAを出力するアルゴリズムである。
【００２３】
≪SetSV(params,IDA)→svA≫
公開パラメータparams、ユーザAの識別子IDAを入力とし、ユーザAの秘密値svAを出力するアルゴリズムである。なお、このアルゴリズムは、同じ入力に対して常に同じ出力となるアルゴリズムでないことが望ましい。例えば、アルゴリズム内部で生成した乱数に依存して出力値がランダムに生成されるアルゴリズムであれば好適である。
【００２４】
≪SetSK(params,pskA,svA)→skA≫
公開パラメータparams、ユーザAの部分秘密鍵pskA、ユーザAの秘密値svAを入力とし、ユーザAの秘密鍵skAを出力するアルゴリズムである。
【００２５】
≪SetPK(params,svA)→pkA≫
公開パラメータparams、ユーザAの秘密値svAを入力とし、ユーザAの公開鍵pkAを出力するアルゴリズムである。
【００２６】
≪CLEnc(params,IDA,pkA,m)→CA≫
公開パラメータparams、ユーザAの識別子IDA、ユーザAの公開鍵pkA、平文mを入力とし、暗号文CAを出力するアルゴリズムである。
【００２７】
≪SetRK(params,IDA,pkA,skA,IDB,pkB)→rkA→B≫
公開パラメータparams、ユーザAの識別子IDA、ユーザAの公開鍵pkA、ユーザAの秘密鍵skA、ユーザBの識別子IDB、ユーザBの公開鍵pkBを入力とし、（一方向性）再暗号化鍵rkA→Bを出力するアルゴリズムである。
【００２８】
≪CLReEnc(params,rkA→B,CA)→CB≫
公開パラメータparams、再暗号化鍵rkA→B、暗号文CAを入力とし、再暗号化暗号文CBを出力するアルゴリズムである。
【００２９】
≪CLDec(params,skA,C)→m' or ⊥≫
公開パラメータparams、秘密鍵skA、暗号文Cを入力とし、平文m'または拒絶⊥を出力するアルゴリズムである。
【００３０】
さらに、上記のアルゴリズムは以下の条件も満たすものとする。任意のセキュリティパラメータk、CLSetup(1k)によって出力された任意の公開パラメータとマスター秘密鍵の組(params,msk)、任意のユーザAの任意の識別子IDAと任意のユーザBの任意の識別子IDBに対してそれぞれCLDer(params,msk,IDA),CLDer(params,msk,IDB)によって出力される任意の部分秘密鍵pskA,pskBと、それぞれSetSV(params,IDA),SetSV(params,IDB)によって出力される任意の秘密値svA,svB、それぞれSetSK(params,pskA,svA),SetSK(params,pskB,svB)によって出力される任意の秘密鍵skA,skB、それぞれSetPK(params,svA),SetPK(params,svB)によって出力される任意の公開鍵pkA,pkB、SetRK(params,IDA,pkA,skA,IDB,pkB)によって出力される任意の再暗号化鍵rkA→B、任意の平文mに対して、以下の２つの式が成り立つ。
CLDec(params,skA,CLEnc(params,IDA,pkA,m))=m
CLDec(params,skB,CLReEnc(params,rkA→B,CLEnc(params,IDA,pkA,m)))=m
【００３１】
上記を満たすCLPREは、マスター秘密鍵mskを得ていたとしても秘密鍵skが無ければ暗号文の中身が知られないものが望ましい。そのような例は、参考非特許文献１に開示されている。
（参考非特許文献１：C. Sur, C. D. Jung, Y. Park, and K. H. Rhee, "Chosen ciphertext secure certi cateless proxy re-encryption," CMS 2010, LNCS 6109, pp. 214-232, 2010.）
【００３２】
パスワードベース暗号方式（Password-based encryption scheme）は次の２つのアルゴリズム(PBE.Enc,PBE.Dec)からなり、それぞれ、以下の入出力をもつアルゴリズムである。
【００３３】
≪PBE.Enc(pwd,m)→C≫
パスワードpwdと平文mを入力とし、暗号文Cを出力するアルゴリズムである。
【００３４】
≪PBE.Dec(pwd,C)→m≫
パスワードpwdと暗号文Cを入力とし、平文mを出力するアルゴリズムである。
【００３５】
さらに、上記のアルゴリズムは以下の条件も満たすものとする。任意のパスワードpwdと任意の平文mに対して、PBE.Dec(pwd,PBE.Enc(pwd,m))=mが成り立つ。上記を満たすパスワードベース暗号方式の例については、参考非特許文献２に開示されている。
（参考非特許文献２：" PKCS #5: Password-Based Cryptography Specification Version 2.0," [平成29年11月23日検索]、インターネット〈URL:https://tools.ietf.org/html/rfc2898〉）
【００３６】
図１に示すように、本実施例の通信システム１は、データ共有サーバ装置１０、鍵生成サーバ装置１１、通信端末１２、通信端末１３、通信端末１４を含み、各装置はネットワーク９により通信可能に接続されている。通信端末１２、通信端末１３、通信端末１４はパソコンやスマートフォン等で実現できるが特に限定しない。
【００３７】
以下の説明では、通信端末１２は公開鍵／秘密鍵の生成を担当する端末であるものとし、通信端末１３はセッション鍵暗号文と再暗号化鍵の生成を担当する端末であるものとし、通信端末１４は、再ログイン後のセッション鍵の取得を担当する端末であるものとする。ただし、上記は説明の便宜上の割り振りであるため、例えば通信端末１２、通信端末１３、通信端末１４の機能をすべて併せ持つ通信端末を実現してもよい。
【００３８】
なお、本実施例の通信システム１では、データをやり取りするユーザのグループを形成することができる。以下の実施例では、グループに対し、少なくともユーザA、ユーザB、ユーザCが登録されているものとし、当該システム内での各ユーザの識別子をそれぞれIDA,IDB,IDCとし、ユーザAと通信端末１２、ユーザBと通信端末１３、ユーザCと通信端末１４が対応づいているものとする。各ユーザの識別子はシステム内で公開されているものとする。
【００３９】
データ共有サーバ装置１０と鍵生成サーバ装置１１は同一であってもよい。データ共有サーバ装置１０は、各通信端末から送信された暗号化メッセージの記憶と、他の通信端末への暗号化メッセージの配送を行う。
【００４０】
また、セッション鍵について説明する。セッション鍵は、グループ毎で、そのグループに属するユーザが利用する通信端末間で共有される鍵のことをいう。セッション鍵は、通信端末間で共有されるが、他の装置（特にデータ共有サーバ装置）に知られていないものとする。
【００４１】
通信端末以外の、例えばデータ共有サーバ装置１０に対してセッション鍵に関していかなる情報ももらさずに鍵を共有するプロトコルとして、参考非特許文献３が挙げられる。ただし、セッション鍵共有方法については特に限定しない。
（参考非特許文献３：K. Yoneyama, R. Yoshida, Y. Kawahara, T. Kobayashi, H. Fuji, and T. Yamamoto. 2016.Multi-Cast Key Distribution. Scalable, Dynamic and Provably Secure Construction. Cryptology ePrint Archive, Report 2016/833. (2016).）
【００４２】
なお、セッション鍵を安全に共有するために、グループにユーザが追加される、グループからユーザが離脱する（削除される）、一定時間が経過する、ユーザがログイン／ログアウトする度にログイン中のグループのユーザ間でセッション鍵が新たに生成されるものとする。
【００４３】
＜通信システム１を構成する各装置の詳細＞
図２に示すように、データ共有サーバ装置１０は、セッション鍵暗号文記憶部１０１と、秘密鍵暗号文記憶部１０２と、再暗号化鍵記憶部１０３と、再暗号化処理部１０４と、公開鍵記憶部１０５と、送信部１０６と、受信部１０７を含む。
【００４４】
図３に示すように、鍵生成サーバ装置１１は、暗号セットアップ処理部１１１と、鍵管理部１１２と、部分秘密鍵生成部１１３と、送信部１１４と、受信部１１５を含む。
【００４５】
図４に示すように、通信端末１２は、グループ情報管理部１２０と、鍵記憶部１２１と、公開パラメータ記憶部１２２と、部分秘密鍵要求部１２３と、秘密値生成部１２４と、秘密鍵生成部１２５と、公開鍵生成部１２６と、秘密鍵暗号化処理部１２７と、送信部１２８と、受信部１２９を含む。
【００４６】
図５に示すように、通信端末１３は、グループ情報管理部１３１と、鍵記憶部１３２と、公開パラメータ記憶部１３３と、セッション鍵暗号化処理部１３４と、再暗号化鍵生成部１３５と、送信部１３６と、受信部１３７を含む。
【００４７】
図６に示すように、通信端末１４は、グループ情報管理部１４１と、鍵記憶部１４２と、公開パラメータ記憶部１４３と、秘密鍵復号処理部１４４と、セッション鍵復号処理部１４５と、送信部１４６と、受信部１４７を含む。以下、図７、図８を参照して、本実施例の通信システム１の動作について説明する。
【００４８】
＜公開パラメータとマスター秘密鍵の生成（システムセットアップ）＞
通信システム１のセットアップ時、鍵生成サーバ装置１１の暗号セットアップ処理部１１１は、所定のセキュリティパラメータk（たとえば、鍵長）を入力とし、当該セキュリティパラメータkを用いて、CLSetup(1k)を実行して、公開パラメータparamsとマスター秘密鍵mskを生成し（Ｓ１１Ａ）、生成した公開パラメータとマスター秘密鍵の組(params,msk)を、鍵管理部１１２に記憶する。鍵生成サーバ装置１１の送信部１１４は、ユーザが通信システム１にログインするたびに、公開パラメータparamsを、ログインユーザに対応する通信端末に配布（送信）する（Ｓ１１Ｂ）。鍵生成サーバ装置１１の鍵管理部１１２は、マスター秘密鍵mskを秘密に保持しておく。
【００４９】
＜公開鍵／秘密鍵の生成（セットアップ）＞
通信端末１２の受信部１２９は、事前に鍵生成サーバ装置１１から公開パラメータparamsを受信し、通信端末１２の公開パラメータ記憶部１２２は公開パラメータparamsを保持しているものとする。通信端末１２の部分秘密鍵要求部１２３は、ユーザAの識別子IDAを含む部分秘密鍵要求を生成する。通信端末１２の送信部１２８は、鍵生成サーバ装置１１にユーザAの識別子IDAを含む部分秘密鍵要求を送信する（Ｓ１２Ａ）。
【００５０】
鍵生成サーバ装置１１の受信部１１５は、通信端末１２から識別子IDAを含む部分秘密鍵要求を受信する（Ｓ１１Ｃ）。鍵生成サーバ装置１１の部分秘密鍵生成部１１３は、鍵管理部１１２から取得した公開パラメータとマスター秘密鍵のペア(params,msk)を使って、CLDer(params,msk,IDA)を実行して、ユーザAの部分秘密鍵pskAを生成する（Ｓ１１Ｄ）。鍵生成サーバ装置１１の送信部１１４は、部分秘密鍵pskAを通信端末１２に送信する（Ｓ１１Ｅ）。
【００５１】
通信端末１２の受信部１２９は、鍵生成サーバ装置１１から部分秘密鍵pskAを受信する（Ｓ１２Ｂ）。通信端末１２の秘密値生成部１２４は、SetSV(params,IDA)を実行して、ユーザAの秘密値svAを生成する（Ｓ１２Ｃ）。通信端末１２の秘密鍵生成部１２５は、SetSK(params,pskA,svA)を実行して、ユーザAの秘密鍵skAを生成する（Ｓ１２Ｄ）。通信端末１２の公開鍵生成部１２６は、SetPK(params,svA)を実行して、ユーザAの公開鍵pkAを生成する（Ｓ１２Ｅ）。通信端末１２はこのようにして生成した鍵ペア(skA,pkA)を鍵記憶部１２１に記憶する。なお、通信システム１が、ユーザがログアウトする際に端末にある該システムに係わるデータを消去する場合、鍵記憶部１２１に記憶されたデータも消去されるのが望ましい。通信端末１２の送信部１２８は、公開鍵pkAをデータ共有サーバ装置１０に送信する（Ｓ１２Ｆ）。
【００５２】
データ共有サーバ装置１０の受信部１０７は、通信端末１２から公開鍵pkAを受信する（Ｓ１０Ａ）。データ共有サーバ装置１０は、公開鍵記憶部１０５に公開鍵pkAを記憶する。
【００５３】
通信端末１２の秘密鍵暗号化処理部１２７は、秘密鍵skAを認証情報を用いて、暗号化する。本実施例において、通信システム１にユーザがログインする際のユーザ認証はID/パスワード認証によって行われるものとする。このとき、ユーザAの認証情報はpwdAとする。なお、認証方法はID/パスワード以外でもよく、指紋認証であれば、認証情報として例えば指紋データを符号化したものが挙げられるが、認証方法・認証情報については特に限定しない。通信端末１２の秘密鍵暗号化処理部１２７は、PBE.Enc(pwdA,skA)を実行して、秘密鍵skAの暗号文である秘密鍵暗号文CskAを生成する（Ｓ１２Ｇ）。通信端末１２の送信部１２８は、秘密鍵暗号文CskAをデータ共有サーバ装置１０に送信する（Ｓ１２Ｈ）。
【００５４】
データ共有サーバ装置１０の受信部１０７は、通信端末１２から秘密鍵暗号文CskAを受信する（Ｓ１０Ｂ）。データ共有サーバ装置１０は、秘密鍵暗号文記憶部１０２に秘密鍵暗号文CskAを記憶する。
【００５５】
なお、ユーザA、B、Cが当該システムにおいて1つのグループ（グループGと呼ぶことにする）を形成しており、かつ、ユーザA、B、Cが上記の鍵セットアップ動作を終えていた場合、データ共有サーバ装置１０の送信部１０６は、各ユーザ（ex.ユーザA）の各通信端末（ex.通信端末１２）に、他の通信端末（ex.通信端末１３、１４）の公開鍵（ex.pkA）を送信する（Ｓ１０Ｂ）。各ユーザ（ex.ユーザA）の各通信端末（ex.通信端末１２）の受信部（ex.受信部１２９）は、データ共有サーバ装置１０から、他の通信端末（ex.通信端末１３、１４）の公開鍵（ex.pkB,pkC）を受信する（Ｓ１２Ｉ）。通信端末１２は、当該グループの識別子に紐付けて、グループ情報管理部１２０に各公開鍵（ex.pkB,pkC）を記憶する。
【００５６】
＜セッション鍵の暗号化と再暗号化鍵の生成＞
グループGで共有されるセッション鍵が更新されたとする。また、このとき、ユーザBは通信端末１３でログイン中であったものとし、通信端末１３は、更新したセッション鍵SKを保持しているとする。通信端末１３のセッション鍵暗号化処理部１３４は、鍵記憶部１３２から、自身の公開鍵pkBを取得し、公開パラメータ記憶部１３３から、公開パラメータparamsを取得し、CLEnc(params,IDB,pkB,SK)を実行し、セッション鍵暗号文CSK,Bを生成する（Ｓ１３Ａ）。通信端末１３の再暗号化鍵生成部１３５は、グループ情報管理部１３１から、ユーザA、ユーザCの公開鍵pkA,pkCを取得し、鍵記憶部１３２から、自身の秘密鍵skBを取得し、SetRK(params,IDB,pkB,skB,IDA,pkA)と、SetRK(params,IDB,pkB,skB,IDC,pkC)を動作させて、それぞれ再暗号化鍵rkB→A,rkB→Cを生成する（Ｓ１３Ｂ）。通信端末１３の送信部１３６は、セッション鍵暗号文CSK,Bと再暗号化鍵rkB→A,rkB→Cをデータ共有サーバ装置１０に送信する（Ｓ１３Ｃ）。
【００５７】
データ共有サーバ装置１０の受信部１０７は、通信端末１３からセッション鍵暗号文CSK,Bと再暗号化鍵rkB→A,rkB→Cを受信する（Ｓ１０Ｃ）。データ共有サーバ装置１０は、セッション鍵暗号文記憶部１０１にセッション鍵暗号文CSK,Bを記憶し、再暗号化鍵記憶部１０３に再暗号化鍵rkB→A,rkB→Cを記憶する。
【００５８】
＜グループのユーザ全員がログアウトした後の再ログイン＞
グループGに所属する全ユーザが当該システムからログアウトしており、その後、グループGに所属するユーザCが通信端末１４を介して通信システム１にログインしたものとする。このとき、グループGの全ユーザがログアウトする直前に共有されていたセッション鍵SKは、通信端末１４で保持されておらず、新しいセッション鍵が生成される。
【００５９】
データ共有サーバ装置１０に記憶されている、グループGで共有される暗号化データはグループGの全ユーザがログアウトする直前に共有されていたセッション鍵SKで暗号化されており、新しいセッション鍵で復号できるように再暗号化するためには、セッション鍵SKを取得しなければならない。セッション鍵SKは、前述した＜セッション鍵の暗号化と再暗号化鍵の生成＞処理によって、ユーザB（通信端末１３）によって暗号化され、データ共有サーバ装置１０のセッション鍵暗号文記憶部１０１に記憶されているものとする。このセッション鍵暗号文をCSK,Bとする。
【００６０】
まず、通信端末１４は、ユーザCの秘密鍵skCを取得する必要がある。通信端末１４の送信部１４６は、秘密鍵暗号文CskC要求を送信する（Ｓ１４Ａ）。
【００６１】
データ共有サーバ装置１０の受信部１０７は、通信端末１４から秘密鍵暗号文CskC要求を受信する（Ｓ１０Ｄ）。データ共有サーバ装置１０の送信部１０６は、秘密鍵暗号文記憶部１０２から、ユーザCの秘密鍵暗号文CskCを取得し、通信端末１４に秘密鍵暗号文CskCを送信する（Ｓ１０Ｅ）。
【００６２】
通信端末１４の受信部１４７は、データ共有サーバ装置１０からユーザCの秘密鍵暗号文CskCを受信する（Ｓ１４Ｂ）。通信端末１４の秘密鍵復号処理部１４４は、ユーザCが通信端末１４を介して当該システムにログインしたときに使用した認証情報、本実施例ではパスワードpwdCを用いて、PBE.Dec(pwdC,CskC)を実行し、ユーザCの秘密鍵skCを取得（復号）する（Ｓ１４Ｃ）。通信端末１４は、ユーザCの秘密鍵skCを鍵記憶部１４２に記憶する。次に、通信端末１４の送信部１４６は、再暗号化暗号文CSK,C要求を送信する（Ｓ１４Ｄ）。
【００６３】
データ共有サーバ装置１０の受信部１０７は、通信端末１４から再暗号化暗号文CSK,C要求を受信する（Ｓ１０Ｆ）。データ共有サーバ装置１０の再暗号化処理部１０４は、グループGに紐付いて記憶されているセッション鍵暗号文CSK,Bをセッション鍵暗号文記憶部１０１から取得し、再暗号化鍵記憶部１０３から、再暗号化鍵rkB→Cを取得し、CLReEnc(params,rkB→C,CSK,B)を実行して、再暗号化暗号文CSK,Cを生成する（Ｓ１０Ｇ）。データ共有サーバ装置１０の送信部１０７は、通信端末１４に再暗号化暗号文CSK,Cを送信する（Ｓ１０Ｈ）。
【００６４】
通信端末１４の受信部１４７は、データ共有サーバ装置１０から再暗号化暗号文CSK,Cを受信する（Ｓ１４Ｅ）。通信端末１４のセッション鍵復号処理部１４５は、公開パラメータ記憶部１４３から公開パラメータparamsを取得し、鍵記憶部１４２からユーザCの秘密鍵skCを取得し、CLDec(params,skC,CSK,C)を実行して、セッション鍵SKを取得（復号）する（Ｓ１４Ｆ）。
【００６５】
これにより、通信端末１４は、現在のセッション鍵とあわせて再暗号化鍵を生成でき、その再暗号化鍵をもって、データ共有サーバ装置１０に記憶されている暗号化共有データをデータ共有サーバ装置１０にて再暗号化させ、現在のセッション鍵で復号することができる。なお、データ共有サーバ装置１０と鍵生成サーバ装置１１は、上記の処理を実行している中では、マスター秘密鍵を得ることはあってもユーザの秘密鍵を得ることはないので、セッション鍵暗号文を復号することはできない。結果的に、データ共有サーバ装置１０に記憶されている、グループGで共有される暗号化データの中身をのぞき見ることはできない。したがって、データの共有、セッション鍵の共有すべてにおいてエンドツーエンド暗号化が達成される。
【００６６】
＜補記＞
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（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）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００７４】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2019102970.tif 000003
【図２】
2019102970.tif 000004
【図３】
2019102970.tif 000005
【図４】
2019102970.tif 000006
【図５】
2019102970.tif 000007
【図６】
2019102970.tif 000008
【図７】
2019102970.tif 000009
【図８】
2019102970.tif 000010