JPWO2019124134A1 - 検索装置、検索方法、プログラム、および記録媒体 - Google Patents

検索装置、検索方法、プログラム、および記録媒体 Download PDF

Info

Publication number
JPWO2019124134A1
JPWO2019124134A1 JP2019560978A JP2019560978A JPWO2019124134A1 JP WO2019124134 A1 JPWO2019124134 A1 JP WO2019124134A1 JP 2019560978 A JP2019560978 A JP 2019560978A JP 2019560978 A JP2019560978 A JP 2019560978A JP WO2019124134 A1 JPWO2019124134 A1 JP WO2019124134A1
Authority
JP
Japan
Prior art keywords
concealed
operation result
search
concealment
word
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019560978A
Other languages
English (en)
Other versions
JP6927332B2 (ja
Inventor
大 五十嵐
大 五十嵐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2019124134A1 publication Critical patent/JPWO2019124134A1/ja
Application granted granted Critical
Publication of JP6927332B2 publication Critical patent/JP6927332B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Document Processing Apparatus (AREA)

Abstract

等号判定部は、秘匿化検索対象ワード[xi]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkjの場合にei,j=a1であり、xi,jがkjでない場合にei,j=a0である、ei=(ei,1,…,ei,N)が秘匿された[ei]を得る。ワイルドカード判定部は、[k]を用いた秘密計算によって、kjがワイルドカード文字の場合にwj=b1であり、そうでない場合にwj=b0である、w=(w1,…,wN)が[w]を得る。論理和演算部は、[ei]と[w]とを用いた秘密計算によって、ei,j=a1およびwj=b1の少なくとも一方を満たす場合にyi,j=d1であり、そうでない場合にyi,j=d0である、yi=(yi,1,…,yi,N)が秘匿された[yi]を得る。

Description

本発明は、秘密計算技術に関し、特にデータを秘匿したまま検索を行う技術に関する。
検索ワードおよび検索対象ワード群を秘匿したまま一致検索を行う秘密計算技術が知られている(例えば、非特許文献1等参照)。
濱田浩気, 桐淵直人,五十嵐大,"ラウンド効率のよい秘密計算パターンマッチング(A Round-Efficient Pattern Matching Algorithm for Secure Multi-Party Computation)"コンピュータ・セキュリティシンポジウム(CSS)2014.
従来方式では、ワイルドカード文字を含む検索ワードを用いて秘匿したままの検索を実現しているものの、通信効率が悪く、秘匿化検索対象ワード長と秘匿化検索ワード長を共にNとすると、O(NlogN)もの通信量が必要となってしまう。
本発明は、ワイルドカード文字を含む検索ワードを秘匿したまま、効率良く秘匿されたデータベースの一致検索を行うことを目的とする。
記憶部に秘匿化データベース[x],…,[x]が格納されている。秘匿化データベース[x],…,[x]が含む秘匿化検索対象ワード[x]は、t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N)が秘匿されたものである。入力部は秘匿化検索ワード[k]の入力を受け付ける。秘匿化検索ワード[k]は、ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿されたものである。等号判定部は、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得る。ワイルドカード判定部は、秘匿化検索ワード[k]を用いた秘密計算によって、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得る。論理和演算部は、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、ei,j=aおよびw=bの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw=bの両方を満たす場合にyi,j=dである、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得る。ただし、m,n,t(i),Nが正整数であり、i=1,…,mであり、j=1,…,Nであり、n≦Nであり、t(i)≦Nである。
以上により、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
図1は実施形態の検索システムを例示したブロック図である。 図2は実施形態の検索装置を例示したブロック図である。 図3は第1実施形態の検索方法を説明するためのフロー図である。 図4は第1実施形態の検索方法を説明するための概念図である。 図5は第1実施形態の検索方法を説明するための概念図である。 図6は第1実施形態の検索方法を説明するための概念図である。 図7は第1実施形態の検索方法を説明するための概念図である。 図8は第1実施形態の検索方法を説明するための概念図である。 図9は第1実施形態の検索方法を説明するための概念図である。 図10は第2実施形態の検索方法を説明するためのフロー図である。 図11は第2実施形態の検索方法を説明するための概念図である。 図12は第2実施形態の検索方法を説明するための概念図である。 図13は第2実施形態の検索方法を説明するための概念図である。 図14は第3実施形態の検索方法を説明するためのフロー図である。 図15は第3実施形態の検索方法を説明するための概念図である。 図16は第3実施形態の検索方法を説明するための概念図である。 図17は第4実施形態の検索方法を説明するためのフロー図である。 図18は第4実施形態の検索方法を説明するための概念図である。 図19は第4実施形態の検索方法を説明するための概念図である。 図20は第5実施形態の検索方法を説明するためのフロー図である。 図21は実施形態の検索方法を説明するための概念図である。 図22は第5実施形態の検索方法を説明するための概念図である。 図23は第5実施形態の検索方法を説明するための概念図である。 図24は第5実施形態の検索方法を説明するための概念図である。 図25は第6実施形態の検索方法を説明するためのフロー図である。 図26は第6実施形態の検索方法を説明するための概念図である。 図27は第6実施形態の検索方法を説明するための概念図である。 図28は第6実施形態の検索方法を説明するための概念図である。
以下、図面を参照して本発明の実施形態を説明する。
[第1実施形態]
第1実施形態を説明する。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行う。
<構成>
図1に例示するように、本実施形態の検索システム1は、検索を依頼する依頼装置11、および検索を行う検索装置12−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置12−hは、制御部120−h、等号判定部121−h、ワイルドカード判定部122−h、論理和演算部123−h、論理積演算部127−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置12−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
記憶部128−hには、t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N)(例えば、図4および図6のDB参照)が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]が格納されている。ただし、m,t(i),Nが正整数であり、i=1,…,mであり、j=1,…,Nであり、t(i)≦Nである。検索対象ワードxに含まれるt(i)個の文字xi,1,…,xi,t(i)は検索対象となる通常文字である。一方、検索対象ワードxに含まれる残りのN−t(i)個の文字xi,t(i)+1,…,xi,Nはヌル値を表す特殊文字(ヌル文字)である。ヌル文字は予め定められており(例えば、“0”)、通常文字として利用されない。t(i)=Nの場合、検索対象ワードxはヌル文字を含まない。各文字は例えば有限体の元で表現される。秘密分散方式に基づく秘密計算が行われる場合、秘匿化検索対象ワード[x]は検索対象ワードxの秘密分散値である。準同型性暗号方式に基づく秘密計算が行われる場合、秘匿化検索対象ワード[x]は検索対象ワードxの暗号文である。文字xi,1,…,xi,t(i),…,xi,Nのそれぞれを別々に秘匿化して得られた秘匿値[xi,1],…,[xi,t(i)],…,[xi,N]の集合を秘匿化検索対象ワード[x]としてもよいし、N個の文字xi,1,…,xi,t(i),…,xi,Nをまとめて秘匿化したものを秘匿化検索対象ワード[x]としてもよい。また、各秘匿化検索対象ワード[x]には、コンテンツまたはネットワーク上のコンテンツの位置を表すコンテンツ情報の秘匿値が対応付けられていてもよい。
<検索処理>
図3を用いて本実施形態の検索処理を説明する。
依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)(例えば、図4および図6参照)を秘匿化して秘匿化検索ワード[k]を得る。ただし、nは正整数であり、n≦Nである。文字k,…,kは1個以上のワイルドカード文字を含んでもよい。文字k,…,kのうちワイルドカード以外の文字は通常文字である。ワイルドカード文字は予め定められており(例えば、「*」)、通常文字として利用されない。また、1個のワイルド文字は1個の通常文字または1個のヌル文字に対応する(以下の各実施形態でも同じである)。上述の検索対象ワードx(ただしi=1,…,m)がヌル文字を含まない場合、文字k,…,kのどの文字がワイルドカード文字であってもよい。一方、検索対象ワードxがヌル文字xi,t(i)+1,…,xi,Nを含む場合、本実施形態ではkt(i)+1,…,kがワイルドカード文字を含まないことにする。検索ワードkに含まれるN−n個の文字kn+1,…,kはヌル文字である。ただし、n=Nの場合、検索ワードkはヌル文字を含まない(例えば、図4参照)。検索ワードkに含まれたヌル文字は、上述の検索対象ワードx含まれたヌル文字と同一である。検索装置12−hで秘密分散方式に基づく秘密計算が行われるのであれば、秘匿化検索ワード[k]は検索ワードkの秘密分散値である。一方、検索装置12−hで準同型性暗号方式に基づく秘密計算が行われるのであれば、秘匿化検索ワード[k]は検索ワードkの暗号文である。文字k,…,k,…,kのそれぞれを別々に秘匿化して得られた秘匿値[k],…,[k],…,[k]の集合を秘匿化検索ワード[k]としてもよいし、N個の文字k,…,k,…,kをまとめて秘匿化したものを秘匿化検索ワード[k]としてもよい。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置12−hに送られる。秘匿化検索ワード[k]は、検索装置12−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部121−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、xi,jがkの場合(xi,j=kの場合)にei,j=aであり、xi,jがkでない場合(xi,j≠kの場合)にei,j=aである。ei,j∈{a,a}であり、例えば、a=0であり、a=1である。ワイルドカード文字は通常文字と相違するため、kがワイルドカード文字である場合には必ずei,j=aとなる。同様に、ヌル文字は通常文字と相違するため、kがヌル文字でxi,jが通常文字である場合、および、kが通常文字でxi,jがヌル文字である場合には、必ずei,j=aとなる。また、kおよびxi,jがいずれもヌル文字ならばei,j=aとなる。例えば、等号判定部121−hは、秘密計算によって、j=1,…,Nについて[k]と[xi,j]との等号判定(一致判定)を行い、ei,jを秘匿化した[ei,j]を得、[e1,j],…,[e1,N]の集合を秘匿化演算結果[e]として得る。あるいは、等号判定部121−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、ei,1,…,ei,Nがまとめて秘匿された秘匿化演算結果[e]を得てもよい。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS121−h)。
ワイルドカード判定部122−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである。w∈{b,b}であり、例えば、b=0であり、b=1である。例えば、ワイルドカード判定部122−hは、秘匿化検索ワード[k]と、ワイルドカード文字を秘匿化して得られた秘匿化ワイルドカード文字とを用い、秘密計算によって秘匿化演算結果[w]を得る。一例を挙げると、ワイルドカード判定部122−hは、秘密計算によって、j=1,…,Nについて[k]と秘匿化ワイルドカード文字との等号判定を行い、wを秘匿化した[w]を得、[w],…,[w]の集合を秘匿化演算結果[w]として得る。あるいは、ワイルドカード判定部122−hが、秘匿化検索ワード[k]と秘匿化ワイルドカード文字とを用いた秘密計算によって、w,…,wがまとめて秘匿された秘匿化演算結果[w]を得てもよい。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS122−h)。
論理和演算部123−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。ただし、ei,j=aおよびw=bの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw=bの両方を満たす場合にyi,j=dである。yi,j∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、b=0、b=1、d=0、d=1の場合、yi,j=ei,j∨wである。ただし、「∨」は論理和(OR)を表す。例えば、論理和演算部123−hは、秘密計算によって、j=1,…,Nについて[ei,j]と[w]との論理和を行い、yi,j=ei,j∨wを秘匿化した[yi,j]を得、[yi,1],…,[yi,N]の集合を秘匿化演算結果[y]として得る。あるいは、論理和演算部123−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、yi,1,…,yi,Nがまとめて秘匿された秘匿化演算結果[y]を得てもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS123−h)。
論理積演算部127−hは、記憶部128−hから読み出した秘匿化演算結果[y]を用いた秘密計算によって、一致判定結果zが秘匿された秘匿化一致判定結果[z]を得て出力する。ただし、yi,1=…=yi,N=dの場合にz=gであり、yi,1=…=yi,N=dでない場合にz=gである。z∈{g,g}であり、例えば、g=0であり、g=1である。例えば、d=0、d=1、g=0、g=1の場合、z=yi,1∧…∧yi,Nである。ただし、「∧」は論理積(AND)を表す。z=gは検索対象ワードxが検索ワードkに一致することを表し、z=gは検索対象ワードxが検索ワードkに一致しないことを表す。秘匿化一致判定結果[z]は記憶部128−hに格納される(ステップS127−h)。
出力部1292−hは、各i=1,…,mについての秘匿化一致判定結果[z]を出力する(ステップS1292−h)。秘匿化一致判定結果[z]は、ネットワーク等を経由して依頼装置11に送られる。依頼装置11は各i=1,…,mについて秘匿化一致判定結果[z]を復元してzを得る。例えば、秘密分散方式に基づく秘密計算が行われた場合には、依頼装置11は所定数以上の検索装置12−hから送られた[z]からzを復元する。一方、準同型性暗号方式に基づく秘密計算が行われた場合には、送られた[z]を復号してzを得る。これにより、各iについての検索結果が得られる。その後、これらの検索結果を用いた処理(例えば、一致した秘匿化検索対象ワード[x]に対応するコンテンツ情報の秘匿値の要求など)が実行される。
<具体例>
以下に、a=0、a=1、b=0、b=1、d=0、d=1、g=0、g=1である場合の具体例を示す。
図4に例示するように、N=n=t(i)であり、kがワイルドカード文字「*」であり、1≦r≦nであり、r以外のj=1,…,nについてx1,j=kを満たす場合、e=(1,…,1,0,1,…,1)およびw=(0,…,0,1,0,…,0)となり、y=(1,…,1,1,1,…,1)となる。そのため、z=1となる。
図5に例示するように、N=n=t(i)であり、1およびr以外のj=2,…,nについてのみx2,j=kを満たす場合、e=(0,1,…,1,0,1,…,1)およびw=(0,0,…,0,1,0,…,0)となり、y=(0,1,…,1,1,1,…,1)となる。そのため、z=0となる。
図6から図9はn<Nおよびt(i)<Nの例である。図6に例示するように、kn+1,…,kおよびxi,t(i)+1,…,xi,Nがヌル文字である。
図7に例示するように、t(1)=nであり、kがワイルドカード文字「*」であり、1≦r≦nであり、r以外のj=1,…,nについてx1,j=kを満たす場合、e=(1,1,…,0,…,1,…,1)およびw=(0,0,…,1,…,0,…,0)となり、y=(1,1,…,1,…,1,…,1)となる。そのため、z=1となる。
図8に例示するように、t(2)=n+1であり、kがワイルドカード文字「*」であり、1≦r≦nであり、r以外のj=1,…,nについてx2,j=kを満たす場合、e=(1,1,…,0,…,1,0,1,…,1)およびw=(0,0,…,1,…,0,0,0,…,0)となり、y=(1,1,…,1,…,1,0,1,…,1)となる。そのため、z=0となる。
図9に例示するように、t(3)=n‐1であり、kがワイルドカード文字「*」であり、1≦r≦n‐1であり、r以外のj=1,…,n‐1のみについてx3,j=kを満たす場合、e=(1,1,…,0,…,0,1,1,…,1)およびw=(0,0,…,1,…,0,0,0,…,0)となり、y=(1,1,…,1,…,0,1,1,…,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量(例えば、O(N)の通信量)で行うことができる。
[第2実施形態]
検索対象ワードxの文字xi,t(i)+1,…,xi,Nがヌル文字であり、検索ワードkの文字kt(i)+1,…,kがワイルドカード文字を含み得る場合、第1実施形態の方法では正しく完全一致検索を行うことができないことがある。例えば、図11の例の場合、検索対象ワードxの文字x3,n,…,xi,Nがヌル文字であり、検索ワードkの文字kがワイルドカード文字である。ワイルドカード文字はどのような通常文字にも一致すると判定しなければならないが、ワイルドカード文字はヌル文字とは一致しないと判定しなければならない。しかし、j=1,…,n‐1についてx3,j=kを満たす場合、第1実施形態の方法ではy=(1,1,…,1,…,1,1,1,…,1)となり、z=1となる。本実施形態では、このような場合にも正しく完全一致検索を行う方式を説明する。なお、以下ではこれまで説明した事項との相違点を中心に説明し、共通する事項については同じ参照番号を引用して説明を簡略化する。
<構成>
図1に例示するように、本実施形態の検索システム2は、検索を依頼する依頼装置11、および検索を行う検索装置22−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。
図2に例示するように、本実施形態の検索装置22−hは、制御部120−h、等号判定部121−h、ワイルドカード判定部122−h、論理和演算部223−h、ヌル判定部224−h、論理積演算部127−h,226−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置22−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
第1実施形態と同じである。
<検索処理>
図10を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。ただし、nは正整数であり、n≦Nである。文字k,…,kはワイルドカード文字を含んでもよい。第1実施形態と異なり、検索対象ワードxがヌル文字xi,t(i)+1,…,xi,Nを含んでいる場合に、kt(i)+1,…,kがワイルドカード文字を含んでいてもよい。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置22−hに送られる。秘匿化検索ワード[k]は、検索装置22−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部121−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,N)が秘匿された第1秘匿化演算結果[e]を得て出力する。ただし、xi,jがkの場合(xi,j=kの場合)にei,j=aであり、xi,jがkでない場合(xi,j≠kの場合)にei,j=aである。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS121−h)。
ワイルドカード判定部122−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS122−h)。
ヌル判定部224−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]を用いた秘密計算によって、演算結果μ=(μi,1,…,μi,N)が秘匿された秘匿化演算結果[μ]を得て出力する。ただし、xi,jがヌル文字の場合にμi,j=θであり、xi,jがヌル文字でない場合にμi,j=θである。μi,j∈{θ,θ}であり、例えば、θ=0であり、θ=1である。例えば、ヌル判定部224−hは、秘匿化検索対象ワード[x]と、ヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[μ]を得る。一例を挙げると、ヌル判定部224−hは、秘密計算によって、j=1,…,Nについて[xi,j]と秘匿化ヌル文字との等号判定を行い、μi,jを秘匿化した[μi,j]を得、[μi,1],…,[μi,N]の集合を秘匿化演算結果[μ]として得る。あるいは、ヌル判定部224−hが秘匿化検索対象ワード[x]と秘匿化ヌル文字とを用いた秘密計算によって、μi,1,…,μi,Nがまとめて秘匿された秘匿化演算結果[μ]を得てもよい。秘匿化演算結果[μ]は記憶部128−hに格納される(ステップS224−h)。
論理積演算部226−hは、記憶部128−hから読み出した秘匿化演算結果[w]と秘匿化演算結果[μ]とを用いた秘密計算によって、演算結果v=(vi,1,…,vi,N)が秘匿された秘匿化演算結果[v]を得て出力する。ただし、w=bおよびμi,j=θの両方を満たす場合にvi,j=ρであり、w=bおよびμi,j=θの少なくとも一方を満たす場合にvi,j=ρである。vi,j∈{ρ,ρ}であり、例えば、ρ=0であり、ρ=1である。例えば、b=0、b=1、ρ=0、ρ=1の場合、vi,j=w∧μi,jである。例えば、論理積演算部226−hは、秘密計算によって、j=1,…,Nについて[w]と[μi,j]との論理積を行い、vi,j=w∧μi,jを秘匿化した[vi,j]を得、[vi,1],…,[vi,N]の集合を秘匿化演算結果[v]として得る。あるいは、論理積演算部226−hは、秘匿化演算結果[w]と秘匿化演算結果[μ]とを用いた秘密計算によって、vi,1,…,vi,Nがまとめて秘匿された秘匿化演算結果[v]を得てもよい。秘匿化演算結果[v]は記憶部128−hに格納される(ステップS226−h)。
論理和演算部223−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[v]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。ただし、ei,j=aおよびvi,j=ρの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびvi,j=ρの両方を満たす場合にyi,j=dである。yi,j∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、ρ=0、ρ=1、d=0、d=1の場合、yi,j=ei,j∨vi,jである。例えば、論理和演算部223−hは、秘密計算によって、j=1,…,Nについて[ei,j]と[vi,j]との論理和を行い、yi,j=ei,j∨wi,jを秘匿化した[yi,j]を得、[yi,1],…,[yi,N]の集合を秘匿化演算結果[y]として得る。あるいは、論理和演算部223−hは、秘匿化演算結果[e]と秘匿化演算結果[v]とを用いた秘密計算によって、yi,1,…,yi,Nがまとめて秘匿された秘匿化演算結果[y]を得てもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS223−h)。
その後、第1実施形態で説明したステップS127−h以降の処理が実行される。
<具体例>
以下にa=0、a=1、b=0、b=1、ρ=0、ρ=1、d=0、d=1、g=0、g=1である場合の具体例を示す。
図11から図13はn<Nおよびt(i)<Nの例である。図11に例示するように、kがワイルドカード文字「*」であり、kn+1,…,kおよびxi,t(i)+1,…,xi,Nがヌル文字である。
図12に例示するように、t(1)=nであり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,…,1)、w=(0,0,…,0,1,0,0,…,0)、μ=(1,1,…,1,1,0,0,…,0)、v=(0,0,…,0,1,0,0,…,0)となり、y=(1,1,…,1,1,1,1,…,1)となる。そのため、z=1となる。
図13に例示するように、t(3)=n‐1であり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,…,1)、w=(0,0,…,0,1,0,0,…,0)、μ=(1,1,…,1,0,0,0,…,0)、v=(0,0,…,0,0,0,0,…,0)となり、y=(1,1,…,1,0,1,1,…,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、検索対象ワードxの文字xi,t(i)+1,…,xi,Nがヌル文字であり、検索ワードkの文字kt(i)+1,…,kがワイルドカード文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[第3実施形態]
第3実施形態は第1実施形態の変形例である。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行う。
<構成>
図1に例示するように、本実施形態の検索システム3は、検索を依頼する依頼装置11、および検索を行う検索装置32−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置32−hは、制御部120−h、等号判定部121−h、ワイルドカード判定部122−h、論理和演算部323−h、ヌル判定部325−h、論理積演算部127−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置32−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
第1実施形態と同一である。
<検索処理>
図14を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。ただし、nは正整数であり、n≦Nである。文字k,…,kはワイルドカード文字を含んでもよい。検索対象ワードx(ただしi=1,…,m)がヌル文字を含まない場合、文字k,…,kのどの文字がワイルドカード文字であってもよい。一方、検索対象ワードxがヌル文字xi,t(i)+1,…,xi,Nを含む場合、本実施形態ではkt(i)+1,…,kがワイルドカード文字を含まないことにする。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置32−hに送られる。秘匿化検索ワード[k]は、検索装置32−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部121−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、xi,jがkの場合(xi,j=kの場合)にei,j=aであり、xi,jがkでない場合(xi,j≠kの場合)にei,j=aである。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS121−h)。
ワイルドカード判定部122−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS122−h)。
ヌル判定部325−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果u=(u,…,u)が秘匿された秘匿化演算結果[u]を得て出力する。ただし、kがヌル値の場合にu=cであり、kがヌル値でない場合にu=cである。u∈{c,c}であり、例えば、c=0であり、c=1である。例えば、ヌル判定部325−hは、秘匿化検索ワード[k]とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[u]を得る。一例を挙げると、ヌル判定部325−hは、秘密計算によって、j=1,…,Nについて[k]と秘匿化ヌル文字との等号判定を行い、uを秘匿化した[u]を得、[u],…,[u]の集合を秘匿化演算結果[u]として得る。あるいは、ヌル判定部325−hが秘匿化検索ワード[k]と秘匿化ヌル文字とを用いた秘密計算によって、u,…,uがまとめて秘匿された秘匿化演算結果[u]を得てもよい。秘匿化演算結果[u]は記憶部128−hに格納される(ステップS325−h)。
論理和演算部323−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[w]と秘匿化演算結果[u]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。ただし、ei,j=a、w=b、およびu=cの少なくとも何れかを満たす場合にyi,j=dであり、ei,j=aおよびw=bおよびu=cのすべての満たす場合にyi,j=dである。yi,j∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、b=0、b=1、c=0、c=1、d=0、d=1の場合、yi,j=ei,j∨w∨uである。例えば、論理和演算部323−hは、秘密計算によって、j=1,…,Nについて[ei,j]と[w]と[u]との論理和を行い、yi,j=ei,j∨w∨uを秘匿化した[yi,j]を得、[yi,1],…,[yi,N]の集合を秘匿化演算結果[y]として得る。あるいは、論理和演算部323−hは、秘匿化演算結果[e]と秘匿化演算結果[w]と秘匿化演算結果[u]とを用いた秘密計算によって、yi,1,…,yi,Nがまとめて秘匿された秘匿化演算結果[y]を得てもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS323−h)。
その後、第1実施形態で説明したステップS127−h以降の処理が実行される。
<具体例>
以下に、a=0、a=1、b=0、b=1、c=0、c=1、d=0、d=1、g=0、g=1である場合の具体例を示す。
図15に例示するように、t(2)=n+1であり、j=1,…,nについてx1,j=kを満たす場合、e=(1,1,…,0,…,1,0,1,…,1)、w=(0,0,…,1,…,0,0,0,…,0)、u=(0,0,…,0,…,0,1,1,…,1)、y=(1,1,…,1,…,1,1,1,…,1)となる。そのため、z=1となる。
図16に例示するように、t(3)=n‐1であり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,0,…,0,1,1,…,1)、w=(0,0,…,1,…,0,0,0,…,0)、u=(0,0,…,0,…,0,1,1,…,1)、y=(1,1,…,1,…,0,1,1,…,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[第4実施形態]
第4実施形態は第2,3実施形態の変形例である。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行う。完全一致検索の場合と同様、検索対象ワードxの文字xi,t(i)+1,…,xi,Nがヌル文字であり、検索ワードkの文字kt(i)+1,…,kがワイルドカード文字を含み得る場合、第3実施形態の方法では正しく前方一致検索を行うことができないことがある。本実施形態では、このような場合にも正しく前方一致検索を行う方式を説明する。
<構成>
図1に例示するように、本実施形態の検索システム4は、検索を依頼する依頼装置11、および検索を行う検索装置42−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置42−hは、制御部120−h、等号判定部121−h、ワイルドカード判定部122−h、論理和演算部423−h、ヌル判定部,224−h,325−h、論理積演算部127−h,226−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置32−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
第1実施形態と同じである。
<検索処理>
図17を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。ただし、nは正整数であり、n≦Nである。文字k,…,kはワイルドカード文字を含んでもよい。第3実施形態と異なり、検索対象ワードxがヌル文字xi,t(i)+1,…,xi,Nを含んでいる場合に、kt(i)+1,…,kがワイルドカード文字を含んでいてもよい。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置22−hに送られる。秘匿化検索ワード[k]は、検索装置22−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部121−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、xi,jがkの場合(xi,j=kの場合)にei,j=aであり、xi,jがkでない場合(xi,j≠kの場合)にei,j=aである。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS121−h)。
ワイルドカード判定部122−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS122−h)。
ヌル判定部325−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果u=(u,…,u)が秘匿された秘匿化演算結果[u]を得て出力する。ただし、kがヌル値の場合にu=cであり、kがヌル値でない場合にu=cである。例えば、ヌル判定部325−hは、秘匿化検索ワード[k]とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[u]を得る。秘匿化演算結果[u]は記憶部128−hに格納される(ステップS325−h)。
ヌル判定部224−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]を用いた秘密計算によって、演算結果μ=(μi,1,…,μi,N)が秘匿された秘匿化演算結果[μ]を得て出力する。ただし、xi,jがヌル文字の場合にμi,j=θであり、xi,jがヌル文字でない場合にμi,j=θである。秘匿化演算結果[μ]は記憶部128−hに格納される(ステップS224−h)。
論理積演算部226−hは、記憶部128−hから読み出した秘匿化演算結果[w]と秘匿化演算結果[μ]とを用いた秘密計算によって、演算結果v=(vi,1,…,vi,N)が秘匿された秘匿化演算結果[v]を得て出力する。ただし、w=bおよびμi,j=θの両方を満たす場合にvi,j=ρであり、w=bおよびμi,j=θの少なくとも一方を満たす場合にvi,j=ρである。秘匿化演算結果[v]は記憶部128−hに格納される(ステップS226−h)。
論理和演算部423−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[u]と秘匿化演算結果[v]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。ただし、ei,j=a、vi,j=ρ、およびu=cの少なくとも何れかを満たす場合にyi,j=dであり、ei,j=aおよびvi,j=ρおよびu=cのすべての満たす場合にyi,j=dである。yi,j∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、ρ=0、ρ=1、c=0、c=1、d=0、d=1の場合、yi,j=ei,j∨vi,j∨uである。例えば、論理和演算部423−hは、秘密計算によって、j=1,…,Nについて[ei,j]と[vi,j]と[u]との論理和を行い、yi,j=ei,j∨vi,j∨uを秘匿化した[yi,j]を得、[yi,1],…,[yi,N]の集合を秘匿化演算結果[y]として得る。あるいは、論理和演算部423−hは、秘匿化演算結果[e]と秘匿化演算結果[v]と秘匿化演算結果[u]とを用いた秘密計算によって、yi,1,…,yi,Nがまとめて秘匿された秘匿化演算結果[y]を得てもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS423−h)。
その後、第1実施形態で説明したステップS127−h以降の処理が実行される。
<具体例>
以下に、a=0、a=1、b=0、b=1、c=0、c=1、d=0、d=1、ρ=0、ρ=1、g=0、g=1である場合の具体例を示す。図18および図19はn<Nおよびt(i)<Nの例である。kがワイルドカード文字「*」であり、kn+1,…,kおよびxi,t(i)+1,…,xi,Nがヌル文字である。
図18に例示するように、t(1)=nであり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,…,1)、w=(0,0,…,0,1,0,0,…,0)、u=(0,0,…,0,1,1,…,1)、μ=(1,1,…,1,1,0,0,…,0)、v=(0,0,…,0,1,0,0,…,0)となり、y=(1,1,…,1,1,1,1,…,1)となる。そのため、z=1となる。
図19に例示するように、t(3)=n‐1であり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,…,1)、w=(0,0,…,0,1,0,0,…,0)、u=(0,0,…,0,1,1,…,1)、μ=(1,1,…,1,0,0,0,…,0)、v=(0,0,…,0,0,0,0,…,0)となり、y=(1,1,…,1,0,1,1,…,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、検索対象ワードxの文字xi,t(i)+1,…,xi,Nがヌル文字であり、検索ワードkの文字kt(i)+1,…,kがワイルドカード文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[第5実施形態]
第5実施形態は第1,2実施形態の変形例である。第1,2実施形態では秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であることが前提であった。これに対し、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず、完全一致検索を行うことができる。
図1に例示するように、本実施形態の検索システム5は、検索を依頼する依頼装置11、および検索を行う検索装置52−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置52−hは、制御部120−h、等号判定部521−h、ワイルドカード判定部522−h、論理和演算部523−h、ヌル判定部524−h,525−h、論理積演算部527−h、連結部528−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置52−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
記憶部128−hには、t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N(i))(例えば、図21のDB参照)が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]が格納されている。ただし、m,t(i),N(i)が正整数であり、i=1,…,mであり、j(i)=1,…,N(i)であり、t(i)≦N(i)である。検索対象ワードxに含まれるt(i)個の文字xi,1,…,xi,t(i)は検索対象となる通常文字である。一方、検索対象ワードxに含まれる残りのN(i)−t(i)個の文字xi,t(i)+1,…,xi,N(i)はヌル文字である。文字xi,1,…,xi,t(i),…,xi,N(i)のそれぞれを別々に秘匿化して得られた秘匿値[xi,1],…,[xi,t(i)],…,[xi,N(i)]の集合を秘匿化検索対象ワード[x]としてもよいし、N(i)個の文字xi,1,…,xi,t(i),…,xi,N(i)をまとめて秘匿化したものを秘匿化検索対象ワード[x]としてもよい。その他は第1実施形態で述べた通りである。
<検索処理>
図20を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。ただし、j=1,…,Nであり、nは正整数であり、n≦Nである。文字k,…,kはワイルドカード文字を含んでもよい。検索対象ワードxがヌル文字xi,t(i)+1,…,xi,Nを含んでいる場合に、kt(i)+1,…,kがワイルドカード文字を含んでいてもよい。n,Nが正整数であり、n≦Nである。N≦N(i)のときMmin=Nであり、N>N(i)のときMmin=N(i)である。このようなMminをMmin=min(N(i),N)と表記する。また、N≦N(i)のときNmax=N(i)であり、N>N(i)のときNmax=Nである。このようなMmaxをMmax=max(N(i),N)と表記する。記載表記の制約上、Nminを「Nmin」と表記し、Nmaxを「Nmax」と表記する場合がある。j”=Mmin+1,…,Nであり、j”(i)=Mmin+1,…,N(i)である。ただし、Mmin+1≧Nのときj”は空であり、Mmin+1≧N(i)のときj”(i)は空である。前述のように、文字k,…,k,…,kのそれぞれを別々に秘匿化して得られた秘匿値[k],…,[k],…,[k]の集合を秘匿化検索ワード[k]としてもよいし、N個の文字k,…,k,…,kをまとめて秘匿化したものを秘匿化検索ワード[k]としてもよい。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置52−hに送られる。秘匿化検索ワード[k]は、検索装置52−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部521−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,Nmin)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、j’=1,…,Nminについて、xi,j’がkj’の場合にei,j’=aであり、xi,j’がkj’でない場合にei,j’=aである。ei,j’∈{a,a}であり、例えば、a=0であり、a=1である。例えば、等号判定部521−hは、秘密計算によって、j’=1,…,Nminついて[kj’]と[xi,j’]との等号判定を行い、ei,j’を秘匿化した[ei,j’]を得、[e1,j’],…,[e1,Nmin]の集合を秘匿化演算結果[e]として得る。あるいは、等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、ei,1,…,ei,Nminがまとめて秘匿された秘匿化演算結果[e]を得てもよい。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS521−h)。
ワイルドカード判定部522−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、j’=1,…,Nminについて、kj’がワイルドカード文字の場合にwj’=bであり、kj’がワイルドカード文字でない場合にwj’=bである。例えば、ワイルドカード判定部522−hは、秘匿化検索ワード[k]とワイルドカード文字を秘匿化して得られた秘匿化ワイルドカード文字とを用い、秘密計算によって秘匿化演算結果[w]を得る。一例を挙げると、ワイルドカード判定部522−hは、秘密計算によって、j’=1,…,Nminについて[kj’]と秘匿化ワイルドカード文字との等号判定を行い、wj’を秘匿化した[wj’]を得、[w],…,[wNmin]の集合を秘匿化演算結果[w]として得る。あるいは、ワイルドカード判定部122−hが、秘匿化検索ワード[k]と秘匿化ワイルドカード文字とを用いた秘密計算によって、w,…,wNminがまとめて秘匿された秘匿化演算結果[w]を得てもよい。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS522−h)。
ヌル判定部525−hは、記憶部128−hから読み出した秘匿化検索ワード[k]の少なくとも一部を用いた秘密計算によって、演算結果u’Nmin+1,…,u’が秘匿された秘匿化演算結果[u’]を得て出力する。ただし、j”=Mmin+1,…,Nについて、kj”がヌル文字の場合にu’j”=cであり、kj”がヌル文字でない場合にu’j”=cである。u’j”∈{c,c}であり、例えば、c=0であり、c=1である。例えば、ヌル判定部525−hは、秘匿化検索ワード[k]の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[u’]を得る。一例を挙げると、ヌル判定部525−hは、秘密計算によって、j”=Mmin+1,…,Nについて[kj”]と秘匿化ヌル文字との等号判定を行い、u’j”を秘匿化した[u’j”]を得、[u’Mmin+1],…,[u’]の集合を秘匿化演算結果[u’]として得る。あるいは、ヌル判定部525−hが秘匿化検索ワード[k]と秘匿化ヌル文字とを用いた秘密計算によって、u’Mmin+1,…,u’がまとめて秘匿された秘匿化演算結果[u’]を得てもよい。秘匿化演算結果[u’]は記憶部128−hに格納される。(ステップS525−h)。なお、Mmin+1≧NのときにはステップS525−hの処理は実行されない。
論理和演算部523−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、演算結果e’=(e’i,1,…,e’i,Nmin)が秘匿された秘匿化演算結果[e’]を得て出力する。ただし、j’=1,…,Nminについて、ei,j’=aおよびwj’=bの少なくとも一方を満たす場合にe’i,j’=dであり、ei,j’=aおよびwj’=bの両方を満たす場合にe’i,j’=dである。e’i,j’∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、b=0、b=1、d=0、d=1の場合、e’i,j’=ei,j’∨wj’である。例えば、論理和演算部523−hは、秘密計算によって、j’=1,…,Nminについて、[ei,j’]と[wj’]との論理和を行い、e’i,j’=ei,j’∨wj’を秘匿化した[e’i,j’]を得、[e’i,1],…,[e’i,Nmin]の集合を秘匿化演算結果[e’]として得る。あるいは、論理和演算部523−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、e’i,1,…,e’i,Nminがまとめて秘匿された秘匿化演算結果[e’]を得てもよい。秘匿化演算結果[e’]は記憶部128−hに格納される(ステップS5231−h)。
ヌル判定部524−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]の少なくとも一部を用いた秘密計算によって、演算結果μ’=(μ’i,Nmin+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[μ’]を得て出力する。ただし、j”(i)=Mmin+1,…,N(i)について、xi,j”(i)がヌル文字の場合にμ’i,j”(i)=dであり、xi,j”(i)がヌル文字でない場合にμ’i,j”(i)=dである。μ’i,j”(i)∈{d,d}であり、例えば、d=0であり、d=1である。ヌル判定部524−hは、秘匿化検索対象ワード[x]の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[μ’]を得る。一例を挙げると、ヌル判定部524−hは、秘密計算によって、j”(i)=Mmin+1,…,N(i)について[xi,j”(i)]と秘匿化ヌル文字との等号判定を行い、μ’i,j”(i)を秘匿化した[μ’i,j”(i)]を得、[μ’i,Mmin+1],…,[μ’i,N(i)]の集合を秘匿化演算結果[μ’]として得る。あるいは、ヌル判定部524−hが秘匿化検索対象ワード[x]と秘匿化ヌル文字とを用いた秘密計算によって、μ’i,Nmin+1,…,μ’i,N(i)がまとめて秘匿された秘匿化演算結果[μ’]を得てもよい。秘匿化演算結果[μ’]は記憶部128−hに格納される(ステップS524−h)。なお、Mmin+1≧N(i)のときにはステップS524−hの処理は実行されない。
連結部528−hは、少なくとも秘匿化演算結果[e’]を用いた秘密計算によって、演算結果yが秘匿された秘匿化演算結果[y]を得て出力する。N=N(i)の場合、連結部528−hは、秘匿化演算結果[e’]を秘匿化演算結果[y]として出力する。N>N(i)の場合、連結部528−hは、秘匿化演算結果[u’]および秘匿化演算結果[e’]を用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u’N(i)+1,…,u’)が秘匿された秘匿化演算結果[y]を得て出力する。N<N(i)の場合、連結部528−hは、秘匿化演算結果[e’]と秘匿化演算結果[μ’]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N(i))=(e’i,1,…,e’i,N,μ’i,N+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[y]を得て出力する。[y]はyの要素がそれぞれ秘匿化された秘匿化結果の集合であってもよいし、yのすべての要素をまとめて秘匿化したものであってもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS528−h)。
論理積演算部527−hは、記憶部128−hから読み出した秘匿化演算結果[y]を用いた秘密計算によって、秘匿化演算結果[y]を用いた秘密計算によって、一致判定結果zが秘匿された秘匿化一致判定結果[z]を得て出力する。ただし、yi,1=…=yi,Nmax=dの場合にz=gであり、yi,1=…=yi,Nmax=dでない場合にz=gである。z∈{g,g}であり、例えば、g=0であり、g=1である。例えば、d=0、d=1、g=0、g=1の場合、z=yi,1∧…∧yi,Nmaxである。秘匿化一致判定結果[z]は記憶部128−hに格納される(ステップS527−h)。
その後、第1実施形態で説明したステップS1292−h以降の処理が実行される。
<具体例>
本実施形態の処理をN=N(i)の場合、N>N(i)の場合、N<N(i)の場合に区分して記載すると以下のようになる。
≪N=N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、n≦Nであり、t(i)≦N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。論理和演算部523−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、ei,j=aおよびw=bの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw=bの両方を満たす場合にyi,j=dである、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]=[e’]を得て出力する。例えば、図23に例示するように、a=0、a=1、b=0、b=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx2,j=kを満たす場合、e=(1,1,…,1,0,1,0,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、y=e’=(1,1,…,1,1,1,0,1,…,1)となる。そのため、z=0となる。
≪N>N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、j”(i)=N(i)+1,…,Nであり、n≦Nであり、t(i)≦N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,j(i)がkj(i)の場合にei,j(i)=aであり、xi,j(i)がkj(i)でない場合にei,j(i)=aである、演算結果e=(ei,1,…,ei,N(i))が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kj(i)がワイルドカード文字の場合にwj(i)=dであり、kj(i)がワイルドカード文字でない場合にwj(i)=dである、演算結果w=(w,…,wN(i))が秘匿された秘匿化演算結果[w]を得て出力する。ヌル判定部525−h(第1ヌル判定部)は、秘匿化検索ワード[k]の少なくとも一部を用いた秘密計算によって、kj”(i)がヌル文字の場合にu’j”(i)=cであり、kj”(i)がヌル文字でない場合にu’j”(i)=cである、演算結果u’N(i)+1,…,u’が秘匿された秘匿化演算結果[u’]を得て出力する。論理和演算部523−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、ei,j(i)=aおよびwj(i)=bの少なくとも一方を満たす場合にe’i,j(i)=dであり、ei,j(i)=aおよびwj(i)=bの両方を満たす場合にe’i,j(i)=dである、演算結果e’=(e’i,1,…,e’i,N(i))が秘匿された秘匿化演算結果[e’]を得て出力する。連結部528−hは、秘匿化演算結果[u’]および秘匿化演算結果[e’]を用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u’N(i)+1,…,u’)が秘匿された秘匿化演算結果[y]を得て出力する。例えば、図22に例示するように、a=0、a=1、b=0、b=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、e’=(1,1,…,1,1,1,1,1,…,1)となり、y=(1,1,…,1,1,1,1,1,…,1,1)となる。そのため、z=1となる。
≪N<N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、N<N(i)であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、n≦Nであり、t(i)≦N(i)であり、j”(i)=N+1,…,N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。論理和演算部523−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、ei,j=aおよびw=bの少なくとも一方を満たす場合にe’i,j=dであり、ei,j=aおよびw=bの両方を満たす場合にe’i,j=dである、演算結果e’=(e’i,1,…,e’i,N)が秘匿された秘匿化演算結果[e’]を得て出力する。ヌル判定部524−h(第2ヌル判定部)は、秘匿化検索対象ワード[x]の少なくとも一部を用いた秘密計算によって、xi,j”(i)がヌル文字の場合にμ’i,j”(i)=dであり、xi,j”(i)がヌル文字でない場合にμ’i,j”(i)=dである、演算結果μ’=(μ’i,N+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[μ’]を得て出力する。連結部528−hは、秘匿化演算結果[e’]と秘匿化演算結果[μ’]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N(i))=(e’i,1,…,e’i,N,μ’i,N+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[y]を得て出力する。例えば、図24に例示するように、a=0、a=1、b=0、b=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx3,j=kを満たす場合、e=(1,1,…,1,0,0,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、e’=(1,1,…,1,1,0,1,1,…,1)となり、y=(1,1,…,1,1,0,1,1,…,1,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、検索ワードkがワイルドカード文字を含み得る場合であっても、検索ワードkおよび検索対象ワードxの少なくとも一方がヌル文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。さらに、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[第6実施形態]
第6実施形態は第3,4実施形態の変形例である。第3,4実施形態では秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であることが前提であった。これに対し、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず、前方一致検索を行うことができる。
図1に例示するように、本実施形態の検索システム6は、検索を依頼する依頼装置11、および検索を行う検索装置62−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置62−hは、制御部120−h、等号判定部521−h、ワイルドカード判定部522−h、論理和演算部623−h、ヌル判定部625−h、論理積演算部527−h、連結部628−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置62−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
第5実施形態と同じである。
図25を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置62−hに送られる。秘匿化検索ワード[k]は、検索装置62−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部521−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,Nmin)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、j’=1,…,Nminについて、xi,j’がkj’の場合にei,j’=aであり、xi,j’がkj’でない場合にei,j’=aである。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS521−h)。
ワイルドカード判定部522−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、j’=1,…,Nminについて、kj’がワイルドカード文字の場合にwj’=bであり、kj’がワイルドカード文字でない場合にwj’=bである。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS522−h)。
ヌル判定部625−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果u”=(u”,…,u”)が秘匿された秘匿化演算結果[u”]を得て出力する。ただし、j=1,…,Nについて、kがヌル文字の場合にu”=cであり、kがヌル文字でない場合にu”=cである。u”∈{c,c}であり、例えば、c=0であり、c=1である。例えば、ヌル判定部625−hは、秘匿化検索ワード[k]の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[u”]を得る。一例を挙げると、ヌル判定部625−hは、秘密計算によって、j=1,…,Nについて[k]と秘匿化ヌル文字との等号判定を行い、u”を秘匿化した[u”]を得、[u”],…,[u”]の集合を秘匿化演算結果[u”]として得る。あるいは、ヌル判定部625−hが秘匿化検索ワード[k]と秘匿化ヌル文字とを用いた秘密計算によって、u”,…,u”がまとめて秘匿された秘匿化演算結果[u”]を得てもよい。秘匿化演算結果[u”]は記憶部128−hに格納される(ステップS6251−h)。
論理和演算部623−h(第1論理和演算部)は、記憶部128−hから読み出した秘匿化演算結果[w]と秘匿化演算結果[u”]の少なくとも一部を用いた秘密計算によって、演算結果w’=(w’,…,w’Nmin)が秘匿された秘匿化演算結果[w’]を得て出力する。ただし、j’=1,…,Nminについてu”j’=cおよびwj’=bの少なくとも一方を満たす場合にw’j’=b’であり、u”j’=cおよびwj’=bの両方を満たす場合にw’j’=b’である。w’∈{b’,b’}であり、例えば、b’=0であり、b’=1である。例えば、b=0、b=1、c=0、c=1、b’=0、b’=1の場合、w’j’=u”j’∨wj’である。例えば、論理和演算部623−hは、秘密計算によって、j’=1,…,Nminについて、[u”j’]と[wj’]との論理和を行い、w’j’=u”j’∨wj’を秘匿化した[w’j’]を得、[w’],…,[w’Nmin]の集合を秘匿化演算結果[w’]として得る。あるいは、論理和演算部623−hは、秘匿化演算結果[w]と秘匿化演算結果[u”]とを用いた秘密計算によって、w’,…,w’Nminがまとめて秘匿された秘匿化演算結果[w’]を得てもよい。秘匿化演算結果[w’]は記憶部128−hに格納される(ステップS6231−h)。
論理和演算部623−h(第2論理和演算部)は、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[w’]とを用いた秘密計算によって、演算結果e’=(e’i,1,…,e’i,Nmin)が秘匿された秘匿化演算結果[e’]を得て出力する。ただし、j’=1,…,Nminについて、e’i,j’=aおよびw’j’=b’の少なくとも一方を満たす場合にe’i,j’=dであり、ei,j’=aおよびw’j’=b’の両方を満たす場合にe’i,j’=dである。e’i,j’∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、b’=0、b’=1、d=0、d=1の場合、e’i,j’=ei,j’∨w’j’である。例えば、論理和演算部623−hは、秘密計算によって、j’=1,…,Nminについて、[ei,j’]と[w’j’]との論理和を行い、e’i,j’=ei,j’∨w’j’を秘匿化した[e’i,j’]を得、[e’i,1],…,[e’i,Nmin]の集合を秘匿化演算結果[e’]として得る。あるいは、論理和演算部623−hは、秘匿化演算結果[e]と秘匿化演算結果[w’]とを用いた秘密計算によって、e’i,1,…,e’i,Nminがまとめて秘匿された秘匿化演算結果[e’]を得てもよい。秘匿化演算結果[e’]は記憶部128−hに格納される(ステップS6232−h)。
連結部628−hは、少なくとも秘匿化演算結果[e’]を用いた秘密計算によって、演算結果yが秘匿された秘匿化演算結果[y]を得て出力する。N≦N(i)の場合、連結部628−hは、秘匿化演算結果[e’]を秘匿化演算結果[y]として出力する。N>N(i)の場合、連結部628−hは、秘匿化演算結果[e’]と秘匿化演算結果[u”]の少なくとも一部とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u”N(i)+1,…,u”)が秘匿された秘匿化演算結果[y]を得て出力する。[y]はyの要素がそれぞれ秘匿化された秘匿化結果の集合であってもよいし、yのすべての要素をまとめて秘匿化したものであってもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS628−h)。
その後、ステップS527−hおよび第1実施形態で説明したステップS1292−h以降の処理が実行される。
<具体例>
本実施形態の処理をN>N(i)の場合、N≦N(i)の場合に区分して記載すると以下のようになる。
≪N>N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、j”(i)=N(i)+1,…,Nであり、n≦Nであり、t(i)≦N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,j(i)がkj(i)の場合にei,j(i)=aであり、xi,j(i)がkj(i)でない場合にei,j(i)=aである、演算結果e=(ei,1,…,ei,N(i))が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kj(i)がワイルドカード文字の場合にwj(i)=bであり、kj(i)がワイルドカード文字でない場合にwj(i)=bである、演算結果w=(w,…,wN(i))が秘匿された秘匿化演算結果[w]を得て出力する。ヌル判定部625−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがヌル文字の場合にu”=cであり、kがヌル文字でない場合にu”=cである、演算結果u”=(u”,…,u”)が秘匿された秘匿化演算結果[u”]を得て出力する。論理和演算部623−hは、秘匿化演算結果[w]と秘匿化演算結果[u”]の少なくとも一部を用いた秘密計算によって、u”j(i)=cおよびwj(i)=bの少なくとも一方を満たす場合にw’j(i)=b’であり、u”j(i)=cおよびwj(i)=bの両方を満たす場合にw’j(i)=b’である、演算結果w’=(w’,…,w’N(i))が秘匿された秘匿化演算結果[w’]を得て出力する。論理和演算部623−hは、秘匿化演算結果[e]と秘匿化演算結果[w’]とを用いた秘密計算によって、e’i,j(i)=aおよびw’j(i)=b’の少なくとも一方を満たす場合にe’i,j(i)=dであり、ei,j(i)=aおよびw’j(i)=b’の両方を満たす場合にyi,j(i)=dである、演算結果e’=(e’i,1,…,e’i,N(i))が秘匿された秘匿化演算結果[e’]を得て出力する。連結部628−hは秘匿化演算結果[e’]と秘匿化演算結果[u”]の少なくとも一部とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u”N(i)+1,…,u”)が秘匿された秘匿化演算結果[y]を得て出力する。例えば、図26に例示するように、a=0、a=1、b=0、b=1、b’=0、b’=1、c=0、c=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、u”=(0,0,…,0,0,0,1,1,…,1,1)、w’=(0,0,…,0,1,0,1,1,…,1)となり、e’=(1,1,…,1,1,1,1,1,…,1)となり、y=(1,1,…,1,1,1,1,1,…,1,1)となる。そのため、z=1となる。
≪N≦N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、n≦Nであり、t(i)≦N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ヌル判定部625−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがヌル文字の場合にu”=cであり、kがヌル文字でない場合にu”=cである、演算結果u”=(u”,…,u”)が秘匿された秘匿化演算結果[u”]を得て出力する。論理和演算部623−hは、秘匿化演算結果[w]と秘匿化演算結果[u”]を用いた秘密計算によって、u”=cおよびw=bの少なくとも一方を満たす場合にw’=b’であり、u”=cおよびw=bの両方を満たす場合にw’=b’である、演算結果w’=(w’,…,w’)が秘匿された秘匿化演算結果[w’]を得て出力する。論理和演算部623−hは、秘匿化演算結果[e]と秘匿化演算結果[w’]とを用いた秘密計算によって、ei,j=aおよびw’=b’の少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw’=b’の両方を満たす場合にyi,j=dである、演算結果e’=y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。例えば、図27に例示するように、a=0、a=1、b=0、b=1、b’=0、b’=1、c=0、c=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx1,j=kを満たし、N=N(2)の場合、e=(1,1,…,1,0,1,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、u”=(0,0,…,0,0,0,1,1,…,1,1)、w’=(0,0,…,0,1,0,1,1,…,1)となり、e’=(1,1,…,1,1,1,1,1,…,1)となり、y=(1,1,…,1,1,1,1,1,…,1,1)となる。そのため、z=1となる。例えば、図28に例示するように、N<N(3)の場合、e=(1,1,…,1,0,0,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、u”=(0,0,…,0,0,0,1,1,…,1,1)、w’=(0,0,…,0,1,0,1,1,…,1)となり、e’=(1,1,…,1,1,0,1,1,…,1)となり、y=(1,1,…,1,1,0,1,1,…,1,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、検索ワードkがワイルドカード文字を含み得る場合であっても、検索ワードkおよび検索対象ワードxの少なくとも一方がヌル文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。さらに、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[変形例等]
なお、本発明は上述の実施形態に限定されるものではない。例えば、検索装置が秘匿化演算結果[y]をそのまま出力してもよいし、秘匿化演算結果[y]に対してステップS127−hとは異なる秘密計算を施し、それによって得られた結果を出力してもよい。
前述したように秘密計算方式に限定はない。秘密計算による等号判定および論理演算(論理和演算、論理積演算)が可能であれば、秘密分散方式に基づく秘密計算が用いられてもよいし、準同型性暗号方式に基づく秘密計算が用いられてもよい。例えば、以下に記載された秘密計算方式を用いればよい。
参考文献1: Ivan Damgard, Matthias Fitzi, Eike Kiltz, Jesper Buus Nielsen, Tomas Toft, “Unconditionally Secure Constant-Rounds Multi-party Computation for Equality, Comparison, Bits and Exponentiation”, TCC 2006, pp. 285-304.
参考文献2:千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能3パーティ秘匿関数計算の再考(Secure Database Operations Using An Improved 3-party Verifiable Secure Function Evaluation)”, In CSS, 2010.
参考文献3:Takashi Nishide, Kazuo Ohta, “Multiparty computation for interval, equality, and comparison without bit-decomposition protocol”, PKC, pp. 343-360, 2007.
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上記の各装置は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)およびRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されるのではなく、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
1〜4 検索システム
12−1〜H,22−1〜H,32−1〜H,42−1〜H 検索装置
本発明は、秘密計算技術に関し、特にデータを秘匿したまま検索を行う技術に関する。
検索ワードおよび検索対象ワード群を秘匿したまま一致検索を行う秘密計算技術が知られている(例えば、非特許文献1等参照)。
濱田浩気, 桐淵直人,五十嵐大,"ラウンド効率のよい秘密計算パターンマッチング(A Round-Efficient Pattern Matching Algorithm for Secure Multi-Party Computation)"コンピュータ・セキュリティシンポジウム(CSS)2014.
従来方式では、ワイルドカード文字を含む検索ワードを用いて秘匿したままの検索を実現しているものの、通信効率が悪く、秘匿化検索対象ワード長と秘匿化検索ワード長を共にNとすると、O(NlogN)もの通信量が必要となってしまう。
本発明は、ワイルドカード文字を含む検索ワードを秘匿したまま、効率良く秘匿されたデータベースの一致検索を行うことを目的とする。
記憶部に秘匿化データベース[x],…,[x]が格納されている。秘匿化データベース[x],…,[x]が含む秘匿化検索対象ワード[x]は、t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N)が秘匿されたものである。入力部は秘匿化検索ワード[k]の入力を受け付ける。秘匿化検索ワード[k]は、ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿されたものである。等号判定部は、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得る。ワイルドカード判定部は、秘匿化検索ワード[k]を用いた秘密計算によって、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得る。論理和演算部は、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、ei,j=aおよびw=bの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw=bの両方を満たす場合にyi,j=dである、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得る。ただし、m,n,t(i),Nが正整数であり、i=1,…,mであり、j=1,…,Nであり、n≦Nであり、t(i)≦Nである。
以上により、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
図1は実施形態の検索システムを例示したブロック図である。 図2は実施形態の検索装置を例示したブロック図である。 図3は第1実施形態の検索方法を説明するためのフロー図である。 図4は第1実施形態の検索方法を説明するための概念図である。 図5は第1実施形態の検索方法を説明するための概念図である。 図6は第1実施形態の検索方法を説明するための概念図である。 図7は第1実施形態の検索方法を説明するための概念図である。 図8は第1実施形態の検索方法を説明するための概念図である。 図9は第1実施形態の検索方法を説明するための概念図である。 図10は第2実施形態の検索方法を説明するためのフロー図である。 図11は第2実施形態の検索方法を説明するための概念図である。 図12は第2実施形態の検索方法を説明するための概念図である。 図13は第2実施形態の検索方法を説明するための概念図である。 図14は第3実施形態の検索方法を説明するためのフロー図である。 図15は第3実施形態の検索方法を説明するための概念図である。 図16は第3実施形態の検索方法を説明するための概念図である。 図17は第4実施形態の検索方法を説明するためのフロー図である。 図18は第4実施形態の検索方法を説明するための概念図である。 図19は第4実施形態の検索方法を説明するための概念図である。 図20は第5実施形態の検索方法を説明するためのフロー図である。 図21は第5実施形態の検索方法を説明するための概念図である。 図22は第5実施形態の検索方法を説明するための概念図である。 図23は第5実施形態の検索方法を説明するための概念図である。 図24は第5実施形態の検索方法を説明するための概念図である。 図25は第6実施形態の検索方法を説明するためのフロー図である。 図26は第6実施形態の検索方法を説明するための概念図である。 図27は第6実施形態の検索方法を説明するための概念図である。 図28は第6実施形態の検索方法を説明するための概念図である。
以下、図面を参照して本発明の実施形態を説明する。
[第1実施形態]
第1実施形態を説明する。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行う。
<構成>
図1に例示するように、本実施形態の検索システム1は、検索を依頼する依頼装置11、および検索を行う検索装置12−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置12−hは、制御部120−h、等号判定部121−h、ワイルドカード判定部122−h、論理和演算部123−h、論理積演算部127−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置12−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
記憶部128−hには、t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N)(例えば、図4および図6のDB参照)が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]が格納されている。ただし、m,t(i),Nが正整数であり、i=1,…,mであり、j=1,…,Nであり、t(i)≦Nである。検索対象ワードxに含まれるt(i)個の文字xi,1,…,xi,t(i)は検索対象となる通常文字である。一方、検索対象ワードxに含まれる残りのN−t(i)個の文字xi,t(i)+1,…,xi,Nはヌル値を表す特殊文字(ヌル文字)である。ヌル文字は予め定められており(例えば、“0”)、通常文字として利用されない。t(i)=Nの場合、検索対象ワードxはヌル文字を含まない。各文字は例えば有限体の元で表現される。秘密分散方式に基づく秘密計算が行われる場合、秘匿化検索対象ワード[x]は検索対象ワードxの秘密分散値である。準同型性暗号方式に基づく秘密計算が行われる場合、秘匿化検索対象ワード[x]は検索対象ワードxの暗号文である。文字xi,1,…,xi,t(i),…,xi,Nのそれぞれを別々に秘匿化して得られた秘匿値[xi,1],…,[xi,t(i)],…,[xi,N]の集合を秘匿化検索対象ワード[x]としてもよいし、N個の文字xi,1,…,xi,t(i),…,xi,Nをまとめて秘匿化したものを秘匿化検索対象ワード[x]としてもよい。また、各秘匿化検索対象ワード[x]には、コンテンツまたはネットワーク上のコンテンツの位置を表すコンテンツ情報の秘匿値が対応付けられていてもよい。
<検索処理>
図3を用いて本実施形態の検索処理を説明する。
依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)(例えば、図4および図6参照)を秘匿化して秘匿化検索ワード[k]を得る。ただし、nは正整数であり、n≦Nである。文字k,…,kは1個以上のワイルドカード文字を含んでもよい。文字k,…,kのうちワイルドカード文字以外の文字は通常文字である。ワイルドカード文字は予め定められており(例えば、「*」)、通常文字として利用されない。また、1個のワイルド文字は1個の通常文字または1個のヌル文字に対応する(以下の各実施形態でも同じである)。上述の検索対象ワードx(ただしi=1,…,m)がヌル文字を含まない場合、文字k,…,kのどの文字がワイルドカード文字であってもよい。一方、検索対象ワードxがヌル文字xi,t(i)+1,…,xi,Nを含む場合、本実施形態ではkt(i)+1,…,kがワイルドカード文字を含まないことにする。検索ワードkに含まれるN−n個の文字kn+1,…,kはヌル文字である。ただし、n=Nの場合、検索ワードkはヌル文字を含まない(例えば、図4参照)。検索ワードkに含まれたヌル文字は、上述の検索対象ワードx 含まれたヌル文字と同一である。検索装置12−hで秘密分散方式に基づく秘密計算が行われるのであれば、秘匿化検索ワード[k]は検索ワードkの秘密分散値である。一方、検索装置12−hで準同型性暗号方式に基づく秘密計算が行われるのであれば、秘匿化検索ワード[k]は検索ワードkの暗号文である。文字k,…,k,…,kのそれぞれを別々に秘匿化して得られた秘匿値[k],…,[k],…,[k]の集合を秘匿化検索ワード[k]としてもよいし、N個の文字k,…,k,…,kをまとめて秘匿化したものを秘匿化検索ワード[k]としてもよい。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置12−hに送られる。秘匿化検索ワード[k]は、検索装置12−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部121−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、xi,jがkの場合(xi,j=kの場合)にei,j=aであり、xi,jがkでない場合(xi,j≠kの場合)にei,j=aである。ei,j∈{a,a}であり、例えば、a=0であり、a=1である。ワイルドカード文字は通常文字と相違するため、kがワイルドカード文字である場合には必ずei,j=aとなる。同様に、ヌル文字は通常文字と相違するため、kがヌル文字でxi,jが通常文字である場合、および、kが通常文字でxi,jがヌル文字である場合には、必ずei,j=aとなる。また、kおよびxi,jがいずれもヌル文字ならばei,j=aとなる。例えば、等号判定部121−hは、秘密計算によって、j=1,…,Nについて[k]と[xi,j]との等号判定(一致判定)を行い、ei,jを秘匿化した[ei,j]を得、[ i,1 ],…,[ i,]の集合を秘匿化演算結果[e]として得る。あるいは、等号判定部121−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、ei,1,…,ei,Nがまとめて秘匿された秘匿化演算結果[e]を得てもよい。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS121−h)。
ワイルドカード判定部122−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである。w∈{b,b}であり、例えば、b=0であり、b=1である。例えば、ワイルドカード判定部122−hは、秘匿化検索ワード[k]と、ワイルドカード文字を秘匿化して得られた秘匿化ワイルドカード文字とを用い、秘密計算によって秘匿化演算結果[w]を得る。一例を挙げると、ワイルドカード判定部122−hは、秘密計算によって、j=1,…,Nについて[k]と秘匿化ワイルドカード文字との等号判定を行い、wを秘匿化した[w]を得、[w],…,[w]の集合を秘匿化演算結果[w]として得る。あるいは、ワイルドカード判定部122−hが、秘匿化検索ワード[k]と秘匿化ワイルドカード文字とを用いた秘密計算によって、w,…,wがまとめて秘匿された秘匿化演算結果[w]を得てもよい。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS122−h)。
論理和演算部123−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。ただし、ei,j=aおよびw=bの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw=bの両方を満たす場合にyi,j=dである。yi,j∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、b=0、b=1、d=0、d=1の場合、yi,j=ei,j∨wである。ただし、「∨」は論理和(OR)を表す。例えば、論理和演算部123−hは、秘密計算によって、j=1,…,Nについて[ei,j]と[w]との論理和を行い、yi,j=ei,j∨wを秘匿化した[yi,j]を得、[yi,1],…,[yi,N]の集合を秘匿化演算結果[y]として得る。あるいは、論理和演算部123−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、yi,1,…,yi,Nがまとめて秘匿された秘匿化演算結果[y]を得てもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS123−h)。
論理積演算部127−hは、記憶部128−hから読み出した秘匿化演算結果[y]を用いた秘密計算によって、一致判定結果zが秘匿された秘匿化一致判定結果[z]を得て出力する。ただし、yi,1=…=yi,N=dの場合にz=gであり、yi,1=…=yi,N=dでない場合にz=gである。z∈{g,g}であり、例えば、g=0であり、g=1である。例えば、d=0、d=1、g=0、g=1の場合、z=yi,1∧…∧yi,Nである。ただし、「∧」は論理積(AND)を表す。z=gは検索対象ワードxが検索ワードkに一致することを表し、z=gは検索対象ワードxが検索ワードkに一致しないことを表す。秘匿化一致判定結果[z]は記憶部128−hに格納される(ステップS127−h)。
出力部1292−hは、各i=1,…,mについての秘匿化一致判定結果[z]を出力する(ステップS1292−h)。秘匿化一致判定結果[z]は、ネットワーク等を経由して依頼装置11に送られる。依頼装置11は各i=1,…,mについて秘匿化一致判定結果[z]を復元してzを得る。例えば、秘密分散方式に基づく秘密計算が行われた場合には、依頼装置11は所定数以上の検索装置12−hから送られた[z]からzを復元する。一方、準同型性暗号方式に基づく秘密計算が行われた場合には、送られた[z]を復号してzを得る。これにより、各iについての検索結果が得られる。その後、これらの検索結果を用いた処理(例えば、一致した秘匿化検索対象ワード[x]に対応するコンテンツ情報の秘匿値の要求など)が実行される。
<具体例>
以下に、a=0、a=1、b=0、b=1、d=0、d=1、g=0、g=1である場合の具体例を示す。
図4に例示するように、N=n=t(i)であり、kがワイルドカード文字「*」であり、1≦r≦nであり、r以外のj=1,…,nについてx1,j=kを満たす場合、e=(1,…,1,0,1,…,1)およびw=(0,…,0,1,0,…,0)となり、y=(1,…,1,1,1,…,1)となる。そのため、z=1となる。
図5に例示するように、N=n=t(i)であり、1およびr以外のj=2,…,nについてのみx2,j=kを満たす場合、e=(0,1,…,1,0,1,…,1)およびw=(0,0,…,0,1,0,…,0)となり、y=(0,1,…,1,1,1,…,1)となる。そのため、z=0となる。
図6から図9はn<Nおよびt(i)<Nの例である。図6に例示するように、kn+1,…,kおよびxi,t(i)+1,…,xi,Nがヌル文字である。
図7に例示するように、t(1)=nであり、kがワイルドカード文字「*」であり、1≦r≦nであり、r以外のj=1,…,nについてx1,j=kを満たす場合、e=(1,1,…,0,…,1,…,1)およびw=(0,0,…,1,…,0,…,0)となり、y=(1,1,…,1,…,1,…,1)となる。そのため、z=1となる。
図8に例示するように、t(2)=n+1であり、kがワイルドカード文字「*」であり、1≦r≦nであり、r以外のj=1,…,nについてx2,j=kを満たす場合、e=(1,1,…,0,…,1,0,1,…,1)およびw=(0,0,…,1,…,0,0,0,…,0)となり、y=(1,1,…,1,…,1,0,1,…,1)となる。そのため、z=0となる。
図9に例示するように、t(3)=n‐1であり、kがワイルドカード文字「*」であり、1≦r≦n‐1であり、r以外のj=1,…,n‐1のみについてx3,j=kを満たす場合、e=(1,1,…,0,…,0,1,1,…,1)およびw=(0,0,…,1,…,0,0,0,…,0)となり、y=(1,1,…,1,…,0,1,1,…,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量(例えば、O(N)の通信量)で行うことができる。
[第2実施形態]
検索対象ワードxの文字xi,t(i)+1,…,xi,Nがヌル文字であり、検索ワードkの文字kt(i)+1,…,kがワイルドカード文字を含み得る場合、第1実施形態の方法では正しく完全一致検索を行うことができないことがある。例えば、図11の例の場合、検索対象ワードxの文字x3,n,…,xi,Nがヌル文字であり、検索ワードkの文字kがワイルドカード文字である。ワイルドカード文字はどのような通常文字にも一致すると判定しなければならないが、ワイルドカード文字はヌル文字とは一致しないと判定しなければならない。しかし、j=1,…,n‐1についてx3,j=kを満たす場合、第1実施形態の方法ではy=(1,1,…,1,…,1,1,1,…,1)となり、z=1となる。本実施形態では、このような場合にも正しく完全一致検索を行う方式を説明する。なお、以下ではこれまで説明した事項との相違点を中心に説明し、共通する事項については同じ参照番号を引用して説明を簡略化する。
<構成>
図1に例示するように、本実施形態の検索システム2は、検索を依頼する依頼装置11、および検索を行う検索装置22−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。
図2に例示するように、本実施形態の検索装置22−hは、制御部120−h、等号判定部121−h、ワイルドカード判定部122−h、論理和演算部223−h、ヌル判定部224−h、論理積演算部127−h,226−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置22−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
第1実施形態と同じである。
<検索処理>
図10を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。ただし、nは正整数であり、n≦Nである。文字k,…,kはワイルドカード文字を含んでもよい。第1実施形態と異なり、検索対象ワードxがヌル文字xi,t(i)+1,…,xi,Nを含んでいる場合に、kt(i)+1,…,kがワイルドカード文字を含んでいてもよい。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置22−hに送られる。秘匿化検索ワード[k]は、検索装置22−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部121−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、xi,jがkの場合(xi,j=kの場合)にei,j=aであり、xi,jがkでない場合(xi,j≠kの場合)にei,j=aである。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS121−h)。
ワイルドカード判定部122−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS122−h)。
ヌル判定部224−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]を用いた秘密計算によって、演算結果μ=(μi,1,…,μi,N)が秘匿された秘匿化演算結果[μ]を得て出力する。ただし、xi,jがヌル文字の場合にμi,j=θであり、xi,jがヌル文字でない場合にμi,j=θである。μi,j∈{θ,θ}であり、例えば、θ=0であり、θ=1である。例えば、ヌル判定部224−hは、秘匿化検索対象ワード[x]と、ヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[μ]を得る。一例を挙げると、ヌル判定部224−hは、秘密計算によって、j=1,…,Nについて[xi,j]と秘匿化ヌル文字との等号判定を行い、μi,jを秘匿化した[μi,j]を得、[μi,1],…,[μi,N]の集合を秘匿化演算結果[μ]として得る。あるいは、ヌル判定部224−hが秘匿化検索対象ワード[x]と秘匿化ヌル文字とを用いた秘密計算によって、μi,1,…,μi,Nがまとめて秘匿された秘匿化演算結果[μ]を得てもよい。秘匿化演算結果[μ]は記憶部128−hに格納される(ステップS224−h)。
論理積演算部226−hは、記憶部128−hから読み出した秘匿化演算結果[w]と秘匿化演算結果[μ]とを用いた秘密計算によって、演算結果v=(vi,1,…,vi,N)が秘匿された秘匿化演算結果[v]を得て出力する。ただし、w=bおよびμi,j=θの両方を満たす場合にvi,j=ρであり、w=bおよびμi,j=θの少なくとも一方を満たす場合にvi,j=ρである。vi,j∈{ρ,ρ}であり、例えば、ρ=0であり、ρ=1である。例えば、b=0、b=1、ρ=0、ρ=1の場合、vi,j=w∧μi,jである。例えば、論理積演算部226−hは、秘密計算によって、j=1,…,Nについて[w]と[μi,j]との論理積を行い、vi,j=w∧μi,jを秘匿化した[vi,j]を得、[vi,1],…,[vi,N]の集合を秘匿化演算結果[v]として得る。あるいは、論理積演算部226−hは、秘匿化演算結果[w]と秘匿化演算結果[μ]とを用いた秘密計算によって、vi,1,…,vi,Nがまとめて秘匿された秘匿化演算結果[v]を得てもよい。秘匿化演算結果[v]は記憶部128−hに格納される(ステップS226−h)。
論理和演算部223−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[v]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。ただし、ei,j=aおよびvi,j=ρの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびvi,j=ρの両方を満たす場合にyi,j=dである。yi,j∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、ρ=0、ρ=1、d=0、d=1の場合、yi,j=ei,j∨vi,jである。例えば、論理和演算部223−hは、秘密計算によって、j=1,…,Nについて[ei,j]と[vi,j]との論理和を行い、yi,j=ei,j∨wi,jを秘匿化した[yi,j]を得、[yi,1],…,[yi,N]の集合を秘匿化演算結果[y]として得る。あるいは、論理和演算部223−hは、秘匿化演算結果[e]と秘匿化演算結果[v]とを用いた秘密計算によって、yi,1,…,yi,Nがまとめて秘匿された秘匿化演算結果[y]を得てもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS223−h)。
その後、第1実施形態で説明したステップS127−h以降の処理が実行される。
<具体例>
以下にa=0、a=1、b=0、b=1、ρ=0、ρ=1、d=0、d=1、g=0、g=1である場合の具体例を示す。
図11から図13はn<Nおよびt(i)<Nの例である。図11に例示するように、kがワイルドカード文字「*」であり、kn+1,…,kおよびxi,t(i)+1,…,xi,Nがヌル文字である。
図12に例示するように、t(1)=nであり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,…,1)、w=(0,0,…,0,1,0,0,…,0)、μ=(1,1,…,1,1,0,0,…,0)、v=(0,0,…,0,1,0,0,…,0)となり、y=(1,1,…,1,1,1,1,…,1)となる。そのため、z=1となる。
図13に例示するように、t(3)=n‐1であり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,…,1)、w=(0,0,…,0,1,0,0,…,0)、μ=(1,1,…,1,0,0,0,…,0)、v=(0,0,…,0,0,0,0,…,0)となり、y=(1,1,…,1,0,1,1,…,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、検索対象ワードxの文字xi,t(i)+1,…,xi,Nがヌル文字であり、検索ワードkの文字kt(i)+1,…,kがワイルドカード文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[第3実施形態]
第3実施形態は第1実施形態の変形例である。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行う。
<構成>
図1に例示するように、本実施形態の検索システム3は、検索を依頼する依頼装置11、および検索を行う検索装置32−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置32−hは、制御部120−h、等号判定部121−h、ワイルドカード判定部122−h、論理和演算部323−h、ヌル判定部325−h、論理積演算部127−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置32−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
第1実施形態と同一である。
<検索処理>
図14を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。ただし、nは正整数であり、n≦Nである。文字k,…,kはワイルドカード文字を含んでもよい。検索対象ワードx(ただしi=1,…,m)がヌル文字を含まない場合、文字k,…,kのどの文字がワイルドカード文字であってもよい。一方、検索対象ワードxがヌル文字xi,t(i)+1,…,xi,Nを含む場合、本実施形態ではkt(i)+1,…,kがワイルドカード文字を含まないことにする。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置32−hに送られる。秘匿化検索ワード[k]は、検索装置32−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部121−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、xi,jがkの場合(xi,j=kの場合)にei,j=aであり、xi,jがkでない場合(xi,j≠kの場合)にei,j=aである。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS121−h)。
ワイルドカード判定部122−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS122−h)。
ヌル判定部325−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果u=(u,…,u)が秘匿された秘匿化演算結果[u]を得て出力する。ただし、kがヌル値の場合にu=cであり、kがヌル値でない場合にu=cである。u∈{c,c}であり、例えば、c=0であり、c=1である。例えば、ヌル判定部325−hは、秘匿化検索ワード[k]とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[u]を得る。一例を挙げると、ヌル判定部325−hは、秘密計算によって、j=1,…,Nについて[k]と秘匿化ヌル文字との等号判定を行い、uを秘匿化した[u]を得、[u],…,[u]の集合を秘匿化演算結果[u]として得る。あるいは、ヌル判定部325−hが秘匿化検索ワード[k]と秘匿化ヌル文字とを用いた秘密計算によって、u,…,uがまとめて秘匿された秘匿化演算結果[u]を得てもよい。秘匿化演算結果[u]は記憶部128−hに格納される(ステップS325−h)。
論理和演算部323−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[w]と秘匿化演算結果[u]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。ただし、ei,j=a、w=b、およびu=cの少なくとも何れかを満たす場合にyi,j=dであり、ei,j=aおよびw=bおよびu=cのすべて満たす場合にyi,j=dである。yi,j∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、b=0、b=1、c=0、c=1、d=0、d=1の場合、yi,j=ei,j∨w∨uである。例えば、論理和演算部323−hは、秘密計算によって、j=1,…,Nについて[ei,j]と[w]と[u]との論理和を行い、yi,j=ei,j∨w∨uを秘匿化した[yi,j]を得、[yi,1],…,[yi,N]の集合を秘匿化演算結果[y]として得る。あるいは、論理和演算部323−hは、秘匿化演算結果[e]と秘匿化演算結果[w]と秘匿化演算結果[u]とを用いた秘密計算によって、yi,1,…,yi,Nがまとめて秘匿された秘匿化演算結果[y]を得てもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS323−h)。
その後、第1実施形態で説明したステップS127−h以降の処理が実行される。
<具体例>
以下に、a=0、a=1、b=0、b=1、c=0、c=1、d=0、d=1、g=0、g=1である場合の具体例を示す。
図15に例示するように、t(2)=n+1であり、j=1,…,nについてx1,j=kを満たす場合、e=(1,1,…,0,…,1,0,1,…,1)、w=(0,0,…,1,…,0,0,0,…,0)、u=(0,0,…,0,…,0,1,1,…,1)、y=(1,1,…,1,…,1,1,1,…,1)となる。そのため、z=1となる。
図16に例示するように、t(3)=n‐1であり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,0,…,0,1,1,…,1)、w=(0,0,…,1,…,0,0,0,…,0)、u=(0,0,…,0,…,0,1,1,…,1)、y=(1,1,…,1,…,0,1,1,…,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[第4実施形態]
第4実施形態は第2,3実施形態の変形例である。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行う。完全一致検索の場合と同様、検索対象ワードxの文字xi,t(i)+1,…,xi,Nがヌル文字であり、検索ワードkの文字kt(i)+1,…,kがワイルドカード文字を含み得る場合、第3実施形態の方法では正しく前方一致検索を行うことができないことがある。本実施形態では、このような場合にも正しく前方一致検索を行う方式を説明する。
<構成>
図1に例示するように、本実施形態の検索システム4は、検索を依頼する依頼装置11、および検索を行う検索装置42−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置42−hは、制御部120−h、等号判定部121−h、ワイルドカード判定部122−h、論理和演算部423−h、ヌル判定部224−h,325−h、論理積演算部127−h,226−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置2−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
第1実施形態と同じである。
<検索処理>
図17を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。ただし、nは正整数であり、n≦Nである。文字k,…,kはワイルドカード文字を含んでもよい。第3実施形態と異なり、検索対象ワードxがヌル文字xi,t(i)+1,…,xi,Nを含んでいる場合に、kt(i)+1,…,kがワイルドカード文字を含んでいてもよい。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置2−hに送られる。秘匿化検索ワード[k]は、検索装置2−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部121−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、xi,jがkの場合(xi,j=kの場合)にei,j=aであり、xi,jがkでない場合(xi,j≠kの場合)にei,j=aである。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS121−h)。
ワイルドカード判定部122−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS122−h)。
ヌル判定部325−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果u=(u,…,u)が秘匿された秘匿化演算結果[u]を得て出力する。ただし、kがヌル値の場合にu=cであり、kがヌル値でない場合にu=cである。例えば、ヌル判定部325−hは、秘匿化検索ワード[k]とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[u]を得る。秘匿化演算結果[u]は記憶部128−hに格納される(ステップS325−h)。
ヌル判定部224−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]を用いた秘密計算によって、演算結果μ=(μi,1,…,μi,N)が秘匿された秘匿化演算結果[μ]を得て出力する。ただし、xi,jがヌル文字の場合にμi,j=θであり、xi,jがヌル文字でない場合にμi,j=θである。秘匿化演算結果[μ]は記憶部128−hに格納される(ステップS224−h)。
論理積演算部226−hは、記憶部128−hから読み出した秘匿化演算結果[w]と秘匿化演算結果[μ]とを用いた秘密計算によって、演算結果v=(vi,1,…,vi,N)が秘匿された秘匿化演算結果[v]を得て出力する。ただし、w=bおよびμi,j=θの両方を満たす場合にvi,j=ρであり、w=bおよびμi,j=θの少なくとも一方を満たす場合にvi,j=ρである。秘匿化演算結果[v]は記憶部128−hに格納される(ステップS226−h)。
論理和演算部423−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[u]と秘匿化演算結果[v]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。ただし、ei,j=a、vi,j=ρ、およびu=cの少なくとも何れかを満たす場合にyi,j=dであり、ei,j=aおよびvi,j=ρおよびu=cのすべて満たす場合にyi,j=dである。yi,j∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、ρ=0、ρ=1、c=0、c=1、d=0、d=1の場合、yi,j=ei,j∨vi,j∨uである。例えば、論理和演算部423−hは、秘密計算によって、j=1,…,Nについて[ei,j]と[vi,j]と[u]との論理和を行い、yi,j=ei,j∨vi,j∨uを秘匿化した[yi,j]を得、[yi,1],…,[yi,N]の集合を秘匿化演算結果[y]として得る。あるいは、論理和演算部423−hは、秘匿化演算結果[e]と秘匿化演算結果[v]と秘匿化演算結果[u]とを用いた秘密計算によって、yi,1,…,yi,Nがまとめて秘匿された秘匿化演算結果[y]を得てもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS423−h)。
その後、第1実施形態で説明したステップS127−h以降の処理が実行される。
<具体例>
以下に、a=0、a=1、b=0、b=1、c=0、c=1、d=0、d=1、ρ=0、ρ=1、g=0、g=1である場合の具体例を示す。図18および図19はn<Nおよびt(i)<Nの例である。kがワイルドカード文字「*」であり、kn+1,…,kおよびxi,t(i)+1,…,xi,Nがヌル文字である。
図18に例示するように、t(1)=nであり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,…,1)、w=(0,0,…,0,1,0,0,…,0)、u=(0,0,…,0,1,1,…,1)、μ=(1,1,…,1,1,0,0,…,0)、v=(0,0,…,0,1,0,0,…,0)となり、y=(1,1,…,1,1,1,1,…,1)となる。そのため、z=1となる。
図19に例示するように、t(3)=n‐1であり、j=1,…,n‐1についてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,…,1)、w=(0,0,…,0,1,0,0,…,0)、u=(0,0,…,0,0,1,1,…,1)、μ=(1,1,…,1,0,0,0,…,0)、v=(0,0,…,0,0,0,0,…,0)となり、y=(1,1,…,1,0,1,1,…,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、検索対象ワードxの文字xi,t(i)+1,…,xi,Nがヌル文字であり、検索ワードkの文字kt(i)+1,…,kがワイルドカード文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[第5実施形態]
第5実施形態は第1,2実施形態の変形例である。第1,2実施形態では秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であることが前提であった。これに対し、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず、完全一致検索を行うことができる。
<構成>
図1に例示するように、本実施形態の検索システム5は、検索を依頼する依頼装置11、および検索を行う検索装置52−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置52−hは、制御部120−h、等号判定部521−h、ワイルドカード判定部522−h、論理和演算部523−h、ヌル判定部524−h,525−h、論理積演算部527−h、連結部528−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置52−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
記憶部128−hには、t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N(i))(例えば、図21のDB参照)が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]が格納されている。ただし、m,t(i),N(i)が正整数であり、i=1,…,mであり、j(i)=1,…,N(i)であり、t(i)≦N(i)である。検索対象ワードxに含まれるt(i)個の文字xi,1,…,xi,t(i)は検索対象となる通常文字である。一方、検索対象ワードxに含まれる残りのN(i)−t(i)個の文字xi,t(i)+1,…,xi,N(i)はヌル文字である。文字xi,1,…,xi,t(i),…,xi,N(i)のそれぞれを別々に秘匿化して得られた秘匿値[xi,1],…,[xi,t(i)],…,[xi,N(i)]の集合を秘匿化検索対象ワード[x]としてもよいし、N(i)個の文字xi,1,…,xi,t(i),…,xi,N(i)をまとめて秘匿化したものを秘匿化検索対象ワード[x]としてもよい。その他は第1実施形態で述べた通りである。
<検索処理>
図20を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。ただし、j=1,…,Nであり、nは正整数であり、n≦Nである。文字k,…,kはワイルドカード文字を含んでもよい。検索対象ワードxがヌル文字xi,t(i)+1,…,xi,N(i) を含んでいる場合に、kt(i)+1,…,kがワイルドカード文字を含んでいてもよい。n,Nが正整数であり、n≦Nである。N≦N(i)のときMmin=Nであり、N>N(i)のときMmin=N(i)である。このようなMminをMmin=min(N(i),N)と表記する。また、N≦N(i)のときNmax=N(i)であり、N>N(i)のときNmax=Nである。このようなMmaxをMmax=max(N(i),N)と表記する。記載表記の制約上、Nminを「Nmin」と表記し、Nmaxを「Nmax」と表記する場合がある。j”=Mmin+1,…,Nであり、j”(i)=Mmin+1,…,N(i)である。ただし、Mmin+1≧Nのときj”は空であり、Mmin+1≧N(i)のときj”(i)は空である。前述のように、文字k,…,k,…,kのそれぞれを別々に秘匿化して得られた秘匿値[k],…,[k],…,[k]の集合を秘匿化検索ワード[k]としてもよいし、N個の文字k,…,k,…,kをまとめて秘匿化したものを秘匿化検索ワード[k]としてもよい。
依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置52−hに送られる。秘匿化検索ワード[k]は、検索装置52−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部521−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,Nmin)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、j’=1,…,Nminについて、xi,j’がkj’の場合にei,j’=aであり、xi,j’がkj’でない場合にei,j’=aである。ei,j’∈{a,a}であり、例えば、a=0であり、a=1である。例えば、等号判定部521−hは、秘密計算によって、j’=1,…,Nminついて[kj’]と[xi,j’]との等号判定を行い、ei,j’を秘匿化した[ei,j’]を得、[ i,1 ],…,[ i,Nmin]の集合を秘匿化演算結果[e]として得る。あるいは、等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、ei,1,…,ei,Nminがまとめて秘匿された秘匿化演算結果[e]を得てもよい。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS521−h)。
ワイルドカード判定部522−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,wmin )が秘匿された秘匿化演算結果[w]を得て出力する。ただし、j’=1,…,Nminについて、kj’がワイルドカード文字の場合にwj’=bであり、kj’がワイルドカード文字でない場合にwj’=bである。例えば、ワイルドカード判定部522−hは、秘匿化検索ワード[k]とワイルドカード文字を秘匿化して得られた秘匿化ワイルドカード文字とを用い、秘密計算によって秘匿化演算結果[w]を得る。一例を挙げると、ワイルドカード判定部522−hは、秘密計算によって、j’=1,…,Nminについて[kj’]と秘匿化ワイルドカード文字との等号判定を行い、wj’を秘匿化した[wj’]を得、[w],…,[wNmin]の集合を秘匿化演算結果[w]として得る。あるいは、ワイルドカード判定部22−hが、秘匿化検索ワード[k]と秘匿化ワイルドカード文字とを用いた秘密計算によって、w,…,wNminがまとめて秘匿された秘匿化演算結果[w]を得てもよい。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS522−h)。
ヌル判定部525−hは、記憶部128−hから読み出した秘匿化検索ワード[k]の少なくとも一部を用いた秘密計算によって、演算結果u’ min+1,…,u’が秘匿された秘匿化演算結果[u’]を得て出力する。ただし、j”=Mmin+1,…,Nについて、kj”がヌル文字の場合にu’j”=cであり、kj”がヌル文字でない場合にu’j”=cである。u’j”∈{c,c}であり、例えば、c=0であり、c=1である。例えば、ヌル判定部525−hは、秘匿化検索ワード[k]の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[u’]を得る。一例を挙げると、ヌル判定部525−hは、秘密計算によって、j”=Mmin+1,…,Nについて[kj”]と秘匿化ヌル文字との等号判定を行い、u’j”を秘匿化した[u’j”]を得、[u’Mmin+1],…,[u’]の集合を秘匿化演算結果[u’]として得る。あるいは、ヌル判定部525−hが秘匿化検索ワード[k]と秘匿化ヌル文字とを用いた秘密計算によって、u’Mmin+1,…,u’がまとめて秘匿された秘匿化演算結果[u’]を得てもよい。秘匿化演算結果[u’]は記憶部128−hに格納される(ステップS525−h)。なお、Mmin+1≧NのときにはステップS525−hの処理は実行されない。
論理和演算部523−hは、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、演算結果e’=(e’i,1,…,e’i,Nmin)が秘匿された秘匿化演算結果[e’]を得て出力する。ただし、j’=1,…,Nminについて、ei,j’=aおよびwj’=bの少なくとも一方を満たす場合にe’i,j’=dであり、ei,j’=aおよびwj’=bの両方を満たす場合にe’i,j’=dである。e’i,j’∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、b=0、b=1、d=0、d=1の場合、e’i,j’=ei,j’∨wj’である。例えば、論理和演算部523−hは、秘密計算によって、j’=1,…,Nminについて、[ei,j’]と[wj’]との論理和を行い、e’i,j’=ei,j’∨wj’を秘匿化した[e’i,j’]を得、[e’i,1],…,[e’i,Nmin]の集合を秘匿化演算結果[e’]として得る。あるいは、論理和演算部523−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、e’i,1,…,e’i,Nminがまとめて秘匿された秘匿化演算結果[e’]を得てもよい。秘匿化演算結果[e’]は記憶部128−hに格納される(ステップS5231−h)。
ヌル判定部524−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]の少なくとも一部を用いた秘密計算によって、演算結果μ’=(μ’i,min+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[μ’]を得て出力する。ただし、j”(i)=Mmin+1,…,N(i)について、xi,j”(i)がヌル文字の場合にμ’i,j”(i)=dであり、xi,j”(i)がヌル文字でない場合にμ’i,j”(i)=dである。μ’i,j”(i)∈{d,d}であり、例えば、d=0であり、d=1である。ヌル判定部524−hは、秘匿化検索対象ワード[x]の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[μ’]を得る。一例を挙げると、ヌル判定部524−hは、秘密計算によって、j”(i)=Mmin+1,…,N(i)について[xi,j”(i)]と秘匿化ヌル文字との等号判定を行い、μ’i,j”(i)を秘匿化した[μ’i,j”(i)]を得、[μ’i,Mmin+1],…,[μ’i,N(i)]の集合を秘匿化演算結果[μ’]として得る。あるいは、ヌル判定部524−hが秘匿化検索対象ワード[x]と秘匿化ヌル文字とを用いた秘密計算によって、μ’i,min+1,…,μ’i,N(i)がまとめて秘匿された秘匿化演算結果[μ’]を得てもよい。秘匿化演算結果[μ’]は記憶部128−hに格納される(ステップS524−h)。なお、Mmin+1≧N(i)のときにはステップS524−hの処理は実行されない。
連結部528−hは、少なくとも秘匿化演算結果[e’]を用いた秘密計算によって、演算結果yが秘匿された秘匿化演算結果[y]を得て出力する。N=N(i)の場合、連結部528−hは、秘匿化演算結果[e’]を秘匿化演算結果[y]として出力する。N>N(i)の場合、連結部528−hは、秘匿化演算結果[u’]および秘匿化演算結果[e’]を用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u’N(i)+1,…,u’)が秘匿された秘匿化演算結果[y]を得て出力する。N<N(i)の場合、連結部528−hは、秘匿化演算結果[e’]と秘匿化演算結果[μ’]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N(i))=(e’i,1,…,e’i,N,μ’i,N+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[y]を得て出力する。[y]はyの要素がそれぞれ秘匿化された秘匿化結果の集合であってもよいし、yのすべての要素をまとめて秘匿化したものであってもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS528−h)。
論理積演算部527−hは、記憶部128−hから読み出した秘匿化演算結果[y]を用いた秘密計算によって、一致判定結果zが秘匿された秘匿化一致判定結果[z]を得て出力する。ただし、yi,1=…=yi,Nmax=dの場合にz=gであり、yi,1=…=yi,Nmax=dでない場合にz=gである。z∈{g,g}であり、例えば、g=0であり、g=1である。例えば、d=0、d=1、g=0、g=1の場合、z=yi,1∧…∧yi,Nmaxである。秘匿化一致判定結果[z]は記憶部128−hに格納される(ステップS527−h)。
その後、第1実施形態で説明したステップS1292−h以降の処理が実行される。
<具体例>
本実施形態の処理をN=N(i)の場合、N>N(i)の場合、N<N(i)の場合に区分して記載すると以下のようになる。
≪N=N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、n≦Nであり、t(i)≦N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。論理和演算部523−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、ei,j=aおよびw=bの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw=bの両方を満たす場合にyi,j=dである、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]=[e’]を得て出力する。例えば、図23に例示するように、a=0、a=1、b=0、b=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx2,j=kを満たす場合、e=(1,1,…,1,0,1,0,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、y=e’=(1,1,…,1,1,1,0,1,…,1)となる。そのため、z=0となる。
≪N>N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、j”(i)=N(i)+1,…,Nであり、n≦Nであり、t(i)≦N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,j(i)がkj(i)の場合にei,j(i)=aであり、xi,j(i)がkj(i)でない場合にei,j(i)=aである、演算結果e=(ei,1,…,ei,N(i))が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kj(i)がワイルドカード文字の場合にwj(i)b であり、kj(i)がワイルドカード文字でない場合にwj(i)b である、演算結果w=(w,…,wN(i))が秘匿された秘匿化演算結果[w]を得て出力する。ヌル判定部525−h(第1ヌル判定部)は、秘匿化検索ワード[k]の少なくとも一部を用いた秘密計算によって、kj”(i)がヌル文字の場合にu’j”(i)=cであり、kj”(i)がヌル文字でない場合にu’j”(i)=cである、演算結果u’N(i)+1,…,u’が秘匿された秘匿化演算結果[u’]を得て出力する。論理和演算部523−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、ei,j(i)=aおよびwj(i)=bの少なくとも一方を満たす場合にe’i,j(i)=dであり、ei,j(i)=aおよびwj(i)=bの両方を満たす場合にe’i,j(i)=dである、演算結果e’=(e’i,1,…,e’i,N(i))が秘匿された秘匿化演算結果[e’]を得て出力する。連結部528−hは、秘匿化演算結果[u’]および秘匿化演算結果[e’]を用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u’N(i)+1,…,u’)が秘匿された秘匿化演算結果[y]を得て出力する。例えば、図22に例示するように、a=0、a=1、b=0、b=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、e’=(1,1,…,1,1,1,1,1,…,1)となり、y=(1,1,…,1,1,1,1,1,…,1,1)となる。そのため、z=1となる。
≪N<N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、N<N(i)であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、n≦Nであり、t(i)≦N(i)であり、j”(i)=N+1,…,N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。論理和演算部523−hは、秘匿化演算結果[e]と秘匿化演算結果[w]とを用いた秘密計算によって、ei,j=aおよびw=bの少なくとも一方を満たす場合にe’i,j=dであり、ei,j=aおよびw=bの両方を満たす場合にe’i,j=dである、演算結果e’=(e’i,1,…,e’i,N)が秘匿された秘匿化演算結果[e’]を得て出力する。ヌル判定部524−h(第2ヌル判定部)は、秘匿化検索対象ワード[x]の少なくとも一部を用いた秘密計算によって、xi,j”(i)がヌル文字の場合にμ’i,j”(i)=dであり、xi,j”(i)がヌル文字でない場合にμ’i,j”(i)=dである、演算結果μ’=(μ’i,N+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[μ’]を得て出力する。連結部528−hは、秘匿化演算結果[e’]と秘匿化演算結果[μ’]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N(i))=(e’i,1,…,e’i,N,μ’i,N+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[y]を得て出力する。例えば、図24に例示するように、a=0、a=1、b=0、b=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx3,j=kを満たす場合、e=(1,1,…,1,0,0,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、e’=(1,1,…,1,1,0,1,1,…,1)となり、y=(1,1,…,1,1,0,1,1,…,1,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、検索ワードkがワイルドカード文字を含み得る場合であっても、検索ワードkおよび検索対象ワードxの少なくとも一方がヌル文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。さらに、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[第6実施形態]
第6実施形態は第3,4実施形態の変形例である。第3,4実施形態では秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であることが前提であった。これに対し、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず、前方一致検索を行うことができる。
<構成>
図1に例示するように、本実施形態の検索システム6は、検索を依頼する依頼装置11、および検索を行う検索装置62−hを有し、秘密計算による検索処理を行う。ただし、h=1,…,Hであり、Hは1以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはH≧2であり、準同型性暗号方式に基づく秘密計算を行う場合にはH=1である。
図2に例示するように、本実施形態の検索装置62−hは、制御部120−h、等号判定部521−h、ワイルドカード判定部522−h、論理和演算部623−h、ヌル判定部625−h、論理積演算部527−h、連結部628−h、記憶部128−h、入力部1291−h、および出力部1292−hを有する。検索装置62−hは、制御部120−hの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部128−hに格納され、必要に応じて読み出されて他の処理に用いられる。
<前処理>
第5実施形態と同じである。
<検索処理>
図25を用いて本実施形態の検索処理を説明する。依頼装置11は、n個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)を秘匿化して秘匿化検索ワード[k]を得る。依頼装置11は秘匿化検索ワード[k]を出力する。出力された秘匿化検索ワード[k]は、ネットワーク等を経由して検索装置62−hに送られる。秘匿化検索ワード[k]は、検索装置62−hの入力部1291−hに入力されて記憶部128−hに格納される(ステップS1291−h)。その後、各i=1,…,mについて以下の処理が実行される。
まず、等号判定部521−hは、記憶部128−hから読み出した秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、演算結果e=(ei,1,…,ei,Nmin)が秘匿された秘匿化演算結果[e]を得て出力する。ただし、j’=1,…,Nminについて、xi,j’がkj’の場合にei,j’=aであり、xi,j’がkj’でない場合にei,j’=aである。秘匿化演算結果[e]は記憶部128−hに格納される(ステップS521−h)。
ワイルドカード判定部522−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ただし、j’=1,…,Nminについて、kj’がワイルドカード文字の場合にwj’=bであり、kj’がワイルドカード文字でない場合にwj’=bである。秘匿化演算結果[w]は記憶部128−hに格納される(ステップS522−h)。
ヌル判定部625−hは、記憶部128−hから読み出した秘匿化検索ワード[k]を用いた秘密計算によって、演算結果u”=(u”,…,u”)が秘匿された秘匿化演算結果[u”]を得て出力する。ただし、j=1,…,Nについて、kがヌル文字の場合にu”=cであり、kがヌル文字でない場合にu”=cである。u”∈{c,c}であり、例えば、c=0であり、c=1である。例えば、ヌル判定部625−hは、秘匿化検索ワード[k]の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果[u”]を得る。一例を挙げると、ヌル判定部625−hは、秘密計算によって、j=1,…,Nについて[k]と秘匿化ヌル文字との等号判定を行い、u”を秘匿化した[u”]を得、[u”],…,[u”]の集合を秘匿化演算結果[u”]として得る。あるいは、ヌル判定部625−hが秘匿化検索ワード[k]と秘匿化ヌル文字とを用いた秘密計算によって、u”,…,u”がまとめて秘匿された秘匿化演算結果[u”]を得てもよい。秘匿化演算結果[u”]は記憶部128−hに格納される(ステップS6251−h)。
論理和演算部623−h(第1論理和演算部)は、記憶部128−hから読み出した秘匿化演算結果[w]と秘匿化演算結果[u”]の少なくとも一部を用いた秘密計算によって、演算結果w’=(w’,…,w’Nmin)が秘匿された秘匿化演算結果[w’]を得て出力する。ただし、j’=1,…,Nminについてu”j’=cおよびwj’=bの少なくとも一方を満たす場合にw’j’=b’であり、u”j’=cおよびwj’=bの両方を満たす場合にw’j’=b’である。w’∈{b’,b’}であり、例えば、b’=0であり、b’=1である。例えば、b=0、b=1、c=0、c=1、b’=0、b’=1の場合、w’j’=u”j’∨wj’である。例えば、論理和演算部623−hは、秘密計算によって、j’=1,…,Nminについて、[u”j’]と[wj’]との論理和を行い、w’j’=u”j’∨wj’を秘匿化した[w’j’]を得、[w’],…,[w’Nmin]の集合を秘匿化演算結果[w’]として得る。あるいは、論理和演算部623−hは、秘匿化演算結果[w]と秘匿化演算結果[u”]とを用いた秘密計算によって、w’,…,w’Nminがまとめて秘匿された秘匿化演算結果[w’]を得てもよい。秘匿化演算結果[w’]は記憶部128−hに格納される(ステップS6231−h)。
論理和演算部623−h(第2論理和演算部)は、記憶部128−hから読み出した秘匿化演算結果[e]と秘匿化演算結果[w’]とを用いた秘密計算によって、演算結果e’=(e’i,1,…,e’i,Nmin)が秘匿された秘匿化演算結果[e’]を得て出力する。ただし、j’=1,…,Nminについて、 ,j’=aおよびw’j’=b’の少なくとも一方を満たす場合にe’i,j’=dであり、ei,j’=aおよびw’j’=b’の両方を満たす場合にe’i,j’=dである。e’i,j’∈{d,d}であり、例えば、d=0であり、d=1である。例えば、a=0、a=1、b’=0、b’=1、d=0、d=1の場合、e’i,j’=ei,j’∨w’j’である。例えば、論理和演算部623−hは、秘密計算によって、j’=1,…,Nminについて、[ei,j’]と[w’j’]との論理和を行い、e’i,j’=ei,j’∨w’j’を秘匿化した[e’i,j’]を得、[e’i,1],…,[e’i,Nmin]の集合を秘匿化演算結果[e’]として得る。あるいは、論理和演算部623−hは、秘匿化演算結果[e]と秘匿化演算結果[w’]とを用いた秘密計算によって、e’i,1,…,e’i,Nminがまとめて秘匿された秘匿化演算結果[e’]を得てもよい。秘匿化演算結果[e’]は記憶部128−hに格納される(ステップS6232−h)。
連結部628−hは、少なくとも秘匿化演算結果[e’]を用いた秘密計算によって、演算結果yが秘匿された秘匿化演算結果[y]を得て出力する。N≦N(i)の場合、連結部628−hは、秘匿化演算結果[e’]を秘匿化演算結果[y]として出力する。N>N(i)の場合、連結部628−hは、秘匿化演算結果[e’]と秘匿化演算結果[u”]の少なくとも一部とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u”N(i)+1,…,u”)が秘匿された秘匿化演算結果[y]を得て出力する。[y]はyの要素がそれぞれ秘匿化された秘匿化結果の集合であってもよいし、yのすべての要素をまとめて秘匿化したものであってもよい。秘匿化演算結果[y]は記憶部128−hに格納される(ステップS628−h)。
その後、ステップS527−hおよび第1実施形態で説明したステップS1292−h以降の処理が実行される。
<具体例>
本実施形態の処理をN>N(i)の場合、N≦N(i)の場合に区分して記載すると以下のようになる。
≪N>N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、j”(i)=N(i)+1,…,Nであり、n≦Nであり、t(i)≦N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,j(i)がkj(i)の場合にei,j(i)=aであり、xi,j(i)がkj(i)でない場合にei,j(i)=aである、演算結果e=(ei,1,…,ei,N(i))が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kj(i)がワイルドカード文字の場合にwj(i)=bであり、kj(i)がワイルドカード文字でない場合にwj(i)=bである、演算結果w=(w,…,wN(i))が秘匿された秘匿化演算結果[w]を得て出力する。ヌル判定部625−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがヌル文字の場合にu”=cであり、kがヌル文字でない場合にu”=cである、演算結果u”=(u”,…,u”)が秘匿された秘匿化演算結果[u”]を得て出力する。論理和演算部623−hは、秘匿化演算結果[w]と秘匿化演算結果[u”]の少なくとも一部を用いた秘密計算によって、u”j(i)=cおよびwj(i)=bの少なくとも一方を満たす場合にw’j(i)=b’であり、u”j(i)=cおよびwj(i)=bの両方を満たす場合にw’j(i)=b’である、演算結果w’=(w’,…,w’N(i))が秘匿された秘匿化演算結果[w’]を得て出力する。論理和演算部623−hは、秘匿化演算結果[e]と秘匿化演算結果[w’]とを用いた秘密計算によって、 ,j(i)=aおよびw’j(i)=b’の少なくとも一方を満たす場合にe’i,j(i)=dであり、ei,j(i)=aおよびw’j(i)=b’の両方を満たす場合にe’ i,j(i)=dである、演算結果e’=(e’i,1,…,e’i,N(i))が秘匿された秘匿化演算結果[e’]を得て出力する。連結部628−hは秘匿化演算結果[e’]と秘匿化演算結果[u”]の少なくとも一部とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u”N(i)+1,…,u”)が秘匿された秘匿化演算結果[y]を得て出力する。例えば、図26に例示するように、a=0、a=1、b=0、b=1、b’=0、b’=1、c=0、c=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx1,j=kを満たす場合、e=(1,1,…,1,0,1,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、u”=(0,0,…,0,0,0,1,1,…,1,1)、w’=(0,0,…,0,1,0,1,1,…,1)となり、e’=(1,1,…,1,1,1,1,1,…,1)となり、y=(1,1,…,1,1,1,1,1,…,1,1)となる。そのため、z=1となる。
≪N≦N(i)の場合≫
m,n,t(i),N,N(i)が正整数であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、n≦Nであり、t(i)≦N(i)である。等号判定部521−hは、秘匿化検索対象ワード[x]と秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得て出力する。ワイルドカード判定部522−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがワイルドカード文字の場合にw=bであり、kがワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得て出力する。ヌル判定部625−hは、秘匿化検索ワード[k]を用いた秘密計算によって、kがヌル文字の場合にu”=cであり、kがヌル文字でない場合にu”=cである、演算結果u”=(u”,…,u”)が秘匿された秘匿化演算結果[u”]を得て出力する。論理和演算部623−hは、秘匿化演算結果[w]と秘匿化演算結果[u”]を用いた秘密計算によって、u”=cおよびw=bの少なくとも一方を満たす場合にw’=b’であり、u”=cおよびw=bの両方を満たす場合にw’=b’である、演算結果w’=(w’,…,w’)が秘匿された秘匿化演算結果[w’]を得て出力する。論理和演算部623−hは、秘匿化演算結果[e]と秘匿化演算結果[w’]とを用いた秘密計算によって、ei,j=aおよびw’=b’の少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw’=b’の両方を満たす場合にyi,j=dである、演算結果e’=y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得て出力する。例えば、図27に例示するように、a=0、a=1、b=0、b=1、b’=0、b’=1、c=0、c=1、d=0、d=1、g=0、g=1であり、kn−1がワイルドカード文字「*」であり、j=1,…,n−2,nについてx1,j=kを満たし、N=N(2)の場合、e=(1,1,…,1,0,1,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、u”=(0,0,…,0,0,0,1,1,…,1)、w’=(0,0,…,0,1,0,1,1,…,1)となり、e’=(1,1,…,1,1,1,1,1,…,1)となり、y=(1,1,…,1,1,1,1,1,…,1)となる。そのため、z=1となる。例えば、図28に例示するように、N<N(3)の場合、e=(1,1,…,1,0,0,1,1,…,1)、w=(0,0,…,0,1,0,0,0,…,0)、u”=(0,0,…,0,0,0,1,1,…,1)、w’=(0,0,…,0,1,0,1,1,…,1)となり、e’=(1,1,…,1,1,0,1,1,…,1)となり、y=(1,1,…,1,1,0,1,1,…,1)となる。そのため、z=0となる。
<本実施形態の特徴>
上述のように、本実施形態では、検索ワードkがワイルドカード文字を含み得る場合であっても、検索ワードkおよび検索対象ワードxの少なくとも一方がヌル文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。さらに、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
[変形例等]
なお、本発明は上述の実施形態に限定されるものではない。例えば、検索装置が秘匿化演算結果[y]をそのまま出力してもよいし、秘匿化演算結果[y]に対してステップS127−hとは異なる秘密計算を施し、それによって得られた結果を出力してもよい。
前述したように秘密計算方式に限定はない。秘密計算による等号判定および論理演算(論理和演算、論理積演算)が可能であれば、秘密分散方式に基づく秘密計算が用いられてもよいし、準同型性暗号方式に基づく秘密計算が用いられてもよい。例えば、以下に記載された秘密計算方式を用いればよい。
参考文献1: Ivan Damgard, Matthias Fitzi, Eike Kiltz, Jesper Buus Nielsen, Tomas Toft, “Unconditionally Secure Constant-Rounds Multi-party Computation for Equality, Comparison, Bits and Exponentiation”, TCC 2006, pp. 285-304.
参考文献2:千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能3パーティ秘匿関数計算の再考( A Three-party Secure Function Evaluation with Lightweight Verifiability Revisited)”, In CSS, 2010.
参考文献3:Takashi Nishide, Kazuo Ohta, “Multiparty computation for interval, equality, and comparison without bit-decomposition protocol”, PKC, pp. 343-360, 2007.
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上記の各装置は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)およびRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されるのではなく、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
1〜4 検索システム
12−1〜H,22−1〜H,32−1〜H,42−1〜H 検索装置

Claims (13)

  1. 秘密計算によって完全一致検索を行う検索装置であって、
    m,n,t(i),Nが正整数であり、i=1,…,mであり、j=1,…,Nであり、n≦Nであり、t(i)≦Nであり、
    t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N)が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]を格納する記憶部と、
    ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿された秘匿化検索ワード[k]の入力を受け付ける入力部と、
    前記秘匿化検索対象ワード[x]と前記秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得る等号判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kが前記ワイルドカード文字の場合にw=bであり、kが前記ワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得るワイルドカード判定部と、
    前記秘匿化演算結果[e]と前記秘匿化演算結果[w]とを用いた秘密計算によって、ei,j=aおよびw=bの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw=bの両方を満たす場合にyi,j=dである、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得る論理和演算部と、
    を有する検索装置。
  2. 秘密計算によって完全一致検索を行う検索装置であって、
    m,n,t(i),Nが正整数であり、i=1,…,mであり、j=1,…,Nであり、n≦Nであり、t(i)≦Nであり、
    t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N)が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]を格納する記憶部と、
    ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿された秘匿化検索ワード[k]の入力を受け付ける入力部と、
    前記秘匿化検索対象ワード[x]と前記秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得る等号判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kが前記ワイルドカード文字の場合にw=bであり、kが前記ワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得るワイルドカード判定部と、
    前記秘匿化検索対象ワード[x]を用いた秘密計算によって、xi,jがヌル文字の場合にμi,j=θであり、xi,jがヌル文字でない場合にμi,j=θである、演算結果μ=(μi,1,…,μi,N)が秘匿された秘匿化演算結果[μ]を得るヌル判定部と、
    前記秘匿化演算結果[w]と前記秘匿化演算結果[μ]とを用いた秘密計算によって、w=bおよびμi,j=θの両方を満たす場合にvi,j=ρであり、w=bおよびμi,j=θの少なくとも一方を満たす場合にvi,j=ρである、演算結果v=(vi,1,…,vi,N)が秘匿された秘匿化演算結果[v]を得る論理積演算部と、
    前記秘匿化演算結果[e]と前記秘匿化演算結果[v]とを用いた秘密計算によって、ei,j=aおよびvi,j=ρの少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびvi,j=ρの両方を満たす場合にyi,j=dである、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得る論理和演算部と、
    を有する検索装置。
  3. 秘密計算によって前方一致検索を行う検索装置であって、
    m,n,t(i),Nが正整数であり、i=1,…,mであり、j=1,…,Nであり、n≦Nであり、t(i)≦Nであり、
    t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N)が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]を格納する記憶部と、
    ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿された秘匿化検索ワード[k]の入力を受け付ける入力部と、
    前記秘匿化検索対象ワード[x]と前記秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得る等号判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kが前記ワイルドカード文字の場合にw=bであり、kが前記ワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得るワイルドカード判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kがヌル文字の場合にu=cであり、kがヌル文字でない場合にu=cである、演算結果u=(u,…,u)が秘匿された秘匿化演算結果[u]を得る第1ヌル判定部と、
    前記秘匿化演算結果[e]と前記秘匿化演算結果[w]と前記秘匿化演算結果[u]とを用いた秘密計算によって、ei,j=a、w=b、およびu=cの少なくとも何れかを満たす場合にyi,j=dであり、ei,j=aおよびw=bおよびu=cのすべての満たす場合にyi,j=dである、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得る論理和演算部と、
    を有する検索装置。
  4. 秘密計算によって前方一致検索を行う検索装置であって、
    m,n,t(i),Nが正整数であり、i=1,…,mであり、j=1,…,Nであり、n≦Nであり、t(i)≦Nであり、
    t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N)が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]を格納する記憶部と、
    ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿された秘匿化検索ワード[k]の入力を受け付ける入力部と、
    前記秘匿化検索対象ワード[x]と前記秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得る等号判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kが前記ワイルドカード文字の場合にw=bであり、kが前記ワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得るワイルドカード判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kがヌル文字の場合にu=cであり、kがヌル文字でない場合にu=cである、演算結果u=(u,…,u)が秘匿された秘匿化演算結果[u]を得る第1ヌル判定部と、
    前記秘匿化検索対象ワード[x]を用いた秘密計算によって、xi,jがヌル文字の場合にμi,j=θであり、xi,jがヌル文字でない場合にμi,j=θである、演算結果μ=(μi,1,…,μi,N)が秘匿された秘匿化演算結果[μ]を得る第2ヌル判定部と、
    前記秘匿化演算結果[w]と前記秘匿化演算結果[μ]とを用いた秘密計算によって、w=bおよびμi,j=θの両方を満たす場合にvi,j=ρであり、w=bおよびμi,j=θの少なくとも一方を満たす場合にvi,j=ρである、演算結果v=(vi,1,…,vi,N)が秘匿された秘匿化演算結果[v]を得る論理積演算部と、
    前記秘匿化演算結果[e]と前記秘匿化演算結果[u]と前記秘匿化演算結果[v]とを用いた秘密計算によって、ei,j=a、vi,j=ρ、およびu=cの少なくとも何れかを満たす場合にyi,j=dであり、ei,j=aおよびvi,j=ρおよびu=cのすべての満たす場合にyi,j=dである、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得る論理和演算部と、
    を有する検索装置。
  5. 請求項1から4の何れかの検索装置であって、
    前記秘匿化演算結果[y]を用いた秘密計算によって、yi,1=…=yi,N=dの場合にz=gであり、yi,1=…=yi,N=dでない場合にz=gである一致判定結果zが秘匿された秘匿化一致判定結果[z]を得る論理積演算部を有する、検索装置。
  6. 秘密計算によって完全一致検索を行う検索装置であって、
    m,n,t(i),N,N(i)が正整数であり、N>N(i)であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、j”(i)=N(i)+1,…,Nであり、n≦Nであり、t(i)≦N(i)であり、
    t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N(i))が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]を格納する記憶部と、
    ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿された秘匿化検索ワード[k]の入力を受け付ける入力部と、
    前記秘匿化検索対象ワード[x]と前記秘匿化検索ワード[k]とを用いた秘密計算によって、xi,j(i)がkj(i)の場合にei,j(i)=aであり、xi,j(i)がkj(i)でない場合にei,j(i)=aである、演算結果e=(ei,1,…,ei,N(i))が秘匿された秘匿化演算結果[e]を得る等号判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kj(i)が前記ワイルドカード文字の場合にwj(i)=dであり、kj(i)が前記ワイルドカード文字でない場合にwj(i)=dである、演算結果w=(w,…,wN(i))が秘匿された秘匿化演算結果[w]を得るワイルドカード判定部と、
    前記秘匿化検索ワード[k]の少なくとも一部を用いた秘密計算によって、kj”(i)がヌル文字の場合にu’j”(i)=cであり、kj”(i)がヌル文字でない場合にu’j”(i)=cである、演算結果u’N(i)+1,…,u’が秘匿された秘匿化演算結果[u’]を得る第1ヌル判定部と、
    前記秘匿化演算結果[e]と前記秘匿化演算結果[w]とを用いた秘密計算によって、ei,j(i)=aおよびwj(i)=bの少なくとも一方を満たす場合にe’i,j(i)=dであり、ei,j(i)=aおよびwj(i)=bの両方を満たす場合にe’i,j(i)=dである、演算結果e’=(e’i,1,…,e’i,N(i))が秘匿された秘匿化演算結果[e’]を得る論理和演算部と、
    前記秘匿化演算結果[u’]および秘匿化演算結果[e’]を用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u’N(i)+1,…,u’)が秘匿された秘匿化演算結果[y]を得る連結部と、
    を有する検索装置。
  7. 秘密計算によって完全一致検索を行う検索装置であって、
    m,n,t(i),N,N(i)が正整数であり、N<N(i)であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、n≦Nであり、t(i)≦N(i)であり、j”(i)=N+1,…,N(i)であり、
    t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N(i))が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]を格納する記憶部と、
    ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿された秘匿化検索ワード[k]の入力を受け付ける入力部と、
    前記秘匿化検索対象ワード[x]と前記秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得る等号判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kが前記ワイルドカード文字の場合にw=bであり、kが前記ワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得るワイルドカード判定部と、
    前記秘匿化演算結果[e]と前記秘匿化演算結果[w]とを用いた秘密計算によって、ei,j=aおよびw=bの少なくとも一方を満たす場合にe’i,j=dであり、ei,j=aおよびw=bの両方を満たす場合にe’i,j=dである、演算結果e’=(e’i,1,…,e’i,N)が秘匿された秘匿化演算結果[e’]を得る論理和演算部と、
    前記秘匿化検索対象ワード[x]の少なくとも一部を用いた秘密計算によって、xi,j”(i)がヌル文字の場合にμ’i,j”(i)=dであり、xi,j”(i)がヌル文字でない場合にμ’i,j”(i)=dである、演算結果μ’=(μ’i,N+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[μ’]を得る第2ヌル判定部と、
    前記秘匿化演算結果[e’]と前記秘匿化演算結果[μ’]とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N(i))=(e’i,1,…,e’i,N,μ’i,N+1,…,μ’i,N(i))が秘匿された秘匿化演算結果[y]を得る連結部と、
    を有する検索装置。
  8. 秘密計算によって前方一致検索を行う検索装置であって、
    m,n,t(i),N,N(i)が正整数であり、N≦N(i)であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、n≦Nであり、t(i)≦N(i)であり、
    t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N(i))が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]を格納する記憶部と、
    ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿された秘匿化検索ワード[k]の入力を受け付ける入力部と、
    前記秘匿化検索対象ワード[x]と前記秘匿化検索ワード[k]とを用いた秘密計算によって、xi,jがkの場合にei,j=aであり、xi,jがkでない場合にei,j=aである、演算結果e=(ei,1,…,ei,N)が秘匿された秘匿化演算結果[e]を得る等号判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kが前記ワイルドカード文字の場合にw=bであり、kが前記ワイルドカード文字でない場合にw=bである、演算結果w=(w,…,w)が秘匿された秘匿化演算結果[w]を得るワイルドカード判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kがヌル文字の場合にu”=cであり、kがヌル文字でない場合にu”=cである、演算結果u”=(u”,…,u”)が秘匿された秘匿化演算結果[u”]を得るヌル判定部と、
    前記秘匿化演算結果[w]と前記秘匿化演算結果[u”]とを用いた秘密計算によって、u”=cおよびw=bの少なくとも一方を満たす場合にw’=b’であり、u”=cおよびw=bの両方を満たす場合にw’=b’である、演算結果w’=(w’,…,w’)が秘匿された秘匿化演算結果[w’]を得る第1論理和演算部と、
    前記秘匿化演算結果[e]と前記秘匿化演算結果[w’]とを用いた秘密計算によって、ei,j=aおよびw’=b’の少なくとも一方を満たす場合にyi,j=dであり、ei,j=aおよびw’=b’の両方を満たす場合にyi,j=dである、演算結果y=(yi,1,…,yi,N)が秘匿された秘匿化演算結果[y]を得る第2論理和演算部と、
    を有する検索装置。
  9. 秘密計算によって前方一致検索を行う検索装置であって、
    m,n,t(i),N,N(i)が正整数であり、N>N(i)であり、i=1,…,mであり、j=1,…,Nであり、j(i)=1,…,N(i)であり、j”(i)=N(i)+1,…,Nであり、n≦Nであり、t(i)≦N(i)であり、
    t(i)個の文字xi,1,…,xi,t(i)を含む検索対象ワードx=(xi,1,…,xi,t(i),…,xi,N(i))が秘匿された秘匿化検索対象ワード[x]を含む秘匿化データベース[x],…,[x]を格納する記憶部と、
    ワイルドカード文字を含むn個の文字k,…,kを含む検索ワードk=(k,…,k,…,k)が秘匿された秘匿化検索ワード[k]の入力を受け付ける入力部と、
    前記秘匿化検索対象ワード[x]と前記秘匿化検索ワード[k]とを用いた秘密計算によって、xi,j(i)がkj(i)の場合にei,j(i)=aであり、xi,j(i)がkj(i)でない場合にei,j(i)=aである、演算結果e=(ei,1,…,ei,N(i))が秘匿された秘匿化演算結果[e]を得る等号判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kj(i)が前記ワイルドカード文字の場合にwj(i)=bであり、kj(i)が前記ワイルドカード文字でない場合にwj(i)=bである、演算結果w=(w,…,wN(i))が秘匿された秘匿化演算結果[w]を得るワイルドカード判定部と、
    前記秘匿化検索ワード[k]を用いた秘密計算によって、kがヌル文字の場合にu”=cであり、kがヌル文字でない場合にu”=cである、演算結果u”=(u”,…,u”)が秘匿された秘匿化演算結果[u”]を得るヌル判定部と、
    前記秘匿化演算結果[w]と前記秘匿化演算結果[u”]の少なくとも一部を用いた秘密計算によって、u”j(i)=cおよびwj(i)=bの少なくとも一方を満たす場合にw’j(i)=b’であり、u”j(i)=cおよびwj(i)=bの両方を満たす場合にw’j(i)=b’である、演算結果w’=(w’,…,w’N(i))が秘匿された秘匿化演算結果[w’]を得る第1論理和演算部と、
    前記秘匿化演算結果[e]と前記秘匿化演算結果[w’]とを用いた秘密計算によって、e’i,j(i)=aおよびw’j(i)=b’の少なくとも一方を満たす場合にe’i,j(i)=dであり、ei,j(i)=aおよびw’j(i)=b’の両方を満たす場合にe’i,j(i)=dである、演算結果e’=(e’i,1,…,e’i,N(i))が秘匿された秘匿化演算結果[e’]を得る第2論理和演算部と、
    前記秘匿化演算結果[e’]と前記秘匿化演算結果[u”]の少なくとも一部とを用いた秘密計算によって、演算結果y=(yi,1,…,yi,N)=(e’i,1,…,e’i,N(i),u”N(i)+1,…,u”)が秘匿された秘匿化演算結果[y]を得る連結部と、
    を有する検索装置。
  10. 請求項6から9の何れかの検索装置であって、
    N≦N(i)のときNmax=N(i)であり、N>N(i)のときNmax=Nであり、
    前記秘匿化演算結果[y]を用いた秘密計算によって、yi,1=…=yi,Nmax=dの場合にz=gであり、yi,1=…=yi,Nmax=dでない場合にz=gである一致判定結果zが秘匿された秘匿化一致判定結果[z]を得る論理積演算部を有する、検索装置。
  11. 請求項1から10の何れかの検索装置の検索方法。
  12. 請求項1から10の何れかの検索装置としてコンピュータを機能させるためのプログラム。
  13. 請求項1から10の何れかの検索装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
