特表-13161586IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧
再表2013-161586暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム
<>
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000025
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000026
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000027
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000028
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000029
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000030
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000031
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000032
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000033
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000034
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000035
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000036
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000037
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000038
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000039
  • 再表WO2013161586-暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム 図000040
< >
(19)【発行国】日本国特許庁(JP)
【公報種別】再公表特許(A1)
(11)【国際公開番号】WO/0
(43)【国際公開日】2013年10月31日
【発行日】2015年12月24日
(54)【発明の名称】暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラム
(51)【国際特許分類】
   G06F 17/30 20060101AFI20151201BHJP
   G09C 1/00 20060101ALI20151201BHJP
   G06F 21/62 20130101ALI20151201BHJP
【FI】
   G06F17/30 120A
   G09C1/00 660D
   G06F17/30 340D
   G06F21/62 327
【審査請求】未請求
【予備審査請求】未請求
【全頁数】34
【出願番号】特願2014-512466(P2014-512466)
(21)【国際出願番号】PCT/0/0
(22)【国際出願日】2013年4月12日
(31)【優先権主張番号】特願2012-98404(P2012-98404)
(32)【優先日】2012年4月24日
(33)【優先権主張国】JP
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IS,JP,KE,KG,KM,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LT,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US,UZ,VC
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100109313
【弁理士】
【氏名又は名称】机 昌彦
(74)【代理人】
【識別番号】100124154
【弁理士】
【氏名又は名称】下坂 直樹
(72)【発明者】
【氏名】古川 潤
【テーマコード(参考)】
5J104
【Fターム(参考)】
5J104PA14
(57)【要約】
【課題】複数の表を復号化する事なく結合し、必要外のデータが漏洩する危険性を防止する暗号化データベースシステム等を提供する。
【解決手段】入力されたa列目およびb列目のデータを有する第1の表とc列目のデータを有する第2の表とを予め記憶された秘密鍵によって暗号化して外部に出力し、この表をa列目の値がp以上q未満であるデータについてb列目およびc列目をキーとして結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末10と、暗号化された第1および第2の表を受信して記憶し、範囲検索鍵を利用して暗号化された第1および第2の表からa列目の値がp以上q未満であるデータを各々抽出し、この抽出されたデータに対してb列目およびc列目をキーとして結合して返送する暗号化データベースサーバ50とが相互に接続されて構成される。
【選択図】図1
【特許請求の範囲】
【請求項1】
外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して外部に出力し、これらの表を前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記b列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末と、
前記暗号化された第1および第2の表を受信して記憶し、前記部分結合命令に応じて前記暗号化された第1および第2の表を前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記b列目およびc列目のデータの予め備える値が一致する行を結合してこれを前記クライアント端末に返送する部分結合機能を有する暗号化データベースサーバとが相互に接続されて成り、
前記暗号化データベースサーバの部分結合機能が、
前記範囲検索鍵を利用して前記暗号化された第1の表から前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第1および第2の表の前記b列目およびc列目のデータの予め備える値が一致する行を結合するものであることを特徴とする暗号化データベースシステム。
【請求項2】
前記クライアント端末が、
前記秘密鍵を利用して、前記第1の表の前記b列目の要素を検索するための鍵である検索鍵を生成する検索鍵生成部と、
前記秘密鍵を利用して、前記第2の表の前記c列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する被検索鍵生成部と、
前記秘密鍵を利用して、前記第1の表の前記a列目の要素が前記p以上q未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する被範囲検索鍵生成部と、
前記秘密鍵を利用して、前記第1および第2の表の各要素を暗号化する暗号化部と、
前記秘密鍵および前記検索鍵を利用して、前記第1の表の前記a列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を生成する範囲検索暗号文生成部と
を有し、これらによって前記第1および第2の表を暗号化することを特徴とする、請求項1に記載の暗号化データベースシステム。
【請求項3】
前記クライアント端末の前記暗号化部が、前記第1の表の前記a列目の要素を前記被範囲検索鍵と暗号化された前記a列目の要素、前記b列目の要素を前記範囲検索暗号文と暗号化された前記b列目の要素とでそれぞれ置換し、前記第2の表の前記c列目の要素を前記被検索鍵と暗号化された前記c列目の要素で置換して、これを暗号化された前記第1および第2の表として前記暗号化データベースサーバに送信する機能を有し、
かつ、前記クライアント端末が、前記秘密鍵を利用して前記第1の表の前記a列目の要素が前記p以上q未満の特定の値であるものを検索するための鍵である範囲検索鍵を生成してこれを前記部分結合命令と共に前記暗号化データベースサーバに送信する範囲検索鍵生成部を備えることを特徴とする、請求項2に記載の暗号化データベースシステム。
【請求項4】
前記暗号化データベースサーバが、
暗号化された前記第1の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を抽出する範囲検索部と、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから対象検索鍵を生成する範囲内導出部と、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第1の表の前記抽出された行に対応する暗号化された前記第2の表の行を発見し、これらの行について前記結合を行う検索部と
を有し、これらによって前記部分結合機能を実行することを特徴とする、請求項3に記載の暗号化データベースシステム。
【請求項5】
外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によって暗号化して外部に出力する暗号化部と、
前記秘密鍵を利用して範囲検索鍵を生成する範囲検索鍵生成部とを有すると共に、
この範囲検索鍵生成部が、前記秘密鍵を利用して前記第1および第2の表を前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記b列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記範囲検索鍵と共に外部に送信する機能を有することを特徴とするクライアント端末。
【請求項6】
全体が暗号化されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表をクライアント端末から受信して記憶し、前記クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて前記暗号化された第1および第2の表を前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記b列目およびc列目のデータの予め備える値が一致する行を結合してこれを前記クライアント端末に返送する部分結合機能を有する暗号化データベースサーバ暗号化データベースサーバであって、
前記範囲検索鍵を利用して前記暗号化された第1の表から前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第1および第2の表の前記b列目およびc列目のデータの予め備える値が一致する行を結合する検索部によって前記部分結合機能を実行する
ことを特徴とする暗号化データベースサーバ。
【請求項7】
クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記クライアント端末が、外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して前記暗号化データベースサーバに出力し、
前記暗号化データベースサーバが、前記暗号化された第1および第2の表を受信して記憶し、
前記クライアント端末が、前記暗号化された第1の表の前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記暗号化された第1および第2の表を前記b列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に前記暗号化データベースサーバに送信し、
前記暗号化データベースサーバが、前記範囲検索鍵を利用して前記暗号化された第1の表から前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第1および第2の表の前記b列目およびc列目のデータの予め備える値が一致する行を結合して前記クライアント端末に返送する
ことを特徴とする暗号化データ結合方法。
【請求項8】
クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記クライアント端末が備えるコンピュータに、
外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して前記暗号化データベースサーバに出力する手順、
および前記暗号化された第1の表の前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記暗号化された第1および第2の表を前記b列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に前記暗号化データベースサーバに送信する手順
を実行させることを特徴とする暗号化データ結合プログラム。
【請求項9】
クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記暗号化データベースサーバが備えるコンピュータに、
前記クライアント端末から全体が暗号化されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表を受信して記憶する手順、
および前記クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて、前記範囲検索鍵を利用して前記暗号化された第1の表から前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第1および第2の表の前記b列目およびc列目のデータの予め備える値が一致する行を結合して前記クライアント端末に返送する手順
を実行させることを特徴とする暗号化データ結合プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラムに関し、特に、必要外のデータが漏洩する危険性を防止することを可能とする暗号化データベースシステム等に関する。
【背景技術】
【0002】
企業などにおける業務の根幹がコンピュータ化されることによって、ほとんどの企業が業務で使用する大量のデータを収容する大規模データベースを持つようになっている。これらのデータは、業務上重要なデータであり、また個人情報保護という観点からも、外部に対して漏洩することは絶対にあってはならない。このため、そのような大規模データベースでは、収容されるデータが暗号化されていることが多い。
【0003】
データベースは、多くの表(テーブル)の集合体として捉えることができる。以下、非特許文献1に記載されている、収容されているデータが暗号化されたデータベース(以後暗号化データベースという)で、各要素を復号化することなく2つの表を結合するために行われている、検索可能暗号と呼ばれる暗号方式について説明する。
【0004】
この方式では、暗号学的ハッシュ関数Hashと共通鍵暗号(Enc,Dec)を使用する。暗号化関数Encは、平文をm、暗号鍵をkとすると、c=Enc(k,m)で暗号文cを生成し、復号化関数Decは、暗号文をc、暗号鍵をkとすると、m=Dec(c,k)で暗号文cを復号化する。
【0005】
検索可能暗号では、秘密鍵の組(K,k)を使用して、平文mを以下の数1に示すように暗号化する。復号化は以下の数2に示す形で処理可能である。
【0006】
【数1】
【0007】
【数2】
【0008】
この方式では、平文mが同一であれば、それらの暗号文の第一の要素C[1]は同一となる。即ち、暗号文を復号しなくても平文の同一性を判定することが可能であり、同一の要素について表を自然結合することが可能となる。
【0009】
図9および10は、既存技術である検索可能暗号で、結合される前の表データについて示す説明図である。図9は表「I」901を、図10は表「II」902を各々示す。表「I」901には列「IA」901aおよび列「IB」901bがあり、表「II」902には列「IIB」902aおよび列「IIC」902bがある。
【0010】
図11は、図9および10に示した表「I」901および表「II」902を結合して得られる表「III」903について示す説明図である。表「I」901の列「IB」901b、および表「II」902の列「IIB」902aは、いずれも「カード番号」についてのものであるので、列「IB」=列「IIB」の条件で結合する(列「IB」および列「IIB」で、要素の値が等しいもの同士を結合する)ことが可能であり、これによって表「III」903を得ることが可能である。
【0011】
図12は、図11に示した表「III」903から、列「IA(名前)」が「上田」である行を抽出した表「III’」904について示す説明図である。以上で示した処理では、表「I」901および表「II」902の各要素は暗号化されていない。
【0012】
しかしながら、実際にはこれらが暗号化された状態で、各要素を復号化することなく、以上に示した処理を行う必要がある。そのためには、列「IB」および列「IIB」で要素の値が等しいか否かを判断可能である必要がある。そこで、前述の検索可能暗号という暗号方式を利用する。
【0013】
図13および14は、図9および10に示した表「I」901および表「II」902を、各々検索可能暗号によって暗号化した暗号化表「I」911および暗号化表「II」912について示す説明図である。暗号化表「I」911および暗号化表「II」912では、各要素が前述の数1に示した方式で、秘密鍵の組(K,k)を利用して暗号化されている。
【0014】
図15は、図13および14に示した暗号化表「I」911および暗号化表「II」912を結合して得られる暗号化表「III」913について示す説明図である。暗号化表「I」911および暗号化表「II」912を結合するには、暗号化される前の列「IB」901bと列「IIB」902aの要素の値が等しいか否かを判断する必要がある。
【0015】
検索可能暗号によれば、暗号化された要素のHash(K,m)とHash(k,m’)とが等しいか否かを判断することによって、暗号化される前のmとm’とが等しいか否かを判断することができるので、これによって暗号化表「III」913を得ることができる。
【0016】
図16は、図15に示した暗号化表「III」913から、列「IA(名前)」が「Hash(K,上田)」である行を抽出した暗号化表「III’」914について示す説明図である。以上で説明したように、ここまでで各要素を復号化することなく、暗号化表「III’」914を得ることができる。秘密鍵の組(K,k)を持つ正当なユーザであれば、これに対応する列「IIC」902bの要素、この場合は「上田」さんのクレジットカードの「有効期限」について、その要素を復号化して知ることが可能である。
【0017】
これに関連する他の技術文献として、次の各々がある。特許文献1には、各項目の順位を生成して暗号化したインデックステーブルを使用して、その項目を暗号化したままで範囲検索を行うことができるというリレーショナルデータベースについて記載されている。特許文献2には、キーワードが暗号化されたままの状態でマッチング処理を行うという暗号化データベース検索装置について記載されている。
【0018】
特許文献3には、暗号化されたキーワードによってインデックスファイルを生成して、これによって暗号化された状態のファイルの検索を可能とするという技術が記載されている。特許文献4および5には、分散データベースシステムで表結合にかかる時間を低減するという技術が記載されている。
【先行技術文献】
【特許文献】
【0019】
【特許文献1】特開2003−186725号公報
【特許文献2】特開2005−134990号公報
【特許文献3】特開2010−061103号公報
【特許文献4】特開2010−272030号公報
【特許文献5】特開平04−213765号公報
【非特許文献】
【0020】
【非特許文献1】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.
【発明の概要】
【発明が解決しようとする課題】
【0021】
以上で説明したように、非特許文献1に記載された検索可能暗号による方式を利用すれば、暗号化したまま表を結合し、条件に一致する(特定の列の要素が指定された値と一致する)行を取り出すことが可能である。
【0022】
しかしながら、この方式では、最終的に得られる行以外の行に関しても表が結合されることになる。前述の例でいえば、ユーザは「上田」さんのクレジットカードの有効期限について知ることができればそれでよいのであって、他のメンバの有効期限について知る必要は無い。それにもかかわらず、この方式では、「上田」さん以外のメンバの有効期限についても結合された、図11図15に示したような表が作成される。
【0023】
通常、このようなデータベースシステムはクライアント−サーバ方式で運用されるので、この処理を行っている間は図11図15に示したような「上田」さん以外のメンバの有効期限についても結合された表のデータがサーバ側の装置に記憶されることになるので、その間にそのデータが漏洩する危険性を否定することはできない。
【0024】
図15に示したように各データが暗号化されている場合、秘密鍵の組(K,k)を持っていないユーザは具体的な名前や有効期限を知ることはできないが、結合関係からその暗号文同士の対応を推測することはできる。即ち、最終的に得られる行以外の行に関しても表が結合されるということは、データの関連性に関して必要外の情報が漏洩する危険性があるということを意味する。
【0025】
この問題を解決することが可能な技術は、前述の特許文献1〜5にも記載されていない。そもそもこれらの文献の中で、以上で説明した問題点について言及したものは無いので、当然ながらこれらの文献に記載された技術でこの問題を解決することはできない。
【0026】
本発明の目的は、データベースの暗号化された複数の表を復号化する事なく結合し、さらに必要外のデータが漏洩する危険性を防止することを可能とする暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラムを提供することにある。
【課題を解決するための手段】
【0027】
上記目的を達成するため、本発明に係る暗号化データベースシステムは、外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して外部に出力し、これらの表をa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行についてb列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末と、暗号化された第1および第2の表を受信して記憶し、部分結合命令に応じて暗号化された第1および第2の表をa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行についてb列目およびc列目のデータの予め備える値が一致する行を結合してこれをクライアント端末に返送する部分結合機能を有する暗号化データベースサーバとが相互に接続されて成り、暗号化データベースサーバの部分結合機能が、範囲検索鍵を利用して暗号化された第1の表からa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第1および第2の表のb列目およびc列目のデータの予め備える値が一致する行を結合するものであることを特徴とする。
【0028】
上記目的を達成するため、本発明に係るクライアント端末は、外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によって暗号化して外部に出力する暗号化部と、秘密鍵を利用して範囲検索鍵を生成する範囲検索鍵生成部とを有すると共に、この範囲検索鍵生成部が、秘密鍵を利用して第1および第2の表をa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行についてb列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を範囲検索鍵と共に外部に送信する機能を有することを特徴とする。
【0029】
上記目的を達成するため、本発明に係る暗号化データベースサーバは、全体が暗号化されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表をクライアント端末から受信して記憶し、クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて暗号化された第1および第2の表をa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行についてb列目およびc列目のデータの予め備える値が一致する行を結合してこれをクライアント端末に返送する部分結合機能を有する暗号化データベースサーバ暗号化データベースサーバであって、範囲検索鍵を利用して暗号化された第1の表からa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第1および第2の表のb列目およびc列目のデータの予め備える値が一致する行を結合する検索部によって部分結合機能を実行することを特徴とする。
【0030】
上記目的を達成するため、本発明に係る暗号化データ結合方法は、クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、クライアント端末が、外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して暗号化データベースサーバに出力し、暗号化データベースサーバが、暗号化された第1および第2の表を受信して記憶し、クライアント端末が、暗号化された第1の表のa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について暗号化された第1および第2の表をb列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に暗号化データベースサーバに送信し、暗号化データベースサーバが、範囲検索鍵を利用して暗号化された第1の表からa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第1および第2の表のb列目およびc列目のデータの予め備える値が一致する行を結合してクライアント端末に返送することを特徴とする。
【0031】
上記目的を達成するため、本発明に係る暗号化データ結合プログラムは、クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、クライアント端末が備えるコンピュータに、外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して暗号化データベースサーバに出力する手順、および暗号化された第1の表のa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について暗号化された第1および第2の表をb列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に暗号化データベースサーバに送信する手順を実行させることを特徴とする。
【0032】
上記目的を達成するため、本発明に係る別の暗号化データ結合プログラムは、クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、暗号化データベースサーバが備えるコンピュータに、クライアント端末から全体が暗号化されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表を受信して記憶する手順、およびクライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて、範囲検索鍵を利用して暗号化された第1の表からa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第1および第2の表のb列目およびc列目のデータの予め備える値が一致する行を結合してクライアント端末に返送する手順を実行させることを特徴とする。
【発明の効果】
【0033】
本発明は、上述したように、クライアント端末で秘密鍵から生成された範囲検索鍵を利用して、データベースサーバが第1および第2の表で要素の値がp以上q未満であるものを判定して抽出し、それらの列についてのみ第1および第2の表を結合してクライアント端末に返送するように構成したので、各々の表が復号化されることはなく、かつ必要外のデータについて結合が行われることもない。
【0034】
これによって、データベースの暗号化された複数の表を復号化する事なく結合し、さらにユーザにとって必要外のデータが漏洩する危険性を防止することが可能であるという、優れた特徴を持つ暗号化データベースシステム、クライアント端末およびデータベースサーバ、結合方法およびプログラムを提供することができる。
【図面の簡単な説明】
【0035】
図1】本発明の実施形態に係る暗号化データベースシステムの構成を示す説明図である。
図2図1に示したクライアント端末が表「X」および表「Y」を暗号化して暗号化データベースサーバに送付するという動作について説明する説明図である。
図3図2に示した暗号化される前の表「X」について示す説明図である。
図4図2に示した暗号化される前の表「Y」について示す説明図である。
図5図3に示した表「X」が、図2に示した処理によって暗号化された暗号化表「X」について示す説明図である。
図6図4に示した表「Y」が、図2に示した処理によって暗号化された暗号化表「Y」について示す説明図である。
図7図1で示した暗号化データベースサーバが行う、図5〜6で示した暗号化表「X」および暗号化表「Y」を結合して列「A」の値がp以上q未満である行を抽出する処理について示す説明図である。
図8図1に示したクライアント端末および暗号化データベースサーバが行う処理について示すフローチャートである。
図9】既存技術である検索可能暗号で、結合される前の表「I」について示す説明図である。
図10】既存技術である検索可能暗号で、結合される前の表「II」について示す説明図である。
図11図9および10に示した表「I」および表「II」を結合して得られる表「III」について示す説明図である。
図12図11に示した表「III」から、列「IA(名前)」が「上田」である行を抽出した表「III’」について示す説明図である。
図13図9に示した表「I」を、検索可能暗号によって暗号化した暗号化表「I」について示す説明図である。
図14図10に示した表「II」を、検索可能暗号によって暗号化した暗号化表「II」について示す説明図である。
図15図13および14に示した暗号化表「I」911および暗号化表「II」912を結合して得られる暗号化表「III」について示す説明図である。
図16図15に示した暗号化表「III」から、列「IA(名前)」が「Hash(K,上田)」である行を抽出した暗号化表「III’」について示す説明図である。
【発明を実施するための形態】
【0036】
(実施形態)
以下、本発明の実施形態の構成について添付図1、2、7に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係る暗号化データベースシステム1は、外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して外部に出力し、これらの表をa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行についてb列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末10と、暗号化された第1および第2の表を受信して記憶し、部分結合命令に応じて暗号化された第1および第2の表をa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行についてb列目およびc列目のデータの予め備える値が一致する行を結合してこれをクライアント端末に返送する部分結合機能を有する暗号化データベースサーバ暗号化データベースサーバ50とが相互に接続されて成り、暗号化データベースサーバ50の部分結合機能が、範囲検索鍵を利用して暗号化された第1の表からa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第1および第2の表のb列目およびc列目のデータの予め備える値が一致する行を結合するものである。
【0037】
また、クライアント端末10は、秘密鍵を利用して、第1の表のb列目の要素を検索するための鍵である検索鍵を生成する検索鍵生成部21と、秘密鍵を利用して、第2の表のc列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する被検索鍵生成部23と、秘密鍵を利用して、第1の表のa列目の要素がp以上q未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する被範囲検索鍵生成部24と、秘密鍵を利用して、第1および第2の表の各要素を暗号化する暗号化部(暗号化/復号化部26)と、秘密鍵および検索鍵を利用して、第1の表のa列目の要素を検索鍵に対応させるための情報である範囲検索暗号文を生成する範囲検索暗号文生成部25とを有し、を有し、これらによって第1および第2の表を暗号化する。さらに、暗号化部26が、第1の表のa列目の要素を被範囲検索鍵と暗号化されたa列目の要素、b列目の要素を範囲検索暗号文と暗号化されたb列目の要素とでそれぞれ置換し、第2の表のc列目の要素を被検索鍵と暗号化されたc列目の要素で置換して、これを暗号化された第1および第2の表として暗号化データベースサーバに送信する機能を有し、かつ、秘密鍵を利用して、第1の表のa列目の要素がp以上q未満の特定の値であるものを検索するための鍵である被範囲検索鍵を生成してこれを部分結合命令として暗号化データベースサーバに送信する範囲検索鍵生成部22を備える。
【0038】
一方の暗号化データベースサーバ50は、暗号化された第1の表で範囲検索鍵と被範囲検索鍵とが一致する行を抽出する範囲検索部62と、抽出された行について範囲検索鍵と範囲検索暗号文とから対象検索鍵を生成する範囲内導出部63と、対象検索鍵および被検索鍵を用いて暗号化された第1の表の抽出された行に対応する暗号化された第2の表の行を発見し、これらの行について結合を行う検索部61とを有し、これらによって部分結合機能を実行する。
【0039】
この構成を備えることにより、暗号化データベースシステム1はデータベースの暗号化された複数の表を復号化する事なく結合し、さらにユーザにとって必要外のデータが漏洩する危険性を防止することが可能となる。
以下、これをより詳細に説明する。
【0040】
図1は、本発明の実施形態に係る暗号化データベースシステム1の構成を示す説明図である。暗号化データベースシステム1は、クライアント端末10と暗号化データベースサーバ50とが、LAN(Local Area Network)などを介して相互に接続されて構成される。
【0041】
クライアント端末10は、一般的なコンピュータ装置としての構成を備える。即ち、クライアント端末10は、コンピュータプログラムを実行する主体となるプロセッサ11と、データを記憶する記憶手段12と、ユーザからの操作を受け付ける入力手段13と、ユーザに処理結果を提示する出力手段14と、他のコンピュータとのデータ通信を行う通信手段15とを備える。
【0042】
プロセッサ11では、ユーザからの操作命令に応じて、初期設定部20、検索鍵生成部21、範囲検索鍵生成部22、被検索鍵生成部23、被範囲検索鍵生成部24、範囲検索暗号文生成部25、および暗号化/復号化部26が、各々コンピュータプログラムとして後述するそれぞれの機能を実行されるように構成されている。また、記憶手段12には以後に説明する処理で使用する秘密鍵33が記憶されている。
【0043】
そして入力手段13には、名称が各々「X」および「Y」である表「X」31および表「Y」32が入力される。以後、本明細書では、名称「X」である表の名称「A」である列の、値が「a」である要素を、表「X」の列「A」の要素「a」というように呼ぶ。
【0044】
暗号化データベースサーバ50もまた、一般的なコンピュータ装置としての構成を備える。即ち、暗号化データベースサーバ50は、コンピュータプログラムを実行する主体となるプロセッサ51と、データを記憶する記憶手段52と、他のコンピュータとのデータ通信を行う通信手段53とを備える。
【0045】
プロセッサ51では、クライアント端末10からの操作命令に応じて、検索部61、範囲検索部62、および範囲内導出部63が、コンピュータプログラムとして後述するそれぞれの機能を実行されるように構成されている。また、記憶手段52には表「X」31および表「Y」32を各々暗号化してクライアント端末10から送付された暗号化表「X」41および暗号化表「Y」42が記憶される。
【0046】
上述した各手段の、基本的な動作について説明する。クライアント端末10と暗号化データベースサーバ50には、各種のシステム変数が入力されるか、もしくは予め記憶されている。以下の説明では、それらのシステム変数については当業者にとって公知の事項であるので、必要なもの以外は特に説明しない。
【0047】
まずクライアント端末10の側で、初期設定部20は、各部の動作に必要な初期値を設定する。この詳細については後述する。
【0048】
検索鍵生成部21は、要素が暗号化されている任意の表「X」、表「X」の任意の列「A」、列「A」の任意の要素「a」に対して、表「X」の列「A」の要素「a」を検索する鍵「検索鍵(X、A、a)」を秘密鍵33を用いて生成する。この検索鍵生成部21を関数と考えると、以下の数3のように表現される。
【0049】
【数3】
【0050】
範囲検索鍵生成部22は、各要素が暗号化されている任意の表「X」、表「X」の任意の列「A」、列「A」の任意の要素「a」に対して、表「X」の列「A」の要素でその値が、最小値「a」から最大値「b」までの間にあるものを検索する鍵「範囲検索鍵(X、A、a、b)」を秘密鍵33を用いて生成する。この範囲検索鍵生成部22を関数と考えると、以下の数4のように表現される。
【0051】
【数4】
【0052】
被検索鍵生成部23は、各要素が暗号化されている任意の表「X」、表「X」の任意の列「A」、列「A」の任意の要素「a」に対して、表「X」の列「A」の要素「a」として検索される鍵「被検索鍵(X、A、a)」を秘密鍵33を用いて生成する。この被検索鍵生成部23を関数と考えると、以下の数5のように表現される。
【0053】
【数5】
【0054】
被範囲検索鍵生成部24は、各要素が暗号化されている任意の表「X」、表「X」の任意の列「A」、列「A」の任意の要素「a」に対して、表「X」の列「A」のb≦aなるいかなる要素bとa≦cなるいかなる要素cに関して、b≦a≦cである要素「a」として検索される鍵「被範囲検索鍵(X、A、a)」を秘密鍵33を用いて生成する。この被範囲検索鍵生成部24を関数と考えると、以下の数6のように表現される。
【0055】
【数6】
【0056】
範囲検索暗号文生成部25は、任意の表「X」、表「X」の任意の列「A」、列「A」の任意の要素「a」と検索鍵「K」、に対して、要素「a」を検索鍵「K」に対応させる為の情報「範囲検索暗号文(X、A、a、K)」を秘密鍵を用いて生成する。この範囲検索暗号文生成部25を関数と考えると、以下の数7のように表現される。
【0057】
【数7】
【0058】
暗号化データベースサーバ50の側で、検索部61は、ある表「X」、表「X」のある列「A」、列「A」のある要素「a」に関して生成された被検索鍵(X、A、a)と、表「X」の列「A」のある要素「a’」に関して生成された「検索鍵(X、A、a’)」とに対して、a=a’であるか否かを「検索鍵(X、A、a’)」と「被検索鍵(X、A、a)」から判定する。この検索部61を関数と考えると、以下の数8のように表現される。ここで、0を一致、1を不一致と解釈する。
【0059】
【数8】
【0060】
範囲検索部62は、ある表「X」、表「X」のある列「A」、列「A」のある要素「c」に関して生成された被範囲検索鍵(X、A、c)と、表「X」の列「A」の最小値「a」から最大値「b」に対して生成された「範囲検索鍵(X、A、a、b)」とに対して、a≦c≦bであるか否かを、「範囲検索鍵(X、A、a、b)」と「被範囲検索鍵(X、A、a)」から判定する。この範囲検索部62を関数と考えると、以下の数9のように表現される。ここで、0を一致、1を不一致と解釈する。
【0061】
【数9】
【0062】
範囲内導出部63は、ある表「X」のある列「A」の最小値aから最大値bに対して生成された「範囲検索鍵(X、A、a、b)」と、表「X」の列「A」のa≦d≦bなるある要素「d」と検索鍵「K」に対して生成された「範囲検索暗号文(X、A、d、K)」とから、検索鍵「K」を導出する。この範囲内導出部63を関数と考えると、以下の数10のように表現される。
【0063】
【数10】
【0064】
クライアント端末10側に戻って、暗号化/復号化部26は、暗号文cを秘密鍵によって復号する。また逆に、要素mを秘密鍵によって暗号化することもできる。この暗号化/復号化部26を関数と考えると、以下の数11〜12のように表現される。
【0065】
【数11】
【0066】
【数12】
【0067】
(暗号化表の作成および送付) 図2は、図1に示したクライアント端末10が表「X」31および表「Y」32を暗号化して暗号化データベースサーバ50に送付するという動作について説明する説明図である。図3〜4は、図2に示した暗号化される前の表「X」31および表「Y」32について示す説明図である。図3は表「X」31、図4は表「Y」32について各々示している。
【0068】
クライアント端末10に入力手段13を介して入力される表「X」31および表「Y」32は、表「X」31には列「A」31aと列「B」31b、表「Y」32には列「C」32cが存在する。列「B」31bと列「C」32cが値を取る領域は同一である。
【0069】
表「X」31の行数は自然数nであり、表「X」31の列「A」31aおよび列「B」31bのi番目の要素(1≦i≦n)を各々「a[i]」,「b[i]」という。表「Y」32の行数は自然数mであり、表「Y」32の列「C」32cのi番目の要素(1≦i≦n)を「c[i]」という。
【0070】
被範囲検索鍵生成部24は、iの取りうる1〜nの全ての値に対して、表「X」31、列「A」31a、要素「a[i]」、および秘密鍵33から、数6で示した「被範囲検索鍵(X,A,a[i])」を生成する。これを図2では被範囲検索鍵34aという。
【0071】
検索鍵生成部21は、iの取りうる1〜nの全ての値に対して、表「Y」32、列「C」32c、列Bの要素「b[i]」、および秘密鍵33から、数3で示した「検索鍵(Y,C,b[i])」を生成する。これを図2では検索鍵34bという。
【0072】
範囲検索暗号文生成部25は、iの取りうる1〜nの全ての値に対して、表「X」31、列「A」31a、要素「a[i]」、検索鍵34b、および秘密鍵33から、数7で示した「範囲検索暗号文(X,A,a[i],検索鍵(Y,C,b[i]))を生成する。これを図2では範囲検索暗号文34dという。
【0073】
暗号化/復号化部26は、iの取りうる1〜nの全ての値に対して、要素「a[i]」、および秘密鍵33から、数11に示した各要素の暗号文「enc(a[i])」を生成し、また同様に、要素「b[i]」、および秘密鍵33から、数11に示した各要素の暗号文「enc(b[i])」を生成する。
【0074】
また、この暗号化/復号化部26は、iの取りうる1〜nの全ての値に対して、表「X」31で、列「A」31aの要素「a[i]」を(被範囲検索鍵(X,A,a[i]),enc(a[i]))に置換し、同様に列「B」31bの要素「b[i]」を(範囲検索暗号文(X,A,a[i],検索鍵(Y,C,b[i])),enc(b[i]))に置換する。この置換された表「X」31を、暗号化表「X」41という。
【0075】
一方で、被検索鍵生成部23は、iの取りうる1〜mの全ての値に対して、表「Y」32、列「C」32c、列Cの要素「c[i]」、および秘密鍵33から、数5で示した「被検索鍵(Y,C,c[i])」を生成する。これを図2では被検索鍵34cという。
【0076】
暗号化/復号化部26は、iの取りうる1〜mの全ての値に対して、要素「c[i]」、および秘密鍵33から、数11に示した各要素の暗号文「enc(c[i])」を生成する。また、iの取りうる1〜mの全ての値に対して、表「Y」32で、列「C」32cの要素「c[i]」を(被検索鍵(Y,C,c[i]),enc(c[i]))に置換する。この置換された表「Y」32を、暗号化表「Y」42という。
【0077】
暗号化/復号化部25は、以上で作成された暗号化表「X」41および暗号化表「Y」42を、暗号化データベースサーバ50に送付する。図5〜6は、図3〜4に示した表「X」31および表「Y」32が、図2に示した処理によって暗号化された暗号化表「X」41および暗号化表「Y」42について示す説明図である。図5は暗号化表「X」41、図6は暗号化表「Y」42について各々示している。
【0078】
暗号化データベースサーバ50は、クライアント端末10から受信した暗号化表「X」41および暗号化表「Y」42を、記憶手段52に保存する。そして、クライアント端末10からのコマンドによって、暗号化表「X」41および暗号化表「Y」42に対して結合処理を行い、この結果を依頼元のクライアント端末10に返す。以下、その処理について説明する。
【0079】
(暗号化表に対する結合処理) ここでは、暗号化表「X」41および暗号化表「Y」42の、列「B」の要素「b[i]」と列「C」の要素「c[i]」とが等しくなるものに対して結合を行うことを考える。より具体的には、暗号化表「X」41の列「A」31aの値がp以上q未満である行を暗号化表「X」41と暗号化表「Y」42とを結合した暗号化表から抽出する処理を、実際には暗号化表「X」41および暗号化表「Y」42の全体に対しての結合をせずに行うということについて本実施形態では説明する。
【0080】
一般的に、暗号化表「X」41と暗号化表「Y」42とを結合した暗号化表から、「p以上q未満」などのように値の範囲を指定することによって列「A」31aの値を限定した表を生成することが可能となる。このような結合処理を、本明細書では「部分結合」という。
【0081】
クライアント端末10は、暗号化表「X」41および暗号化表「Y」42を暗号化する際に使用された秘密鍵33を保持しているが、暗号化データベースサーバ50はこれを保持していない。
【0082】
図7は、図1で示した暗号化データベースサーバ50が行う、図5〜6で示した暗号化表「X」41および暗号化表「Y」42を結合して列「A」の値がp以上q未満である行を抽出する処理について示す説明図である。まずクライアント端末10の範囲検索鍵生成部22が、表「X」31、列「A」31a、最小値p、最大値q、および秘密鍵33から、数4で示した「範囲検索鍵(X,A,p,q)」を生成する。
【0083】
クライアント端末10から、以上の「範囲検索鍵(X,A,p,q)」が、部分結合コマンドと共に暗号化データベースサーバ50に送信される。図7では、これを範囲検索鍵35aとして示している。
【0084】
これを受けた暗号化データベースサーバ50では、範囲検索部62が、暗号化表「X」41の列「A」31aの要素である被範囲検索鍵34a=(X,A,a[i])と範囲検索鍵35aとが一致するiを全て発見する。このようなiの集合を範囲集合Sという。ここでi∈Sならa[i]=qである。
【0085】
範囲内導出部63は、範囲集合Sに属する全てのiに対して、範囲検索鍵35a=(X,A,p,q)、範囲検索暗号文34d=(X,A,a[i],検索鍵(Y,C,b[i]))から、対象検索鍵43a=検索鍵(Y,C,b[i])を得る。
【0086】
検索部61は、範囲集合Sに属する全てのiに対して、対象検索鍵43aと、暗号化表「Y」42の列「C」32cの要素である被検索鍵34c=(Y,C,c[j])とが一致するjを発見する。これを満たすjをj[i]という。
【0087】
そして検索部61は、暗号化表「X」41のi行目と暗号化表「Y」42のj[i]行目を結合して、新たな行R[i]を作成し、全てのi∈SについてR[i]をクライアント端末10に返送する。
【0088】
クライアント端末10は、暗号化/復号化部26によって、R[i]の要素であるenc(a[i]),enc(b[i]),enc(c[i])を復号化して、各列要素の原文a[i],b[i],c[i]を得ることができる。また、適切な範囲検索暗号文34dが予め作成されていれば、対象検索鍵43a=検索鍵(Y,C,b[i])を利用して、列「C」とさらに他の列との間で結合を取ることもできる。
【0089】
(より詳細な実施形態の説明) 以上で説明した各手段の動作について、それらの動作をより詳細に説明する。なお、これより以後では、要素Valをt∈{0,1}であるt[i]によって、以下の数13に示すように桁数n桁のビット列で表す。
【0090】
【数13】
【0091】
図8は、図1に示したクライアント端末10および暗号化データベースサーバ50が行う処理について示すフローチャートである。クライアント端末10の側で、初期設定部20は、入力手段13を介して入力された安全変数κから、以下の数14で示される秘密鍵MKをランダムに選択する(ステップS101)。
【0092】
【数14】
そして初期設定部20はさらに、システム変数PMを、以下の数15で示されるハッシュ関数、表の名前の空間、列の名前の空間、列の要素の空間の表現方法の記述として定義し、これらのシステム変数PMおよび秘密鍵MKを出力する(ステップS102)
【0093】
【数15】
【0094】
被範囲検索鍵生成部24は、システム変数PM、秘密鍵MK、表の名前TN(図3〜4でいう「X」「Y」)、列の名前CN(図3〜4でいう「A」「B」「C」)、および要素の値EV(図3〜4でいう「a[i]」「b[i]」「c[i]」)=(c[0]、…、c[n−1])を入力として、まずランダムにI∈{0、1}^κを選び、続いてd[n]=0として、i=0、…、n−1に対して以下の数16で示される各々の値を生成し、最後に被範囲検索鍵RSKDを出力する(ステップS103)。
【0095】
【数16】
【0096】
検索鍵生成部21は、システム変数PM、秘密鍵MK、表の名前TN、列の名前CN、および要素の値EVを入力として、以下の数17で示される検索鍵SKを生成して出力する(ステップS104)。
【0097】
【数17】
被検索鍵生成部23は、システム変数PM、秘密鍵MK、表の名前TN、列の名前CN、および要素の値EVを入力として、以下の数18で示される被検索鍵SKDを生成して出力する(ステップS105)。
【0098】
【数18】
【0099】
範囲検索暗号文生成部25は、システム変数PM、秘密鍵MK、表の名前TN、列の名前CN、要素EV=(c[0]、…、c[n−1])、検索鍵SK、許可鍵GTを入力として、まずランダムにI∈{0、1}^κを選び、続いてi=0、…、n−1に対して以下の数19で示される各々の値を生成し、最後に範囲検索暗号文RCPを出力する(ステップS106)。なお、数19でd[i]は被範囲検索鍵生成部24で生成されたものと同一である。
【0100】
【数19】
【0101】
暗号化/復号化部25は、前述した(図5〜6に示した)ように表「X」31および表「Y」32の各要素を置換して暗号化表「X」41および暗号化表「Y」42を作成する(ステップS107)。そしてこれらの暗号化表「X」41および暗号化表「Y」42を暗号化データベースサーバ50に送付する。暗号化データベースサーバ50では、これらを受信して記憶手段52に記憶する(ステップS151)。
【0102】
クライアント端末10では、その後で、範囲検索鍵生成部22が、システム変数PM、秘密鍵MK、表の名前TN、列の名前CN、要素の最小値Min=(a[0]、…、a[n−1])、要素の最大値Max=(b[0]、…、b[n−1])を入力として、まずランダムにI∈{0、1}^κを選び、(a[L]、…、a[n−1])=(b[L]、…、b[n−1])となる最小のLを探し、d[n]=0として、i=L、…、n−1に対して以下の数20で示される処理を行って各々の値を生成し、最後に範囲検索鍵RSKを出力して、部分結合コマンドと共に暗号化データベースサーバ50に送信する(ステップS108)。
【0103】
【数20】
【0104】
暗号化データベースサーバ50で、範囲検索部62は、システム変数PM、範囲検索鍵35a,RSK=(TN、CN、I’、L、d[L]、…、d[n]、d[0、0]、…、d[0、L−1]、d[1、0]、…、d[1、L−1]、f[0、0]、…、f[0、L−1]、f[1、0]、…、f[1、L−1]、g[L])、被範囲検索鍵RSKD=(I、(h[0]、…、h[n−1])、(f[0]、…、f[n]))を入力として、以下に示される処理を行って。0(一致)または1(不一致)である結果(Res)を次のように出力する(ステップS152)。
【0105】
まずh[L]=Hash(d[L]、(6、TN、CN、I))であるか否かを判断し、これが成立しなければRes=1を出力して終了する。成立していれば、h[θ、i]=Hash(d[y、i]、(6、TN、CN、I))が成り立つ全ての対(θ、i)∈{0、1}×{0、…、L}の組み合わせで、最小のiを取る対(θ、i)を(Θ、H)として、以下の数21の計算を行う。
【0106】
【数21】
【0107】
そして、Θ=0の場合、(e[H]−e[0、H]=1 mod 3であればRes=0、(e[H]−e[0、H]=2 mod 3であればRes=1とする。Θ=1の場合、(e[H]−e[0、H]=2 mod 3であればRes=0、(e[H]−e[0、H]=1 mod 3であればRes=1とする。以上のResを出力して、範囲検索部62による処理は終了する。
【0108】
範囲内導出部63は、システム変数PM、範囲検索鍵RSK=(TN、CN、I’、L、d[L]、…、d[n]、d[0、0]、…、d[0、L−1]、d[1、0]、…、d[1、L−1]、f[0、0]…、f[0、L−1]、f[1、0]、…、f[1、L−1]、g[L])、と範囲検索暗号文RCP=(I、m[0]、…、m[n−1])を入力として、以下の数22で示される処理を行って、対象検索鍵SK’を生成して出力する(ステップS153)。
【0109】
【数22】
【0110】
そして検索部61は、ここで算出された対象検索鍵SK’を利用して、全てのi∈Sに対して、この対象検索鍵SK’とシステム変数PM、被検索鍵SKD=(Y,C,c[j])を入力として、SK’=SKDとなるjを発見して、暗号化表「X」41のi行目と暗号化表「Y」42のj[i]行目を結合して、新たな行R[i]を作成して、全てのi∈SについてR[i]をクライアント端末10に返送する(ステップS154)。
【0111】
クライアント端末10では、このR[i]を暗号化/復号化部26が秘密鍵33によって復号化することによって、「X」31と表「Y」32とを結合し、かつ列「A」の値がp以上q未満である行を得る(ステップS109)。
【0112】
(第1の実施形態の全体的な動作)
次に、上記の実施形態の全体的な動作について説明する。本実施形態に係る暗号化データ結合方法は、クライアント端末10と、暗号化データベースサーバ50とが相互に接続されて構成される暗号化データベースシステム1にあって、クライアント端末が、外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して暗号化データベースサーバに出力し(図8・ステップS101〜107)、暗号化データベースサーバが、暗号化された第1および第2の表を受信して記憶し(図8・ステップS151)、クライアント端末が、暗号化された第1の表のa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について暗号化された第1および第2の表をb列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を秘密鍵から生成された範囲検索鍵と共に暗号化データベースサーバに送信し(図8・ステップS108)、暗号化データベースサーバが、範囲検索鍵を利用して暗号化された第1の表からa列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して暗号化された第1および第2の表のb列目およびc列目のデータの予め備える値が一致する行を結合してクライアント端末に返送する(図8・ステップS152〜154)。
【0113】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するコンピュータであるクライアント端末10および暗号化データベースサーバ50に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、DVD、CD、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
【0114】
本実施形態において、範囲検索暗号文RCPは、範囲検索鍵RSKが与えられることをきっかけとして、検索鍵SKを導出することができる。ここで範囲検索暗号文RCPは、無条件に範囲検索鍵RSKによってきっかけを与える事が出来るわけではないが、RSKの指定する範囲の中の要素を用いてRCPが生成されている場合にはそのきっかけを与えることができる。
【0115】
即ち、前述の結合の例にあるように、片方の表のある列の要素の値が特定の範囲に属するか否かによって、その部分を抜き出して二つの表を結合する事が可能となる。この時、検索鍵SKの導出には範囲検索暗号文RSKが必要とされる事ので、必要とされない行は結合されず、必要外の情報の漏洩を防止することが可能となる。
【0116】
ここで、生成される被範囲検索鍵や範囲検索暗号文の値が列の名前に依存することから帰結される事であるが、同じ値でも異なる表や列にある場合はこれらの同一性が判断できないので、範囲検索鍵RSKが無ければ結合対象の行が特定されることはない。
【0117】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【0118】
上述した各々の実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【0119】
(付記1) 外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して外部に出力し、これらの表を前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記b列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に外部に送信するクライアント端末と、
前記暗号化された第1および第2の表を受信して記憶し、前記部分結合命令に応じて前記暗号化された第1および第2の表を前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記b列目およびc列目のデータの予め備える値が一致する行を結合してこれを前記クライアント端末に返送する部分結合機能を有する暗号化データベースサーバとが相互に接続されて成り、
前記暗号化データベースサーバの部分結合機能が、
前記範囲検索鍵を利用して前記暗号化された第1の表から前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第1および第2の表の前記b列目およびc列目のデータの予め備える値が一致する行を結合するものであることを特徴とする暗号化データベースシステム。
【0120】
(付記2) 前記クライアント端末が、
前記秘密鍵を利用して、前記第1の表の前記b列目の要素を検索するための鍵である検索鍵を生成する検索鍵生成部と、
前記秘密鍵を利用して、前記第2の表の前記c列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する被検索鍵生成部と、
前記秘密鍵を利用して、前記第1の表の前記a列目の要素が前記p以上q未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する被範囲検索鍵生成部と、
前記秘密鍵を利用して、前記第1および第2の表の各要素を暗号化する暗号化部と、
前記秘密鍵および前記検索鍵を利用して、前記第1の表の前記a列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を生成する範囲検索暗号文生成部と
を有し、これらによって前記第1および第2の表を暗号化することを特徴とする、付記1に記載の暗号化データベースシステム。
【0121】
(付記3) 前記クライアント端末の前記暗号化部が、前記第1の表の前記a列目の要素を前記被範囲検索鍵と暗号化された前記a列目の要素、前記b列目の要素を前記範囲検索暗号文と暗号化された前記b列目の要素とでそれぞれ置換し、前記第2の表の前記c列目の要素を前記被検索鍵と暗号化された前記c列目の要素で置換して、これを暗号化された前記第1および第2の表として前記暗号化データベースサーバに送信する機能を有し、
かつ、前記クライアント端末が、前記秘密鍵を利用して前記第1の表の前記a列目の要素が前記p以上q未満の特定の値であるものを検索するための鍵である範囲検索鍵を生成してこれを前記部分結合命令と共に前記暗号化データベースサーバに送信する範囲検索鍵生成部を備えることを特徴とする、付記2に記載の暗号化データベースシステム。
【0122】
(付記4) 前記暗号化データベースサーバが、
暗号化された前記第1の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を抽出する範囲検索部と、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから対象検索鍵を生成する範囲内導出部と、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第1の表の前記抽出された行に対応する暗号化された前記第2の表の行を発見し、これらの行について前記結合を行う検索部と
を有し、これらによって前記部分結合機能を実行することを特徴とする、付記3に記載の暗号化データベースシステム。
【0123】
(付記5) 外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によって暗号化して外部に出力する暗号化部と、
前記秘密鍵を利用して範囲検索鍵を生成する範囲検索鍵生成部とを有すると共に、
この範囲検索鍵生成部が、前記秘密鍵を利用して前記第1および第2の表を前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記b列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記範囲検索鍵と共に外部に送信する機能を有することを特徴とするクライアント端末。
【0124】
(付記6) 前記秘密鍵を利用して、前記第1の表の前記b列目の要素を検索するための鍵である検索鍵を生成する検索鍵生成部と、
前記秘密鍵を利用して、前記第2の表の前記c列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する被検索鍵生成部と、
前記秘密鍵を利用して、前記第1の表の前記a列目の要素が前記p以上q未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する被範囲検索鍵生成部と、
前記秘密鍵を利用して、前記第1および第2の表の各要素を暗号化する暗号化部と、
前記秘密鍵および前記検索鍵を利用して、前記第1の表の前記a列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を生成する範囲検索暗号文生成部と
を有することを特徴とする、付記5に記載のクライアント端末。
【0125】
(付記7) 前記暗号化部が、前記第1の表の前記a列目の要素を前記被範囲検索鍵と暗号化された前記a列目の要素、前記b列目の要素を前記範囲検索暗号文と暗号化された前記b列目の要素とでそれぞれ置換し、前記第2の表の前記c列目の要素を前記被検索鍵と暗号化された前記c列目の要素で置換して、これを暗号化された前記第1および第2の表として前記暗号化データベースサーバに送信する機能を有し、
かつ、前記秘密鍵を利用して、前記第1の表の前記a列目の要素が前記p以上q未満の特定の値であるものを検索するための鍵である被範囲検索鍵を生成してこれを前記部分結合命令として前記暗号化データベースサーバに送信する範囲検索鍵生成部を備えることを特徴とする、付記6に記載のクライアント端末。
【0126】
(付記8) 暗号化された第1および第2の表をクライアント端末から受信して記憶し、前記クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて前記暗号化された第1および第2の表を前記a列目の値がp以上q未満であるデータについて前記b列目およびc列目をキーとして結合してこれを前記クライアント端末に出力する暗号化データベースサーバであって、
前記範囲検索鍵を利用して前記暗号化された第1および第2の表から前記a列目の値がp以上q未満であるデータを各々抽出し、この抽出されたデータに対して前記b列目およびc列目をキーとして結合する検索部
を有することを特徴とする暗号化データベースサーバ。
【0127】
(付記9) 暗号化された前記第1の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を抽出する範囲検索部と、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから対象検索鍵を生成する範囲内導出部と、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第1の表の前記抽出された行に対応する暗号化された前記第2の表の行を発見し、これらの行について前記結合を行う検索部と
を有することを特徴とする、付記8に記載の暗号化データベースサーバ。
【0128】
(付記10) クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記クライアント端末が、外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して前記暗号化データベースサーバに出力し、
前記暗号化データベースサーバが、前記暗号化された第1および第2の表を受信して記憶し、
前記クライアント端末が、前記暗号化された第1の表の前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記暗号化された第1および第2の表を前記b列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に前記暗号化データベースサーバに送信し、
前記暗号化データベースサーバが、前記範囲検索鍵を利用して前記暗号化された第1の表から前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第1および第2の表の前記b列目およびc列目のデータの予め備える値が一致する行を結合して前記クライアント端末に返送する
ことを特徴とする暗号化データ結合方法。
【0129】
(付記11) 前記秘密鍵を利用して、前記第1の表の前記b列目の要素を検索するための鍵である検索鍵を前記クライアント端末の検索鍵生成部が生成し、
前記秘密鍵を利用して、前記第2の表の前記c列目の要素が特定の値で検索されるための鍵である被検索鍵を前記クライアント端末の被検索鍵生成部が生成し、
前記秘密鍵を利用して、前記第1の表の前記a列目の要素が前記p以上q未満である特定の値で検索されるための鍵である被範囲検索鍵を前記クライアント端末の被範囲検索鍵生成部が生成し、
前記秘密鍵を利用して、前記第1および第2の表の各要素を前記クライアント端末の暗号化部が暗号化し、
前記秘密鍵および前記検索鍵を利用して、前記第1の表の前記a列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を前記クライアント端末の範囲検索暗号文生成部が生成し、
前記第1の表の前記a列目の要素を前記被範囲検索鍵と暗号化された前記a列目の要素、前記b列目の要素を前記範囲検索暗号文と暗号化された前記b列目の要素とで前記クライアント端末の前記暗号化部がそれぞれ置換してこれを前記暗号化された第1の表とし、
前記第2の表の前記c列目の要素を前記被検索鍵と暗号化された前記c列目の要素で前記クライアント端末の前記暗号化部が置換してこれを前記暗号化された第2の表とし、
前記暗号化された第1および第2の表を前記クライアント端末の前記暗号化部が前記暗号化データベースサーバに送信し、
前記秘密鍵を利用して、前記第1の表の前記a列目の要素が前記p以上q未満の特定の値であるものを検索するための鍵である被範囲検索鍵を前記クライアント端末の範囲検索鍵生成部が生成し、
前記被範囲検索鍵を前記部分結合命令として前記クライアント端末の前記範囲検索鍵生成部が前記暗号化データベースサーバに送信することを特徴とする、付記10に記載の暗号化データ結合方法。
【0130】
(付記12) 暗号化された前記第1の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を前記暗号化データベースサーバの範囲検索部が抽出し、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから前記暗号化データベースサーバの範囲内導出部が対象検索鍵を生成し、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第1の表の前記抽出された行に対応する暗号化された前記第2の表の行を前記暗号化データベースサーバの検索部が発見してこれらの行について前記結合を行うことを特徴とする、付記11に記載の暗号化データ結合方法。
【0131】
(付記13) クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記クライアント端末が備えるコンピュータに、
外部から入力されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表に係るデータ全体を予め記憶された秘密鍵によってそれぞれ暗号化して前記暗号化データベースサーバに出力する手順、
および前記暗号化された第1の表の前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行について前記暗号化された第1および第2の表を前記b列目およびc列目のデータの予め備える値が一致する行を結合させる部分結合命令を前記秘密鍵から生成された範囲検索鍵と共に前記暗号化データベースサーバに送信する手順
を実行させることを特徴とする暗号化データ結合プログラム。
【0132】
(付記14) 前記秘密鍵を利用して、前記第1の表の前記b列目の要素を検索するための鍵である検索鍵を生成する手順、
前記秘密鍵を利用して、前記第2の表の前記c列目の要素が特定の値で検索されるための鍵である被検索鍵を生成する手順、
前記秘密鍵を利用して、前記第1の表の前記a列目の要素が前記p以上q未満である特定の値で検索されるための鍵である被範囲検索鍵を生成する手順、
前記秘密鍵を利用して、前記第1および第2の表の各要素を暗号化する手順、
前記秘密鍵および前記検索鍵を利用して、前記第1の表の前記a列目の要素を前記検索鍵に対応させるための情報である範囲検索暗号文を生成する手順、
前記第1の表の前記a列目の要素を前記被範囲検索鍵と暗号化された前記a列目の要素、前記b列目の要素を前記範囲検索暗号文と暗号化された前記b列目の要素とでそれぞれ置換してこれを前記暗号化された第1の表とする手順、
前記第2の表の前記c列目の要素を前記被検索鍵と暗号化された前記c列目の要素で置換してこれを前記暗号化された第2の表とする手順、
前記暗号化された第1および第2の表を前記暗号化データベースサーバに送信する手順、
前記秘密鍵を利用して、前記第1の表の前記a列目の要素が前記p以上q未満の特定の値であるものを検索するための鍵である被範囲検索鍵を生成する手順、
および前記被範囲検索鍵を前記部分結合命令として前記暗号化データベースサーバに送信する手順
を実行させることを特徴とする、付記13に記載の暗号化データ結合プログラム。
【0133】
(付記15) クライアント端末と、暗号化データベースサーバとが相互に接続されて構成される暗号化データベースシステムにあって、
前記暗号化データベースサーバが備えるコンピュータに、
前記クライアント端末から全体が暗号化されたa列目およびb列目の各複数のデータを有する第1の表およびc列目の複数のデータを有する第2の表を受信して記憶する手順、
および前記クライアント端末から受信した範囲検索鍵を含む部分結合命令に応じて、前記範囲検索鍵を利用して前記暗号化された第1の表から前記a列目のデータの予め備える値が指定されたp以上q未満の範囲にある行を抽出し、この抽出された行に対して前記暗号化された第1および第2の表の前記b列目およびc列目のデータの予め備える値が一致する行を結合して前記クライアント端末に返送する手順
を実行させることを特徴とする暗号化データ結合プログラム。
【0134】
(付記16) 暗号化された前記第1の表で前記範囲検索鍵と前記被範囲検索鍵とが一致する行を抽出する手順、
前記抽出された行について前記範囲検索鍵と前記範囲検索暗号文とから対象検索鍵を生成する手順、
前記対象検索鍵および前記被検索鍵を用いて暗号化された前記第1の表の前記抽出された行に対応する暗号化された前記第2の表の行を発見してこれらの行について前記結合を行う手順
を実行させることを特徴とする、付記15に記載の暗号化データ結合プログラム。
【0135】
この出願は2012年4月24日に出願された日本出願特願2012−098404を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【0136】
本発明は、暗号化データベースシステムにおいて利用可能である。特に、大量の機密データを収容する暗号化データベースシステムにおいて、顕著な効果を発揮する。
【符号の説明】
【0137】
1 暗号化データベースシステム
10 クライアント端末
11、51 プロセッサ
12、52 記憶手段
13、53 入力手段
14 出力手段
15 通信手段
20 初期設定部
21 検索鍵生成部
22 範囲検索鍵生成部
23 被検索鍵生成部
24 被範囲検索鍵生成部
25 検索暗号文生成部
26 暗号化/復号化部
31 表「X」
31a 列「A」
31b 列「B」
32 表「Y」
32c 列「C」
33 秘密鍵
34a 被範囲検索鍵
34b 検索鍵
34c 被検索鍵
34d 範囲検索暗号文
35a 範囲検索鍵
41 暗号化表「X」
42 暗号化表「Y」
43a 対象検索鍵
50 暗号化データベースサーバ
61 検索部
62 範囲内導出部
63 範囲検索部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
【国際調査報告】