(57)【要約】  メッセージの暗号化に用いるメッセージ鍵を再利用することにより、サーバ装置の負荷を軽減することができる通信端末を提供する。他の通信端末と共有され、サーバ装置と共有されないセッション鍵を記憶するセッション鍵記憶部と、メッセージ鍵を生成するメッセージ鍵生成部と、再利用されるメッセージ鍵をメッセージ鍵識別子と関連付けて記憶するメッセージ鍵記憶部と、メッセージとメッセージ鍵を用い、共通鍵暗号方式に基づいて、メッセージ暗号文を生成するメッセージ暗号化部と、セッション鍵とメッセージ鍵を用い、再暗号化可能な共通鍵暗号方式に基づいて、メッセージ鍵暗号文を生成するメッセージ鍵暗号化部と、自機が属するグループの識別子であるグループ識別子と、メッセージ鍵暗号文またはメッセージ鍵識別子と、メッセージ暗号文をサーバ装置に送信する暗号文送信部を含む。
2019093201.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置を介して他の通信端末に暗号文を送信する通信端末であって、
前記他の通信端末と共有され、前記サーバ装置と共有されないセッション鍵を記憶するセッション鍵記憶部と、
前記暗号文の送信が前記セッション鍵の生成後または更新後の最初の送信である場合にメッセージの暗号化に用いるメッセージ鍵を新規生成するものと判定し、それ以外の場合に前記メッセージ鍵を再利用するものと判定する判定部と、
前記判定の結果が新規生成である場合に前記メッセージ鍵を生成するメッセージ鍵生成部と、
前記判定の結果が再利用である場合に再利用されるメッセージ鍵をメッセージ鍵識別子と関連付けて記憶するメッセージ鍵記憶部と、
前記メッセージと生成または記憶された前記メッセージ鍵を用い、共通鍵暗号方式に基づいて、メッセージ暗号文を生成するメッセージ暗号化部と、
前記判定の結果が新規生成である場合に、前記セッション鍵と生成された前記メッセージ鍵を用い、再暗号化可能な共通鍵暗号方式に基づいて、メッセージ鍵暗号文を生成するメッセージ鍵暗号化部と、
前記判定の結果が新規生成である場合に、自機が属するグループの識別子であるグループ識別子と、前記メッセージ鍵暗号文と、前記メッセージ暗号文を、前記サーバ装置に送信し、前記判定の結果が再利用である場合に、前記グループ識別子と、前記メッセージ鍵識別子と、前記メッセージ暗号文を前記サーバ装置に送信する暗号文送信部と、
を含む通信端末。
【請求項２】
サーバ装置を介して他の通信端末が送信した暗号文を受信する通信端末であって、
前記他の通信端末と共有され、前記サーバ装置と共有されないセッション鍵を記憶するセッション鍵記憶部と、
前記セッション鍵と前記他の通信端末が生成したメッセージ鍵を用い、再暗号化可能な共通鍵暗号方式に基づいて生成されたメッセージ鍵暗号文と、前記他の通信端末が生成したメッセージと前記他の通信端末が生成または記憶する前記メッセージ鍵を用い、共通鍵暗号方式に基づいて生成されたメッセージ暗号文を、前記サーバ装置から受信する受信部と、
再暗号化可能な共通鍵暗号方式に基づいて前記セッション鍵と前記メッセージ鍵暗号文から前記メッセージ鍵を復号するメッセージ鍵復号部と、
共通鍵暗号方式に基づいて前記メッセージ鍵と前記メッセージ暗号文から前記メッセージを復号するメッセージ復号部と、
を含む通信端末。
【請求項３】
他の通信端末と共有され、サーバ装置と共有されないセッション鍵が更新されるたびに再暗号化鍵を前記サーバ装置に送信する通信端末であって、
前記セッション鍵を記憶するセッション鍵記憶部と、
更新前の前記セッション鍵と更新後の前記セッション鍵から前記再暗号化鍵を生成する再暗号化鍵生成部と、
前記再暗号化鍵を前記サーバ装置に送信する送信部と、
を含む通信端末。
【請求項４】
サーバ装置を介して他の通信端末に暗号文を送信し、前記サーバ装置を介して前記他の通信端末が送信した前記暗号文を受信し、前記他の通信端末と共有され、前記サーバ装置と共有されないセッション鍵が更新されるたびに再暗号化鍵を前記サーバ装置に送信する通信端末であって、
前記セッション鍵を記憶するセッション鍵記憶部と、
前記暗号文の送信が前記セッション鍵の生成後または更新後の最初の送信である場合にメッセージの暗号化に用いるメッセージ鍵を新規生成するものと判定し、それ以外の場合に前記メッセージ鍵を再利用するものと判定する判定部と、
前記判定の結果が新規生成である場合に前記メッセージ鍵を生成するメッセージ鍵生成部と、
前記判定の結果が再利用である場合に再利用されるメッセージ鍵をメッセージ鍵識別子と関連付けて記憶するメッセージ鍵記憶部と、
前記メッセージと生成または記憶された前記メッセージ鍵を用い、共通鍵暗号方式に基づいて、メッセージ暗号文を生成するメッセージ暗号化部と、
前記判定の結果が新規生成である場合に、前記セッション鍵と生成された前記メッセージ鍵を用い、再暗号化可能な共通鍵暗号方式に基づいて、メッセージ鍵暗号文を生成するメッセージ鍵暗号化部と、
前記判定の結果が新規生成である場合に、自機が属するグループの識別子であるグループ識別子と、前記メッセージ鍵暗号文と、前記メッセージ暗号文を、前記サーバ装置に送信し、前記判定の結果が再利用である場合に、前記グループ識別子と、前記メッセージ鍵識別子と、前記メッセージ暗号文を前記サーバ装置に送信する暗号文送信部と、
前記メッセージ鍵暗号文と前記メッセージ暗号文を前記サーバ装置から受信する受信部と、
再暗号化可能な共通鍵暗号方式に基づいて前記セッション鍵と前記メッセージ鍵暗号文から前記メッセージ鍵を復号するメッセージ鍵復号部と、
共通鍵暗号方式に基づいて前記メッセージ鍵と前記メッセージ暗号文から前記メッセージを復号するメッセージ復号部と、
更新前の前記セッション鍵と更新後の前記セッション鍵から前記再暗号化鍵を生成する再暗号化鍵生成部と、
前記再暗号化鍵を前記サーバ装置に送信する送信部と、
を含む通信端末。
【請求項５】
複数の通信端末間で共有され、自機と共有されないセッション鍵が更新されるたびに、対応するメッセージ鍵暗号文を再暗号化するサーバ装置であって、
前記通信端末から、前記通信端末が属するグループの識別子であるグループ識別子と、更新前の前記セッション鍵と更新後の前記セッション鍵から生成された再暗号化鍵を受信する受信部と、
再暗号化可能な共通鍵暗号方式に基づいて、前記再暗号化鍵と、前記グループ識別子に対応する前記メッセージ鍵暗号文から再暗号化後の前記メッセージ鍵暗号文を生成する再暗号化処理部と、
を含むサーバ装置。
【請求項６】
コンピュータを請求項１から４の何れかに記載の通信端末として機能させるプログラム。
【請求項７】
コンピュータを請求項５に記載のサーバ装置として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信端末、サーバ装置、プログラムに関する。
【背景技術】
【０００２】
ビジネスでの使用を前提とするメッセージ送信システムとしてパソコンやスマートフォン等のマルチデバイスに対応可能なシステムが存在する。マルチデバイスに対応可能なシステムのうち、企業の機密情報漏えいを考慮し、通信端末にデータを残さないクラウドベース型のメッセージ送信システムが存在する。クラウドベース型のメッセージ送信システムの例として、非特許文献１が挙げられる。【０００３】
このようなメッセージ送信システムにおいては、通信路を暗号化することで通信経路上の盗聴防止がなされていたり、既に述べたように、通信端末にデータを残さないことによって通信端末の紛失や不正な持ち出しに起因する情報漏えい防止がなされていたりする。このように、従来のメッセージ送信システムは「通信経路」と「通信端末」に対する脅威に対処している一方、サーバ装置に対する脅威への対処は不十分である。【０００４】
ここでいうサーバ装置に対する脅威として「サーバ装置に対する外部からの攻撃」や「サーバ管理者等による内部不正」等が挙げられる。これらの脅威に対し、メッセージを暗号化して保存する、という対策が考えられる。しかしながら、サーバ装置側でメッセージを復号可能である以上、前述の脅威に対してサーバ装置からのメッセージ漏えいの可能性が依然として存在する。送受信・保存を行うサーバ装置に送られてくるメッセージがサーバ装置に対して秘匿化されている（サーバ装置側で盗聴されない）ことが重要である。【０００５】
１つの方法として、サーバ装置に対してメッセージを秘匿し、通信端末でのみ復号可能なエンドツーエンドの暗号化通信を実現することが考えられる。この場合、通信端末間で用いる共通鍵をどのように共有するかが問題となる。この問題の解決策として例えば非特許文献２が開示されている。非特許文献２では中央に認証サーバをもつスター型のネットワークにおいて、認証サーバに対していかなる情報ももらさずに利用者間で鍵（以下、セッション鍵）を共有するプロトコルが提案されている。【０００６】
これによって、サーバ装置に対しメッセージを秘匿したまま通信端末間でやりとりすることができる。また、現在参加している通信端末でのみメッセージが読めるようセッション鍵の共有を行うため、ユーザの追加・削除等のイベントによりセッション鍵が更新される。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】ＮＴＴソフトウェア、“ビジネス向けグループチャットＴｏｐｉｃＲｏｏｍ”、［online］、ＮＴＴソフトウェア、[平成29年10月18日検索]、インターネット〈URL:https://www.ntt-tx.co.jp/products/topicroom/〉
【非特許文献２】小林鉄太郎、米山一樹、吉田麗生、川原祐人、冨士仁、山本具英「スケーラブルな動的多者鍵配布プロトコル」、SCIS2016-暗号と情報セキュリティシンポジウム-講演論文集、一般社団法人電子情報通信学会、平成28年1月、4E2-3
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記非特許文献２の技術によれば、サーバ装置に知られないよう、通信端末間でセッション鍵を共有することで、サーバ装置に対しメッセージを秘匿したままやりとりすることができる。しかし、上記のような通信システムにおいては、セッション鍵の更新に連動して、サーバ装置上で他の処理が発生する場合があり、サーバ装置の負荷が増大するおそれがある。特にグループチャットシステムのような、リアルタイム性が求められるシステムにおいて、サーバ装置上の処理に時間がかかるのは望ましくない。【０００９】
そこで本発明は、メッセージの暗号化に用いるメッセージ鍵を再利用することにより、サーバ装置の負荷を軽減することができる通信端末を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の通信端末は、サーバ装置を介して他の通信端末に暗号文を送信する通信端末であって、セッション鍵記憶部と、判定部と、メッセージ鍵生成部と、メッセージ鍵記憶部と、メッセージ暗号化部と、メッセージ鍵暗号化部と、暗号文送信部を含む。【００１１】
セッション鍵記憶部は、他の通信端末と共有され、サーバ装置と共有されないセッション鍵を記憶する。判定部は、暗号文の送信がセッション鍵の生成後または更新後の最初の送信である場合にメッセージの暗号化に用いるメッセージ鍵を新規生成するものと判定し、それ以外の場合にメッセージ鍵を再利用するものと判定する。メッセージ鍵生成部は、判定の結果が新規生成である場合にメッセージ鍵を生成する。メッセージ鍵記憶部は、判定の結果が再利用である場合に再利用されるメッセージ鍵をメッセージ鍵識別子と関連付けて記憶する。メッセージ暗号化部は、メッセージと生成または記憶されたメッセージ鍵を用い、共通鍵暗号方式に基づいて、メッセージ暗号文を生成する。メッセージ鍵暗号化部は、判定の結果が新規生成である場合に、セッション鍵と生成されたメッセージ鍵を用い、再暗号化可能な共通鍵暗号方式に基づいて、メッセージ鍵暗号文を生成する。暗号文送信部は、判定の結果が新規生成である場合に、自機が属するグループの識別子であるグループ識別子と、メッセージ鍵暗号文と、メッセージ暗号文を、サーバ装置に送信し、判定の結果が再利用である場合に、グループ識別子と、メッセージ鍵識別子と、メッセージ暗号文をサーバ装置に送信する。
【発明の効果】
【００１２】
本発明の通信端末によれば、メッセージの暗号化に用いるメッセージ鍵を再利用することにより、サーバ装置の負荷を軽減することができる。
【図面の簡単な説明】
【００１３】
【図１】実施例１の通信システムの構成を示すブロック図。
【図２】実施例１のサーバ装置の構成を示すブロック図。
【図３】実施例１のメッセージ送信動作を行う通信端末の構成を示すブロック図。
【図４】実施例１のメッセージ受信動作を行う通信端末の構成を示すブロック図。
【図５】実施例１の再暗号化鍵送信動作を行う通信端末の構成を示すブロック図。
【図６】実施例１のメッセージ配信動作（判定＝真）を示すシーケンス図。
【図７】実施例１のメッセージ配信動作（判定＝偽）を示すシーケンス図。
【図８】実施例１の再暗号化動作を示すシーケンス図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【実施例１】
【００１５】
＜概要＞
実施例１の通信システムでは、メッセージの暗号化に共通鍵暗号方式を利用する。メッセージの暗号化に利用する鍵（以下、メッセージ鍵）は、共通鍵ベースの再暗号化可能な暗号方式を利用してセッション鍵で暗号化される。このとき、メッセージ鍵を各メッセージの暗号化ごとに生成するのではなく、セッション鍵更新後、次にセッション鍵が更新されるまでの間、同じメッセージ鍵を使いまわす。サーバ装置ではメッセージの暗号文（以下、メッセージ暗号文）とメッセージ鍵の暗号文（以下、メッセージ鍵暗号文）をそれぞれ別のテーブル（記憶部）に記憶するが、その際、サーバ装置側でどのメッセージに対してどのメッセージ鍵が使いまわされているかを知ることができるようにするために鍵の識別子（鍵ＩＤ）を付加し、これをキーにして別のテーブル（記憶部）に記憶する。再暗号化処理が行われる際、サーバ装置はメッセージ鍵暗号文を記憶しているテーブル（記憶部）のみを更新する。メッセージ鍵暗号文１つに対して、メッセージ暗号文は鍵ＩＤによって複数関連付けられているため、再暗号化対象は少なくなり、再暗号化処理時のサーバ装置の負荷が削減される。なお、再暗号化処理中はメッセージの復号を一度も行わないため、サーバ装置はメッセージの内容を知らないまま再暗号化処理を行うことになる。また、ログインやグループ参加時等で複数メッセージを同時に取得する際、メッセージ鍵を先に復号して一時的に保存し、メッセージ暗号文に付随する鍵ＩＤに対応するメッセージ鍵でメッセージを復号することによって、復号処理を削減することができる。【００１６】
＜準備＞
集合Nを正の整数全体の集合とする。Kspace1,Kspace2を鍵空間とする。共通鍵ベースの再暗号化可能な暗号方式は次の4つのアルゴリズム(KEM.Enc,KEM.Dec,KEM.ReKeyGen,KEM.ReEnc)からなり、それぞれ、以下の入出力をもつアルゴリズムである。
・KEM.Enc(SKi1,K)→C1(i1)
Kspace1の元SKi1とKspace2の元Kを入力とし、暗号文C1(i1)を出力するアルゴリズム。
・KEM.Dec(SKj,C1(i))→K'
Kspace1の元SKjと暗号文C1(i)を入力とし、Kspace2の元K'を出力するアルゴリズム。
・KEM.ReKeyGen(SKi1,SKi2)→RKi1,i2
Kspace1の2つの元SKi1,SKi2を入力とし、再暗号化鍵RKi1,i2を出力するアルゴリズム。
・KEM.ReEnc(RKi1,i2,C1(i1))→C1(i2)
再暗号化鍵RKi1,i2と暗号文C1(i1)を入力とし、再暗号化暗号文C1(i2)を出力するアルゴリズム。【００１７】
さらに、上記のアルゴリズムは以下の２条件も満たすものとする。
１）Kspace1の任意の元SKとKspace2の任意の元Kに対し、KEM.Dec(SK,KEM.Enc(SK,K))=K
２）任意の整数n>1とKspace1の任意の鍵の列SK1,...,SKnと任意のi∈{1,...,n-1}に対してKEM.ReKeyGen(SKi,SKi+1)によって出力される再暗号化鍵の列RK1,2,...,RKn-1,nとKspace1の任意の元K，1≦i1<i2≦nを満たす任意のi1,i2に対して、
KEM.Dec(SKi2,KEM.ReEnc(RKi2-1,i2,...KEM.ReEnc(RKi1,i1+1,KEM.Enc(SKi1,K))))=K【００１８】
上記を満たす再暗号化方式の例として参考特許文献１の方式が挙げられる。
（参考非特許文献１：D. Boneh, K. Lewi, H. Montgomery, and A. Raghunathan. 2015.Key Homo-morphic PRFs and Their Applications. CryptologyePrint Archive, Report 2015/220. (2015).）【００１９】
これは以下のようにして構成される。まず、qを素数とし、Zqを整数環Zに対する、qを法とする剰余環とする。Gを位数qの巡回群とし、Kspace2=Gとする。ここでは、巡回群Gを乗法群で考えるが、加法群と考えてもよい。また、Kspace1=Zqとする。さらに、Randを乱数空間とし、H:Rand→GをRandを定義域とし、Gを値域とするハッシュ関数とする。Kspace1=ZqとRandとの直積を定義域とし、Gを値域とする関数F:Kspace×Rand→GをF(SK,r)=H(r)SKで定義する。
・KEM.Enc(SKi1,K)→C1(i1)
r∈Randを一様ランダムに抽出し、C1(i1)=(r,K+F(SK,r))を出力する。
・KEM.Dec(SKj,C1(i))→K'
C1(i)=(r,C)と分解し、K'=C-F(SK,r)を出力する。
・KEM.ReKeyGen(SKi1,SKi2)→RKi1,i2
RKi1,i2=SKi2-SKi1を出力する。
・KEM.ReEnc(RKi1,i2,C1(i1))→C1(i2)
C1(i1)=(r,C)と分解し、C1(i2)=(r,C+F(RKi1,i2,r))を出力する。【００２０】
なお、再暗号化可能な暗号方式(KEM.Enc,KEM.Dec,KEM.ReKeyGen,KEM.ReEnc)の例として参考非特許文献１を挙げたが、上記以外の方法によって再暗号化可能な暗号方式を実現してもよく、特に限定しない。【００２１】
共通鍵暗号方式は次の２つのアルゴリズム(Enc,Dec)からなり、それぞれ、以下の入出力をもつアルゴリズムである。
・Enc(K,m)→C2
Kspace2の元Kとメッセージmを入力とし、暗号文C2を出力するアルゴリズムである。
・Dec(K,C2)→m
Kspace2の元Kと暗号文C2を入力とし、メッセージmを出力するアルゴリズムである。【００２２】
さらに、上記のアルゴリズムは以下の条件を満たすものとする。
Kspace2の任意の元Kと任意のメッセージmに対して、Dec(K,Enc(K,m))=m【００２３】
上記を満たす暗号方式の例として、AESやCamellia等が挙げられるが、ここでは限定しない。【００２４】
図１に示すように本実施例の通信システム１は、サーバ装置１０、通信端末１１、通信端末１２、通信端末１３を含み、各装置はネットワーク９により通信可能に接続されている。通信端末１１、通信端末１２、通信端末１３はパソコンやスマートフォン等で実現できるが特に限定しない。【００２５】
以下の説明では、通信端末１１はメッセージの暗号化および暗号化されたメッセージなどの送信を担当する端末であるものとし、通信端末１２は暗号化されたメッセージなどの受信および暗号化されたメッセージなどの復号を担当する端末であるものとし、通信端末１３は、後述する再暗号化鍵の生成および送信を担当する端末であるものとする。ただし、上記は説明の便宜上の割り振りであるため、例えば通信端末１１、通信端末１２、通信端末１３の機能をすべて併せ持つ通信端末を実現してもよい。【００２６】
なお、本実施例の通信システム１では、チャットメッセージをやり取りするユーザのグループを形成することができる。各グループには識別子が与えられている。通信端末１１、通信端末１２、通信端末１３の利用者をそれぞれユーザＡ、ユーザＢ、ユーザＣとする。ユーザＡ、ユーザＢ、ユーザＣはグループ識別子groupIDを持つグループに属しているものとし、各通信端末はgroupIDを記憶しているものとする。【００２７】
また、セッション鍵について説明する。セッション鍵は、グループ毎に、そのグループに属するユーザが利用する通信端末間で共有される鍵のことをいう。その通信端末以外の、例えばサーバ装置１０に対してセッション鍵に関していかなる情報ももらさずに鍵を共有するプロトコルとして、参考非特許文献２が挙げられるが、セッション鍵共有方法については特に限定しない。
（参考非特許文献２：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).）【００２８】
なお、セッション鍵を安全に共有するために、グループにユーザが追加される、グループからユーザが離脱する、一定時間が経過する、ユーザがログイン/ログアウトする度にセッション鍵が生成／更新されるものとする。【００２９】
＜通信システム１を構成する各装置の詳細＞
図２に示すように、サーバ装置１０は、受信部１０１と、メッセージ暗号文記憶部１０２と、メッセージ鍵暗号文記憶部１０３と、グループユーザ記憶部１０４と、配信部１０５と、再暗号化処理部１０６を含む。また、図３に示すように、通信端末１１は、判定部１１１と、メッセージ鍵生成部１１２と、メッセージ暗号化部１１３と、メッセージ鍵暗号化部１１４と、送信部１１５と、メッセージ鍵記憶部１１６と、セッション鍵記憶部１１７を含む。また、図４に示すように、通信端末１２は、受信部１２１と、メッセージ鍵復号部１２２と、メッセージ復号部１２３と、セッション鍵記憶部１２４と、メッセージ鍵記憶部１２５を含む。また、図５に示すように、通信端末１３は、再暗号化鍵生成部１３１と、送信部１３２と、セッション鍵記憶部１３３を含む。【００３０】
＜判定＞
以下、図６、図７、図８を参照して、本実施例の通信システム１の各装置の動作について説明する。まず、ユーザＡは通信端末１１を用いて、グループ識別子groupIDによって特定されるグループに、メッセージmを暗号文の形式で送るものとする。なお、各通信端末（通信端末１１、通信端末１２、通信端末１３）は最新のセッション鍵SK1を共有しているものとし、これをそれぞれセッション鍵記憶部１１７、セッション鍵記憶部１２４、セッション鍵記憶部１３３に保持しているものとする。このセッション鍵SK1はサーバ装置１０とは共有されていないため、サーバ装置１０はセッション鍵SK1を知らない。【００３１】
通信端末１１の判定部１１１は、メッセージm（の暗号文）を送信する際、メッセージm（の暗号文）の送信が、セッション鍵SK1生成後または更新後の最初の送信であるか否かを判定する（Ｓ１１１）。判定部１１１は、メッセージm（の暗号文）の送信が、セッション鍵SK1生成後または更新後の最初の送信である場合には、メッセージ鍵を新規生成するものと判定し（判定＝真）、それ以外の場合には、メッセージ鍵を再利用するものと判定する（判定＝偽）。【００３２】
＜判定が真である場合の通信端末１１の動作＞
図６に示すように、通信端末１１のメッセージ鍵生成部１１２は、Kspace2の元K1（メッセージ鍵）を生成する（Ｓ１１２−１）。【００３３】
通信端末１１のメッセージ暗号化部１１３は、メッセージmと生成されたメッセージ鍵K1を用い、共通鍵暗号方式に基づいて、メッセージ暗号文C2,m←Enc(K1,m)を生成する（Ｓ１１３）。【００３４】
また、通信端末１１のメッセージ鍵暗号化部１１４は、セッション鍵SK1と生成されたメッセージ鍵K1を用い、再暗号化可能な共通鍵暗号方式に基づいて、メッセージ鍵暗号文C(1)1,K1←KEM.Enc(SK1,K1)を生成する（Ｓ１１４）。【００３５】
通信端末１１の送信部１１５は、自機が属するグループの識別子であるグループ識別子groupIDと、メッセージ鍵暗号文C(1)1,K1と、メッセージ暗号文C2,m、すなわち、(groupID,C(1)1,K1,C2,m)をサーバ装置１０に送信する（Ｓ１１５−１）。【００３６】
なお、(C(1)1,K1,C2,m)は、他のメッセージや他のメッセージ鍵の暗号文との区別をつけるため、便宜上K1,mを記しているだけであり、暗号文からメッセージ鍵K1、メッセージmは推測されない。【００３７】
通信端末１１は、サーバ装置１０にメッセージを送信後、メッセージ鍵K1をメッセージ鍵記憶部１１６に記憶するが、この時点でメッセージ鍵K1にはメッセージ鍵識別子KeyID1が割り当てられているものとする。メッセージ鍵識別子KeyID1からメッセージ鍵K1そのものが識別されないことが望ましい。識別子の生成方法として、SHA256ハッシュ関数等を用いて、メッセージ鍵K1をSHA256ハッシュ関数に入力した際の出力値を識別子とする方法があるが、特に限定しない。【００３８】
また、メッセージ鍵識別子KeyID1は、通信端末１１が生成してもよいし、またはサーバ装置１０がメッセージの受信時に、メッセージ鍵暗号文に対して生成し、メッセージを受信したことを通信端末１１に知らせる際にKeyID1も添付して送信してもよいが、ここでは限定しない。【００３９】
通信端末１１のメッセージ鍵記憶部１１６は、メッセージ鍵K1とそのメッセージ鍵識別子KeyID1を記憶する（Ｓ１１６）。記憶されたメッセージ鍵K1は、上記の判定が再利用（判定＝偽）である場合に再利用される。【００４０】
＜判定が偽である場合の通信端末１１の動作＞
この場合、図７に示すように、通信端末１１のメッセージ鍵生成部１１２は、メッセージ鍵記憶部１１６から、メッセージ鍵K1とそのメッセージ鍵識別子KeyID1を取得する（Ｓ１１２−２）。このメッセージ鍵K1は少なくとも1つ前のメッセージ送信の際にメッセージmの暗号化に使われたメッセージ鍵である。【００４１】
通信端末１１のメッセージ暗号化部１１３は、メッセージmとメッセージ鍵記憶部１１６に記憶されたメッセージ鍵K1を用い、共通鍵暗号方式に基づいて、メッセージ暗号文C2,m←Enc(K1,m)を生成する（Ｓ１１３）。【００４２】
通信端末１１の送信部１１５は、グループ識別子groupIDと、メッセージ鍵識別子KeyID1と、メッセージ暗号文C2,m、すなわち、(groupID,KeyID1,C2,m)をサーバ装置１０に送信する（Ｓ１１５−２）。【００４３】
以下、サーバ装置１０が通信端末１１からメッセージ暗号文C2,mを受信したときの動作について説明する。なお、メッセージ受信をトリガーにして他の通信端末への配信動作を記述しているが、ユーザの追加やログイン、その他通信端末からの要求に応じて、サーバ装置１０は記憶された暗号化メッセージを当該通信端末に配信することもある。【００４４】
＜判定が真である場合のサーバ装置１０の動作＞
すなわち、通信端末１１から送信されたメッセージの形式が(groupID,C(1)1,K1,C2,m)である場合に該当する。図６に示すように、サーバ装置１０の受信部１０１は、通信端末１１から、(groupID,C(1)1,K1,C2,m)を受信する（Ｓ１０１−１）。【００４５】
サーバ装置１０のメッセージ暗号文記憶部１０２は、メッセージ鍵識別子KeyID1と、メッセージ暗号文C2,m、すなわち(KeyID1,C2,m)を記憶する（Ｓ１０２）。【００４６】
また、サーバ装置１０のメッセージ鍵暗号文記憶部１０３は、メッセージ鍵識別子KeyID1と、メッセージ鍵暗号文C(1)1,K1、すなわち(KeyID1,C(1)1,K1)を記憶する（Ｓ１０３−１）。なお、サーバ装置１０は(groupID,C(1)1,K1,C2,m)の形式でデータを受信するたびに上記動作（Ｓ１０１−１、Ｓ１０２、Ｓ１０３−１）を実行するものとする。【００４７】
サーバ装置１０は、グループユーザ記憶部１０４に記憶されている、groupIDに対応するグループに所属するユーザ（ユーザＢ，Ｃを含む）情報を参照する（Ｓ１０４）。サーバ装置１０の配信部１０５は、groupIDに対応するグループに所属する各ユーザに向けてメッセージ鍵暗号文C(1)1,K1と、メッセージ暗号文C2,m、すなわち、（C(1)1,K1,C2,m）を送信（配信）する（Ｓ１０５）。なお、本実施例では、サーバ装置１０は、通信端末１２に（C(1)1,K1,C2,m）を送信（配信）する。【００４８】
＜判定が偽である場合のサーバ装置１０の動作＞
すなわち、通信端末１１から送信されたメッセージの形式が(groupID,KeyID1,C2,m)である場合に該当する。図７に示すように、サーバ装置１０の受信部１０１は、通信端末１１から、(groupID,KeyID1,C2,m)を受信する（Ｓ１０１−２）。【００４９】
サーバ装置１０のメッセージ暗号文記憶部１０２は、メッセージ鍵識別子KeyID1と、メッセージ暗号文C2,m、すなわち(KeyID1,C2,m)を記憶する（Ｓ１０２）。なお、サーバ装置１０は(groupID,KeyID1,C2,m)の形式でデータを受信するたびに上記動作（Ｓ１０１−２、Ｓ１０２）を実行するものとする。【００５０】
サーバ装置１０のメッセージ鍵暗号文記憶部１０３は、KeyID1に紐付くメッセージ鍵暗号文C(1)1,K1を取得する（Ｓ１０３−２）。【００５１】
サーバ装置１０は、グループユーザ記憶部１０４に記憶されている、groupIDに対応するグループに所属するユーザ（ユーザＢ，Ｃを含む）情報を参照する（Ｓ１０４）。サーバ装置１０の配信部１０５は、groupIDに対応するグループに所属する各ユーザに向けてメッセージ鍵暗号文C(1)1,K1と、メッセージ暗号文C2,m、すなわち、（C(1)1,K1,C2,m）を送信（配信）する（Ｓ１０５）。なお、本実施例では、サーバ装置１０は、通信端末１２に（C(1)1,K1,C2,m）を送信（配信）する。【００５２】
＜通信端末１２の動作＞
以下、図６（図７）を参照して通信端末１２の動作を説明する。前述したように、セッション鍵記憶部１２４は、他の通信端末と共有され、サーバ装置と共有されない最新のセッション鍵SK1を記憶している。【００５３】
通信端末１２の受信部１２１は、メッセージ鍵暗号文C(1)1,K1と、メッセージ暗号文C2,m、すなわち、（C(1)1,K1,C2,m）をサーバ装置１０から受信する（Ｓ１２１）。【００５４】
通信端末１２のメッセージ鍵復号部１２２は、セッション鍵記憶部１２４から取り出した最新のセッション鍵SK1とメッセージ鍵暗号文C(1)1,K1から、K1←KEM.Dec(SK1,C(1)1,K1)を計算して、メッセージ鍵K1を復号する（Ｓ１２２）。【００５５】
通信端末１２のメッセージ復号部１２３は、共通鍵暗号方式に基づいて、復号したメッセージ鍵K1と、メッセージ暗号文C2,mからm←Dec(K1,C2,m)を計算して、メッセージmを復号する（Ｓ１２３）。これによって、通信端末１２は通信端末１１から送信されたメッセージmを正しく表示できる。【００５６】
＜通信端末１３の動作＞
以下、図８を参照して通信端末１３の動作を説明する。例えば、groupIDに対応するグループにおいてセッション鍵がSK1からSK2に更新されたものとする。このとき、通信端末１１、通信端末１２、通信端末１３は最新のセッション鍵SK2を共有しており、最新のセッション鍵SK2を、それぞれセッション鍵記憶部１１７、セッション鍵記憶部１２４、セッション鍵記憶部１３３に記憶している（図８、新しいセッション鍵の共有）。また、通信端末１３のセッション鍵記憶部１３３は、更新前のセッション鍵SK1も保持しているものとする。【００５７】
なお、セッション鍵SK1,SK2はサーバ装置１０とは共有されていないため、サーバ装置１０は、セッション鍵SK1,SK2を知らない。【００５８】
また、サーバ装置１０は、メッセージ鍵暗号文記憶部１０３において、groupIDに付随する暗号文、すなわち、グループ識別子groupID向けに送信された暗号文、C(1)1,Ki1,...,C(1)1,Kinを保持しているものとする。なお、i1,...,inは本実施例を記述する上で用いた、メッセージ鍵を区別する添え字である。【００５９】
同図に示すように、通信端末１３の再暗号化鍵生成部１３１は、更新前のセッション鍵SK1と更新後のセッション鍵SK2から、RK1,2←KEM.ReKeyGen(SK1,SK2)を計算して、再暗号化鍵RK1,2を生成する（Ｓ１３１）。【００６０】
通信端末１３の送信部１３２は、グループ識別子groupIDと、再暗号化鍵RK1,2の組、すなわち(groupID,RK1,2)をサーバ装置１０に送信する（Ｓ１３２）。【００６１】
＜サーバ装置１０の再暗号化動作＞
引き続き、図８を参照してサーバ装置１０の再暗号化動作について説明する。サーバ装置１０の受信部１０１は、通信端末１３からグループ識別子groupIDと再暗号化鍵RK1,2の組(groupID,RK1,2)を受信する（Ｓ１０１−３）。【００６２】
サーバ装置１０の再暗号化処理部１０６と、メッセージ鍵暗号文記憶部１０３は、各j∈{i1,...,in}に対して、以下の処理を繰り返し実行する。
・メッセージ鍵暗号文記憶部１０３は、メッセージ鍵暗号文C(1)1,Kjを取り出す。再暗号化処理部１０６は、再暗号化可能な共通鍵暗号方式に基づいて、再暗号化鍵RK1,2と、グループ識別子groupIDに対応するメッセージ鍵暗号文C(1)1,Kjから、C(2)1,Kj←KEM.ReEnc(RK1,2,C(1)1,Kj)を実行して、再暗号化後のメッセージ鍵暗号文C(2)1,Kjを生成する（Ｓ１０６）。
・メッセージ鍵暗号文記憶部１０３は、メッセージ鍵暗号文C(1)1,Kjに対して再暗号化後のメッセージ鍵暗号文C(2)1,Kjを上書き記憶する（Ｓ１０３−３）。【００６３】
なお、この処理の後も、各メッセージ鍵識別子には変更はない。そのため、メッセージ暗号文記憶部１０２にあるメッセージ暗号文とメッセージ鍵暗号文記憶部１０３にあるメッセージ鍵暗号文の対応関係に変化はない。【００６４】
上記処理後、サーバ装置１０から配信されたgroupIDに付随する暗号文を受信した通信端末は、最新のセッション鍵SK2を保持していれば、メッセージ受信時と同じ動作によって、各メッセージを正しく復号することができる。【００６５】
＜メッセージの複数受信＞
ログイン時やグループ追加時等で、１０メッセージや２０メッセージといった、複数のメッセージを１度に受信することがある。その時の動作について説明する。ここでは、通信端末１２がログイン時に所定のグループに入室し、最新の５メッセージをダウンロードするものとして説明する。サーバ装置１０は、メッセージ暗号文記憶部１０２から、当該グループで送信された最新の５メッセージを抽出する。【００６６】
これらは、新しいものから順に、(KeyID1,C2,m1)、(KeyID1,C2,m2)、(KeyID2,C2,m3)、(KeyID1,C2,m4)、(KeyID3,C2,m5)であるとする。抽出したメッセージに含まれる、メッセージ鍵識別子はKeyID1、KeyID2、KeyID3の３種類であるから、サーバ装置１０は、メッセージ鍵暗号文記憶部１０３から、メッセージ鍵識別子とメッセージ鍵暗号文の組(KeyID1,C1,K1)、(KeyID2,C1,K2)、(KeyID3,C1,K3)を抽出する。【００６７】
サーバ装置１０は、通信端末１２に、メッセージ鍵識別子とメッセージ鍵暗号文の組(KeyID1,C1,K1)、(KeyID2,C1,K2)、(KeyID3,C1,K3)とメッセージ鍵識別子とメッセージ暗号文の組(KeyID1,C2,m1)、(KeyID1,C2,m2)、(KeyID2,C2,m3)、(KeyID1,C2,m4)、(KeyID3,C2,m5)を送信する。【００６８】
メッセージ鍵識別子とメッセージ鍵暗号文の組(KeyID1,C1,K1)、(KeyID2,C1,K2)、(KeyID3,C1,K3)とメッセージ鍵識別子とメッセージ暗号文の組(KeyID1,C2,m1)、(KeyID1,C2,m2)、(KeyID2,C2,m3)、(KeyID1,C2,m4)、(KeyID3,C2,m5)を受信した通信端末１２は、セッション鍵記憶部１２４から、最新のセッション鍵SK1を取り出す。【００６９】
通信端末１２のメッセージ鍵復号部１２２は、K1←KEM.Dec(SK1,C1,K1)、K2←KEM.Dec(SK1,C1,K2)、K3←KEM.Dec(SK1,C1,K3)をそれぞれ計算して、メッセージ鍵K1,K2,K3を復号し、メッセージ鍵記憶部１２５に、メッセージ鍵識別子とメッセージ鍵の組(KeyID1,K1)、(KeyID2,K2)、(KeyID3,K3)をそれぞれ一時的に保存しておく。【００７０】
次にメッセージ復号を行う。メッセージ暗号文は、メッセージ鍵識別子との組み合わせで取得しているので、対応するメッセージ鍵を抽出して復号処理を行う。すなわち、メッセージ復号部１２３でm1←Dec(K1,C2,m1)、m2←Dec(K1,C2,m2)、m3←Dec(K2,C2,m3)、m4←Dec(K1,C2,m4)、m5←Dec(K3,C2,m5)を計算して、各メッセージを復号する。これによって、各メッセージ毎にメッセージ鍵暗号文を復号する処理を軽減することができ、また、各メッセージを正しく表示できる。なお、全メッセージ取得後、メッセージ鍵記憶部１２５に保存されたメッセージ鍵識別子とメッセージ鍵の組はすべて削除しておくのが安全性上望ましい。【００７１】
＜補記＞
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置（例えば通信ケーブル）が接続可能な通信部、ＣＰＵ（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）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。【００７９】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2019093201.tif 000003
【図２】
2019093201.tif 000004
【図３】
2019093201.tif 000005
【図４】
2019093201.tif 000006
【図５】
2019093201.tif 000007
【図６】
2019093201.tif 000008
【図７】
2019093201.tif 000009
【図８】
2019093201.tif 000010
【手続補正書】
【提出日】令和2年4月27日(2020.4.27)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
上記を満たす再暗号化方式の例として参考非特許文献１の方式が挙げられる。
（参考非特許文献１：D. Boneh, K. Lewi, H. Montgomery, and A. Raghunathan. 2015.Key Homo-morphic PRFs and Their Applications. CryptologyePrint Archive, Report 2015/220. (2015).）
【国際調査報告】
2019093201.tif 000011
2019093201.tif 000012