JP2019560978A 2017-12-19 2018-12-10 検索装置、検索方法、プログラム、および記録媒体 Active JP6927332B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017242830 2017-12-19
JP2017242830 2017-12-19
PCT/JP2018/045254 WO2019124134A1 (ja) 2017-12-19 2018-12-10 検索装置、検索方法、プログラム、および記録媒体

Publications (2)

Publication Number Publication Date
JPWO2019124134A1 true JPWO2019124134A1 (ja) 2020-12-03
JP6927332B2 JP6927332B2 (ja) 2021-08-25

Family

ID=66993387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019560978A Active JP6927332B2 (ja) 2017-12-19 2018-12-10 検索装置、検索方法、プログラム、および記録媒体

Country Status (6)

Country Link
US (1) US11675847B2 (ja)
EP (1) EP3731215B1 (ja)
JP (1) JP6927332B2 (ja)
CN (1) CN111712868B (ja)
AU (1) AU2018389418B2 (ja)
WO (1) WO2019124134A1 (ja)

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500111B2 (en) * 2003-05-30 2009-03-03 International Business Machines Corporation Querying encrypted data in a relational database system
KR100903599B1 (ko) * 2007-11-22 2009-06-18 한국전자통신연구원 내적을 이용한 암호화된 데이터 검색 방법 및 이를 위한단말 장치와 서버
WO2011086687A1 (ja) * 2010-01-15 2011-07-21 三菱電機株式会社 秘匿検索システム及び暗号処理システム
US9613292B1 (en) * 2012-01-26 2017-04-04 Hrl Laboratories, Llc Secure multi-dimensional pattern matching for secure search and recognition
US9009089B1 (en) * 2011-06-27 2015-04-14 Hrl Laboratories, Llc Secure pattern matching
US20130238646A1 (en) * 2012-03-06 2013-09-12 Evrichart, Inc. Partial-Match Searches of Encrypted Data Sets
US10235539B2 (en) * 2013-02-25 2019-03-19 Mitsubishi Electric Corporation Server device, recording medium, and concealed search system
US9652511B2 (en) * 2013-03-13 2017-05-16 International Business Machines Corporation Secure matching supporting fuzzy data
WO2016056503A1 (ja) * 2014-10-08 2016-04-14 日本電信電話株式会社 部分文字列位置検出装置、部分文字列位置検出方法及びプログラム
JP7020780B2 (ja) * 2015-02-09 2022-02-16 日本電気株式会社 サーバ装置、データ検索システム、検索方法および検索プログラム
JP6274669B2 (ja) * 2015-02-10 2018-02-07 日本電信電話株式会社 秘匿パターンマッチング装置、端末装置、それらの方法、およびプログラム
JP6305946B2 (ja) * 2015-02-10 2018-04-04 日本電信電話株式会社 秘匿パターンマッチング装置、その方法、およびプログラム
CN106209761A (zh) * 2015-05-29 2016-12-07 松下电器(美国)知识产权公司 相似信息检索方法、终端装置以及相似信息检索系统
US10404669B2 (en) * 2015-06-09 2019-09-03 Skyhigh Networks, Llc Wildcard search in encrypted text
US9894042B2 (en) * 2015-07-24 2018-02-13 Skyhigh Networks, Inc. Searchable encryption enabling encrypted search based on document type
US9760637B2 (en) * 2015-09-11 2017-09-12 Skyhigh Networks, Inc. Wildcard search in encrypted text using order preserving encryption

