(57)【要約】【課題】複数の表を復号化する事なく結合し、必要外のデータが漏洩する危険性を防止する暗号化データベースシステム等を提供する。【解決手段】入力されたａ列目およびｂ列目のデータを有する第１の表とｃ列目のデータを有する第２の表とを予め記憶された秘密鍵によって暗号化して外部に出力し、この表をａ列目の値がｐ以上ｑ未満であるデータについてｂ列目およびｃ列目をキーとして結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末１０と、暗号化された第１および第２の表を受信して記憶し、範囲検索鍵を利用して暗号化された第１および第２の表からａ列目の値がｐ以上ｑ未満であるデータを各々抽出し、この抽出されたデータに対してｂ列目およびｃ列目をキーとして結合して返送する暗号化データベースサーバ５０とが相互に接続されて構成される。【選択図】図１
2013161586.tif 000002
【特許請求の範囲】
【請求項１】
外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して外部に出力し、これらの表を前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末と、
前記暗号化された第１および第２の表を受信して記憶し、前記部分結合命令に応じて前記暗号化された第１および第２の表を前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合してこれを前記クライアント端末に返送する部分結合機能を有する暗号化データベースサーバとが相互に接続されて成り、
前記暗号化データベースサーバの部分結合機能が、
前記範囲検索鍵を利用して前記暗号化された第１の表から前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第１および第２の表の前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合するものであることを特徴とする暗号化データベースシステム。
【請求項２】
前記クライアント端末が、
前記秘密鍵を利用して、前記第１の表の前記ｂ列目の要素を検索するための鍵である検索鍵を生成する検索鍵生成部と、
前記秘密鍵を利用して、前記第２の表の前記ｃ列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する被検索鍵生成部と、
前記秘密鍵を利用して、前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する被範囲検索鍵生成部と、
前記秘密鍵を利用して、前記第１および第２の表の各要素を暗号化する暗号化部と、
前記秘密鍵および前記検索鍵を利用して、前記第１の表の前記ａ列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を生成する範囲検索暗号文生成部と
を有し、これらによって前記第１および第２の表を暗号化することを特徴とする、請求項１に記載の暗号化データベースシステム。
【請求項３】
前記クライアント端末の前記暗号化部が、前記第１の表の前記ａ列目の要素を前記被範囲検索鍵と暗号化された前記ａ列目の要素、前記ｂ列目の要素を前記範囲検索暗号文と暗号化された前記ｂ列目の要素とでそれぞれ置換し、前記第２の表の前記ｃ列目の要素を前記被検索鍵と暗号化された前記ｃ列目の要素で置換して、これを暗号化された前記第１および第２の表として前記暗号化データベースサーバに送信する機能を有し、
かつ、前記クライアント端末が、前記秘密鍵を利用して前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満の特定の値であるものを検索するための鍵である範囲検索鍵を生成してこれを前記部分結合命令と共に前記暗号化データベースサーバに送信する範囲検索鍵生成部を備えることを特徴とする、請求項２に記載の暗号化データベースシステム。
【請求項４】
前記暗号化データベースサーバが、
暗号化された前記第１の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を抽出する範囲検索部と、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから対象検索鍵を生成する範囲内導出部と、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第１の表の前記抽出された行に対応する暗号化された前記第２の表の行を発見し、これらの行について前記結合を行う検索部と
を有し、これらによって前記部分結合機能を実行することを特徴とする、請求項３に記載の暗号化データベースシステム。
【請求項５】
外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によって暗号化して外部に出力する暗号化部と、
前記秘密鍵を利用して範囲検索鍵を生成する範囲検索鍵生成部とを有すると共に、
この範囲検索鍵生成部が、前記秘密鍵を利用して前記第１および第２の表を前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記範囲検索鍵と共に外部に送信する機能を有することを特徴とするクライアント端末。
【請求項６】
全体が暗号化されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表をクライアント端末から受信して記憶し、前記クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて前記暗号化された第１および第２の表を前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合してこれを前記クライアント端末に返送する部分結合機能を有する暗号化データベースサーバ暗号化データベースサーバであって、
前記範囲検索鍵を利用して前記暗号化された第１の表から前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第１および第２の表の前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合する検索部によって前記部分結合機能を実行する
ことを特徴とする暗号化データベースサーバ。
【請求項７】
クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記クライアント端末が、外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して前記暗号化データベースサーバに出力し、
前記暗号化データベースサーバが、前記暗号化された第１および第２の表を受信して記憶し、
前記クライアント端末が、前記暗号化された第１の表の前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記暗号化された第１および第２の表を前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に前記暗号化データベースサーバに送信し、
前記暗号化データベースサーバが、前記範囲検索鍵を利用して前記暗号化された第１の表から前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第１および第２の表の前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合して前記クライアント端末に返送する
ことを特徴とする暗号化データ結合方法。
【請求項８】
クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記クライアント端末が備えるコンピュータに、
外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して前記暗号化データベースサーバに出力する手順、
および前記暗号化された第１の表の前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記暗号化された第１および第２の表を前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に前記暗号化データベースサーバに送信する手順
を実行させることを特徴とする暗号化データ結合プログラム。
【請求項９】
クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記暗号化データベースサーバが備えるコンピュータに、
前記クライアント端末から全体が暗号化されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表を受信して記憶する手順、
および前記クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて、前記範囲検索鍵を利用して前記暗号化された第１の表から前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第１および第２の表の前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合して前記クライアント端末に返送する手順
を実行させることを特徴とする暗号化データ結合プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラムに関し、特に、必要外のデータが漏洩する危険性を防止することを可能とする暗号化データベースシステム等に関する。
【背景技術】
【０００２】
企業などにおける業務の根幹がコンピュータ化されることによって、ほとんどの企業が業務で使用する大量のデータを収容する大規模データベースを持つようになっている。これらのデータは、業務上重要なデータであり、また個人情報保護という観点からも、外部に対して漏洩することは絶対にあってはならない。このため、そのような大規模データベースでは、収容されるデータが暗号化されていることが多い。【０００３】
データベースは、多くの表（テーブル）の集合体として捉えることができる。以下、非特許文献１に記載されている、収容されているデータが暗号化されたデータベース（以後暗号化データベースという）で、各要素を復号化することなく２つの表を結合するために行われている、検索可能暗号と呼ばれる暗号方式について説明する。【０００４】
この方式では、暗号学的ハッシュ関数Ｈａｓｈと共通鍵暗号（Ｅｎｃ，Ｄｅｃ）を使用する。暗号化関数Ｅｎｃは、平文をｍ、暗号鍵をｋとすると、ｃ＝Ｅｎｃ（ｋ，ｍ）で暗号文ｃを生成し、復号化関数Ｄｅｃは、暗号文をｃ、暗号鍵をｋとすると、ｍ＝Ｄｅｃ（ｃ，ｋ）で暗号文ｃを復号化する。【０００５】
検索可能暗号では、秘密鍵の組（Ｋ，ｋ）を使用して、平文ｍを以下の数１に示すように暗号化する。復号化は以下の数２に示す形で処理可能である。【０００６】
【数１】
2013161586.tif 000003
【０００７】
【数２】
2013161586.tif 000004
【０００８】
この方式では、平文ｍが同一であれば、それらの暗号文の第一の要素Ｃ［１］は同一となる。即ち、暗号文を復号しなくても平文の同一性を判定することが可能であり、同一の要素について表を自然結合することが可能となる。【０００９】
図９および１０は、既存技術である検索可能暗号で、結合される前の表データについて示す説明図である。図９は表「Ｉ」９０１を、図１０は表「ＩＩ」９０２を各々示す。表「Ｉ」９０１には列「ＩＡ」９０１ａおよび列「ＩＢ」９０１ｂがあり、表「ＩＩ」９０２には列「ＩＩＢ」９０２ａおよび列「ＩＩＣ」９０２ｂがある。【００１０】
図１１は、図９および１０に示した表「Ｉ」９０１および表「ＩＩ」９０２を結合して得られる表「ＩＩＩ」９０３について示す説明図である。表「Ｉ」９０１の列「ＩＢ」９０１ｂ、および表「ＩＩ」９０２の列「ＩＩＢ」９０２ａは、いずれも「カード番号」についてのものであるので、列「ＩＢ」＝列「ＩＩＢ」の条件で結合する（列「ＩＢ」および列「ＩＩＢ」で、要素の値が等しいもの同士を結合する）ことが可能であり、これによって表「ＩＩＩ」９０３を得ることが可能である。【００１１】
図１２は、図１１に示した表「ＩＩＩ」９０３から、列「ＩＡ（名前）」が「上田」である行を抽出した表「ＩＩＩ’」９０４について示す説明図である。以上で示した処理では、表「Ｉ」９０１および表「ＩＩ」９０２の各要素は暗号化されていない。【００１２】
しかしながら、実際にはこれらが暗号化された状態で、各要素を復号化することなく、以上に示した処理を行う必要がある。そのためには、列「ＩＢ」および列「ＩＩＢ」で要素の値が等しいか否かを判断可能である必要がある。そこで、前述の検索可能暗号という暗号方式を利用する。【００１３】
図１３および１４は、図９および１０に示した表「Ｉ」９０１および表「ＩＩ」９０２を、各々検索可能暗号によって暗号化した暗号化表「Ｉ」９１１および暗号化表「ＩＩ」９１２について示す説明図である。暗号化表「Ｉ」９１１および暗号化表「ＩＩ」９１２では、各要素が前述の数１に示した方式で、秘密鍵の組（Ｋ，ｋ）を利用して暗号化されている。【００１４】
図１５は、図１３および１４に示した暗号化表「Ｉ」９１１および暗号化表「ＩＩ」９１２を結合して得られる暗号化表「ＩＩＩ」９１３について示す説明図である。暗号化表「Ｉ」９１１および暗号化表「ＩＩ」９１２を結合するには、暗号化される前の列「ＩＢ」９０１ｂと列「ＩＩＢ」９０２ａの要素の値が等しいか否かを判断する必要がある。【００１５】
検索可能暗号によれば、暗号化された要素のＨａｓｈ（Ｋ，ｍ）とＨａｓｈ（ｋ，ｍ’）とが等しいか否かを判断することによって、暗号化される前のｍとｍ’とが等しいか否かを判断することができるので、これによって暗号化表「ＩＩＩ」９１３を得ることができる。【００１６】
図１６は、図１５に示した暗号化表「ＩＩＩ」９１３から、列「ＩＡ（名前）」が「Ｈａｓｈ（Ｋ，上田）」である行を抽出した暗号化表「ＩＩＩ’」９１４について示す説明図である。以上で説明したように、ここまでで各要素を復号化することなく、暗号化表「ＩＩＩ’」９１４を得ることができる。秘密鍵の組（Ｋ，ｋ）を持つ正当なユーザであれば、これに対応する列「ＩＩＣ」９０２ｂの要素、この場合は「上田」さんのクレジットカードの「有効期限」について、その要素を復号化して知ることが可能である。【００１７】
これに関連する他の技術文献として、次の各々がある。特許文献１には、各項目の順位を生成して暗号化したインデックステーブルを使用して、その項目を暗号化したままで範囲検索を行うことができるというリレーショナルデータベースについて記載されている。特許文献２には、キーワードが暗号化されたままの状態でマッチング処理を行うという暗号化データベース検索装置について記載されている。【００１８】
特許文献３には、暗号化されたキーワードによってインデックスファイルを生成して、これによって暗号化された状態のファイルの検索を可能とするという技術が記載されている。特許文献４および５には、分散データベースシステムで表結合にかかる時間を低減するという技術が記載されている。
【先行技術文献】
【特許文献】
【００１９】
【特許文献１】特開２００３−１８６７２５号公報
【特許文献２】特開２００５−１３４９９０号公報
【特許文献３】特開２０１０−０６１１０３号公報
【特許文献４】特開２０１０−２７２０３０号公報
【特許文献５】特開平０４−２１３７６５号公報
【非特許文献】
【００２０】
【非特許文献１】G.Amanatidis,A.Boldyreva, and A.O'Neill. Provably-secure schemes for basic query support inoutsourced databases. In S.~Barker and G.-J. Ahn, editors, DBSec, volume 4602of Lecture Notes in Computer Science, pages 14--30. Springer, 2007.
【発明の概要】
【発明が解決しようとする課題】
【００２１】
以上で説明したように、非特許文献１に記載された検索可能暗号による方式を利用すれば、暗号化したまま表を結合し、条件に一致する（特定の列の要素が指定された値と一致する）行を取り出すことが可能である。【００２２】
しかしながら、この方式では、最終的に得られる行以外の行に関しても表が結合されることになる。前述の例でいえば、ユーザは「上田」さんのクレジットカードの有効期限について知ることができればそれでよいのであって、他のメンバの有効期限について知る必要は無い。それにもかかわらず、この方式では、「上田」さん以外のメンバの有効期限についても結合された、図１１や図１５に示したような表が作成される。【００２３】
通常、このようなデータベースシステムはクライアント−サーバ方式で運用されるので、この処理を行っている間は図１１や図１５に示したような「上田」さん以外のメンバの有効期限についても結合された表のデータがサーバ側の装置に記憶されることになるので、その間にそのデータが漏洩する危険性を否定することはできない。【００２４】
図１５に示したように各データが暗号化されている場合、秘密鍵の組（Ｋ，ｋ）を持っていないユーザは具体的な名前や有効期限を知ることはできないが、結合関係からその暗号文同士の対応を推測することはできる。即ち、最終的に得られる行以外の行に関しても表が結合されるということは、データの関連性に関して必要外の情報が漏洩する危険性があるということを意味する。【００２５】
この問題を解決することが可能な技術は、前述の特許文献１〜５にも記載されていない。そもそもこれらの文献の中で、以上で説明した問題点について言及したものは無いので、当然ながらこれらの文献に記載された技術でこの問題を解決することはできない。【００２６】
本発明の目的は、データベースの暗号化された複数の表を復号化する事なく結合し、さらに必要外のデータが漏洩する危険性を防止することを可能とする暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００２７】
上記目的を達成するため、本発明に係る暗号化データベースシステムは、外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して外部に出力し、これらの表をａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行についてｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末と、暗号化された第１および第２の表を受信して記憶し、部分結合命令に応じて暗号化された第１および第２の表をａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行についてｂ列目およびｃ列目のデータの予め備える値が一致する行を結合してこれをクライアント端末に返送する部分結合機能を有する暗号化データベースサーバとが相互に接続されて成り、暗号化データベースサーバの部分結合機能が、範囲検索鍵を利用して暗号化された第１の表からａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第１および第２の表のｂ列目およびｃ列目のデータの予め備える値が一致する行を結合するものであることを特徴とする。【００２８】
上記目的を達成するため、本発明に係るクライアント端末は、外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によって暗号化して外部に出力する暗号化部と、秘密鍵を利用して範囲検索鍵を生成する範囲検索鍵生成部とを有すると共に、この範囲検索鍵生成部が、秘密鍵を利用して第１および第２の表をａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行についてｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を範囲検索鍵と共に外部に送信する機能を有することを特徴とする。【００２９】
上記目的を達成するため、本発明に係る暗号化データベースサーバは、全体が暗号化されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表をクライアント端末から受信して記憶し、クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて暗号化された第１および第２の表をａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行についてｂ列目およびｃ列目のデータの予め備える値が一致する行を結合してこれをクライアント端末に返送する部分結合機能を有する暗号化データベースサーバ暗号化データベースサーバであって、範囲検索鍵を利用して暗号化された第１の表からａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第１および第２の表のｂ列目およびｃ列目のデータの予め備える値が一致する行を結合する検索部によって部分結合機能を実行することを特徴とする。【００３０】
上記目的を達成するため、本発明に係る暗号化データ結合方法は、クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、クライアント端末が、外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して暗号化データベースサーバに出力し、暗号化データベースサーバが、暗号化された第１および第２の表を受信して記憶し、クライアント端末が、暗号化された第１の表のａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について暗号化された第１および第２の表をｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に暗号化データベースサーバに送信し、暗号化データベースサーバが、範囲検索鍵を利用して暗号化された第１の表からａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第１および第２の表のｂ列目およびｃ列目のデータの予め備える値が一致する行を結合してクライアント端末に返送することを特徴とする。【００３１】
上記目的を達成するため、本発明に係る暗号化データ結合プログラムは、クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、クライアント端末が備えるコンピュータに、外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して暗号化データベースサーバに出力する手順、および暗号化された第１の表のａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について暗号化された第１および第２の表をｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に暗号化データベースサーバに送信する手順を実行させることを特徴とする。【００３２】
上記目的を達成するため、本発明に係る別の暗号化データ結合プログラムは、クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、暗号化データベースサーバが備えるコンピュータに、クライアント端末から全体が暗号化されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表を受信して記憶する手順、およびクライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて、範囲検索鍵を利用して暗号化された第１の表からａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第１および第２の表のｂ列目およびｃ列目のデータの予め備える値が一致する行を結合してクライアント端末に返送する手順を実行させることを特徴とする。
【発明の効果】
【００３３】
本発明は、上述したように、クライアント端末で秘密鍵から生成された範囲検索鍵を利用して、データベースサーバが第１および第２の表で要素の値がｐ以上ｑ未満であるものを判定して抽出し、それらの列についてのみ第１および第２の表を結合してクライアント端末に返送するように構成したので、各々の表が復号化されることはなく、かつ必要外のデータについて結合が行われることもない。【００３４】
これによって、データベースの暗号化された複数の表を復号化する事なく結合し、さらにユーザにとって必要外のデータが漏洩する危険性を防止することが可能であるという、優れた特徴を持つ暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施形態に係る暗号化データベースシステムの構成を示す説明図である。
【図２】図１に示したクライアント端末が表「Ｘ」および表「Ｙ」を暗号化して暗号化データベースサーバに送付するという動作について説明する説明図である。
【図３】図２に示した暗号化される前の表「Ｘ」について示す説明図である。
【図４】図２に示した暗号化される前の表「Ｙ」について示す説明図である。
【図５】図３に示した表「Ｘ」が、図２に示した処理によって暗号化された暗号化表「Ｘ」について示す説明図である。
【図６】図４に示した表「Ｙ」が、図２に示した処理によって暗号化された暗号化表「Ｙ」について示す説明図である。
【図７】図１で示した暗号化データベースサーバが行う、図５〜６で示した暗号化表「Ｘ」および暗号化表「Ｙ」を結合して列「Ａ」の値がｐ以上ｑ未満である行を抽出する処理について示す説明図である。
【図８】図１に示したクライアント端末および暗号化データベースサーバが行う処理について示すフローチャートである。
【図９】既存技術である検索可能暗号で、結合される前の表「Ｉ」について示す説明図である。
【図１０】既存技術である検索可能暗号で、結合される前の表「ＩＩ」について示す説明図である。
【図１１】図９および１０に示した表「Ｉ」および表「ＩＩ」を結合して得られる表「ＩＩＩ」について示す説明図である。
【図１２】図１１に示した表「ＩＩＩ」から、列「ＩＡ（名前）」が「上田」である行を抽出した表「ＩＩＩ’」について示す説明図である。
【図１３】図９に示した表「Ｉ」を、検索可能暗号によって暗号化した暗号化表「Ｉ」について示す説明図である。
【図１４】図１０に示した表「ＩＩ」を、検索可能暗号によって暗号化した暗号化表「ＩＩ」について示す説明図である。
【図１５】図１３および１４に示した暗号化表「Ｉ」９１１および暗号化表「ＩＩ」９１２を結合して得られる暗号化表「ＩＩＩ」について示す説明図である。
【図１６】図１５に示した暗号化表「ＩＩＩ」から、列「ＩＡ（名前）」が「Ｈａｓｈ（Ｋ，上田）」である行を抽出した暗号化表「ＩＩＩ’」について示す説明図である。
【発明を実施するための形態】
【００３６】
（実施形態）
以下、本発明の実施形態の構成について添付図１、２、７に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係る暗号化データベースシステム１は、外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して外部に出力し、これらの表をａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行についてｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末１０と、暗号化された第１および第２の表を受信して記憶し、部分結合命令に応じて暗号化された第１および第２の表をａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行についてｂ列目およびｃ列目のデータの予め備える値が一致する行を結合してこれをクライアント端末に返送する部分結合機能を有する暗号化データベースサーバ暗号化データベースサーバ５０とが相互に接続されて成り、暗号化データベースサーバ５０の部分結合機能が、範囲検索鍵を利用して暗号化された第１の表からａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第１および第２の表のｂ列目およびｃ列目のデータの予め備える値が一致する行を結合するものである。
【００３７】
また、クライアント端末１０は、秘密鍵を利用して、第１の表のｂ列目の要素を検索するための鍵である検索鍵を生成する検索鍵生成部２１と、秘密鍵を利用して、第２の表のｃ列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する被検索鍵生成部２３と、秘密鍵を利用して、第１の表のａ列目の要素がｐ以上ｑ未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する被範囲検索鍵生成部２４と、秘密鍵を利用して、第１および第２の表の各要素を暗号化する暗号化部（暗号化／復号化部２６）と、秘密鍵および検索鍵を利用して、第１の表のａ列目の要素を検索鍵に対応させるための情報である範囲検索暗号文を生成する範囲検索暗号文生成部２５とを有し、を有し、これらによって第１および第２の表を暗号化する。さらに、暗号化部２６が、第１の表のａ列目の要素を被範囲検索鍵と暗号化されたａ列目の要素、ｂ列目の要素を範囲検索暗号文と暗号化されたｂ列目の要素とでそれぞれ置換し、第２の表のｃ列目の要素を被検索鍵と暗号化されたｃ列目の要素で置換して、これを暗号化された第１および第２の表として暗号化データベースサーバに送信する機能を有し、かつ、秘密鍵を利用して、第１の表のａ列目の要素がｐ以上ｑ未満の特定の値であるものを検索するための鍵である被範囲検索鍵を生成してこれを部分結合命令として暗号化データベースサーバに送信する範囲検索鍵生成部２２を備える。
【００３８】
一方の暗号化データベースサーバ５０は、暗号化された第１の表で範囲検索鍵と被範囲検索鍵とが一致する行を抽出する範囲検索部６２と、抽出された行について範囲検索鍵と範囲検索暗号文とから対象検索鍵を生成する範囲内導出部６３と、対象検索鍵および被検索鍵を用いて暗号化された第１の表の抽出された行に対応する暗号化された第２の表の行を発見し、これらの行について結合を行う検索部６１とを有し、これらによって部分結合機能を実行する。
【００３９】
この構成を備えることにより、暗号化データベースシステム１はデータベースの暗号化された複数の表を復号化する事なく結合し、さらにユーザにとって必要外のデータが漏洩する危険性を防止することが可能となる。
以下、これをより詳細に説明する。
【００４０】
図１は、本発明の実施形態に係る暗号化データベースシステム１の構成を示す説明図である。暗号化データベースシステム１は、クライアント端末１０と暗号化データベースサーバ５０とが、ＬＡＮ（Local Area Network）などを介して相互に接続されて構成される。
【００４１】
クライアント端末１０は、一般的なコンピュータ装置としての構成を備える。即ち、クライアント端末１０は、コンピュータプログラムを実行する主体となるプロセッサ１１と、データを記憶する記憶手段１２と、ユーザからの操作を受け付ける入力手段１３と、ユーザに処理結果を提示する出力手段１４と、他のコンピュータとのデータ通信を行う通信手段１５とを備える。
【００４２】
プロセッサ１１では、ユーザからの操作命令に応じて、初期設定部２０、検索鍵生成部２１、範囲検索鍵生成部２２、被検索鍵生成部２３、被範囲検索鍵生成部２４、範囲検索暗号文生成部２５、および暗号化／復号化部２６が、各々コンピュータプログラムとして後述するそれぞれの機能を実行されるように構成されている。また、記憶手段１２には以後に説明する処理で使用する秘密鍵３３が記憶されている。
【００４３】
そして入力手段１３には、名称が各々「Ｘ」および「Ｙ」である表「Ｘ」３１および表「Ｙ」３２が入力される。以後、本明細書では、名称「Ｘ」である表の名称「Ａ」である列の、値が「ａ」である要素を、表「Ｘ」の列「Ａ」の要素「ａ」というように呼ぶ。
【００４４】
暗号化データベースサーバ５０もまた、一般的なコンピュータ装置としての構成を備える。即ち、暗号化データベースサーバ５０は、コンピュータプログラムを実行する主体となるプロセッサ５１と、データを記憶する記憶手段５２と、他のコンピュータとのデータ通信を行う通信手段５３とを備える。
【００４５】
プロセッサ５１では、クライアント端末１０からの操作命令に応じて、検索部６１、範囲検索部６２、および範囲内導出部６３が、コンピュータプログラムとして後述するそれぞれの機能を実行されるように構成されている。また、記憶手段５２には表「Ｘ」３１および表「Ｙ」３２を各々暗号化してクライアント端末１０から送付された暗号化表「Ｘ」４１および暗号化表「Ｙ」４２が記憶される。
【００４６】
上述した各手段の、基本的な動作について説明する。クライアント端末１０と暗号化データベースサーバ５０には、各種のシステム変数が入力されるか、もしくは予め記憶されている。以下の説明では、それらのシステム変数については当業者にとって公知の事項であるので、必要なもの以外は特に説明しない。
【００４７】
まずクライアント端末１０の側で、初期設定部２０は、各部の動作に必要な初期値を設定する。この詳細については後述する。
【００４８】
検索鍵生成部２１は、要素が暗号化されている任意の表「Ｘ」、表「Ｘ」の任意の列「Ａ」、列「Ａ」の任意の要素「ａ」に対して、表「Ｘ」の列「Ａ」の要素「ａ」を検索する鍵「検索鍵（Ｘ、Ａ、ａ）」を秘密鍵３３を用いて生成する。この検索鍵生成部２１を関数と考えると、以下の数３のように表現される。
【００４９】
【数３】
2013161586.tif 000005
【００５０】
範囲検索鍵生成部２２は、各要素が暗号化されている任意の表「Ｘ」、表「Ｘ」の任意の列「Ａ」、列「Ａ」の任意の要素「ａ」に対して、表「Ｘ」の列「Ａ」の要素でその値が、最小値「ａ」から最大値「ｂ」までの間にあるものを検索する鍵「範囲検索鍵（Ｘ、Ａ、ａ、ｂ）」を秘密鍵３３を用いて生成する。この範囲検索鍵生成部２２を関数と考えると、以下の数４のように表現される。
【００５１】
【数４】
2013161586.tif 000006
【００５２】
被検索鍵生成部２３は、各要素が暗号化されている任意の表「Ｘ」、表「Ｘ」の任意の列「Ａ」、列「Ａ」の任意の要素「ａ」に対して、表「Ｘ」の列「Ａ」の要素「ａ」として検索される鍵「被検索鍵（Ｘ、Ａ、ａ）」を秘密鍵３３を用いて生成する。この被検索鍵生成部２３を関数と考えると、以下の数５のように表現される。
【００５３】
【数５】
2013161586.tif 000007
【００５４】
被範囲検索鍵生成部２４は、各要素が暗号化されている任意の表「Ｘ」、表「Ｘ」の任意の列「Ａ」、列「Ａ」の任意の要素「ａ」に対して、表「Ｘ」の列「Ａ」のｂ≦ａなるいかなる要素ｂとａ≦ｃなるいかなる要素ｃに関して、ｂ≦ａ≦ｃである要素「ａ」として検索される鍵「被範囲検索鍵（Ｘ、Ａ、ａ）」を秘密鍵３３を用いて生成する。この被範囲検索鍵生成部２４を関数と考えると、以下の数６のように表現される。
【００５５】
【数６】
2013161586.tif 000008
【００５６】
範囲検索暗号文生成部２５は、任意の表「Ｘ」、表「Ｘ」の任意の列「Ａ」、列「Ａ」の任意の要素「ａ」と検索鍵「Ｋ」、に対して、要素「ａ」を検索鍵「Ｋ」に対応させる為の情報「範囲検索暗号文（Ｘ、Ａ、ａ、Ｋ）」を秘密鍵を用いて生成する。この範囲検索暗号文生成部２５を関数と考えると、以下の数７のように表現される。
【００５７】
【数７】
2013161586.tif 000009
【００５８】
暗号化データベースサーバ５０の側で、検索部６１は、ある表「Ｘ」、表「Ｘ」のある列「Ａ」、列「Ａ」のある要素「ａ」に関して生成された被検索鍵（Ｘ、Ａ、ａ）と、表「Ｘ」の列「Ａ」のある要素「ａ’」に関して生成された「検索鍵（Ｘ、Ａ、ａ’）」とに対して、ａ＝ａ’であるか否かを「検索鍵（Ｘ、Ａ、ａ’）」と「被検索鍵（Ｘ、Ａ、ａ）」から判定する。この検索部６１を関数と考えると、以下の数８のように表現される。ここで、０を一致、１を不一致と解釈する。
【００５９】
【数８】
2013161586.tif 000010
【００６０】
範囲検索部６２は、ある表「Ｘ」、表「Ｘ」のある列「Ａ」、列「Ａ」のある要素「ｃ」に関して生成された被範囲検索鍵（Ｘ、Ａ、ｃ）と、表「Ｘ」の列「Ａ」の最小値「ａ」から最大値「ｂ」に対して生成された「範囲検索鍵（Ｘ、Ａ、ａ、ｂ）」とに対して、ａ≦ｃ≦ｂであるか否かを、「範囲検索鍵（Ｘ、Ａ、ａ、ｂ）」と「被範囲検索鍵（Ｘ、Ａ、ａ）」から判定する。この範囲検索部６２を関数と考えると、以下の数９のように表現される。ここで、０を一致、１を不一致と解釈する。
【００６１】
【数９】
2013161586.tif 000011
【００６２】
範囲内導出部６３は、ある表「Ｘ」のある列「Ａ」の最小値ａから最大値ｂに対して生成された「範囲検索鍵（Ｘ、Ａ、ａ、ｂ）」と、表「Ｘ」の列「Ａ」のａ≦ｄ≦ｂなるある要素「ｄ」と検索鍵「Ｋ」に対して生成された「範囲検索暗号文（Ｘ、Ａ、ｄ、Ｋ）」とから、検索鍵「Ｋ」を導出する。この範囲内導出部６３を関数と考えると、以下の数１０のように表現される。
【００６３】
【数１０】
2013161586.tif 000012
【００６４】
クライアント端末１０側に戻って、暗号化／復号化部２６は、暗号文ｃを秘密鍵によって復号する。また逆に、要素ｍを秘密鍵によって暗号化することもできる。この暗号化／復号化部２６を関数と考えると、以下の数１１〜１２のように表現される。
【００６５】
【数１１】
2013161586.tif 000013
【００６６】
【数１２】
2013161586.tif 000014
【００６７】
（暗号化表の作成および送付）  図２は、図１に示したクライアント端末１０が表「Ｘ」３１および表「Ｙ」３２を暗号化して暗号化データベースサーバ５０に送付するという動作について説明する説明図である。図３〜４は、図２に示した暗号化される前の表「Ｘ」３１および表「Ｙ」３２について示す説明図である。図３は表「Ｘ」３１、図４は表「Ｙ」３２について各々示している。
【００６８】
クライアント端末１０に入力手段１３を介して入力される表「Ｘ」３１および表「Ｙ」３２は、表「Ｘ」３１には列「Ａ」３１ａと列「Ｂ」３１ｂ、表「Ｙ」３２には列「Ｃ」３２ｃが存在する。列「Ｂ」３１ｂと列「Ｃ」３２ｃが値を取る領域は同一である。
【００６９】
表「Ｘ」３１の行数は自然数ｎであり、表「Ｘ」３１の列「Ａ」３１ａおよび列「Ｂ」３１ｂのｉ番目の要素（１≦ｉ≦ｎ）を各々「ａ［ｉ］」，「ｂ［ｉ］」という。表「Ｙ」３２の行数は自然数ｍであり、表「Ｙ」３２の列「Ｃ」３２ｃのｉ番目の要素（１≦ｉ≦ｎ）を「ｃ［ｉ］」という。
【００７０】
被範囲検索鍵生成部２４は、ｉの取りうる１〜ｎの全ての値に対して、表「Ｘ」３１、列「Ａ」３１ａ、要素「ａ［ｉ］」、および秘密鍵３３から、数６で示した「被範囲検索鍵（Ｘ，Ａ，ａ［ｉ］）」を生成する。これを図２では被範囲検索鍵３４ａという。
【００７１】
検索鍵生成部２１は、ｉの取りうる１〜ｎの全ての値に対して、表「Ｙ」３２、列「Ｃ」３２ｃ、列Ｂの要素「ｂ［ｉ］」、および秘密鍵３３から、数３で示した「検索鍵（Ｙ，Ｃ，ｂ［ｉ］）」を生成する。これを図２では検索鍵３４ｂという。
【００７２】
範囲検索暗号文生成部２５は、ｉの取りうる１〜ｎの全ての値に対して、表「Ｘ」３１、列「Ａ」３１ａ、要素「ａ［ｉ］」、検索鍵３４ｂ、および秘密鍵３３から、数７で示した「範囲検索暗号文（Ｘ，Ａ，ａ［ｉ］，検索鍵（Ｙ，Ｃ，ｂ［ｉ］））を生成する。これを図２では範囲検索暗号文３４ｄという。
【００７３】
暗号化／復号化部２６は、ｉの取りうる１〜ｎの全ての値に対して、要素「ａ［ｉ］」、および秘密鍵３３から、数１１に示した各要素の暗号文「ｅｎｃ（ａ［ｉ］）」を生成し、また同様に、要素「ｂ［ｉ］」、および秘密鍵３３から、数１１に示した各要素の暗号文「ｅｎｃ（ｂ［ｉ］）」を生成する。
【００７４】
また、この暗号化／復号化部２６は、ｉの取りうる１〜ｎの全ての値に対して、表「Ｘ」３１で、列「Ａ」３１ａの要素「ａ［ｉ］」を（被範囲検索鍵（Ｘ，Ａ，ａ［ｉ］），ｅｎｃ（ａ［ｉ］））に置換し、同様に列「Ｂ」３１ｂの要素「ｂ［ｉ］」を（範囲検索暗号文（Ｘ，Ａ，ａ［ｉ］，検索鍵（Ｙ，Ｃ，ｂ［ｉ］）），ｅｎｃ（ｂ［ｉ］））に置換する。この置換された表「Ｘ」３１を、暗号化表「Ｘ」４１という。
【００７５】
一方で、被検索鍵生成部２３は、ｉの取りうる１〜ｍの全ての値に対して、表「Ｙ」３２、列「Ｃ」３２ｃ、列Ｃの要素「ｃ［ｉ］」、および秘密鍵３３から、数５で示した「被検索鍵（Ｙ，Ｃ，ｃ［ｉ］）」を生成する。これを図２では被検索鍵３４ｃという。
【００７６】
暗号化／復号化部２６は、ｉの取りうる１〜ｍの全ての値に対して、要素「ｃ［ｉ］」、および秘密鍵３３から、数１１に示した各要素の暗号文「ｅｎｃ（ｃ［ｉ］）」を生成する。また、ｉの取りうる１〜ｍの全ての値に対して、表「Ｙ」３２で、列「Ｃ」３２ｃの要素「ｃ［ｉ］」を（被検索鍵（Ｙ，Ｃ，ｃ［ｉ］），ｅｎｃ（ｃ［ｉ］））に置換する。この置換された表「Ｙ」３２を、暗号化表「Ｙ」４２という。
【００７７】
暗号化／復号化部２５は、以上で作成された暗号化表「Ｘ」４１および暗号化表「Ｙ」４２を、暗号化データベースサーバ５０に送付する。図５〜６は、図３〜４に示した表「Ｘ」３１および表「Ｙ」３２が、図２に示した処理によって暗号化された暗号化表「Ｘ」４１および暗号化表「Ｙ」４２について示す説明図である。図５は暗号化表「Ｘ」４１、図６は暗号化表「Ｙ」４２について各々示している。
【００７８】
暗号化データベースサーバ５０は、クライアント端末１０から受信した暗号化表「Ｘ」４１および暗号化表「Ｙ」４２を、記憶手段５２に保存する。そして、クライアント端末１０からのコマンドによって、暗号化表「Ｘ」４１および暗号化表「Ｙ」４２に対して結合処理を行い、この結果を依頼元のクライアント端末１０に返す。以下、その処理について説明する。
【００７９】
（暗号化表に対する結合処理）  ここでは、暗号化表「Ｘ」４１および暗号化表「Ｙ」４２の、列「Ｂ」の要素「ｂ［ｉ］」と列「Ｃ」の要素「ｃ［ｉ］」とが等しくなるものに対して結合を行うことを考える。より具体的には、暗号化表「Ｘ」４１の列「Ａ」３１ａの値がｐ以上ｑ未満である行を暗号化表「Ｘ」４１と暗号化表「Ｙ」４２とを結合した暗号化表から抽出する処理を、実際には暗号化表「Ｘ」４１および暗号化表「Ｙ」４２の全体に対しての結合をせずに行うということについて本実施形態では説明する。
【００８０】
一般的に、暗号化表「Ｘ」４１と暗号化表「Ｙ」４２とを結合した暗号化表から、「ｐ以上ｑ未満」などのように値の範囲を指定することによって列「Ａ」３１ａの値を限定した表を生成することが可能となる。このような結合処理を、本明細書では「部分結合」という。
【００８１】
クライアント端末１０は、暗号化表「Ｘ」４１および暗号化表「Ｙ」４２を暗号化する際に使用された秘密鍵３３を保持しているが、暗号化データベースサーバ５０はこれを保持していない。
【００８２】
図７は、図１で示した暗号化データベースサーバ５０が行う、図５〜６で示した暗号化表「Ｘ」４１および暗号化表「Ｙ」４２を結合して列「Ａ」の値がｐ以上ｑ未満である行を抽出する処理について示す説明図である。まずクライアント端末１０の範囲検索鍵生成部２２が、表「Ｘ」３１、列「Ａ」３１ａ、最小値ｐ、最大値ｑ、および秘密鍵３３から、数４で示した「範囲検索鍵（Ｘ，Ａ，ｐ，ｑ）」を生成する。
【００８３】
クライアント端末１０から、以上の「範囲検索鍵（Ｘ，Ａ，ｐ，ｑ）」が、部分結合コマンドと共に暗号化データベースサーバ５０に送信される。図７では、これを範囲検索鍵３５ａとして示している。
【００８４】
これを受けた暗号化データベースサーバ５０では、範囲検索部６２が、暗号化表「Ｘ」４１の列「Ａ」３１ａの要素である被範囲検索鍵３４ａ＝（Ｘ，Ａ，ａ［ｉ］）と範囲検索鍵３５ａとが一致するｉを全て発見する。このようなｉの集合を範囲集合Ｓという。ここでｉ∈Ｓならａ［ｉ］＝ｑである。
【００８５】
範囲内導出部６３は、範囲集合Ｓに属する全てのｉに対して、範囲検索鍵３５ａ＝（Ｘ，Ａ，ｐ，ｑ）、範囲検索暗号文３４ｄ＝（Ｘ，Ａ，ａ［ｉ］，検索鍵（Ｙ，Ｃ，ｂ［ｉ］））から、対象検索鍵４３ａ＝検索鍵（Ｙ，Ｃ，ｂ［ｉ］）を得る。
【００８６】
検索部６１は、範囲集合Ｓに属する全てのｉに対して、対象検索鍵４３ａと、暗号化表「Ｙ」４２の列「Ｃ」３２ｃの要素である被検索鍵３４ｃ＝（Ｙ，Ｃ，ｃ［ｊ］）とが一致するｊを発見する。これを満たすｊをｊ［ｉ］という。
【００８７】
そして検索部６１は、暗号化表「Ｘ」４１のｉ行目と暗号化表「Ｙ」４２のｊ［ｉ］行目を結合して、新たな行Ｒ［ｉ］を作成し、全てのｉ∈ＳについてＲ［ｉ］をクライアント端末１０に返送する。
【００８８】
クライアント端末１０は、暗号化／復号化部２６によって、Ｒ［ｉ］の要素であるｅｎｃ（ａ［ｉ］），ｅｎｃ（ｂ［ｉ］），ｅｎｃ（ｃ［ｉ］）を復号化して、各列要素の原文ａ［ｉ］，ｂ［ｉ］，ｃ［ｉ］を得ることができる。また、適切な範囲検索暗号文３４ｄが予め作成されていれば、対象検索鍵４３ａ＝検索鍵（Ｙ，Ｃ，ｂ［ｉ］）を利用して、列「Ｃ」とさらに他の列との間で結合を取ることもできる。
【００８９】
（より詳細な実施形態の説明）  以上で説明した各手段の動作について、それらの動作をより詳細に説明する。なお、これより以後では、要素Ｖａｌをｔ∈｛０，１｝であるｔ［ｉ］によって、以下の数１３に示すように桁数ｎ桁のビット列で表す。
【００９０】
【数１３】
2013161586.tif 000015
【００９１】
図８は、図１に示したクライアント端末１０および暗号化データベースサーバ５０が行う処理について示すフローチャートである。クライアント端末１０の側で、初期設定部２０は、入力手段１３を介して入力された安全変数κから、以下の数１４で示される秘密鍵ＭＫをランダムに選択する（ステップＳ１０１）。
【００９２】
【数１４】
2013161586.tif 000016
そして初期設定部２０はさらに、システム変数ＰＭを、以下の数１５で示されるハッシュ関数、表の名前の空間、列の名前の空間、列の要素の空間の表現方法の記述として定義し、これらのシステム変数ＰＭおよび秘密鍵ＭＫを出力する（ステップＳ１０２）
【００９３】
【数１５】
2013161586.tif 000017
【００９４】
被範囲検索鍵生成部２４は、システム変数ＰＭ、秘密鍵ＭＫ、表の名前ＴＮ（図３〜４でいう「Ｘ」「Ｙ」）、列の名前ＣＮ（図３〜４でいう「Ａ」「Ｂ」「Ｃ」）、および要素の値ＥＶ（図３〜４でいう「ａ［ｉ］」「ｂ［ｉ］」「ｃ［ｉ］」）＝（ｃ［０］、…、ｃ［ｎ−１］）を入力として、まずランダムにＩ∈｛０、１｝＾κを選び、続いてｄ［ｎ］＝０として、ｉ＝０、…、ｎ−１に対して以下の数１６で示される各々の値を生成し、最後に被範囲検索鍵ＲＳＫＤを出力する（ステップＳ１０３）。
【００９５】
【数１６】
2013161586.tif 000018
【００９６】
検索鍵生成部２１は、システム変数ＰＭ、秘密鍵ＭＫ、表の名前ＴＮ、列の名前ＣＮ、および要素の値ＥＶを入力として、以下の数１７で示される検索鍵ＳＫを生成して出力する（ステップＳ１０４）。
【００９７】
【数１７】
2013161586.tif 000019
被検索鍵生成部２３は、システム変数ＰＭ、秘密鍵ＭＫ、表の名前ＴＮ、列の名前ＣＮ、および要素の値ＥＶを入力として、以下の数１８で示される被検索鍵ＳＫＤを生成して出力する（ステップＳ１０５）。
【００９８】
【数１８】
2013161586.tif 000020
【００９９】
範囲検索暗号文生成部２５は、システム変数ＰＭ、秘密鍵ＭＫ、表の名前ＴＮ、列の名前ＣＮ、要素ＥＶ＝（ｃ［０］、…、ｃ［ｎ−１］）、検索鍵ＳＫ、許可鍵ＧＴを入力として、まずランダムにＩ∈｛０、１｝＾κを選び、続いてｉ＝０、…、ｎ−１に対して以下の数１９で示される各々の値を生成し、最後に範囲検索暗号文ＲＣＰを出力する（ステップＳ１０６）。なお、数１９でｄ［ｉ］は被範囲検索鍵生成部２４で生成されたものと同一である。
【０１００】
【数１９】
2013161586.tif 000021
【０１０１】
暗号化／復号化部２５は、前述した（図５〜６に示した）ように表「Ｘ」３１および表「Ｙ」３２の各要素を置換して暗号化表「Ｘ」４１および暗号化表「Ｙ」４２を作成する（ステップＳ１０７）。そしてこれらの暗号化表「Ｘ」４１および暗号化表「Ｙ」４２を暗号化データベースサーバ５０に送付する。暗号化データベースサーバ５０では、これらを受信して記憶手段５２に記憶する（ステップＳ１５１）。
【０１０２】
クライアント端末１０では、その後で、範囲検索鍵生成部２２が、システム変数ＰＭ、秘密鍵ＭＫ、表の名前ＴＮ、列の名前ＣＮ、要素の最小値Ｍｉｎ＝（ａ［０］、…、ａ［ｎ−１］）、要素の最大値Ｍａｘ＝（ｂ［０］、…、ｂ［ｎ−１］）を入力として、まずランダムにＩ∈｛０、１｝＾κを選び、（ａ［Ｌ］、…、ａ［ｎ−１］）＝（ｂ［Ｌ］、…、ｂ［ｎ−１］）となる最小のＬを探し、ｄ［ｎ］＝０として、ｉ＝Ｌ、…、ｎ−１に対して以下の数２０で示される処理を行って各々の値を生成し、最後に範囲検索鍵ＲＳＫを出力して、部分結合コマンドと共に暗号化データベースサーバ５０に送信する（ステップＳ１０８）。
【０１０３】
【数２０】
2013161586.tif 000022
【０１０４】
暗号化データベースサーバ５０で、範囲検索部６２は、システム変数ＰＭ、範囲検索鍵３５ａ，ＲＳＫ＝（ＴＮ、ＣＮ、Ｉ’、Ｌ、ｄ［Ｌ］、…、ｄ［ｎ］、ｄ［０、０］、…、ｄ［０、Ｌ−１］、ｄ［１、０］、…、ｄ［１、Ｌ−１］、ｆ［０、０］、…、ｆ［０、Ｌ−１］、ｆ［１、０］、…、ｆ［１、Ｌ−１］、ｇ［Ｌ］）、被範囲検索鍵ＲＳＫＤ＝（Ｉ、（ｈ［０］、…、ｈ［ｎ−１］）、（ｆ［０］、…、ｆ［ｎ］））を入力として、以下に示される処理を行って。０（一致）または１（不一致）である結果（Ｒｅｓ）を次のように出力する（ステップＳ１５２）。
【０１０５】
まずｈ［Ｌ］＝Ｈａｓｈ（ｄ［Ｌ］、（６、ＴＮ、ＣＮ、Ｉ））であるか否かを判断し、これが成立しなければＲｅｓ＝１を出力して終了する。成立していれば、ｈ［θ、ｉ］＝Ｈａｓｈ（ｄ［ｙ、ｉ］、（６、ＴＮ、ＣＮ、Ｉ））が成り立つ全ての対（θ、ｉ）∈｛０、１｝×｛０、…、Ｌ｝の組み合わせで、最小のｉを取る対（θ、ｉ）を（Θ、Ｈ）として、以下の数２１の計算を行う。
【０１０６】
【数２１】
2013161586.tif 000023
【０１０７】
そして、Θ＝０の場合、（ｅ［Ｈ］−ｅ［０、Ｈ］＝１  ｍｏｄ  ３であればＲｅｓ＝０、（ｅ［Ｈ］−ｅ［０、Ｈ］＝２  ｍｏｄ  ３であればＲｅｓ＝１とする。Θ＝１の場合、（ｅ［Ｈ］−ｅ［０、Ｈ］＝２  ｍｏｄ  ３であればＲｅｓ＝０、（ｅ［Ｈ］−ｅ［０、Ｈ］＝１  ｍｏｄ  ３であればＲｅｓ＝１とする。以上のＲｅｓを出力して、範囲検索部６２による処理は終了する。
【０１０８】
範囲内導出部６３は、システム変数ＰＭ、範囲検索鍵ＲＳＫ＝（ＴＮ、ＣＮ、Ｉ’、Ｌ、ｄ［Ｌ］、…、ｄ［ｎ］、ｄ［０、０］、…、ｄ［０、Ｌ−１］、ｄ［１、０］、…、ｄ［１、Ｌ−１］、ｆ［０、０］…、ｆ［０、Ｌ−１］、ｆ［１、０］、…、ｆ［１、Ｌ−１］、ｇ［Ｌ］）、と範囲検索暗号文ＲＣＰ＝（Ｉ、ｍ［０］、…、ｍ［ｎ−１］）を入力として、以下の数２２で示される処理を行って、対象検索鍵ＳＫ’を生成して出力する（ステップＳ１５３）。
【０１０９】
【数２２】
2013161586.tif 000024
【０１１０】
そして検索部６１は、ここで算出された対象検索鍵ＳＫ’を利用して、全てのｉ∈Ｓに対して、この対象検索鍵ＳＫ’とシステム変数ＰＭ、被検索鍵ＳＫＤ＝（Ｙ，Ｃ，ｃ［ｊ］）を入力として、ＳＫ’＝ＳＫＤとなるｊを発見して、暗号化表「Ｘ」４１のｉ行目と暗号化表「Ｙ」４２のｊ［ｉ］行目を結合して、新たな行Ｒ［ｉ］を作成して、全てのｉ∈ＳについてＲ［ｉ］をクライアント端末１０に返送する（ステップＳ１５４）。
【０１１１】
クライアント端末１０では、このＲ［ｉ］を暗号化／復号化部２６が秘密鍵３３によって復号化することによって、「Ｘ」３１と表「Ｙ」３２とを結合し、かつ列「Ａ」の値がｐ以上ｑ未満である行を得る（ステップＳ１０９）。
【０１１２】
（第１の実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係る暗号化データ結合方法は、クライアント端末１０と、暗号化データベースサーバ５０とが相互に接続されて構成される暗号化データベースシステム１にあって、クライアント端末が、外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して暗号化データベースサーバに出力し（図８・ステップＳ１０１〜１０７）、暗号化データベースサーバが、暗号化された第１および第２の表を受信して記憶し（図８・ステップＳ１５１）、クライアント端末が、暗号化された第１の表のａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について暗号化された第１および第２の表をｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に暗号化データベースサーバに送信し（図８・ステップＳ１０８）、暗号化データベースサーバが、範囲検索鍵を利用して暗号化された第１の表からａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第１および第２の表のｂ列目およびｃ列目のデータの予め備える値が一致する行を結合してクライアント端末に返送する（図８・ステップＳ１５２〜１５４）。
【０１１３】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータであるクライアント端末１０および暗号化データベースサーバ５０に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、ＤＶＤ、ＣＤ、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
【０１１４】
本実施形態において、範囲検索暗号文ＲＣＰは、範囲検索鍵ＲＳＫが与えられることをきっかけとして、検索鍵ＳＫを導出することができる。ここで範囲検索暗号文ＲＣＰは、無条件に範囲検索鍵ＲＳＫによってきっかけを与える事が出来るわけではないが、ＲＳＫの指定する範囲の中の要素を用いてＲＣＰが生成されている場合にはそのきっかけを与えることができる。
【０１１５】
即ち、前述の結合の例にあるように、片方の表のある列の要素の値が特定の範囲に属するか否かによって、その部分を抜き出して二つの表を結合する事が可能となる。この時、検索鍵ＳＫの導出には範囲検索暗号文ＲＳＫが必要とされる事ので、必要とされない行は結合されず、必要外の情報の漏洩を防止することが可能となる。
【０１１６】
ここで、生成される被範囲検索鍵や範囲検索暗号文の値が列の名前に依存することから帰結される事であるが、同じ値でも異なる表や列にある場合はこれらの同一性が判断できないので、範囲検索鍵ＲＳＫが無ければ結合対象の行が特定されることはない。
【０１１７】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【０１１８】
上述した各々の実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【０１１９】
（付記１）  外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して外部に出力し、これらの表を前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末と、
前記暗号化された第１および第２の表を受信して記憶し、前記部分結合命令に応じて前記暗号化された第１および第２の表を前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合してこれを前記クライアント端末に返送する部分結合機能を有する暗号化データベースサーバとが相互に接続されて成り、
前記暗号化データベースサーバの部分結合機能が、
前記範囲検索鍵を利用して前記暗号化された第１の表から前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第１および第２の表の前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合するものであることを特徴とする暗号化データベースシステム。
【０１２０】
（付記２）  前記クライアント端末が、
前記秘密鍵を利用して、前記第１の表の前記ｂ列目の要素を検索するための鍵である検索鍵を生成する検索鍵生成部と、
前記秘密鍵を利用して、前記第２の表の前記ｃ列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する被検索鍵生成部と、
前記秘密鍵を利用して、前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する被範囲検索鍵生成部と、
前記秘密鍵を利用して、前記第１および第２の表の各要素を暗号化する暗号化部と、
前記秘密鍵および前記検索鍵を利用して、前記第１の表の前記ａ列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を生成する範囲検索暗号文生成部と
を有し、これらによって前記第１および第２の表を暗号化することを特徴とする、付記１に記載の暗号化データベースシステム。
【０１２１】
（付記３）  前記クライアント端末の前記暗号化部が、前記第１の表の前記ａ列目の要素を前記被範囲検索鍵と暗号化された前記ａ列目の要素、前記ｂ列目の要素を前記範囲検索暗号文と暗号化された前記ｂ列目の要素とでそれぞれ置換し、前記第２の表の前記ｃ列目の要素を前記被検索鍵と暗号化された前記ｃ列目の要素で置換して、これを暗号化された前記第１および第２の表として前記暗号化データベースサーバに送信する機能を有し、
かつ、前記クライアント端末が、前記秘密鍵を利用して前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満の特定の値であるものを検索するための鍵である範囲検索鍵を生成してこれを前記部分結合命令と共に前記暗号化データベースサーバに送信する範囲検索鍵生成部を備えることを特徴とする、付記２に記載の暗号化データベースシステム。
【０１２２】
（付記４）  前記暗号化データベースサーバが、
暗号化された前記第１の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を抽出する範囲検索部と、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから対象検索鍵を生成する範囲内導出部と、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第１の表の前記抽出された行に対応する暗号化された前記第２の表の行を発見し、これらの行について前記結合を行う検索部と
を有し、これらによって前記部分結合機能を実行することを特徴とする、付記３に記載の暗号化データベースシステム。
【０１２３】
（付記５）  外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によって暗号化して外部に出力する暗号化部と、
前記秘密鍵を利用して範囲検索鍵を生成する範囲検索鍵生成部とを有すると共に、
この範囲検索鍵生成部が、前記秘密鍵を利用して前記第１および第２の表を前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記範囲検索鍵と共に外部に送信する機能を有することを特徴とするクライアント端末。
【０１２４】
（付記６）  前記秘密鍵を利用して、前記第１の表の前記ｂ列目の要素を検索するための鍵である検索鍵を生成する検索鍵生成部と、
前記秘密鍵を利用して、前記第２の表の前記ｃ列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する被検索鍵生成部と、
前記秘密鍵を利用して、前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する被範囲検索鍵生成部と、
前記秘密鍵を利用して、前記第１および第２の表の各要素を暗号化する暗号化部と、
前記秘密鍵および前記検索鍵を利用して、前記第１の表の前記ａ列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を生成する範囲検索暗号文生成部と
を有することを特徴とする、付記５に記載のクライアント端末。
【０１２５】
（付記７）  前記暗号化部が、前記第１の表の前記ａ列目の要素を前記被範囲検索鍵と暗号化された前記ａ列目の要素、前記ｂ列目の要素を前記範囲検索暗号文と暗号化された前記ｂ列目の要素とでそれぞれ置換し、前記第２の表の前記ｃ列目の要素を前記被検索鍵と暗号化された前記ｃ列目の要素で置換して、これを暗号化された前記第１および第２の表として前記暗号化データベースサーバに送信する機能を有し、
かつ、前記秘密鍵を利用して、前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満の特定の値であるものを検索するための鍵である被範囲検索鍵を生成してこれを前記部分結合命令として前記暗号化データベースサーバに送信する範囲検索鍵生成部を備えることを特徴とする、付記６に記載のクライアント端末。
【０１２６】
（付記８）  暗号化された第１および第２の表をクライアント端末から受信して記憶し、前記クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて前記暗号化された第１および第２の表を前記ａ列目の値がｐ以上ｑ未満であるデータについて前記ｂ列目およびｃ列目をキーとして結合してこれを前記クライアント端末に出力する暗号化データベースサーバであって、
前記範囲検索鍵を利用して前記暗号化された第１および第２の表から前記ａ列目の値がｐ以上ｑ未満であるデータを各々抽出し、この抽出されたデータに対して前記ｂ列目およびｃ列目をキーとして結合する検索部
を有することを特徴とする暗号化データベースサーバ。
【０１２７】
（付記９）  暗号化された前記第１の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を抽出する範囲検索部と、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから対象検索鍵を生成する範囲内導出部と、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第１の表の前記抽出された行に対応する暗号化された前記第２の表の行を発見し、これらの行について前記結合を行う検索部と
を有することを特徴とする、付記８に記載の暗号化データベースサーバ。
【０１２８】
（付記１０）  クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記クライアント端末が、外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して前記暗号化データベースサーバに出力し、
前記暗号化データベースサーバが、前記暗号化された第１および第２の表を受信して記憶し、
前記クライアント端末が、前記暗号化された第１の表の前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記暗号化された第１および第２の表を前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に前記暗号化データベースサーバに送信し、
前記暗号化データベースサーバが、前記範囲検索鍵を利用して前記暗号化された第１の表から前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第１および第２の表の前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合して前記クライアント端末に返送する
ことを特徴とする暗号化データ結合方法。
【０１２９】
（付記１１）  前記秘密鍵を利用して、前記第１の表の前記ｂ列目の要素を検索するための鍵である検索鍵を前記クライアント端末の検索鍵生成部が生成し、
前記秘密鍵を利用して、前記第２の表の前記ｃ列目の要素が特定の値で検索されるための鍵である被検索鍵を前記クライアント端末の被検索鍵生成部が生成し、
前記秘密鍵を利用して、前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満である特定の値で検索されるための鍵である被範囲検索鍵を前記クライアント端末の被範囲検索鍵生成部が生成し、
前記秘密鍵を利用して、前記第１および第２の表の各要素を前記クライアント端末の暗号化部が暗号化し、
前記秘密鍵および前記検索鍵を利用して、前記第１の表の前記ａ列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を前記クライアント端末の範囲検索暗号文生成部が生成し、
前記第１の表の前記ａ列目の要素を前記被範囲検索鍵と暗号化された前記ａ列目の要素、前記ｂ列目の要素を前記範囲検索暗号文と暗号化された前記ｂ列目の要素とで前記クライアント端末の前記暗号化部がそれぞれ置換してこれを前記暗号化された第１の表とし、
前記第２の表の前記ｃ列目の要素を前記被検索鍵と暗号化された前記ｃ列目の要素で前記クライアント端末の前記暗号化部が置換してこれを前記暗号化された第２の表とし、
前記暗号化された第１および第２の表を前記クライアント端末の前記暗号化部が前記暗号化データベースサーバに送信し、
前記秘密鍵を利用して、前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満の特定の値であるものを検索するための鍵である被範囲検索鍵を前記クライアント端末の範囲検索鍵生成部が生成し、
前記被範囲検索鍵を前記部分結合命令として前記クライアント端末の前記範囲検索鍵生成部が前記暗号化データベースサーバに送信することを特徴とする、付記１０に記載の暗号化データ結合方法。
【０１３０】
（付記１２）  暗号化された前記第１の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を前記暗号化データベースサーバの範囲検索部が抽出し、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから前記暗号化データベースサーバの範囲内導出部が対象検索鍵を生成し、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第１の表の前記抽出された行に対応する暗号化された前記第２の表の行を前記暗号化データベースサーバの検索部が発見してこれらの行について前記結合を行うことを特徴とする、付記１１に記載の暗号化データ結合方法。
【０１３１】
（付記１３）  クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記クライアント端末が備えるコンピュータに、
外部から入力されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して前記暗号化データベースサーバに出力する手順、
および前記暗号化された第１の表の前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行について前記暗号化された第１および第２の表を前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に前記暗号化データベースサーバに送信する手順
を実行させることを特徴とする暗号化データ結合プログラム。
【０１３２】
（付記１４）  前記秘密鍵を利用して、前記第１の表の前記ｂ列目の要素を検索するための鍵である検索鍵を生成する手順、
前記秘密鍵を利用して、前記第２の表の前記ｃ列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する手順、
前記秘密鍵を利用して、前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する手順、
前記秘密鍵を利用して、前記第１および第２の表の各要素を暗号化する手順、
前記秘密鍵および前記検索鍵を利用して、前記第１の表の前記ａ列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を生成する手順、
前記第１の表の前記ａ列目の要素を前記被範囲検索鍵と暗号化された前記ａ列目の要素、前記ｂ列目の要素を前記範囲検索暗号文と暗号化された前記ｂ列目の要素とでそれぞれ置換してこれを前記暗号化された第１の表とする手順、
前記第２の表の前記ｃ列目の要素を前記被検索鍵と暗号化された前記ｃ列目の要素で置換してこれを前記暗号化された第２の表とする手順、
前記暗号化された第１および第２の表を前記暗号化データベースサーバに送信する手順、
前記秘密鍵を利用して、前記第１の表の前記ａ列目の要素が前記ｐ以上ｑ未満の特定の値であるものを検索するための鍵である被範囲検索鍵を生成する手順、
および前記被範囲検索鍵を前記部分結合命令として前記暗号化データベースサーバに送信する手順
を実行させることを特徴とする、付記１３に記載の暗号化データ結合プログラム。
【０１３３】
（付記１５）  クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記暗号化データベースサーバが備えるコンピュータに、
前記クライアント端末から全体が暗号化されたａ列目およびｂ列目の各複数のデータを有する第１の表およびｃ列目の複数のデータを有する第２の表を受信して記憶する手順、
および前記クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて、前記範囲検索鍵を利用して前記暗号化された第１の表から前記ａ列目のデータの予め備える値が指定されたｐ以上ｑ未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第１および第２の表の前記ｂ列目およびｃ列目のデータの予め備える値が一致する行を結合して前記クライアント端末に返送する手順
を実行させることを特徴とする暗号化データ結合プログラム。
【０１３４】
（付記１６）  暗号化された前記第１の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を抽出する手順、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから対象検索鍵を生成する手順、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第１の表の前記抽出された行に対応する暗号化された前記第２の表の行を発見してこれらの行について前記結合を行う手順
を実行させることを特徴とする、付記１５に記載の暗号化データ結合プログラム。
【０１３５】
この出願は２０１２年４月２４日に出願された日本出願特願２０１２−０９８４０４を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１３６】
本発明は、暗号化データベースシステムにおいて利用可能である。特に、大量の機密データを収容する暗号化データベースシステムにおいて、顕著な効果を発揮する。
【符号の説明】
【０１３７】
１  暗号化データベースシステム
１０  クライアント端末
１１、５１  プロセッサ
１２、５２  記憶手段
１３、５３  入力手段
１４  出力手段
１５  通信手段
２０  初期設定部
２１  検索鍵生成部
２２  範囲検索鍵生成部
２３  被検索鍵生成部
２４  被範囲検索鍵生成部
２５  検索暗号文生成部
２６  暗号化／復号化部
３１  表「Ｘ」
３１ａ  列「Ａ」
３１ｂ  列「Ｂ」
３２  表「Ｙ」
３２ｃ  列「Ｃ」
３３  秘密鍵
３４ａ  被範囲検索鍵
３４ｂ  検索鍵
３４ｃ  被検索鍵
３４ｄ  範囲検索暗号文
３５ａ  範囲検索鍵
４１  暗号化表「Ｘ」
４２  暗号化表「Ｙ」
４３ａ  対象検索鍵
５０  暗号化データベースサーバ
６１  検索部
６２  範囲内導出部
６３  範囲検索部
【図１】
2013161586.tif 000025
【図２】
2013161586.tif 000026
【図３】
2013161586.tif 000027
【図４】
2013161586.tif 000028
【図５】
2013161586.tif 000029
【図６】
2013161586.tif 000030
【図７】
2013161586.tif 000031
【図８】
2013161586.tif 000032
【図９】
2013161586.tif 000033
【図１０】
2013161586.tif 000034
【図１１】
2013161586.tif 000035
【図１２】
2013161586.tif 000036
【図１３】
2013161586.tif 000037
【図１４】
2013161586.tif 000038
【図１５】
2013161586.tif 000039
【図１６】
2013161586.tif 000040
【国際調査報告】
2013161586.tif 000041
2013161586.tif 000042
2013161586.tif 000043
2013161586.tif 000044