(57)【要約】  機密性を向上する。通信端末は、他の通信端末と共有するセッション鍵を記憶する（Ｓ３）。通信端末は、メッセージに関連する文字列に対してセッション鍵を用いて生成したインデックスとメッセージ識別子とを組にしてサーバ装置へ送信する（Ｓ４）。サーバ装置は、インデックスとメッセージ識別子との組を記憶する（Ｓ５）。通信端末は、セッション鍵が更新された際に、更新前のセッション鍵と更新後のセッション鍵とを用いて再暗号化鍵を生成する（Ｓ８）。サーバ装置は、再暗号化鍵を用いて、記憶しているインデックスを、更新後のセッション鍵を用いて生成したインデックスへ更新する（Ｓ９）。通信端末は、セッション鍵を用いて検索キーワードを暗号化して検索クエリを生成する（Ｓ１０）。サーバ装置は、インデックスが検索クエリに合致するメッセージ識別子を抽出する（Ｓ１１）。
2018116826.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置と複数台の通信端末とを含み、ある通信端末から送信されたメッセージを少なくとも一台の他の通信端末が受信するメッセージ送信システムであって、
上記複数台の通信端末は、
他の通信端末と共有するセッション鍵を記憶するセッション鍵記憶部、
を含み、
少なくとも一台の上記通信端末は、
上記メッセージに関連する文字列に対して上記セッション鍵を用いて生成したインデックスと上記メッセージを一意に特定するメッセージ識別子とを組にして、上記サーバ装置へ送信するインデックス生成部、
をさらに含み、
少なくとも一台の上記通信端末は、
上記セッション鍵が更新された際に、更新前のセッション鍵と更新後のセッション鍵とを用いて再暗号化鍵を生成し、上記サーバ装置へ送信する再暗号化鍵生成部、
をさらに含み、
少なくとも一台の上記通信端末は、
上記セッション鍵記憶部に記憶された上記セッション鍵を用いて検索キーワードを暗号化して検索クエリを生成し、上記サーバ装置へ送信するクエリ生成部、
をさらに含み、
上記サーバ装置は、
上記通信端末から受信した上記インデックスと上記メッセージ識別子との組を記憶するインデックス記憶部と、
上記通信端末から受信した上記再暗号化鍵を用いて、上記インデックス記憶部に記憶されている上記インデックスを、上記メッセージに関連する文字列に対して上記更新後のセッション鍵を用いて生成したインデックスへ更新する再暗号化部と、
上記インデックス記憶部に記憶された上記インデックスが上記通信端末から受信した検索クエリに合致する上記メッセージ識別子を抽出し、上記通信端末へ送信する検索部と、
を含むメッセージ送信システム。
【請求項２】
請求項１に記載のメッセージ送信システムであって、
上記インデックス生成部は、上記メッセージ内または上記メッセージに含まれる各文節内に含まれる任意の文字列に対して、上記セッション鍵と標的衝突困難ハッシュ関数を用いて上記インデックスを生成するものである、
メッセージ送信システム。
【請求項３】
請求項１または２に記載のメッセージ送信システムであって、
Gを乗法群とし、TCRHFを任意長の文字列を入力として群Gの元を出力する標的衝突困難ハッシュ関数とし、SK1を上記更新前のセッション鍵とし、SK2を上記更新後のセッション鍵とし、RK1,2を上記再暗号化鍵とし、Kを上記メッセージに関連する文字列の数とし、kを1からKまでの各整数とし、skを上記メッセージに関連する文字列とし、Indexkを更新前のインデックスとし、Index'kを更新後のインデックスとし、wを上記検索キーワードとし、Queryを上記検索クエリとし、
上記インデックス生成部は、次式により上記インデックスを生成するものであり、
【数１３】
2018116826.tif 000015
上記再暗号化鍵生成部は、次式により上記再暗号化鍵を生成するものであり、
【数１４】
2018116826.tif 000016
上記再暗号化部は、次式により上記インデックスを更新するものであり、
【数１５】
2018116826.tif 000017
上記クエリ生成部は、次式により上記検索クエリを生成するものである、
【数１６】
2018116826.tif 000018
メッセージ送信システム。
【請求項４】
請求項１または２に記載のメッセージ送信システムであって、
Gを加法群とし、TCRHFを任意長の文字列を入力として群Gの元を出力する標的衝突困難ハッシュ関数とし、SK1を上記更新前のセッション鍵とし、SK2を上記更新後のセッション鍵とし、RK1,2を上記再暗号化鍵とし、Kを上記メッセージに関連する文字列の数とし、kを1からKまでの各整数とし、skを上記メッセージに関連する文字列とし、Indexkを更新前のインデックスとし、Index'kを更新後のインデックスとし、wを上記検索キーワードとし、Queryを上記検索クエリとし、
上記インデックス生成部は、次式により上記インデックスを生成するものであり、
【数１７】
2018116826.tif 000019
上記再暗号化鍵生成部は、次式により上記再暗号化鍵を生成するものであり、
【数１８】
2018116826.tif 000020
上記再暗号化部は、次式により上記インデックスを更新するものであり、
【数１９】
2018116826.tif 000021
上記クエリ生成部は、次式により上記検索クエリを生成するものである、
【数２０】
2018116826.tif 000022
メッセージ送信システム。
【請求項５】
請求項１から４のいずれかに記載のメッセージ送信システムにおいて用いられる上記通信端末。
【請求項６】
請求項１から４のいずれかに記載のメッセージ送信システムにおいて用いられる上記サーバ装置。
【請求項７】
サーバ装置と複数台の通信端末とを含むメッセージ送信システムにおいて、ある通信端末から送信されたメッセージを少なくとも一台の他の通信端末が受信するメッセージ送信方法であって、
上記通信端末が、他の通信端末と共有するセッション鍵をセッション鍵記憶部に記憶するセッション鍵記憶ステップと、
上記通信端末が、上記メッセージに関連する文字列に対して上記セッション鍵を用いて生成したインデックスと上記メッセージを一意に特定するメッセージ識別子とを組にして、上記サーバ装置へ送信するインデックス生成ステップと、
上記サーバ装置が、上記通信端末から受信した上記インデックスと上記メッセージ識別子との組をインデックス記憶部に記憶するインデックス記憶ステップと、
上記通信端末が、上記セッション鍵が更新された際に、更新前のセッション鍵と更新後のセッション鍵とを用いて再暗号化鍵を生成し、上記サーバ装置へ送信する再暗号化鍵生成ステップと、
上記サーバ装置が、上記通信端末から受信した上記再暗号化鍵を用いて、上記インデックス記憶部に記憶されている上記インデックスを、上記メッセージに関連する文字列に対して上記更新後のセッション鍵を用いて生成したインデックスへ更新する再暗号化ステップと、
上記通信端末が、上記セッション鍵記憶部に記憶された上記セッション鍵を用いて検索キーワードを暗号化して検索クエリを生成し、上記サーバ装置へ送信するクエリ生成ステップと、
上記サーバ装置が、上記インデックス記憶部に記憶された上記インデックスが上記通信端末から受信した検索クエリに合致する上記メッセージ識別子を抽出し、上記通信端末へ送信する検索ステップと、
を含むメッセージ送信方法。
【請求項８】
請求項５に記載の通信端末もしくは請求項６に記載のサーバ装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は暗号技術に関し、特に、暗号化したメッセージを送受信するメッセージ送信技術に関する。
【背景技術】
【０００２】
ビジネスでの使用を前提とするメッセージ送信システムの中には、パソコンやスマートフォン等のマルチデバイス対応を可能としつつ、企業の機密情報漏えいを考慮してクライアント端末にデータを残さないようにクラウドベース型の送信システムを用いるメッセージ送信システムが存在する。このようなクラウドベース型のメッセージ送信システムの一例として、非特許文献１に記載された製品が挙げられる。【０００３】
このようなメッセージ送信システムにおいては、通信路を暗号化することで通信経路上の盗聴防止がなされていたり、既に述べたように、端末にデータを残さないことによって端末の紛失や不正な持ち出しに起因する情報漏えい防止がなされていたりする。このように通信経路と端末に対する脅威には対処しているが、一方でサーバに対する脅威への対処は不十分である。ここでいうサーバに対する脅威としては、サーバに対する外部からの攻撃やサーバ管理者等による内部不正等が挙げられる。サーバに対する脅威に対しては、メッセージを暗号化等により秘匿して保存する等の対策が挙げられるが、サーバ側で復号可能である以上、サーバからのメッセージ漏えいの可能性は依然として存在する。そのため、メッセージの送受信や保存を行うサーバに送られてくるメッセージがサーバに対して秘匿されている（サーバ側で盗聴されない）ことが重要である。【０００４】
１つの方法は、サーバに対してメッセージを秘匿し、端末でのみ復号可能なエンド・ツー・エンドの暗号化通信を実現することであるが、端末間で用いる共通鍵をどのように共有するかが問題となる。この問題の解決策として、例えば非特許文献２では、中央に認証サーバをもつスター型のネットワークにおいて、認証サーバに対していかなる情報も漏らさずに利用者間で共通鍵（以下、セッション鍵とも言う）を共有するプロトコルが提案されている。これによって、サーバに対してメッセージを秘匿したまま端末間でメッセージをやりとりすることが可能となる。【０００５】
一方、ビジネスでの利用を踏まえると、過去のやりとりを効率よく見つける手段が必要となる。その手段としてはメッセージの検索機能が考えられる。しかしながら、利用者間でのセッション鍵共有技術を適用している場合、クラウド上に蓄積されているメッセージは秘匿されているため、秘匿したままメッセージを検索できるようにすることが必要となる。例えば非特許文献３では、検索鍵とキーワードをハッシュ関数に入力し、その出力をインデックスとしてサーバにアップロードする。検索の際には、同様の手順で生成した暗号化キーワードをサーバにアップロードし、サーバがハッシュ値の一致するインデックスを検索して結果を回答する。これによって、クラウド上に蓄積されたメッセージを秘匿したまま検索することが可能となる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】NTTソフトウェア、“ビジネスチャットTopicRoom（トピックルーム）”、［online］、［平成28年12月1日検索］、インターネット<URL: https://www.ntts.co.jp/products/topicroom/index.html>
【非特許文献２】小林鉄太郎、米山一樹、吉田麗生、川原祐人、冨士仁、山本具英、“スケーラブルな動的多者鍵配布プロトコル”、SCIS2016、4E2-3、2016年
【非特許文献３】W.Ogata, K.Koiwa, A.Kanaoka, S.Matsuo, "Toward Practical Searchable Symmetric Encryption", Proceedings of the Advances in Information and Computer Security, Lecture Notes in Computer Science, Volume 8231, pp. 151-167, 2013.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記で述べたように、端末間でセッション鍵を共有することで、サーバに対してメッセージを秘匿したままやり取りすることができ、かつ、メッセージを秘匿したまま検索することができるようになる。しかしながら、非特許文献２のように、現在の参加メンバのみでセッション鍵を共有したい場合、ユーザの追加や削除などのイベントが発生した際にはセッション鍵を更新する必要がある。このとき、検索鍵が更新されないままだと、削除されたユーザはセッション鍵を得られないためメッセージは読めないが、他のユーザがサーバに問い合わせた検索クエリを不当に取得する等により、検索したキーワードの内容やサーバが回答結果として送信したメッセージの内容が推測できてしまう、という機密性に関わる課題を有している。【０００８】
この発明の目的は、上記のような点に鑑みて、セッション鍵を更新した際に検索インデックスを更新後のセッション鍵に対応するように再暗号化し、機密性を向上することができるメッセージ送信技術を提供することである。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、この発明のメッセージ送信システムは、サーバ装置と複数台の通信端末とを含み、ある通信端末から送信されたメッセージを少なくとも一台の他の通信端末が受信するメッセージ送信システムであって、複数台の通信端末は、他の通信端末と共有するセッション鍵を記憶するセッション鍵記憶部を含み、少なくとも一台の通信端末は、メッセージに関連する文字列に対してセッション鍵を用いて生成したインデックスとメッセージを一意に特定するメッセージ識別子とを組にして、サーバ装置へ送信するインデックス生成部をさらに含み、少なくとも一台の通信端末は、セッション鍵が更新された際に、更新前のセッション鍵と更新後のセッション鍵とを用いて再暗号化鍵を生成し、サーバ装置へ送信する再暗号化鍵生成部をさらに含み、少なくとも一台の通信端末は、セッション鍵記憶部に記憶されたセッション鍵を用いて検索キーワードを暗号化して検索クエリを生成し、サーバ装置へ送信するクエリ生成部と、をさらに含み、サーバ装置は、通信端末から受信したインデックスとメッセージ識別子との組を記憶するインデックス記憶部と、通信端末から受信した再暗号化鍵を用いて、インデックス記憶部に記憶されているインデックスを、メッセージに関連する文字列に対して更新後のセッション鍵を用いて生成したインデックスへ更新する再暗号化部と、インデックス記憶部に記憶されたインデックスが通信端末から受信した検索クエリに合致するメッセージ識別子を抽出し、通信端末へ送信する検索部と、を含む。
【発明の効果】
【００１０】
この発明のメッセージ送信技術によれば、セッション鍵を更新した際に検索インデックスを更新後のセッション鍵に対応するように更新するため、更新後のセッション鍵を知らない通信端末が検索クエリを取得したとしてもメッセージの内容を推測することができない。したがって、機密性が向上する。
【図面の簡単な説明】
【００１１】
【図１】図１は、メッセージ送信システムの機能構成を例示する図である。
【図２】図２は、サーバ装置の機能構成を例示する図である。
【図３】図３は、通信端末の機能構成を例示する図である。
【図４】図４は、メッセージ送信方法の処理手続きを例示する図である。
【図５】図５は、インデックスの再暗号化を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００１３】
この発明のメッセージ送信技術では、以下のようにして上述の課題を解決する。メッセージ送信の際、サーバとの通信を行う通信端末側でセッション鍵を用いてメッセージ内のキーワードを秘匿化する。通信端末は、セッション鍵を更新した際に、キーワードを再暗号化するための再暗号化鍵を生成し、サーバに送信する。サーバは、再暗号化鍵を用いて更新前のセッション鍵で暗号化されたインデックスを再暗号化し、キーワードを秘匿したまま更新後のセッション鍵に対応するインデックスに変換する。以上により、メッセージ内のキーワードを秘匿したままサーバに送信することができ、さらにセッション鍵の更新に伴ってインデックスを再暗号化することで、参加ユーザ以外からの検索内容の推測を防ぐことができる。
【００１４】
以降の説明で用いる記号の定義を説明する。Gを巡回群とする。加法群としては、素数pを法とする整数環の剰余環としてG=Zpがあり、乗法群としては、素数pを法とする整数環の剰余環の単元群G=Zp×がある。以下ではGが乗法群であるとして説明する。TCRHFを任意長の文字列を入力として群Gの元を出力する標的衝突困難ハッシュ関数とする。ここで、標的衝突困難ハッシュ関数族の定義を述べておく。H={Hi: Di→Ri}iを各iに対し、定義域Diと値域Riをもつハッシュ関数族とする。任意の多項式時間攻撃者Aと任意の添え字iに対し、定義域Diからランダムに抽出されたx∈Diが与えられた際に、Hi(x)=Hi(x')となるようなx'∈Di(x'≠x)を見つけるのが困難であるとき、Hを標的衝突困難ハッシュ関数族と呼ぶ。TCRHFの例として、pを256ビット素数とし、SHA256を用いてTCRHF(x)=SHA256(x) mod pが挙げられる。ただし、この発明のTCRHFはこれに限定されない。
【００１５】
実施形態のメッセージ送信システムは、図１に例示するように、サーバ装置１およびN（≧2）台の通信端末２1, …, ２Nを含む。この実施形態では、サーバ装置１および通信端末２1, …, ２Nはそれぞれ通信網３へ接続される。通信網３は、接続された各装置間で相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網である。通信網３は安全が確保されたクローズドな通信路であることが望ましいが、各装置間の通信を個別に暗号化する等の安全性を確保する手段を用いるのであれば、例えばインターネットなどのオープンなネットワークを用いることも可能である。
【００１６】
サーバ装置１は、図２に例示するように、制御部１０１、記憶部１０２、送信部１０３、受信部１０４、インデックス記憶部１１、グループID生成部１２、再暗号化部１３、および検索部１４を含む。通信端末２1, …, ２Nは、図３に例示するように、制御部２０１、記憶部２０２、送信部２０３、受信部２０４、グループID記憶部２１、セッション鍵記憶部２２、インデックス生成部２３、メッセージ送信部２４、再暗号化鍵生成部２５、およびクエリ生成部２６を含む。制御部１０１および２０１は、例えば、中央演算処理装置（CPU: Central Processing Unit）である。記憶部１０２および２０２は、例えば、主記憶装置（RAM: Random Access Memory）である。送信部１０３および２０３、受信部１０４および２０４は、例えば、有線または無線のネットワークインターフェースカード（NIC: Network Interface Card）である。このサーバ装置１と通信端末２1, …, ２Nとが相互に通信しながら図４に示す各ステップの処理を行うことにより実施形態のメッセージ送信方法が実現される。
【００１７】
サーバ装置１は、例えば、中央演算処理装置（CPU: Central Processing Unit）、主記憶装置（RAM: Random Access Memory）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。各装置は、例えば、中央演算処理装置の制御のもとで各処理を実行する。各装置に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。各装置が備える各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。各装置が備える各記憶部は、例えば、RAM（Random Access Memory）などの主記憶装置、ハードディスクや光ディスクもしくはフラッシュメモリ（Flash Memory）のような半導体メモリ素子により構成される補助記憶装置、またはリレーショナルデータベースやキーバリューストアなどのミドルウェアにより構成することができる。
【００１８】
通信端末２1, …, ２Nは、具体的には、携帯電話、スマートフォン、タブレット端末、デスクトップ型あるいはラップトップ型のパーソナルコンピュータなどの情報処理装置である。各端末は、これらの具体例に限定されず、利用者へ視覚や聴覚等を通じて情報を提示し、画面操作や音声入力等を通じて利用者からの入力を受け付けることができる情報処理装置であれば、どのようなものであってもよい。
【００１９】
図４を参照して、実施形態のメッセージ送信方法の処理手続きを説明する。以降の説明では、通信端末２n（n∈{1, …, N}）は通信端末２1, …, ２Nのいずれか１台であるものとする。このメッセージ送信システムでは、複数の通信端末からなるトークグループ（以下、単にグループとも言う）を構成することができ、そのグループに含まれる通信端末間でメッセージのやり取りができるものとする。
【００２０】
ステップＳ１において、サーバ装置１のグループID生成部１２は、複数の通信端末２を含むグループを一意に識別するグループIDを生成する。生成したグループIDは、そのグループに含まれる通信端末２それぞれへ送信部１０３を介して送信する。
【００２１】
ステップＳ２において、通信端末２nは、サーバ装置１からグループIDを受信する。受信したグループIDは、グループID記憶部２１へ記憶する。
【００２２】
ステップＳ３において、通信端末２nは、同じグループに含まれる他の通信端末２n'（n'≠n）とセッション鍵SK1を共有し、セッション鍵記憶部２２へ記憶する。セッション鍵の生成および共有方法は、周知の技術を用いて行えばよい。なお、セッション鍵SK1はサーバ装置１には知られていないものとし、グループにおけるユーザの追加や削除もしくは一定時間経過等のイベントの発生に伴って、他のセッション鍵SK2（≠SK1）に更新されるものとする。
【００２３】
ステップＳ４において、通信端末２nのインデックス生成部２３は、グループに送信するメッセージmに関連する文字列skに対して、セッション鍵記憶部２２に記憶されたセッション鍵SK1を用いてインデックスIndexkを生成する。kは1からKまでの各整数とし、Kはメッセージmに関連する文字列の数である。インデックスIndexkは、メッセージmを一意に特定するメッセージ識別子IDmと組にして、サーバ装置１へ送信部２０３を介して送信する。具体的には、以下のようにして、インデックスIndexkを生成する。検索可能文字列長をLとする。検索可能な文字列長に上限を設けない場合、L=∞としてよいが、ここではLは有限（<∞）であるとする。当該グループにおいてメッセージmを一意に特定する識別子をIDmとする。サーバ装置１に対してメッセージmを秘匿したままにするので、メッセージmから識別子IDmを生成する関数は逆像計算が困難であること、すなわち、識別子IDmからメッセージmが容易に推測できないことが望ましい。関数Fを、任意長の文字列を入力とし、入力文字列に依存する次元数であって、各成分の長さがL以下の文字列であるベクトルを出力する関数とする。関数Fの例としては、メッセージmのメタ情報を出力する関数や、メッセージm内に含まれる文字列を出力する関数、Nグラム・インデキシングを活用したメッセージm内の連続するN文字の文字列全てを出力する関数等がある。なお、Nグラム・インデキシングの詳細は、下記参考文献１に記載されている。
〔参考文献１〕北研二、津田和彦、獅々堀正幹著、「情報検索アルゴリズム」、共立出版、2002年
【００２４】
以下、関数Fが入力されたメッセージm内に含まれる連続する文字列をすべて出力する関数として説明する。インデックス生成部２３は、出力文字列を生成するため、メッセージmの文字列長をlengthmとし、λ=min{L, lengthm}とし、各i=1, …, λに対し、次の操作を行う。メッセージm内の連続するi個の文字列（メッセージ全体での連続する文字列、またはメッセージを文節ごとに区切り、その中での連続する文字列等が考えられるが、これらに限定されない）をs1(i), s2(i), …とする。文字列s1(i), s2(i), …それぞれへの割り当て方については、例えば、文字列の左端から取ってきた連続するi個の文字列をs1(i)とし、左端から右に１つシフトして得た連続するi個の文字列をs2(i)とし、・・・という方法があるが、これに限定はしない。関数Fは、出力として、
【００２５】
【数１】
2018116826.tif 000003
【００２６】
次元ベクトル
【００２７】
【数２】
2018116826.tif 000004
【００２８】
を得る。
【００２９】
続いて、セッション鍵記憶部２２に記憶されたセッション鍵SK1を読み出し、各j=1, 2, …, lengthm-λ+1に対し、
【００３０】
【数３】
2018116826.tif 000005
【００３１】
を計算し、
【００３２】
【数４】
2018116826.tif 000006
【００３３】
個のIndexj(i)からなるインデックス集合
【００３４】
【数５】
2018116826.tif 000007
【００３５】
を得る。このとき、セッション鍵SK1によるベキ乗計算の際、必要であればセッション鍵SK1の素数pによる剰余を計算したのちにベキ乗計算を行ってもよい。なお、群Gが加法群の場合、SK1倍計算を行う。すなわち、
【００３６】
【数６】
2018116826.tif 000008
【００３７】
と計算する。
【００３８】
例えば、L≧3とし、m=“あいう”の場合、6個のインデックス
【００３９】
【数７】
2018116826.tif 000009
【００４０】
を生成する。
【００４１】
そして、生成したインデックス集合Λとメッセージmに付与されたメッセージ識別子IDmとの組
【００４２】
【数８】
2018116826.tif 000010
【００４３】
を、サーバ装置１へ送信部１０３を介して送信する。なお、送信の際には、TLS（Transport Layer Security）のような秘匿通信を行うことが望ましいが、どのような手段で送信を行うかは限定されない。
【００４４】
ステップＳ５において、サーバ装置１は、通信端末２nからインデックス集合とメッセージ識別子との組（Λ, IDm）を受信し、インデックス記憶部１１へ記憶する。インデックス記憶部１１では、効率化のため、図５に示すように、キーワードskを含むメッセージの識別子をIDk1, IDk2, …としたとき、キーワードskに対するインデックスIndexkをキーとして、(Indexk, IDk1, IDk2, …)と保存されているのが望ましいが、どのようなテーブルを形成しているかは限定されない。
【００４５】
ステップＳ６において、通信端末２nのメッセージ送信部２４は、セッション鍵記憶部２２に記憶されたセッション鍵SK1を用いてメッセージmを暗号化する。暗号化されたメッセージmは送信先のグループIDを指定してサーバ装置１へ送信部２０３を介して送信する。
【００４６】
ステップＳ７において、通信端末２nは、セッション鍵記憶部２２に記憶されているセッション鍵SK1を新たなセッション鍵SK2へ更新する。セッション鍵を更新する契機としては、上述のとおり、グループにおけるユーザの追加や削除もしくは一定時間経過等のイベントの発生がある。ただし、セッション鍵の更新はこれらの契機に限定されない。更新後のセッション鍵SK2は、セッション鍵記憶部２２に記憶される。
【００４７】
ステップＳ８において、通信端末２nの再暗号化鍵生成部２５は、セッション鍵が更新された際に、更新前のセッション鍵SK1と更新後のセッション鍵SK2とを用いて、
【００４８】
【数９】
2018116826.tif 000011
【００４９】
を計算して再暗号化鍵RK1,2を生成し、サーバ装置１へ送信部２０３を介して送信する。なお、送信の際には、TLSのような秘匿通信を行うことが望ましいが、どのような手段で送信を行うかは限定されない。
【００５０】
ステップＳ９において、サーバ装置１の再暗号化部１３は、通信端末２nから再暗号化鍵RK1,2を受信し、図５に示すように、インデックス記憶部１１に記憶されている当該グループで生成された各インデックスIndexkに対して以下の計算を行うことで、更新後のセッション鍵SK2に対応するインデックスIndex'kを生成する。
【００５１】
【数１０】
2018116826.tif 000012
【００５２】
このとき、再暗号化鍵RK1,2によるベキ乗計算の際、必要であれば再暗号化鍵RK1,2の素数pによる剰余を計算したのちにベキ乗計算を行ってもよい。なお、群Gが加法群の場合、RK1,2倍計算を行う。すなわち、以下の計算を行う。
【００５３】
【数１１】
2018116826.tif 000013
【００５４】
ステップＳ１０において、通信端末２nのクエリ生成部２６は、入力された検索キーワードwをセッション鍵記憶部２２に記憶されたセッション鍵SK2を用いて暗号化して検索クエリQueryを生成し、サーバ装置１へ送信部２０３を介して送信する。まず、検索キーワードwの文字列の長さを検索可能文字列長Lと比較し、Lよりも大きければエラーを返して処理を終了する。L以下であれば、セッション鍵記憶部２２から現在のセッション鍵SK2を読み出し、
【００５５】
【数１２】
2018116826.tif 000014
【００５６】
を計算して検索クエリQueryを生成し、サーバ装置１へ送信部２０３を介して送信する。なお、送信の際には、TLSのような秘匿通信を行うことが望ましいが、どのような手段で送信を行うかは限定されない。
【００５７】
ステップＳ１１において、サーバ装置１の検索部１４は、通信端末２nから検索クエリQueryを受信し、インデックス記憶部１１に記憶されたインデックスとメッセージ識別子の組（Index'k, IDk1, IDk2, …）のうち、Index'k=Queryを満たす（Index'k, IDk1, IDk2,…）をすべて抽出する。抽出されたメッセージ識別子IDk1, IDk2, …は、検索クエリQueryを送信した通信端末２nへ送信部１０３を介して送信する。なお、送信の際には、TLSのような秘匿通信を行うことが望ましいが、どのような手段で送信を行うかは限定されない。
【００５８】
ステップＳ１２において、通信端末２nは、検索クエリQueryに対する検索結果であるメッセージ識別子IDmを受信すると、メッセージ識別子IDmに対応する暗号化されたメッセージmを取得し、検索結果として画面等の出力手段に表示する。表示の方法は、例えば、検索結果であるメッセージmの一覧を、各メッセージ中の検索キーワードwをハイライトさせて表示する等が考えられるが、これに限定されない。
【００５９】
上記の説明では、一台の通信端末２nがインデックスの生成から検索クエリの生成まですべてを行う構成として説明したが、インデックスの生成のみを行う通信端末や、再暗号化鍵の生成のみを行う通信端末、検索クエリの生成のみを行う通信端末が混在していてもよい。例えば、インデックスの生成のみを行う通信端末であれば、制御部２０１、記憶部２０２、送信部２０３、受信部２０４、グループID記憶部２１、セッション鍵記憶部２２、インデックス生成部２３、およびメッセージ送信部２４のみを含んでいればよい。また、例えば、再暗号化鍵の生成のみを行う通信端末であれば、制御部２０１、記憶部２０２、送信部２０３、受信部２０４、グループID記憶部２１、セッション鍵記憶部２２、および再暗号化鍵生成部２５のみを含んでいればよい。また、例えば、検索クエリの生成のみを行う通信端末であれば、制御部２０１、記憶部２０２、送信部２０３、受信部２０４、グループID記憶部２１、セッション鍵記憶部２２、およびクエリ生成部２６のみを含んでいればよい。
【００６０】
上記のように構成することにより、この発明のメッセージ送信技術によれば、送信されたメッセージに関連する文字列を暗号化したインデックスを、セッション鍵が更新された際に元の文字列を秘匿したまま更新後のセッション鍵に対応するインデックスに更新することができる。そのため、仮に他のユーザにより送信された検索クエリを不当に取得する等をしても、検索したキーワードや検索結果から送信されたメッセージの内容を推測することができない。したがって、この発明によれば、メッセージ送信技術の機密性を向上することができる。
【００６１】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００６２】
［プログラム、記録媒体］
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００６３】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００６４】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００６５】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００６６】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【図１】
2018116826.tif 000023
【図２】
2018116826.tif 000024
【図３】
2018116826.tif 000025
【図４】
2018116826.tif 000026
【図５】
2018116826.tif 000027
【国際調査報告】
2018116826.tif 000028
2018116826.tif 000029