Also Published As

Publication number Publication date
EP3731215A4 (en) 2021-08-04
US20210011953A1 (en) 2021-01-14
JP6927332B2 (ja) 2021-08-25
EP3731215B1 (en) 2024-02-07
EP3731215A1 (en) 2020-10-28
AU2018389418B2 (en) 2021-11-04
CN111712868A (zh) 2020-09-25
WO2019124134A1 (ja) 2019-06-27
CN111712868B (zh) 2023-08-08
US11675847B2 (en) 2023-06-13
AU2018389418A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
JP7552970B2 (ja) ブロックチェーンを用いてデータ記録を分配するシステム及び方法
US10467389B2 (en) Secret shared random access machine
JP6034927B1 (ja) 秘密計算システム、秘密計算装置、およびプログラム
US11764940B2 (en) Secure search of secret data in a semi-trusted environment using homomorphic encryption
US10341103B2 (en) Data analytics on encrypted data elements
US9917820B1 (en) Secure information sharing
US20160182222A1 (en) Computer-Implemented System And Method For Multi-Party Data Function Computing Using Discriminative Dimensionality-Reducing Mappings
CN111126628B (zh) 在可信执行环境中训练gbdt模型的方法、装置及设备
CN112000632B (zh) 密文的分享方法、介质、分享客户端及系统
JP6534778B2 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、およびプログラム
Mahdi et al. Secure similar patients query on encrypted genomic data
CN115905633A (en) A privacy-preserving graph similarity retrieval method and system
US20220413807A1 (en) Secure random number generation system, secure computation apparatus, secure random number generation method, and program
Balmany et al. Dynamic proof of retrievability based on public auditing for coded secure cloud storage
US11200346B2 (en) Secure computation for reading multiple elements from a secure text array
CN117421771A (zh) 一种面向结构化数据的可搜索加密方法、装置及电子设备
JP6927332B2 (ja) 検索装置、検索方法、プログラム、および記録媒体
JP6933290B2 (ja) 秘密計算装置、秘密計算認証システム、秘密計算方法、およびプログラム
CN115098893A (zh) 基于区块链的数据存储方法及装置
US20210367774A1 (en) Systems and methods for generating tokens using secure multiparty computation engines
Yalame et al. Secure two-party computation using an efficient garbled circuit by reducing data transfer
US11962562B2 (en) Anonymous message board server verification
JP7359225B2 (ja) 秘密最大値計算装置、方法及びプログラム
Madane et al. Comparison of privacy preserving single-keyword search and multi-keyword ranked search techniques over encrypted cloud data
WO2023281693A1 (ja) 秘密計算システム、装置、方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200612

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200612

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210706

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210719

R150 Certificate of patent or registration of utility model

Ref document number: 6927332

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150