(57)【要約】  等号判定部は、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にei,j=a1であり、ｘｉ，ｊがｋｊでない場合にei,j=a0である、ei=(ei,1,…,ei,N)が秘匿された［ｅｉ］を得る。ワイルドカード判定部は、［ｋ］を用いた秘密計算によって、ｋｊがワイルドカード文字の場合にwj=b1であり、そうでない場合にwj=b0である、w=(w1,…,wN)が［ｗ］を得る。論理和演算部は、［ｅｉ］と［ｗ］とを用いた秘密計算によって、ei,j=a1およびwj=b1の少なくとも一方を満たす場合にyi,j=d1であり、そうでない場合にyi,j=d0である、yi=(yi,1,…,yi,N)が秘匿された［ｙｉ］を得る。
2019124134.tif 000002
【特許請求の範囲】
【請求項１】
秘密計算によって完全一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎであり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る論理和演算部と、
を有する検索装置。
【請求項２】
秘密計算によって完全一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎであり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索対象ワード［ｘｉ］を用いた秘密計算によって、ｘｉ，ｊがヌル文字の場合にμｉ，ｊ＝θ０であり、ｘｉ，ｊがヌル文字でない場合にμｉ，ｊ＝θ１である、演算結果μｉ＝（μｉ，１，…，μｉ，Ｎ）が秘匿された秘匿化演算結果［μｉ］を得るヌル判定部と、
前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［μｉ］とを用いた秘密計算によって、ｗｊ＝ｂ１およびμｉ，ｊ＝θ１の両方を満たす場合にｖｉ，ｊ＝ρ１であり、ｗｊ＝ｂ０およびμｉ，ｊ＝θ０の少なくとも一方を満たす場合にｖｉ，ｊ＝ρ０である、演算結果ｖｉ＝（ｖｉ，１，…，ｖｉ，Ｎ）が秘匿された秘匿化演算結果［ｖｉ］を得る論理積演算部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｖｉ，ｊ＝ρ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｖｉ，ｊ＝ρ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る論理和演算部と、
を有する検索装置。
【請求項３】
秘密計算によって前方一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎであり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕｊ＝ｃ０である、演算結果ｕ＝（ｕ１，…，ｕＮ）が秘匿された秘匿化演算結果［ｕ］を得る第１ヌル判定部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［ｕ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１、ｗｊ＝ｂ１、およびｕｊ＝ｃ１の少なくとも何れかを満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０およびｕｊ＝ｃ０のすべての満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る論理和演算部と、
を有する検索装置。
【請求項４】
秘密計算によって前方一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎであり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕｊ＝ｃ０である、演算結果ｕ＝（ｕ１，…，ｕＮ）が秘匿された秘匿化演算結果［ｕ］を得る第１ヌル判定部と、
前記秘匿化検索対象ワード［ｘｉ］を用いた秘密計算によって、ｘｉ，ｊがヌル文字の場合にμｉ，ｊ＝θ０であり、ｘｉ，ｊがヌル文字でない場合にμｉ，ｊ＝θ１である、演算結果μｉ＝（μｉ，１，…，μｉ，Ｎ）が秘匿された秘匿化演算結果［μｉ］を得る第２ヌル判定部と、
前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［μｉ］とを用いた秘密計算によって、ｗｊ＝ｂ１およびμｉ，ｊ＝θ１の両方を満たす場合にｖｉ，ｊ＝ρ１であり、ｗｊ＝ｂ０およびμｉ，ｊ＝θ０の少なくとも一方を満たす場合にｖｉ，ｊ＝ρ０である、演算結果ｖｉ＝（ｖｉ，１，…，ｖｉ，Ｎ）が秘匿された秘匿化演算結果［ｖｉ］を得る論理積演算部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｕ］と前記秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１、ｖｉ，ｊ＝ρ１、およびｕｊ＝ｃ１の少なくとも何れかを満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｖｉ，ｊ＝ρ０およびｕｊ＝ｃ０のすべての満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る論理和演算部と、
を有する検索装置。
【請求項５】
請求項１から４の何れかの検索装置であって、
前記秘匿化演算結果［ｙｉ］を用いた秘密計算によって、ｙｉ，１＝…＝ｙｉ，Ｎ＝ｄ１の場合にｚｉ＝ｇ１であり、ｙｉ，１＝…＝ｙｉ，Ｎ＝ｄ１でない場合にｚｉ＝ｇ０である一致判定結果ｚｉが秘匿された秘匿化一致判定結果［ｚｉ］を得る論理積演算部を有する、検索装置。
【請求項６】
秘密計算によって完全一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ＞Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ（ｉ）＋１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）の場合にｅｉ，ｊ（ｉ）＝ａ１であり、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）でない場合にｅｉ，ｊ（ｉ）＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊ（ｉ）が前記ワイルドカード文字の場合にｗｊ（ｉ）＝ｄ１であり、ｋｊ（ｉ）が前記ワイルドカード文字でない場合にｗｊ（ｉ）＝ｄ０である、演算結果ｗ＝（ｗ１，…，ｗＮ（ｉ））が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］の少なくとも一部を用いた秘密計算によって、ｋｊ”（ｉ）がヌル文字の場合にｕ’ｊ”（ｉ）＝ｃ１であり、ｋｊ”（ｉ）がヌル文字でない場合にｕ’ｊ”（ｉ）＝ｃ０である、演算結果ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎが秘匿された秘匿化演算結果［ｕ’］を得る第１ヌル判定部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ（ｉ）＝ａ１およびｗｊ（ｉ）＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ１であり、ｅｉ，ｊ（ｉ）＝ａ０およびｗｊ（ｉ）＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅ’ｉ］を得る論理和演算部と、
前記秘匿化演算結果［ｕ’］および秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る連結部と、
を有する検索装置。
【請求項７】
秘密計算によって完全一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ＜Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ＋１，…，Ｎ（ｉ）であり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ）が秘匿された秘匿化演算結果［ｅ’ｉ］を得る論理和演算部と、
前記秘匿化検索対象ワード［ｘｉ］の少なくとも一部を用いた秘密計算によって、ｘｉ，ｊ”（ｉ）がヌル文字の場合にμ’ｉ，ｊ”（ｉ）＝ｄ１であり、ｘｉ，ｊ”（ｉ）がヌル文字でない場合にμ’ｉ，ｊ”（ｉ）＝ｄ０である、演算結果μ’ｉ＝（μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［μ’ｉ］を得る第２ヌル判定部と、
前記秘匿化演算結果［ｅ’ｉ］と前記秘匿化演算結果［μ’ｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ（ｉ））＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ，μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｙｉ］を得る連結部と、
を有する検索装置。
【請求項８】
秘密計算によって前方一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ≦Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得るヌル判定部と、
前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［ｕ”］とを用いた秘密計算によって、ｕ”ｊ＝ｃ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ＝ｂ’１であり、ｕ”ｊ＝ｃ０およびｗｊ＝ｂ０の両方を満たす場合にｗ’ｊ＝ｂ’０である、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎ）が秘匿された秘匿化演算結果［ｗ’］を得る第１論理和演算部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗ’ｊ＝ｂ’１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗ’ｊ＝ｂ’０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る第２論理和演算部と、
を有する検索装置。
【請求項９】
秘密計算によって前方一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ＞Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ（ｉ）＋１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）の場合にｅｉ，ｊ（ｉ）＝ａ１であり、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）でない場合にｅｉ，ｊ（ｉ）＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊ（ｉ）が前記ワイルドカード文字の場合にｗｊ（ｉ）＝ｂ１であり、ｋｊ（ｉ）が前記ワイルドカード文字でない場合にｗｊ（ｉ）＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ（ｉ））が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得るヌル判定部と、
前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［ｕ”］の少なくとも一部を用いた秘密計算によって、ｕ”ｊ（ｉ）＝ｃ１およびｗｊ（ｉ）＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ（ｉ）＝ｂ’１であり、ｕ”ｊ（ｉ）＝ｃ０およびｗｊ（ｉ）＝ｂ０の両方を満たす場合にｗ’ｊ（ｉ）＝ｂ’０である、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎ（ｉ））が秘匿された秘匿化演算結果［ｗ’］を得る第１論理和演算部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅ’ｉ，ｊ（ｉ）＝ａ１およびｗ’ｊ（ｉ）＝ｂ’１の少なくとも一方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ１であり、ｅｉ，ｊ（ｉ）＝ａ０およびｗ’ｊ（ｉ）＝ｂ’０の両方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅ’ｉ］を得る第２論理和演算部と、
前記秘匿化演算結果［ｅ’ｉ］と前記秘匿化演算結果［ｕ”］の少なくとも一部とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ”Ｎ（ｉ）＋１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る連結部と、
を有する検索装置。
【請求項１０】
請求項６から９の何れかの検索装置であって、
Ｎ≦Ｎ（ｉ）のときＮｍａｘ＝Ｎ（ｉ）であり、Ｎ＞Ｎ（ｉ）のときＮｍａｘ＝Ｎであり、
前記秘匿化演算結果［ｙｉ］を用いた秘密計算によって、ｙｉ，１＝…＝ｙｉ，Ｎｍａｘ＝ｄ１の場合にｚｉ＝ｇ１であり、ｙｉ，１＝…＝ｙｉ，Ｎｍａｘ＝ｄ１でない場合にｚｉ＝ｇ０である一致判定結果ｚｉが秘匿された秘匿化一致判定結果［ｚｉ］を得る論理積演算部を有する、検索装置。
【請求項１１】
請求項１から１０の何れかの検索装置の検索方法。
【請求項１２】
請求項１から１０の何れかの検索装置としてコンピュータを機能させるためのプログラム。
【請求項１３】
請求項１から１０の何れかの検索装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密計算技術に関し、特にデータを秘匿したまま検索を行う技術に関する。
【背景技術】
【０００２】
検索ワードおよび検索対象ワード群を秘匿したまま一致検索を行う秘密計算技術が知られている（例えば、非特許文献１等参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】濱田浩気, 桐淵直人，五十嵐大，“ラウンド効率のよい秘密計算パターンマッチング（A Round-Efficient Pattern Matching Algorithm for Secure Multi-Party Computation）”コンピュータ・セキュリティシンポジウム（CSS）2014.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来方式では、ワイルドカード文字を含む検索ワードを用いて秘匿したままの検索を実現しているものの、通信効率が悪く、秘匿化検索対象ワード長と秘匿化検索ワード長を共にＮとすると、Ｏ（Ｎ２ｌｏｇＮ）もの通信量が必要となってしまう。【０００５】
本発明は、ワイルドカード文字を含む検索ワードを秘匿したまま、効率良く秘匿されたデータベースの一致検索を行うことを目的とする。
【課題を解決するための手段】
【０００６】
記憶部に秘匿化データベース［ｘ１］，…，［ｘｍ］が格納されている。秘匿化データベース［ｘ１］，…，［ｘｍ］が含む秘匿化検索対象ワード［ｘｉ］は、ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿されたものである。入力部は秘匿化検索ワード［ｋ］の入力を受け付ける。秘匿化検索ワード［ｋ］は、ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿されたものである。等号判定部は、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る。ワイルドカード判定部は、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得る。論理和演算部は、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る。ただし、ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎである。
【発明の効果】
【０００７】
以上により、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【図面の簡単な説明】
【０００８】
【図１】図１は実施形態の検索システムを例示したブロック図である。
【図２】図２は実施形態の検索装置を例示したブロック図である。
【図３】図３は第１実施形態の検索方法を説明するためのフロー図である。
【図４】図４は第１実施形態の検索方法を説明するための概念図である。
【図５】図５は第１実施形態の検索方法を説明するための概念図である。
【図６】図６は第１実施形態の検索方法を説明するための概念図である。
【図７】図７は第１実施形態の検索方法を説明するための概念図である。
【図８】図８は第１実施形態の検索方法を説明するための概念図である。
【図９】図９は第１実施形態の検索方法を説明するための概念図である。
【図１０】図１０は第２実施形態の検索方法を説明するためのフロー図である。
【図１１】図１１は第２実施形態の検索方法を説明するための概念図である。
【図１２】図１２は第２実施形態の検索方法を説明するための概念図である。
【図１３】図１３は第２実施形態の検索方法を説明するための概念図である。
【図１４】図１４は第３実施形態の検索方法を説明するためのフロー図である。
【図１５】図１５は第３実施形態の検索方法を説明するための概念図である。
【図１６】図１６は第３実施形態の検索方法を説明するための概念図である。
【図１７】図１７は第４実施形態の検索方法を説明するためのフロー図である。
【図１８】図１８は第４実施形態の検索方法を説明するための概念図である。
【図１９】図１９は第４実施形態の検索方法を説明するための概念図である。
【図２０】図２０は第５実施形態の検索方法を説明するためのフロー図である。
【図２１】図２１は実施形態の検索方法を説明するための概念図である。
【図２２】図２２は第５実施形態の検索方法を説明するための概念図である。
【図２３】図２３は第５実施形態の検索方法を説明するための概念図である。
【図２４】図２４は第５実施形態の検索方法を説明するための概念図である。
【図２５】図２５は第６実施形態の検索方法を説明するためのフロー図である。
【図２６】図２６は第６実施形態の検索方法を説明するための概念図である。
【図２７】図２７は第６実施形態の検索方法を説明するための概念図である。
【図２８】図２８は第６実施形態の検索方法を説明するための概念図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施形態を説明する。
［第１実施形態］
第１実施形態を説明する。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行う。
【００１０】
＜構成＞
図１に例示するように、本実施形態の検索システム１は、検索を依頼する依頼装置１１、および検索を行う検索装置１２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００１１】
図２に例示するように、本実施形態の検索装置１２−ｈは、制御部１２０−ｈ、等号判定部１２１−ｈ、ワイルドカード判定部１２２−ｈ、論理和演算部１２３−ｈ、論理積演算部１２７−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置１２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００１２】
＜前処理＞
記憶部１２８−ｈには、ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）（例えば、図４および図６のＤＢ参照）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］が格納されている。ただし、ｍ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｔ（ｉ）≦Ｎである。検索対象ワードｘｉに含まれるｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）は検索対象となる通常文字である。一方、検索対象ワードｘｉに含まれる残りのＮ−ｔ（ｉ）個の文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎはヌル値を表す特殊文字（ヌル文字）である。ヌル文字は予め定められており（例えば、“０”）、通常文字として利用されない。ｔ（ｉ）＝Ｎの場合、検索対象ワードｘｉはヌル文字を含まない。各文字は例えば有限体の元で表現される。秘密分散方式に基づく秘密計算が行われる場合、秘匿化検索対象ワード［ｘｉ］は検索対象ワードｘｉの秘密分散値である。準同型性暗号方式に基づく秘密計算が行われる場合、秘匿化検索対象ワード［ｘｉ］は検索対象ワードｘｉの暗号文である。文字ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎのそれぞれを別々に秘匿化して得られた秘匿値［ｘｉ，１］，…，［ｘｉ，ｔ（ｉ）］，…，［ｘｉ，Ｎ］の集合を秘匿化検索対象ワード［ｘｉ］としてもよいし、Ｎ個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎをまとめて秘匿化したものを秘匿化検索対象ワード［ｘｉ］としてもよい。また、各秘匿化検索対象ワード［ｘｉ］には、コンテンツまたはネットワーク上のコンテンツの位置を表すコンテンツ情報の秘匿値が対応付けられていてもよい。
【００１３】
＜検索処理＞
図３を用いて本実施形態の検索処理を説明する。
依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）（例えば、図４および図６参照）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎは１個以上のワイルドカード文字を含んでもよい。文字ｋ１，…，ｋｎのうちワイルドカード以外の文字は通常文字である。ワイルドカード文字は予め定められており（例えば、「*」）、通常文字として利用されない。また、１個のワイルド文字は１個の通常文字または１個のヌル文字に対応する（以下の各実施形態でも同じである）。上述の検索対象ワードｘｉ（ただしｉ＝１，…，ｍ）がヌル文字を含まない場合、文字ｋ１，…，ｋｎのどの文字がワイルドカード文字であってもよい。一方、検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎを含む場合、本実施形態ではｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含まないことにする。検索ワードｋに含まれるＮ−ｎ個の文字ｋｎ＋１，…，ｋＮはヌル文字である。ただし、ｎ＝Ｎの場合、検索ワードｋはヌル文字を含まない（例えば、図４参照）。検索ワードｋに含まれたヌル文字は、上述の検索対象ワードｘｉ含まれたヌル文字と同一である。検索装置１２−ｈで秘密分散方式に基づく秘密計算が行われるのであれば、秘匿化検索ワード［ｋ］は検索ワードｋの秘密分散値である。一方、検索装置１２−ｈで準同型性暗号方式に基づく秘密計算が行われるのであれば、秘匿化検索ワード［ｋ］は検索ワードｋの暗号文である。文字ｋ１，…，ｋｎ，…，ｋＮのそれぞれを別々に秘匿化して得られた秘匿値［ｋ１］，…，［ｋｎ］，…，［ｋＮ］の集合を秘匿化検索ワード［ｋ］としてもよいし、Ｎ個の文字ｋ１，…，ｋｎ，…，ｋＮをまとめて秘匿化したものを秘匿化検索ワード［ｋ］としてもよい。
【００１４】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置１２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置１２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００１５】
まず、等号判定部１２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｘｉ，ｊがｋｊの場合（ｘｉ，ｊ＝ｋｊの場合）にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合（ｘｉ，ｊ≠ｋｊの場合）にｅｉ，ｊ＝ａ０である。ｅｉ，ｊ∈｛ａ０，ａ１｝であり、例えば、ａ０＝０であり、ａ１＝１である。ワイルドカード文字は通常文字と相違するため、ｋｊがワイルドカード文字である場合には必ずｅｉ，ｊ＝ａ０となる。同様に、ヌル文字は通常文字と相違するため、ｋｊがヌル文字でｘｉ，ｊが通常文字である場合、および、ｋｊが通常文字でｘｉ，ｊがヌル文字である場合には、必ずｅｉ，ｊ＝ａ０となる。また、ｋｊおよびｘｉ，ｊがいずれもヌル文字ならばｅｉ，ｊ＝ａ１となる。例えば、等号判定部１２１−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｋｊ］と［ｘｉ，ｊ］との等号判定（一致判定）を行い、ｅｉ，ｊを秘匿化した［ｅｉ，ｊ］を得、［ｅ１，ｊ］，…，［ｅ１，Ｎ］の集合を秘匿化演算結果［ｅｉ］として得る。あるいは、等号判定部１２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｅｉ，１，…，ｅｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｅｉ］を得てもよい。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ１２１−ｈ）。
【００１６】
ワイルドカード判定部１２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である。ｗｊ∈｛ｂ０，ｂ１｝であり、例えば、ｂ０＝０であり、ｂ１＝１である。例えば、ワイルドカード判定部１２２−ｈは、秘匿化検索ワード［ｋ］と、ワイルドカード文字を秘匿化して得られた秘匿化ワイルドカード文字とを用い、秘密計算によって秘匿化演算結果［ｗ］を得る。一例を挙げると、ワイルドカード判定部１２２−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｋｊ］と秘匿化ワイルドカード文字との等号判定を行い、ｗｊを秘匿化した［ｗｊ］を得、［ｗ１］，…，［ｗＮ］の集合を秘匿化演算結果［ｗ］として得る。あるいは、ワイルドカード判定部１２２−ｈが、秘匿化検索ワード［ｋ］と秘匿化ワイルドカード文字とを用いた秘密計算によって、ｗ１，…，ｗＮがまとめて秘匿された秘匿化演算結果［ｗ］を得てもよい。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ１２２−ｈ）。
【００１７】
論理和演算部１２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。ただし、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である。ｙｉ，ｊ∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１の場合、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｊである。ただし、「∨」は論理和（ＯＲ）を表す。例えば、論理和演算部１２３−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｅｉ，ｊ］と［ｗｊ］との論理和を行い、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｊを秘匿化した［ｙｉ，ｊ］を得、［ｙｉ，１］，…，［ｙｉ，Ｎ］の集合を秘匿化演算結果［ｙｉ］として得る。あるいは、論理和演算部１２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｙｉ，１，…，ｙｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｙｉ］を得てもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ１２３−ｈ）。
【００１８】
論理積演算部１２７−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｙｉ］を用いた秘密計算によって、一致判定結果ｚｉが秘匿された秘匿化一致判定結果［ｚｉ］を得て出力する。ただし、ｙｉ，１＝…＝ｙｉ，Ｎ＝ｄ１の場合にｚｉ＝ｇ１であり、ｙｉ，１＝…＝ｙｉ，Ｎ＝ｄ１でない場合にｚｉ＝ｇ０である。ｚｉ∈｛ｇ０，ｇ１｝であり、例えば、ｇ０＝０であり、ｇ１＝１である。例えば、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１の場合、ｚｉ＝ｙｉ，１∧…∧ｙｉ，Ｎである。ただし、「∧」は論理積（ＡＮＤ）を表す。ｚｉ＝ｇ１は検索対象ワードｘｉが検索ワードｋに一致することを表し、ｚｉ＝ｇ０は検索対象ワードｘｉが検索ワードｋに一致しないことを表す。秘匿化一致判定結果［ｚｉ］は記憶部１２８−ｈに格納される（ステップＳ１２７−ｈ）。
【００１９】
出力部１２９２−ｈは、各ｉ＝１，…，ｍについての秘匿化一致判定結果［ｚｉ］を出力する（ステップＳ１２９２−ｈ）。秘匿化一致判定結果［ｚｉ］は、ネットワーク等を経由して依頼装置１１に送られる。依頼装置１１は各ｉ＝１，…，ｍについて秘匿化一致判定結果［ｚｉ］を復元してｚｉを得る。例えば、秘密分散方式に基づく秘密計算が行われた場合には、依頼装置１１は所定数以上の検索装置１２−ｈから送られた［ｚｉ］からｚｉを復元する。一方、準同型性暗号方式に基づく秘密計算が行われた場合には、送られた［ｚｉ］を復号してｚｉを得る。これにより、各ｉについての検索結果が得られる。その後、これらの検索結果を用いた処理（例えば、一致した秘匿化検索対象ワード［ｘｉ］に対応するコンテンツ情報の秘匿値の要求など）が実行される。
【００２０】
＜具体例＞
以下に、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１である場合の具体例を示す。
【００２１】
図４に例示するように、Ｎ＝ｎ＝ｔ（ｉ）であり、ｋｒがワイルドカード文字「*」であり、１≦ｒ≦ｎであり、ｒ以外のｊ＝１，…，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，…，１，０，１，…，１）およびｗ＝（０，…，０，１，０，…，０）となり、ｙ１＝（１，…，１，１，１，…，１）となる。そのため、ｚ１＝１となる。
【００２２】
図５に例示するように、Ｎ＝ｎ＝ｔ（ｉ）であり、１およびｒ以外のｊ＝２，…，ｎについてのみｘ２，ｊ＝ｋｊを満たす場合、ｅ２＝（０，１，…，１，０，１，…，１）およびｗ＝（０，０，…，０，１，０，…，０）となり、ｙ２＝（０，１，…，１，１，１，…，１）となる。そのため、ｚ２＝０となる。
【００２３】
図６から図９はｎ＜Ｎおよびｔ（ｉ）＜Ｎの例である。図６に例示するように、ｋｎ＋１，…，ｋＮおよびｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字である。
【００２４】
図７に例示するように、ｔ（１）＝ｎであり、ｋｒがワイルドカード文字「*」であり、１≦ｒ≦ｎであり、ｒ以外のｊ＝１，…，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，０，…，１，…，１）およびｗ＝（０，０，…，１，…，０，…，０）となり、ｙ１＝（１，１，…，１，…，１，…，１）となる。そのため、ｚ１＝１となる。
【００２５】
図８に例示するように、ｔ（２）＝ｎ＋１であり、ｋｒがワイルドカード文字「*」であり、１≦ｒ≦ｎであり、ｒ以外のｊ＝１，…，ｎについてｘ２，ｊ＝ｋｊを満たす場合、ｅ２＝（１，１，…，０，…，１，０，１，…，１）およびｗ＝（０，０，…，１，…，０，０，０，…，０）となり、ｙ２＝（１，１，…，１，…，１，０，１，…，１）となる。そのため、ｚ２＝０となる。
【００２６】
図９に例示するように、ｔ（３）＝ｎ‐１であり、ｋｒがワイルドカード文字「*」であり、１≦ｒ≦ｎ‐１であり、ｒ以外のｊ＝１，…，ｎ‐１のみについてｘ３，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，０，…，０，１，１，…，１）およびｗ＝（０，０，…，１，…，０，０，０，…，０）となり、ｙ３＝（１，１，…，１，…，０，１，１，…，１）となる。そのため、ｚ３＝０となる。
【００２７】
＜本実施形態の特徴＞
上述のように、本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量（例えば、Ｏ（Ｎ）の通信量）で行うことができる。
【００２８】
［第２実施形態］
検索対象ワードｘｉの文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含み得る場合、第１実施形態の方法では正しく完全一致検索を行うことができないことがある。例えば、図１１の例の場合、検索対象ワードｘ３の文字ｘ３，ｎ，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｎがワイルドカード文字である。ワイルドカード文字はどのような通常文字にも一致すると判定しなければならないが、ワイルドカード文字はヌル文字とは一致しないと判定しなければならない。しかし、ｊ＝１，…，ｎ‐１についてｘ３，ｊ＝ｋｊを満たす場合、第１実施形態の方法ではｙ３＝（１，１，…，１，…，１，１，１，…，１）となり、ｚ３＝１となる。本実施形態では、このような場合にも正しく完全一致検索を行う方式を説明する。なお、以下ではこれまで説明した事項との相違点を中心に説明し、共通する事項については同じ参照番号を引用して説明を簡略化する。
【００２９】
＜構成＞
図１に例示するように、本実施形態の検索システム２は、検索を依頼する依頼装置１１、および検索を行う検索装置２２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。
【００３０】
図２に例示するように、本実施形態の検索装置２２−ｈは、制御部１２０−ｈ、等号判定部１２１−ｈ、ワイルドカード判定部１２２−ｈ、論理和演算部２２３−ｈ、ヌル判定部２２４−ｈ、論理積演算部１２７−ｈ，２２６−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置２２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００３１】
＜前処理＞
第１実施形態と同じである。
【００３２】
＜検索処理＞
図１０を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎはワイルドカード文字を含んでもよい。第１実施形態と異なり、検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎを含んでいる場合に、ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含んでいてもよい。
【００３３】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置２２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置２２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００３４】
まず、等号判定部１２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された第１秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｘｉ，ｊがｋｊの場合（ｘｉ，ｊ＝ｋｊの場合）にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合（ｘｉ，ｊ≠ｋｊの場合）にｅｉ，ｊ＝ａ０である。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ１２１−ｈ）。
【００３５】
ワイルドカード判定部１２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ１２２−ｈ）。
【００３６】
ヌル判定部２２４−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］を用いた秘密計算によって、演算結果μｉ＝（μｉ，１，…，μｉ，Ｎ）が秘匿された秘匿化演算結果［μｉ］を得て出力する。ただし、ｘｉ，ｊがヌル文字の場合にμｉ，ｊ＝θ０であり、ｘｉ，ｊがヌル文字でない場合にμｉ，ｊ＝θ１である。μｉ，ｊ∈｛θ０，θ１｝であり、例えば、θ０＝０であり、θ１＝１である。例えば、ヌル判定部２２４−ｈは、秘匿化検索対象ワード［ｘｉ］と、ヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［μｉ］を得る。一例を挙げると、ヌル判定部２２４−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｘｉ，ｊ］と秘匿化ヌル文字との等号判定を行い、μｉ，ｊを秘匿化した［μｉ，ｊ］を得、［μｉ，１］，…，［μｉ，Ｎ］の集合を秘匿化演算結果［μｉ］として得る。あるいは、ヌル判定部２２４−ｈが秘匿化検索対象ワード［ｘｉ］と秘匿化ヌル文字とを用いた秘密計算によって、μｉ，１，…，μｉ，Ｎがまとめて秘匿された秘匿化演算結果［μｉ］を得てもよい。秘匿化演算結果［μｉ］は記憶部１２８−ｈに格納される（ステップＳ２２４−ｈ）。
【００３７】
論理積演算部２２６−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｗ］と秘匿化演算結果［μｉ］とを用いた秘密計算によって、演算結果ｖｉ＝（ｖｉ，１，…，ｖｉ，Ｎ）が秘匿された秘匿化演算結果［ｖｉ］を得て出力する。ただし、ｗｊ＝ｂ１およびμｉ，ｊ＝θ１の両方を満たす場合にｖｉ，ｊ＝ρ１であり、ｗｊ＝ｂ０およびμｉ，ｊ＝θ０の少なくとも一方を満たす場合にｖｉ，ｊ＝ρ０である。ｖｉ，ｊ∈｛ρ０，ρ１｝であり、例えば、ρ０＝０であり、ρ１＝１である。例えば、ｂ０＝０、ｂ１＝１、ρ０＝０、ρ１＝１の場合、ｖｉ，ｊ＝ｗｊ∧μｉ，ｊである。例えば、論理積演算部２２６−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｗｊ］と［μｉ，ｊ］との論理積を行い、ｖｉ，ｊ＝ｗｊ∧μｉ，ｊを秘匿化した［ｖｉ，ｊ］を得、［ｖｉ，１］，…，［ｖｉ，Ｎ］の集合を秘匿化演算結果［ｖｉ］として得る。あるいは、論理積演算部２２６−ｈは、秘匿化演算結果［ｗ］と秘匿化演算結果［μｉ］とを用いた秘密計算によって、ｖｉ，１，…，ｖｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｖｉ］を得てもよい。秘匿化演算結果［ｖｉ］は記憶部１２８−ｈに格納される（ステップＳ２２６−ｈ）。
【００３８】
論理和演算部２２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。ただし、ｅｉ，ｊ＝ａ１およびｖｉ，ｊ＝ρ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｖｉ，ｊ＝ρ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である。ｙｉ，ｊ∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ρ０＝０、ρ１＝１、ｄ０＝０、ｄ１＝１の場合、ｙｉ，ｊ＝ｅｉ，ｊ∨ｖｉ，ｊである。例えば、論理和演算部２２３−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｅｉ，ｊ］と［ｖｉ，ｊ］との論理和を行い、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｉ，ｊを秘匿化した［ｙｉ，ｊ］を得、［ｙｉ，１］，…，［ｙｉ，Ｎ］の集合を秘匿化演算結果［ｙｉ］として得る。あるいは、論理和演算部２２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、ｙｉ，１，…，ｙｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｙｉ］を得てもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ２２３−ｈ）。
【００３９】
その後、第１実施形態で説明したステップＳ１２７−ｈ以降の処理が実行される。
【００４０】
＜具体例＞
以下にａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ρ０＝０、ρ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１である場合の具体例を示す。
【００４１】
図１１から図１３はｎ＜Ｎおよびｔ（ｉ）＜Ｎの例である。図１１に例示するように、ｋｎがワイルドカード文字「*」であり、ｋｎ＋１，…，ｋＮおよびｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字である。
【００４２】
図１２に例示するように、ｔ（１）＝ｎであり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，１，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，…，０）、μ１＝（１，１，…，１，１，０，０，…，０）、ｖ１＝（０，０，…，０，１，０，０，…，０）となり、ｙ１＝（１，１，…，１，１，１，１，…，１）となる。そのため、ｚ１＝１となる。
【００４３】
図１３に例示するように、ｔ（３）＝ｎ‐１であり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，１，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，…，０）、μ３＝（１，１，…，１，０，０，０，…，０）、ｖ３＝（０，０，…，０，０，０，０，…，０）となり、ｙ３＝（１，１，…，１，０，１，１，…，１）となる。そのため、ｚ３＝０となる。
【００４４】
＜本実施形態の特徴＞
上述のように、本実施形態では、検索対象ワードｘｉの文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【００４５】
［第３実施形態］
第３実施形態は第１実施形態の変形例である。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行う。
【００４６】
＜構成＞
図１に例示するように、本実施形態の検索システム３は、検索を依頼する依頼装置１１、および検索を行う検索装置３２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００４７】
図２に例示するように、本実施形態の検索装置３２−ｈは、制御部１２０−ｈ、等号判定部１２１−ｈ、ワイルドカード判定部１２２−ｈ、論理和演算部３２３−ｈ、ヌル判定部３２５−ｈ、論理積演算部１２７−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置３２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００４８】
＜前処理＞
第１実施形態と同一である。
【００４９】
＜検索処理＞
図１４を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎはワイルドカード文字を含んでもよい。検索対象ワードｘｉ（ただしｉ＝１，…，ｍ）がヌル文字を含まない場合、文字ｋ１，…，ｋｎのどの文字がワイルドカード文字であってもよい。一方、検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎを含む場合、本実施形態ではｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含まないことにする。
【００５０】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置３２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置３２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００５１】
まず、等号判定部１２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｘｉ，ｊがｋｊの場合（ｘｉ，ｊ＝ｋｊの場合）にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合（ｘｉ，ｊ≠ｋｊの場合）にｅｉ，ｊ＝ａ０である。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ１２１−ｈ）。
【００５２】
ワイルドカード判定部１２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ１２２−ｈ）。
【００５３】
ヌル判定部３２５−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｕ＝（ｕ１，…，ｕＮ）が秘匿された秘匿化演算結果［ｕ］を得て出力する。ただし、ｋｊがヌル値の場合にｕｊ＝ｃ１であり、ｋｊがヌル値でない場合にｕｊ＝ｃ０である。ｕｊ∈｛ｃ０，ｃ１｝であり、例えば、ｃ０＝０であり、ｃ１＝１である。例えば、ヌル判定部３２５−ｈは、秘匿化検索ワード［ｋ］とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［ｕ］を得る。一例を挙げると、ヌル判定部３２５−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｋｊ］と秘匿化ヌル文字との等号判定を行い、ｕｊを秘匿化した［ｕｊ］を得、［ｕ１］，…，［ｕＮ］の集合を秘匿化演算結果［ｕ］として得る。あるいは、ヌル判定部３２５−ｈが秘匿化検索ワード［ｋ］と秘匿化ヌル文字とを用いた秘密計算によって、ｕ１，…，ｕＮがまとめて秘匿された秘匿化演算結果［ｕ］を得てもよい。秘匿化演算結果［ｕ］は記憶部１２８−ｈに格納される（ステップＳ３２５−ｈ）。
【００５４】
論理和演算部３２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。ただし、ｅｉ，ｊ＝ａ１、ｗｊ＝ｂ１、およびｕｊ＝ｃ１の少なくとも何れかを満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０およびｕｊ＝ｃ０のすべての満たす場合にｙｉ，ｊ＝ｄ０である。ｙｉ，ｊ∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１の場合、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｊ∨ｕｊである。例えば、論理和演算部３２３−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｅｉ，ｊ］と［ｗｊ］と［ｕｊ］との論理和を行い、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｊ∨ｕｊを秘匿化した［ｙｉ，ｊ］を得、［ｙｉ，１］，…，［ｙｉ，Ｎ］の集合を秘匿化演算結果［ｙｉ］として得る。あるいは、論理和演算部３２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ］とを用いた秘密計算によって、ｙｉ，１，…，ｙｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｙｉ］を得てもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ３２３−ｈ）。
【００５５】
その後、第１実施形態で説明したステップＳ１２７−ｈ以降の処理が実行される。
【００５６】
＜具体例＞
以下に、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１である場合の具体例を示す。
【００５７】
図１５に例示するように、ｔ（２）＝ｎ＋１であり、ｊ＝１，…，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ２＝（１，１，…，０，…，１，０，１，…，１）、ｗ＝（０，０，…，１，…，０，０，０，…，０）、ｕ＝（０，０，…，０，…，０，１，１，…，１）、ｙ２＝（１，１，…，１，…，１，１，１，…，１）となる。そのため、ｚ２＝１となる。
【００５８】
図１６に例示するように、ｔ（３）＝ｎ‐１であり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，０，…，０，１，１，…，１）、ｗ＝（０，０，…，１，…，０，０，０，…，０）、ｕ＝（０，０，…，０，…，０，１，１，…，１）、ｙ３＝（１，１，…，１，…，０，１，１，…，１）となる。そのため、ｚ３＝０となる。
【００５９】
＜本実施形態の特徴＞
上述のように、本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【００６０】
［第４実施形態］
第４実施形態は第２，３実施形態の変形例である。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行う。完全一致検索の場合と同様、検索対象ワードｘｉの文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含み得る場合、第３実施形態の方法では正しく前方一致検索を行うことができないことがある。本実施形態では、このような場合にも正しく前方一致検索を行う方式を説明する。
【００６１】
＜構成＞
図１に例示するように、本実施形態の検索システム４は、検索を依頼する依頼装置１１、および検索を行う検索装置４２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００６２】
図２に例示するように、本実施形態の検索装置４２−ｈは、制御部１２０−ｈ、等号判定部１２１−ｈ、ワイルドカード判定部１２２−ｈ、論理和演算部４２３−ｈ、ヌル判定部，２２４−ｈ，３２５−ｈ、論理積演算部１２７−ｈ，２２６−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置３２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００６３】
＜前処理＞
第１実施形態と同じである。
【００６４】
＜検索処理＞
図１７を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎはワイルドカード文字を含んでもよい。第３実施形態と異なり、検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎを含んでいる場合に、ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含んでいてもよい。
【００６５】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置２２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置２２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００６６】
まず、等号判定部１２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｘｉ，ｊがｋｊの場合（ｘｉ，ｊ＝ｋｊの場合）にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合（ｘｉ，ｊ≠ｋｊの場合）にｅｉ，ｊ＝ａ０である。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ１２１−ｈ）。
【００６７】
ワイルドカード判定部１２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ１２２−ｈ）。
【００６８】
ヌル判定部３２５−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｕ＝（ｕ１，…，ｕＮ）が秘匿された秘匿化演算結果［ｕ］を得て出力する。ただし、ｋｊがヌル値の場合にｕｊ＝ｃ１であり、ｋｊがヌル値でない場合にｕｊ＝ｃ０である。例えば、ヌル判定部３２５−ｈは、秘匿化検索ワード［ｋ］とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［ｕ］を得る。秘匿化演算結果［ｕ］は記憶部１２８−ｈに格納される（ステップＳ３２５−ｈ）。
【００６９】
ヌル判定部２２４−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］を用いた秘密計算によって、演算結果μｉ＝（μｉ，１，…，μｉ，Ｎ）が秘匿された秘匿化演算結果［μｉ］を得て出力する。ただし、ｘｉ，ｊがヌル文字の場合にμｉ，ｊ＝θ０であり、ｘｉ，ｊがヌル文字でない場合にμｉ，ｊ＝θ１である。秘匿化演算結果［μｉ］は記憶部１２８−ｈに格納される（ステップＳ２２４−ｈ）。
【００７０】
論理積演算部２２６−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｗ］と秘匿化演算結果［μｉ］とを用いた秘密計算によって、演算結果ｖｉ＝（ｖｉ，１，…，ｖｉ，Ｎ）が秘匿された秘匿化演算結果［ｖｉ］を得て出力する。ただし、ｗｊ＝ｂ１およびμｉ，ｊ＝θ１の両方を満たす場合にｖｉ，ｊ＝ρ１であり、ｗｊ＝ｂ０およびμｉ，ｊ＝θ０の少なくとも一方を満たす場合にｖｉ，ｊ＝ρ０である。秘匿化演算結果［ｖｉ］は記憶部１２８−ｈに格納される（ステップＳ２２６−ｈ）。
【００７１】
論理和演算部４２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｕ］と秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。ただし、ｅｉ，ｊ＝ａ１、ｖｉ，ｊ＝ρ１、およびｕｊ＝ｃ１の少なくとも何れかを満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｖｉ，ｊ＝ρ０およびｕｊ＝ｃ０のすべての満たす場合にｙｉ，ｊ＝ｄ０である。ｙｉ，ｊ∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ρ０＝０、ρ１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１の場合、ｙｉ，ｊ＝ｅｉ，ｊ∨ｖｉ，ｊ∨ｕｊである。例えば、論理和演算部４２３−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｅｉ，ｊ］と［ｖｉ，ｊ］と［ｕｊ］との論理和を行い、ｙｉ，ｊ＝ｅｉ，ｊ∨ｖｉ，ｊ∨ｕｊを秘匿化した［ｙｉ，ｊ］を得、［ｙｉ，１］，…，［ｙｉ，Ｎ］の集合を秘匿化演算結果［ｙｉ］として得る。あるいは、論理和演算部４２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｖｉ］と秘匿化演算結果［ｕ］とを用いた秘密計算によって、ｙｉ，１，…，ｙｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｙｉ］を得てもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ４２３−ｈ）。
【００７２】
その後、第１実施形態で説明したステップＳ１２７−ｈ以降の処理が実行される。
【００７３】
＜具体例＞
以下に、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１、ρ０＝０、ρ１＝１、ｇ０＝０、ｇ１＝１である場合の具体例を示す。図１８および図１９はｎ＜Ｎおよびｔ（ｉ）＜Ｎの例である。ｋｎがワイルドカード文字「*」であり、ｋｎ＋１，…，ｋＮおよびｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字である。
【００７４】
図１８に例示するように、ｔ（１）＝ｎであり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，１，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，…，０）、ｕ＝（０，０，…，０，１，１，…，１）、μ１＝（１，１，…，１，１，０，０，…，０）、ｖ１＝（０，０，…，０，１，０，０，…，０）となり、ｙ１＝（１，１，…，１，１，１，１，…，１）となる。そのため、ｚ１＝１となる。
【００７５】
図１９に例示するように、ｔ（３）＝ｎ‐１であり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，１，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，…，０）、ｕ＝（０，０，…，０，１，１，…，１）、μ３＝（１，１，…，１，０，０，０，…，０）、ｖ３＝（０，０，…，０，０，０，０，…，０）となり、ｙ３＝（１，１，…，１，０，１，１，…，１）となる。そのため、ｚ３＝０となる。
【００７６】
＜本実施形態の特徴＞
上述のように、本実施形態では、検索対象ワードｘｉの文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【００７７】
［第５実施形態］
第５実施形態は第１，２実施形態の変形例である。第１，２実施形態では秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であることが前提であった。これに対し、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず、完全一致検索を行うことができる。
【００７８】
図１に例示するように、本実施形態の検索システム５は、検索を依頼する依頼装置１１、および検索を行う検索装置５２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００７９】
図２に例示するように、本実施形態の検索装置５２−ｈは、制御部１２０−ｈ、等号判定部５２１−ｈ、ワイルドカード判定部５２２−ｈ、論理和演算部５２３−ｈ、ヌル判定部５２４−ｈ，５２５−ｈ、論理積演算部５２７−ｈ、連結部５２８−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置５２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００８０】
＜前処理＞
記憶部１２８−ｈには、ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））（例えば、図２１のＤＢ参照）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］が格納されている。ただし、ｍ，ｔ（ｉ），Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｔ（ｉ）≦Ｎ（ｉ）である。検索対象ワードｘｉに含まれるｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）は検索対象となる通常文字である。一方、検索対象ワードｘｉに含まれる残りのＮ（ｉ）−ｔ（ｉ）個の文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎ（ｉ）はヌル文字である。文字ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ）のそれぞれを別々に秘匿化して得られた秘匿値［ｘｉ，１］，…，［ｘｉ，ｔ（ｉ）］，…，［ｘｉ，Ｎ（ｉ）］の集合を秘匿化検索対象ワード［ｘｉ］としてもよいし、Ｎ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ）をまとめて秘匿化したものを秘匿化検索対象ワード［ｘｉ］としてもよい。その他は第１実施形態で述べた通りである。
【００８１】
＜検索処理＞
図２０を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｊ＝１，…，Ｎであり、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎはワイルドカード文字を含んでもよい。検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎを含んでいる場合に、ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含んでいてもよい。ｎ，Ｎが正整数であり、ｎ≦Ｎである。Ｎ≦Ｎ（ｉ）のときＭｍｉｎ＝Ｎであり、Ｎ＞Ｎ（ｉ）のときＭｍｉｎ＝Ｎ（ｉ）である。このようなＭｍｉｎをＭｍｉｎ＝ｍｉｎ（Ｎ（ｉ），Ｎ）と表記する。また、Ｎ≦Ｎ（ｉ）のときＮｍａｘ＝Ｎ（ｉ）であり、Ｎ＞Ｎ（ｉ）のときＮｍａｘ＝Ｎである。このようなＭｍａｘをＭｍａｘ＝ｍａｘ（Ｎ（ｉ），Ｎ）と表記する。記載表記の制約上、Ｎｍｉｎを「Ｎｍｉｎ」と表記し、Ｎｍａｘを「Ｎｍａｘ」と表記する場合がある。ｊ”＝Ｍｍｉｎ＋１，…，Ｎであり、ｊ”（ｉ）＝Ｍｍｉｎ＋１，…，Ｎ（ｉ）である。ただし、Ｍｍｉｎ＋１≧Ｎのときｊ”は空であり、Ｍｍｉｎ＋１≧Ｎ（ｉ）のときｊ”（ｉ）は空である。前述のように、文字ｋ１，…，ｋｎ，…，ｋＮのそれぞれを別々に秘匿化して得られた秘匿値［ｋ１］，…，［ｋｎ］，…，［ｋＮ］の集合を秘匿化検索ワード［ｋ］としてもよいし、Ｎ個の文字ｋ１，…，ｋｎ，…，ｋＮをまとめて秘匿化したものを秘匿化検索ワード［ｋ］としてもよい。
【００８２】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置５２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置５２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００８３】
まず、等号判定部５２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｘｉ，ｊ’がｋｊ’の場合にｅｉ，ｊ’＝ａ１であり、ｘｉ，ｊ’がｋｊ’でない場合にｅｉ，ｊ’＝ａ０である。ｅｉ，ｊ’∈｛ａ０，ａ１｝であり、例えば、ａ０＝０であり、ａ１＝１である。例えば、等号判定部５２１−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎついて［ｋｊ’］と［ｘｉ，ｊ’］との等号判定を行い、ｅｉ，ｊ’を秘匿化した［ｅｉ，ｊ’］を得、［ｅ１，ｊ’］，…，［ｅ１，Ｎｍｉｎ］の集合を秘匿化演算結果［ｅｉ］として得る。あるいは、等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｅｉ，１，…，ｅｉ，Ｎｍｉｎがまとめて秘匿された秘匿化演算結果［ｅｉ］を得てもよい。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ５２１−ｈ）。
【００８４】
ワイルドカード判定部５２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｋｊ’がワイルドカード文字の場合にｗｊ’＝ｂ１であり、ｋｊ’がワイルドカード文字でない場合にｗｊ’＝ｂ０である。例えば、ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］とワイルドカード文字を秘匿化して得られた秘匿化ワイルドカード文字とを用い、秘密計算によって秘匿化演算結果［ｗ］を得る。一例を挙げると、ワイルドカード判定部５２２−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎについて［ｋｊ’］と秘匿化ワイルドカード文字との等号判定を行い、ｗｊ’を秘匿化した［ｗｊ’］を得、［ｗ１］，…，［ｗＮｍｉｎ］の集合を秘匿化演算結果［ｗ］として得る。あるいは、ワイルドカード判定部１２２−ｈが、秘匿化検索ワード［ｋ］と秘匿化ワイルドカード文字とを用いた秘密計算によって、ｗ１，…，ｗＮｍｉｎがまとめて秘匿された秘匿化演算結果［ｗ］を得てもよい。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ５２２−ｈ）。
【００８５】
ヌル判定部５２５−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］の少なくとも一部を用いた秘密計算によって、演算結果ｕ’Ｎｍｉｎ＋１，…，ｕ’Ｎが秘匿された秘匿化演算結果［ｕ’］を得て出力する。ただし、ｊ”＝Ｍｍｉｎ＋１，…，Ｎについて、ｋｊ”がヌル文字の場合にｕ’ｊ”＝ｃ１であり、ｋｊ”がヌル文字でない場合にｕ’ｊ”＝ｃ０である。ｕ’ｊ”∈｛ｃ０，ｃ１｝であり、例えば、ｃ０＝０であり、ｃ１＝１である。例えば、ヌル判定部５２５−ｈは、秘匿化検索ワード［ｋ］の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［ｕ’］を得る。一例を挙げると、ヌル判定部５２５−ｈは、秘密計算によって、ｊ”＝Ｍｍｉｎ＋１，…，Ｎについて［ｋｊ”］と秘匿化ヌル文字との等号判定を行い、ｕ’ｊ”を秘匿化した［ｕ’ｊ”］を得、［ｕ’Ｍｍｉｎ＋１］，…，［ｕ’Ｎ］の集合を秘匿化演算結果［ｕ’］として得る。あるいは、ヌル判定部５２５−ｈが秘匿化検索ワード［ｋ］と秘匿化ヌル文字とを用いた秘密計算によって、ｕ’Ｍｍｉｎ＋１，…，ｕ’Ｎがまとめて秘匿された秘匿化演算結果［ｕ’］を得てもよい。秘匿化演算結果［ｕ’］は記憶部１２８−ｈに格納される。（ステップＳ５２５−ｈ）。なお、Ｍｍｉｎ＋１≧ＮのときにはステップＳ５２５−ｈの処理は実行されない。
【００８６】
論理和演算部５２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｅｉ，ｊ’＝ａ１およびｗｊ’＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ’＝ｄ１であり、ｅｉ，ｊ’＝ａ０およびｗｊ’＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ’＝ｄ０である。ｅ’ｉ，ｊ’∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１の場合、ｅ’ｉ，ｊ’＝ｅｉ，ｊ’∨ｗｊ’である。例えば、論理和演算部５２３−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎについて、［ｅｉ，ｊ’］と［ｗｊ’］との論理和を行い、ｅ’ｉ，ｊ’＝ｅｉ，ｊ’∨ｗｊ’を秘匿化した［ｅ’ｉ，ｊ’］を得、［ｅ’ｉ，１］，…，［ｅ’ｉ，Ｎｍｉｎ］の集合を秘匿化演算結果［ｅ’ｉ］として得る。あるいは、論理和演算部５２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅ’ｉ，１，…，ｅ’ｉ，Ｎｍｉｎがまとめて秘匿された秘匿化演算結果［ｅ’ｉ］を得てもよい。秘匿化演算結果［ｅ’ｉ］は記憶部１２８−ｈに格納される（ステップＳ５２３１−ｈ）。
【００８７】
ヌル判定部５２４−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］の少なくとも一部を用いた秘密計算によって、演算結果μ’ｉ＝（μ’ｉ，Ｎｍｉｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［μ’ｉ］を得て出力する。ただし、ｊ”（ｉ）＝Ｍｍｉｎ＋１，…，Ｎ（ｉ）について、ｘｉ，ｊ”（ｉ）がヌル文字の場合にμ’ｉ，ｊ”（ｉ）＝ｄ１であり、ｘｉ，ｊ”（ｉ）がヌル文字でない場合にμ’ｉ，ｊ”（ｉ）＝ｄ０である。μ’ｉ，ｊ”（ｉ）∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。ヌル判定部５２４−ｈは、秘匿化検索対象ワード［ｘｉ］の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［μ’ｉ］を得る。一例を挙げると、ヌル判定部５２４−ｈは、秘密計算によって、ｊ”（ｉ）＝Ｍｍｉｎ＋１，…，Ｎ（ｉ）について［ｘｉ，ｊ”（ｉ）］と秘匿化ヌル文字との等号判定を行い、μ’ｉ，ｊ”（ｉ）を秘匿化した［μ’ｉ，ｊ”（ｉ）］を得、［μ’ｉ，Ｍｍｉｎ＋１］，…，［μ’ｉ，Ｎ（ｉ）］の集合を秘匿化演算結果［μ’ｉ］として得る。あるいは、ヌル判定部５２４−ｈが秘匿化検索対象ワード［ｘｉ］と秘匿化ヌル文字とを用いた秘密計算によって、μ’ｉ，Ｎｍｉｎ＋１，…，μ’ｉ，Ｎ（ｉ）がまとめて秘匿された秘匿化演算結果［μ’ｉ］を得てもよい。秘匿化演算結果［μ’ｉ］は記憶部１２８−ｈに格納される（ステップＳ５２４−ｈ）。なお、Ｍｍｉｎ＋１≧Ｎ（ｉ）のときにはステップＳ５２４−ｈの処理は実行されない。
【００８８】
連結部５２８−ｈは、少なくとも秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉが秘匿された秘匿化演算結果［ｙｉ］を得て出力する。Ｎ＝Ｎ（ｉ）の場合、連結部５２８−ｈは、秘匿化演算結果［ｅ’ｉ］を秘匿化演算結果［ｙｉ］として出力する。Ｎ＞Ｎ（ｉ）の場合、連結部５２８−ｈは、秘匿化演算結果［ｕ’］および秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。Ｎ＜Ｎ（ｉ）の場合、連結部５２８−ｈは、秘匿化演算結果［ｅ’ｉ］と秘匿化演算結果［μ’ｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ（ｉ））＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ，μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。［ｙｉ］はｙｉの要素がそれぞれ秘匿化された秘匿化結果の集合であってもよいし、ｙｉのすべての要素をまとめて秘匿化したものであってもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ５２８−ｈ）。
【００８９】
論理積演算部５２７−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｙｉ］を用いた秘密計算によって、秘匿化演算結果［ｙｉ］を用いた秘密計算によって、一致判定結果ｚｉが秘匿された秘匿化一致判定結果［ｚｉ］を得て出力する。ただし、ｙｉ，１＝…＝ｙｉ，Ｎｍａｘ＝ｄ１の場合にｚｉ＝ｇ１であり、ｙｉ，１＝…＝ｙｉ，Ｎｍａｘ＝ｄ１でない場合にｚｉ＝ｇ０である。ｚｉ∈｛ｇ０，ｇ１｝であり、例えば、ｇ０＝０であり、ｇ１＝１である。例えば、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１の場合、ｚｉ＝ｙｉ，１∧…∧ｙｉ，Ｎｍａｘである。秘匿化一致判定結果［ｚｉ］は記憶部１２８−ｈに格納される（ステップＳ５２７−ｈ）。
【００９０】
その後、第１実施形態で説明したステップＳ１２９２−ｈ以降の処理が実行される。
【００９１】
＜具体例＞
本実施形態の処理をＮ＝Ｎ（ｉ）の場合、Ｎ＞Ｎ（ｉ）の場合、Ｎ＜Ｎ（ｉ）の場合に区分して記載すると以下のようになる。
【００９２】
≪Ｎ＝Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。論理和演算部５２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］＝［ｅ’ｉ］を得て出力する。例えば、図２３に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ２，ｊ＝ｋｊを満たす場合、ｅ２＝（１，１，…，１，０，１，０，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｙ２＝ｅ’２＝（１，１，…，１，１，１，０，１，…，１）となる。そのため、ｚ２＝０となる。
【００９３】
≪Ｎ＞Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ（ｉ）＋１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）の場合にｅｉ，ｊ（ｉ）＝ａ１であり、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）でない場合にｅｉ，ｊ（ｉ）＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊ（ｉ）がワイルドカード文字の場合にｗｊ（ｉ）＝ｄ１であり、ｋｊ（ｉ）がワイルドカード文字でない場合にｗｊ（ｉ）＝ｄ０である、演算結果ｗ＝（ｗ１，…，ｗＮ（ｉ））が秘匿された秘匿化演算結果［ｗ］を得て出力する。ヌル判定部５２５−ｈ（第１ヌル判定部）は、秘匿化検索ワード［ｋ］の少なくとも一部を用いた秘密計算によって、ｋｊ”（ｉ）がヌル文字の場合にｕ’ｊ”（ｉ）＝ｃ１であり、ｋｊ”（ｉ）がヌル文字でない場合にｕ’ｊ”（ｉ）＝ｃ０である、演算結果ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎが秘匿された秘匿化演算結果［ｕ’］を得て出力する。論理和演算部５２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ（ｉ）＝ａ１およびｗｊ（ｉ）＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ１であり、ｅｉ，ｊ（ｉ）＝ａ０およびｗｊ（ｉ）＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。連結部５２８−ｈは、秘匿化演算結果［ｕ’］および秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。例えば、図２２に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，１，０，１，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｅ’１＝（１，１，…，１，１，１，１，１，…，１）となり、ｙ１＝（１，１，…，１，１，１，１，１，…，１，１）となる。そのため、ｚ１＝１となる。
【００９４】
≪Ｎ＜Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ＜Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ＋１，…，Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。論理和演算部５２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ）が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。ヌル判定部５２４−ｈ（第２ヌル判定部）は、秘匿化検索対象ワード［ｘｉ］の少なくとも一部を用いた秘密計算によって、ｘｉ，ｊ”（ｉ）がヌル文字の場合にμ’ｉ，ｊ”（ｉ）＝ｄ１であり、ｘｉ，ｊ”（ｉ）がヌル文字でない場合にμ’ｉ，ｊ”（ｉ）＝ｄ０である、演算結果μ’ｉ＝（μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［μ’ｉ］を得て出力する。連結部５２８−ｈは、秘匿化演算結果［ｅ’ｉ］と秘匿化演算結果［μ’ｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ（ｉ））＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ，μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。例えば、図２４に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ３，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，１，０，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｅ’３＝（１，１，…，１，１，０，１，１，…，１）となり、ｙ３＝（１，１，…，１，１，０，１，１，…，１，１）となる。そのため、ｚ３＝０となる。
【００９５】
＜本実施形態の特徴＞
上述のように、本実施形態では、検索ワードｋがワイルドカード文字を含み得る場合であっても、検索ワードｋおよび検索対象ワードｘｉの少なくとも一方がヌル文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。さらに、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【００９６】
［第６実施形態］
第６実施形態は第３，４実施形態の変形例である。第３，４実施形態では秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であることが前提であった。これに対し、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず、前方一致検索を行うことができる。
【００９７】
図１に例示するように、本実施形態の検索システム６は、検索を依頼する依頼装置１１、および検索を行う検索装置６２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００９８】
図２に例示するように、本実施形態の検索装置６２−ｈは、制御部１２０−ｈ、等号判定部５２１−ｈ、ワイルドカード判定部５２２−ｈ、論理和演算部６２３−ｈ、ヌル判定部６２５−ｈ、論理積演算部５２７−ｈ、連結部６２８−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置６２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００９９】
＜前処理＞
第５実施形態と同じである。
【０１００】
図２５を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置６２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置６２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【０１０１】
まず、等号判定部５２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｘｉ，ｊ’がｋｊ’の場合にｅｉ，ｊ’＝ａ１であり、ｘｉ，ｊ’がｋｊ’でない場合にｅｉ，ｊ’＝ａ０である。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ５２１−ｈ）。
【０１０２】
ワイルドカード判定部５２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｋｊ’がワイルドカード文字の場合にｗｊ’＝ｂ１であり、ｋｊ’がワイルドカード文字でない場合にｗｊ’＝ｂ０である。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ５２２−ｈ）。
【０１０３】
ヌル判定部６２５−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得て出力する。ただし、ｊ＝１，…，Ｎについて、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である。ｕ”ｊ∈｛ｃ０，ｃ１｝であり、例えば、ｃ０＝０であり、ｃ１＝１である。例えば、ヌル判定部６２５−ｈは、秘匿化検索ワード［ｋ］の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［ｕ”］を得る。一例を挙げると、ヌル判定部６２５−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｋｊ］と秘匿化ヌル文字との等号判定を行い、ｕ”ｊを秘匿化した［ｕ”ｊ］を得、［ｕ”１］，…，［ｕ”Ｎ］の集合を秘匿化演算結果［ｕ”］として得る。あるいは、ヌル判定部６２５−ｈが秘匿化検索ワード［ｋ］と秘匿化ヌル文字とを用いた秘密計算によって、ｕ”１，…，ｕ”Ｎがまとめて秘匿された秘匿化演算結果［ｕ”］を得てもよい。秘匿化演算結果［ｕ”］は記憶部１２８−ｈに格納される（ステップＳ６２５１−ｈ）。
【０１０４】
論理和演算部６２３−ｈ（第１論理和演算部）は、記憶部１２８−ｈから読み出した秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ”］の少なくとも一部を用いた秘密計算によって、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｗ’］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについてｕ”ｊ’＝ｃ１およびｗｊ’＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ’＝ｂ’１であり、ｕ”ｊ’＝ｃ０およびｗｊ’＝ｂ０の両方を満たす場合にｗ’ｊ’＝ｂ’０である。ｗ’ｊ∈｛ｂ’０，ｂ’１｝であり、例えば、ｂ’０＝０であり、ｂ’１＝１である。例えば、ｂ０＝０、ｂ１＝１、ｃ０＝０、ｃ１＝１、ｂ’０＝０、ｂ’１＝１の場合、ｗ’ｊ’＝ｕ”ｊ’∨ｗｊ’である。例えば、論理和演算部６２３−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎについて、［ｕ”ｊ’］と［ｗｊ’］との論理和を行い、ｗ’ｊ’＝ｕ”ｊ’∨ｗｊ’を秘匿化した［ｗ’ｊ’］を得、［ｗ’１］，…，［ｗ’Ｎｍｉｎ］の集合を秘匿化演算結果［ｗ’］として得る。あるいは、論理和演算部６２３−ｈは、秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ”］とを用いた秘密計算によって、ｗ’１，…，ｗ’Ｎｍｉｎがまとめて秘匿された秘匿化演算結果［ｗ’］を得てもよい。秘匿化演算結果［ｗ’］は記憶部１２８−ｈに格納される（ステップＳ６２３１−ｈ）。
【０１０５】
論理和演算部６２３−ｈ（第２論理和演算部）は、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ’］とを用いた秘密計算によって、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｅ’ｉ，ｊ’＝ａ１およびｗ’ｊ’＝ｂ’１の少なくとも一方を満たす場合にｅ’ｉ，ｊ’＝ｄ１であり、ｅｉ，ｊ’＝ａ０およびｗ’ｊ’＝ｂ’０の両方を満たす場合にｅ’ｉ，ｊ’＝ｄ０である。ｅ’ｉ，ｊ’∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ｂ’０＝０、ｂ’１＝１、ｄ０＝０、ｄ１＝１の場合、ｅ’ｉ，ｊ’＝ｅｉ，ｊ’∨ｗ’ｊ’である。例えば、論理和演算部６２３−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎについて、［ｅｉ，ｊ’］と［ｗ’ｊ’］との論理和を行い、ｅ’ｉ，ｊ’＝ｅｉ，ｊ’∨ｗ’ｊ’を秘匿化した［ｅ’ｉ，ｊ’］を得、［ｅ’ｉ，１］，…，［ｅ’ｉ，Ｎｍｉｎ］の集合を秘匿化演算結果［ｅ’ｉ］として得る。あるいは、論理和演算部６２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅ’ｉ，１，…，ｅ’ｉ，Ｎｍｉｎがまとめて秘匿された秘匿化演算結果［ｅ’ｉ］を得てもよい。秘匿化演算結果［ｅ’ｉ］は記憶部１２８−ｈに格納される（ステップＳ６２３２−ｈ）。
【０１０６】
連結部６２８−ｈは、少なくとも秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉが秘匿された秘匿化演算結果［ｙｉ］を得て出力する。Ｎ≦Ｎ（ｉ）の場合、連結部６２８−ｈは、秘匿化演算結果［ｅ’ｉ］を秘匿化演算結果［ｙｉ］として出力する。Ｎ＞Ｎ（ｉ）の場合、連結部６２８−ｈは、秘匿化演算結果［ｅ’ｉ］と秘匿化演算結果［ｕ”］の少なくとも一部とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ”Ｎ（ｉ）＋１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。［ｙｉ］はｙｉの要素がそれぞれ秘匿化された秘匿化結果の集合であってもよいし、ｙｉのすべての要素をまとめて秘匿化したものであってもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ６２８−ｈ）。
【０１０７】
その後、ステップＳ５２７−ｈおよび第１実施形態で説明したステップＳ１２９２−ｈ以降の処理が実行される。
【０１０８】
＜具体例＞
本実施形態の処理をＮ＞Ｎ（ｉ）の場合、Ｎ≦Ｎ（ｉ）の場合に区分して記載すると以下のようになる。
【０１０９】
≪Ｎ＞Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ（ｉ）＋１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）の場合にｅｉ，ｊ（ｉ）＝ａ１であり、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）でない場合にｅｉ，ｊ（ｉ）＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊ（ｉ）がワイルドカード文字の場合にｗｊ（ｉ）＝ｂ１であり、ｋｊ（ｉ）がワイルドカード文字でない場合にｗｊ（ｉ）＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ（ｉ））が秘匿された秘匿化演算結果［ｗ］を得て出力する。ヌル判定部６２５−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得て出力する。論理和演算部６２３−ｈは、秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ”］の少なくとも一部を用いた秘密計算によって、ｕ”ｊ（ｉ）＝ｃ１およびｗｊ（ｉ）＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ（ｉ）＝ｂ’１であり、ｕ”ｊ（ｉ）＝ｃ０およびｗｊ（ｉ）＝ｂ０の両方を満たす場合にｗ’ｊ（ｉ）＝ｂ’０である、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎ（ｉ））が秘匿された秘匿化演算結果［ｗ’］を得て出力する。論理和演算部６２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅ’ｉ，ｊ（ｉ）＝ａ１およびｗ’ｊ（ｉ）＝ｂ’１の少なくとも一方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ１であり、ｅｉ，ｊ（ｉ）＝ａ０およびｗ’ｊ（ｉ）＝ｂ’０の両方を満たす場合にｙｉ，ｊ（ｉ）＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。連結部６２８−ｈは秘匿化演算結果［ｅ’ｉ］と秘匿化演算結果［ｕ”］の少なくとも一部とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ”Ｎ（ｉ）＋１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。例えば、図２６に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｂ’０＝０、ｂ’１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，１，０，１，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｕ”＝（０，０，…，０，０，０，１，１，…，１，１）、ｗ’＝（０，０，…，０，１，０，１，１，…，１）となり、ｅ’１＝（１，１，…，１，１，１，１，１，…，１）となり、ｙ１＝（１，１，…，１，１，１，１，１，…，１，１）となる。そのた��、ｚ１＝１となる。
【０１１０】
≪Ｎ≦Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ヌル判定部６２５−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得て出力する。論理和演算部６２３−ｈは、秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ”］を用いた秘密計算によって、ｕ”ｊ＝ｃ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ＝ｂ’１であり、ｕ”ｊ＝ｃ０およびｗｊ＝ｂ０の両方を満たす場合にｗ’ｊ＝ｂ’０である、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎ）が秘匿された秘匿化演算結果［ｗ’］を得て出力する。論理和演算部６２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗ’ｊ＝ｂ’１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗ’ｊ＝ｂ’０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｅ’ｉ＝ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。例えば、図２７に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｂ’０＝０、ｂ’１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ１，ｊ＝ｋｊを満たし、Ｎ＝Ｎ（２）の場合、ｅ２＝（１，１，…，１，０，１，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｕ”＝（０，０，…，０，０，０，１，１，…，１，１）、ｗ’＝（０，０，…，０，１，０，１，１，…，１）となり、ｅ’２＝（１，１，…，１，１，１，１，１，…，１）となり、ｙ２＝（１，１，…，１，１，１，１，１，…，１，１）となる。そのため、ｚ１＝１となる。例えば、図２８に例示するように、Ｎ＜Ｎ（３）の場合、ｅ３＝（１，１，…，１，０，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｕ”＝（０，０，…，０，０，０，１，１，…，１，１）、ｗ’＝（０，０，…，０，１，０，１，１，…，１）となり、ｅ’３＝（１，１，…，１，１，０，１，１，…，１）となり、ｙ３＝（１，１，…，１，１，０，１，１，…，１，１）となる。そのため、ｚ３＝０となる。
【０１１１】
＜本実施形態の特徴＞
上述のように、本実施形態では、検索ワードｋがワイルドカード文字を含み得る場合であっても、検索ワードｋおよび検索対象ワードｘｉの少なくとも一方がヌル文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。さらに、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【０１１２】
［変形例等］
なお、本発明は上述の実施形態に限定されるものではない。例えば、検索装置が秘匿化演算結果［ｙｉ］をそのまま出力してもよいし、秘匿化演算結果［ｙｉ］に対してステップＳ１２７−ｈとは異なる秘密計算を施し、それによって得られた結果を出力してもよい。
【０１１３】
前述したように秘密計算方式に限定はない。秘密計算による等号判定および論理演算（論理和演算、論理積演算）が可能であれば、秘密分散方式に基づく秘密計算が用いられてもよいし、準同型性暗号方式に基づく秘密計算が用いられてもよい。例えば、以下に記載された秘密計算方式を用いればよい。
参考文献１： 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.
参考文献２：千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能３パーティ秘匿関数計算の再考（Secure Database Operations Using An Improved 3-party Verifiable Secure Function Evaluation）”, In CSS, 2010.
参考文献３：Takashi Nishide, Kazuo Ohta, “Multiparty computation for interval, equality, and comparison without bit-decomposition protocol”, PKC, pp. 343-360, 2007.
【０１１４】
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【０１１５】
上記の各装置は、例えば、ＣＰＵ（central processing unit）等のプロセッサ（ハードウェア・プロセッサ）およびＲＡＭ（random-access memory）・ＲＯＭ（read-only memory）等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される。このコンピュータは１個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めＲＯＭ等に記録されていてもよい。また、ＣＰＵのようにプログラムが読み込まれることで機能構成を実現する電子回路（circuitry）ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。１個の装置を構成する電子回路が複数のＣＰＵを含んでいてもよい。
【０１１６】
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な（non-transitory）記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【０１１７】
このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１１８】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。
【０１１９】
コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されるのではなく、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
【符号の説明】
【０１２０】
１〜４  検索システム
１２−１〜Ｈ，２２−１〜Ｈ，３２−１〜Ｈ，４２−１〜Ｈ  検索装置
【図１】
2019124134.tif 000003
【図２】
2019124134.tif 000004
【図３】
2019124134.tif 000005
【図４】
2019124134.tif 000006
【図５】
2019124134.tif 000007
【図６】
2019124134.tif 000008
【図７】
2019124134.tif 000009
【図８】
2019124134.tif 000010
【図９】
2019124134.tif 000011
【図１０】
2019124134.tif 000012
【図１１】
2019124134.tif 000013
【図１２】
2019124134.tif 000014
【図１３】
2019124134.tif 000015
【図１４】
2019124134.tif 000016
【図１５】
2019124134.tif 000017
【図１６】
2019124134.tif 000018
【図１７】
2019124134.tif 000019
【図１８】
2019124134.tif 000020
【図１９】
2019124134.tif 000021
【図２０】
2019124134.tif 000022
【図２１】
2019124134.tif 000023
【図２２】
2019124134.tif 000024
【図２３】
2019124134.tif 000025
【図２４】
2019124134.tif 000026
【図２５】
2019124134.tif 000027
【図２６】
2019124134.tif 000028
【図２７】
2019124134.tif 000029
【図２８】
2019124134.tif 000030
【手続補正書】
【提出日】令和2年6月12日(2020.6.12)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密計算技術に関し、特にデータを秘匿したまま検索を行う技術に関する。
【背景技術】
【０００２】
検索ワードおよび検索対象ワード群を秘匿したまま一致検索を行う秘密計算技術が知られている（例えば、非特許文献１等参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】濱田浩気, 桐淵直人，五十嵐大，“ラウンド効率のよい秘密計算パターンマッチング（A Round-Efficient Pattern Matching Algorithm for Secure Multi-Party Computation）”コンピュータ・セキュリティシンポジウム（CSS）2014.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来方式では、ワイルドカード文字を含む検索ワードを用いて秘匿したままの検索を実現しているものの、通信効率が悪く、秘匿化検索対象ワード長と秘匿化検索ワード長を共にＮとすると、Ｏ（Ｎ２ｌｏｇＮ）もの通信量が必要となってしまう。
【０００５】
本発明は、ワイルドカード文字を含む検索ワードを秘匿したまま、効率良く秘匿されたデータベースの一致検索を行うことを目的とする。
【課題を解決するための手段】
【０００６】
記憶部に秘匿化データベース［ｘ１］，…，［ｘｍ］が格納されている。秘匿化データベース［ｘ１］，…，［ｘｍ］が含む秘匿化検索対象ワード［ｘｉ］は、ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿されたものである。入力部は秘匿化検索ワード［ｋ］の入力を受け付ける。秘匿化検索ワード［ｋ］は、ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿されたものである。等号判定部は、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る。ワイルドカード判定部は、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得る。論理和演算部は、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る。ただし、ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎである。
【発明の効果】
【０００７】
以上により、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【図面の簡単な説明】
【０００８】
【図１】図１は実施形態の検索システムを例示したブロック図である。
【図２】図２は実施形態の検索装置を例示したブロック図である。
【図３】図３は第１実施形態の検索方法を説明するためのフロー図である。
【図４】図４は第１実施形態の検索方法を説明するための概念図である。
【図５】図５は第１実施形態の検索方法を説明するための概念図である。
【図６】図６は第１実施形態の検索方法を説明するための概念図である。
【図７】図７は第１実施形態の検索方法を説明するための概念図である。
【図８】図８は第１実施形態の検索方法を説明するための概念図である。
【図９】図９は第１実施形態の検索方法を説明するための概念図である。
【図１０】図１０は第２実施形態の検索方法を説明するためのフロー図である。
【図１１】図１１は第２実施形態の検索方法を説明するための概念図である。
【図１２】図１２は第２実施形態の検索方法を説明するための概念図である。
【図１３】図１３は第２実施形態の検索方法を説明するための概念図である。
【図１４】図１４は第３実施形態の検索方法を説明するためのフロー図である。
【図１５】図１５は第３実施形態の検索方法を説明するための概念図である。
【図１６】図１６は第３実施形態の検索方法を説明するための概念図である。
【図１７】図１７は第４実施形態の検索方法を説明するためのフロー図である。
【図１８】図１８は第４実施形態の検索方法を説明するための概念図である。
【図１９】図１９は第４実施形態の検索方法を説明するための概念図である。
【図２０】図２０は第５実施形態の検索方法を説明するためのフロー図である。
【図２１】図２１は第５実施形態の検索方法を説明するための概念図である。
【図２２】図２２は第５実施形態の検索方法を説明するための概念図である。
【図２３】図２３は第５実施形態の検索方法を説明するための概念図である。
【図２４】図２４は第５実施形態の検索方法を説明するための概念図である。
【図２５】図２５は第６実施形態の検索方法を説明するためのフロー図である。
【図２６】図２６は第６実施形態の検索方法を説明するための概念図である。
【図２７】図２７は第６実施形態の検索方法を説明するための概念図である。
【図２８】図２８は第６実施形態の検索方法を説明するための概念図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して本発明の実施形態を説明する。
［第１実施形態］
第１実施形態を説明する。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行う。
【００１０】
＜構成＞
図１に例示するように、本実施形態の検索システム１は、検索を依頼する依頼装置１１、および検索を行う検索装置１２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００１１】
図２に例示するように、本実施形態の検索装置１２−ｈは、制御部１２０−ｈ、等号判定部１２１−ｈ、ワイルドカード判定部１２２−ｈ、論理和演算部１２３−ｈ、論理積演算部１２７−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置１２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００１２】
＜前処理＞
記憶部１２８−ｈには、ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）（例えば、図４および図６のＤＢ参照）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］が格納されている。ただし、ｍ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｔ（ｉ）≦Ｎである。検索対象ワードｘｉに含まれるｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）は検索対象となる通常文字である。一方、検索対象ワードｘｉに含まれる残りのＮ−ｔ（ｉ）個の文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎはヌル値を表す特殊文字（ヌル文字）である。ヌル文字は予め定められており（例えば、“０”）、通常文字として利用されない。ｔ（ｉ）＝Ｎの場合、検索対象ワードｘｉはヌル文字を含まない。各文字は例えば有限体の元で表現される。秘密分散方式に基づく秘密計算が行われる場合、秘匿化検索対象ワード［ｘｉ］は検索対象ワードｘｉの秘密分散値である。準同型性暗号方式に基づく秘密計算が行われる場合、秘匿化検索対象ワード［ｘｉ］は検索対象ワードｘｉの暗号文である。文字ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎのそれぞれを別々に秘匿化して得られた秘匿値［ｘｉ，１］，…，［ｘｉ，ｔ（ｉ）］，…，［ｘｉ，Ｎ］の集合を秘匿化検索対象ワード［ｘｉ］としてもよいし、Ｎ個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎをまとめて秘匿化したものを秘匿化検索対象ワード［ｘｉ］としてもよい。また、各秘匿化検索対象ワード［ｘｉ］には、コンテンツまたはネットワーク上のコンテンツの位置を表すコンテンツ情報の秘匿値が対応付けられていてもよい。
【００１３】
＜検索処理＞
図３を用いて本実施形態の検索処理を説明する。
依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）（例えば、図４および図６参照）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎは１個以上のワイルドカード文字を含んでもよい。文字ｋ１，…，ｋｎのうちワイルドカード文字以外の文字は通常文字である。ワイルドカード文字は予め定められており（例えば、「*」）、通常文字として利用されない。また、１個のワイルド文字は１個の通常文字または１個のヌル文字に対応する（以下の各実施形態でも同じである）。上述の検索対象ワードｘｉ（ただしｉ＝１，…，ｍ）がヌル文字を含まない場合、文字ｋ１，…，ｋｎのどの文字がワイルドカード文字であってもよい。一方、検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎを含む場合、本実施形態ではｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含まないことにする。検索ワードｋに含まれるＮ−ｎ個の文字ｋｎ＋１，…，ｋＮはヌル文字である。ただし、ｎ＝Ｎの場合、検索ワードｋはヌル文字を含まない（例えば、図４参照）。検索ワードｋに含まれたヌル文字は、上述の検索対象ワードｘｉに含まれたヌル文字と同一である。検索装置１２−ｈで秘密分散方式に基づく秘密計算が行われるのであれば、秘匿化検索ワード［ｋ］は検索ワードｋの秘密分散値である。一方、検索装置１２−ｈで準同型性暗号方式に基づく秘密計算が行われるのであれば、秘匿化検索ワード［ｋ］は検索ワードｋの暗号文である。文字ｋ１，…，ｋｎ，…，ｋＮのそれぞれを別々に秘匿化して得られた秘匿値［ｋ１］，…，［ｋｎ］，…，［ｋＮ］の集合を秘匿化検索ワード［ｋ］としてもよいし、Ｎ個の文字ｋ１，…，ｋｎ，…，ｋＮをまとめて秘匿化したものを秘匿化検索ワード［ｋ］としてもよい。
【００１４】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置１２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置１２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００１５】
まず、等号判定部１２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｘｉ，ｊがｋｊの場合（ｘｉ，ｊ＝ｋｊの場合）にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合（ｘｉ，ｊ≠ｋｊの場合）にｅｉ，ｊ＝ａ０である。ｅｉ，ｊ∈｛ａ０，ａ１｝であり、例えば、ａ０＝０であり、ａ１＝１である。ワイルドカード文字は通常文字と相違するため、ｋｊがワイルドカード文字である場合には必ずｅｉ，ｊ＝ａ０となる。同様に、ヌル文字は通常文字と相違するため、ｋｊがヌル文字でｘｉ，ｊが通常文字である場合、および、ｋｊが通常文字でｘｉ，ｊがヌル文字である場合には、必ずｅｉ，ｊ＝ａ０となる。また、ｋｊおよびｘｉ，ｊがいずれもヌル文字ならばｅｉ，ｊ＝ａ１となる。例えば、等号判定部１２１−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｋｊ］と［ｘｉ，ｊ］との等号判定（一致判定）を行い、ｅｉ，ｊを秘匿化した［ｅｉ，ｊ］を得、［ｅi，1］，…，［ｅi，Ｎ］の集合を秘匿化演算結果［ｅｉ］として得る。あるいは、等号判定部１２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｅｉ，１，…，ｅｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｅｉ］を得てもよい。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ１２１−ｈ）。
【００１６】
ワイルドカード判定部１２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である。ｗｊ∈｛ｂ０，ｂ１｝であり、例えば、ｂ０＝０であり、ｂ１＝１である。例えば、ワイルドカード判定部１２２−ｈは、秘匿化検索ワード［ｋ］と、ワイルドカード文字を秘匿化して得られた秘匿化ワイルドカード文字とを用い、秘密計算によって秘匿化演算結果［ｗ］を得る。一例を挙げると、ワイルドカード判定部１２２−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｋｊ］と秘匿化ワイルドカード文字との等号判定を行い、ｗｊを秘匿化した［ｗｊ］を得、［ｗ１］，…，［ｗＮ］の集合を秘匿化演算結果［ｗ］として得る。あるいは、ワイルドカード判定部１２２−ｈが、秘匿化検索ワード［ｋ］と秘匿化ワイルドカード文字とを用いた秘密計算によって、ｗ１，…，ｗＮがまとめて秘匿された秘匿化演算結果［ｗ］を得てもよい。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ１２２−ｈ）。
【００１７】
論理和演算部１２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。ただし、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である。ｙｉ，ｊ∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１の場合、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｊである。ただし、「∨」は論理和（ＯＲ）を表す。例えば、論理和演算部１２３−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｅｉ，ｊ］と［ｗｊ］との論理和を行い、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｊを秘匿化した［ｙｉ，ｊ］を得、［ｙｉ，１］，…，［ｙｉ，Ｎ］の集合を秘匿化演算結果［ｙｉ］として得る。あるいは、論理和演算部１２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｙｉ，１，…，ｙｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｙｉ］を得てもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ１２３−ｈ）。
【００１８】
論理積演算部１２７−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｙｉ］を用いた秘密計算によって、一致判定結果ｚｉが秘匿された秘匿化一致判定結果［ｚｉ］を得て出力する。ただし、ｙｉ，１＝…＝ｙｉ，Ｎ＝ｄ１の場合にｚｉ＝ｇ１であり、ｙｉ，１＝…＝ｙｉ，Ｎ＝ｄ１でない場合にｚｉ＝ｇ０である。ｚｉ∈｛ｇ０，ｇ１｝であり、例えば、ｇ０＝０であり、ｇ１＝１である。例えば、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１の場合、ｚｉ＝ｙｉ，１∧…∧ｙｉ，Ｎである。ただし、「∧」は論理積（ＡＮＤ）を表す。ｚｉ＝ｇ１は検索対象ワードｘｉが検索ワードｋに一致することを表し、ｚｉ＝ｇ０は検索対象ワードｘｉが検索ワードｋに一致しないことを表す。秘匿化一致判定結果［ｚｉ］は記憶部１２８−ｈに格納される（ステップＳ１２７−ｈ）。
【００１９】
出力部１２９２−ｈは、各ｉ＝１，…，ｍについての秘匿化一致判定結果［ｚｉ］を出力する（ステップＳ１２９２−ｈ）。秘匿化一致判定結果［ｚｉ］は、ネットワーク等を経由して依頼装置１１に送られる。依頼装置１１は各ｉ＝１，…，ｍについて秘匿化一致判定結果［ｚｉ］を復元してｚｉを得る。例えば、秘密分散方式に基づく秘密計算が行われた場合には、依頼装置１１は所定数以上の検索装置１２−ｈから送られた［ｚｉ］からｚｉを復元する。一方、準同型性暗号方式に基づく秘密計算が行われた場合には、送られた［ｚｉ］を復号してｚｉを得る。これにより、各ｉについての検索結果が得られる。その後、これらの検索結果を用いた処理（例えば、一致した秘匿化検索対象ワード［ｘｉ］に対応するコンテンツ情報の秘匿値の要求など）が実行される。
【００２０】
＜具体例＞
以下に、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１である場合の具体例を示す。
【００２１】
図４に例示するように、Ｎ＝ｎ＝ｔ（ｉ）であり、ｋｒがワイルドカード文字「*」であり、１≦ｒ≦ｎであり、ｒ以外のｊ＝１，…，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，…，１，０，１，…，１）およびｗ＝（０，…，０，１，０，…，０）となり、ｙ１＝（１，…，１，１，１，…，１）となる。そのため、ｚ１＝１となる。
【００２２】
図５に例示するように、Ｎ＝ｎ＝ｔ（ｉ）であり、１およびｒ以外のｊ＝２，…，ｎについてのみｘ２，ｊ＝ｋｊを満たす場合、ｅ２＝（０，１，…，１，０，１，…，１）およびｗ＝（０，０，…，０，１，０，…，０）となり、ｙ２＝（０，１，…，１，１，１，…，１）となる。そのため、ｚ２＝０となる。
【００２３】
図６から図９はｎ＜Ｎおよびｔ（ｉ）＜Ｎの例である。図６に例示するように、ｋｎ＋１，…，ｋＮおよびｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字である。
【００２４】
図７に例示するように、ｔ（１）＝ｎであり、ｋｒがワイルドカード文字「*」であり、１≦ｒ≦ｎであり、ｒ以外のｊ＝１，…，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，０，…，１，…，１）およびｗ＝（０，０，…，１，…，０，…，０）となり、ｙ１＝（１，１，…，１，…，１，…，１）となる。そのため、ｚ１＝１となる。
【００２５】
図８に例示するように、ｔ（２）＝ｎ＋１であり、ｋｒがワイルドカード文字「*」であり、１≦ｒ≦ｎであり、ｒ以外のｊ＝１，…，ｎについてｘ２，ｊ＝ｋｊを満たす場合、ｅ２＝（１，１，…，０，…，１，０，１，…，１）およびｗ＝（０，０，…，１，…，０，０，０，…，０）となり、ｙ２＝（１，１，…，１，…，１，０，１，…，１）となる。そのため、ｚ２＝０となる。
【００２６】
図９に例示するように、ｔ（３）＝ｎ‐１であり、ｋｒがワイルドカード文字「*」であり、１≦ｒ≦ｎ‐１であり、ｒ以外のｊ＝１，…，ｎ‐１のみについてｘ３，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，０，…，０，１，１，…，１）およびｗ＝（０，０，…，１，…，０，０，０，…，０）となり、ｙ３＝（１，１，…，１，…，０，１，１，…，１）となる。そのため、ｚ３＝０となる。
【００２７】
＜本実施形態の特徴＞
上述のように、本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量（例えば、Ｏ（Ｎ）の通信量）で行うことができる。
【００２８】
［第２実施形態］
検索対象ワードｘｉの文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含み得る場合、第１実施形態の方法では正しく完全一致検索を行うことができないことがある。例えば、図１１の例の場合、検索対象ワードｘ３の文字ｘ３，ｎ，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｎがワイルドカード文字である。ワイルドカード文字はどのような通常文字にも一致すると判定しなければならないが、ワイルドカード文字はヌル文字とは一致しないと判定しなければならない。しかし、ｊ＝１，…，ｎ‐１についてｘ３，ｊ＝ｋｊを満たす場合、第１実施形態の方法ではｙ３＝（１，１，…，１，…，１，１，１，…，１）となり、ｚ３＝１となる。本実施形態では、このような場合にも正しく完全一致検索を行う方式を説明する。なお、以下ではこれまで説明した事項との相違点を中心に説明し、共通する事項については同じ参照番号を引用して説明を簡略化する。
【００２９】
＜構成＞
図１に例示するように、本実施形態の検索システム２は、検索を依頼する依頼装置１１、および検索を行う検索装置２２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。
【００３０】
図２に例示するように、本実施形態の検索装置２２−ｈは、制御部１２０−ｈ、等号判定部１２１−ｈ、ワイルドカード判定部１２２−ｈ、論理和演算部２２３−ｈ、ヌル判定部２２４−ｈ、論理積演算部１２７−ｈ，２２６−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置２２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００３１】
＜前処理＞
第１実施形態と同じである。
【００３２】
＜検索処理＞
図１０を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎはワイルドカード文字を含んでもよい。第１実施形態と異なり、検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎを含んでいる場合に、ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含んでいてもよい。
【００３３】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置２２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置２２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００３４】
まず、等号判定部１２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｘｉ，ｊがｋｊの場合（ｘｉ，ｊ＝ｋｊの場合）にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合（ｘｉ，ｊ≠ｋｊの場合）にｅｉ，ｊ＝ａ０である。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ１２１−ｈ）。
【００３５】
ワイルドカード判定部１２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ１２２−ｈ）。
【００３６】
ヌル判定部２２４−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］を用いた秘密計算によって、演算結果μｉ＝（μｉ，１，…，μｉ，Ｎ）が秘匿された秘匿化演算結果［μｉ］を得て出力する。ただし、ｘｉ，ｊがヌル文字の場合にμｉ，ｊ＝θ０であり、ｘｉ，ｊがヌル文字でない場合にμｉ，ｊ＝θ１である。μｉ，ｊ∈｛θ０，θ１｝であり、例えば、θ０＝０であり、θ１＝１である。例えば、ヌル判定部２２４−ｈは、秘匿化検索対象ワード［ｘｉ］と、ヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［μｉ］を得る。一例を挙げると、ヌル判定部２２４−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｘｉ，ｊ］と秘匿化ヌル文字との等号判定を行い、μｉ，ｊを秘匿化した［μｉ，ｊ］を得、［μｉ，１］，…，［μｉ，Ｎ］の集合を秘匿化演算結果［μｉ］として得る。あるいは、ヌル判定部２２４−ｈが秘匿化検索対象ワード［ｘｉ］と秘匿化ヌル文字とを用いた秘密計算によって、μｉ，１，…，μｉ，Ｎがまとめて秘匿された秘匿化演算結果［μｉ］を得てもよい。秘匿化演算結果［μｉ］は記憶部１２８−ｈに格納される（ステップＳ２２４−ｈ）。
【００３７】
論理積演算部２２６−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｗ］と秘匿化演算結果［μｉ］とを用いた秘密計算によって、演算結果ｖｉ＝（ｖｉ，１，…，ｖｉ，Ｎ）が秘匿された秘匿化演算結果［ｖｉ］を得て出力する。ただし、ｗｊ＝ｂ１およびμｉ，ｊ＝θ１の両方を満たす場合にｖｉ，ｊ＝ρ１であり、ｗｊ＝ｂ０およびμｉ，ｊ＝θ０の少なくとも一方を満たす場合にｖｉ，ｊ＝ρ０である。ｖｉ，ｊ∈｛ρ０，ρ１｝であり、例えば、ρ０＝０であり、ρ１＝１である。例えば、ｂ０＝０、ｂ１＝１、ρ０＝０、ρ１＝１の場合、ｖｉ，ｊ＝ｗｊ∧μｉ，ｊである。例えば、論理積演算部２２６−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｗｊ］と［μｉ，ｊ］との論理積を行い、ｖｉ，ｊ＝ｗｊ∧μｉ，ｊを秘匿化した［ｖｉ，ｊ］を得、［ｖｉ，１］，…，［ｖｉ，Ｎ］の集合を秘匿化演算結果［ｖｉ］として得る。あるいは、論理積演算部２２６−ｈは、秘匿化演算結果［ｗ］と秘匿化演算結果［μｉ］とを用いた秘密計算によって、ｖｉ，１，…，ｖｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｖｉ］を得てもよい。秘匿化演算結果［ｖｉ］は記憶部１２８−ｈに格納される（ステップＳ２２６−ｈ）。
【００３８】
論理和演算部２２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。ただし、ｅｉ，ｊ＝ａ１およびｖｉ，ｊ＝ρ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｖｉ，ｊ＝ρ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である。ｙｉ，ｊ∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ρ０＝０、ρ１＝１、ｄ０＝０、ｄ１＝１の場合、ｙｉ，ｊ＝ｅｉ，ｊ∨ｖｉ，ｊである。例えば、論理和演算部２２３−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｅｉ，ｊ］と［ｖｉ，ｊ］との論理和を行い、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｉ，ｊを秘匿化した［ｙｉ，ｊ］を得、［ｙｉ，１］，…，［ｙｉ，Ｎ］の集合を秘匿化演算結果［ｙｉ］として得る。あるいは、論理和演算部２２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、ｙｉ，１，…，ｙｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｙｉ］を得てもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ２２３−ｈ）。
【００３９】
その後、第１実施形態で説明したステップＳ１２７−ｈ以降の処理が実行される。
【００４０】
＜具体例＞
以下にａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ρ０＝０、ρ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１である場合の具体例を示す。
【００４１】
図１１から図１３はｎ＜Ｎおよびｔ（ｉ）＜Ｎの例である。図１１に例示するように、ｋｎがワイルドカード文字「*」であり、ｋｎ＋１，…，ｋＮおよびｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字である。
【００４２】
図１２に例示するように、ｔ（１）＝ｎであり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，１，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，…，０）、μ１＝（１，１，…，１，１，０，０，…，０）、ｖ１＝（０，０，…，０，１，０，０，…，０）となり、ｙ１＝（１，１，…，１，１，１，１，…，１）となる。そのため、ｚ１＝１となる。
【００４３】
図１３に例示するように、ｔ（３）＝ｎ‐１であり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，１，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，…，０）、μ３＝（１，１，…，１，０，０，０，…，０）、ｖ３＝（０，０，…，０，０，０，０，…，０）となり、ｙ３＝（１，１，…，１，０，１，１，…，１）となる。そのため、ｚ３＝０となる。
【００４４】
＜本実施形態の特徴＞
上述のように、本実施形態では、検索対象ワードｘｉの文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【００４５】
［第３実施形態］
第３実施形態は第１実施形態の変形例である。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行う。
【００４６】
＜構成＞
図１に例示するように、本実施形態の検索システム３は、検索を依頼する依頼装置１１、および検索を行う検索装置３２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００４７】
図２に例示するように、本実施形態の検索装置３２−ｈは、制御部１２０−ｈ、等号判定部１２１−ｈ、ワイルドカード判定部１２２−ｈ、論理和演算部３２３−ｈ、ヌル判定部３２５−ｈ、論理積演算部１２７−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置３２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００４８】
＜前処理＞
第１実施形態と同一である。
【００４９】
＜検索処理＞
図１４を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎはワイルドカード文字を含んでもよい。検索対象ワードｘｉ（ただしｉ＝１，…，ｍ）がヌル文字を含まない場合、文字ｋ１，…，ｋｎのどの文字がワイルドカード文字であってもよい。一方、検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎを含む場合、本実施形態ではｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含まないことにする。
【００５０】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置３２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置３２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００５１】
まず、等号判定部１２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｘｉ，ｊがｋｊの場合（ｘｉ，ｊ＝ｋｊの場合）にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合（ｘｉ，ｊ≠ｋｊの場合）にｅｉ，ｊ＝ａ０である。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ１２１−ｈ）。
【００５２】
ワイルドカード判定部１２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ１２２−ｈ）。
【００５３】
ヌル判定部３２５−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｕ＝（ｕ１，…，ｕＮ）が秘匿された秘匿化演算結果［ｕ］を得て出力する。ただし、ｋｊがヌル値の場合にｕｊ＝ｃ１であり、ｋｊがヌル値でない場合にｕｊ＝ｃ０である。ｕｊ∈｛ｃ０，ｃ１｝であり、例えば、ｃ０＝０であり、ｃ１＝１である。例えば、ヌル判定部３２５−ｈは、秘匿化検索ワード［ｋ］とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［ｕ］を得る。一例を挙げると、ヌル判定部３２５−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｋｊ］と秘匿化ヌル文字との等号判定を行い、ｕｊを秘匿化した［ｕｊ］を得、［ｕ１］，…，［ｕＮ］の集合を秘匿化演算結果［ｕ］として得る。あるいは、ヌル判定部３２５−ｈが秘匿化検索ワード［ｋ］と秘匿化ヌル文字とを用いた秘密計算によって、ｕ１，…，ｕＮがまとめて秘匿された秘匿化演算結果［ｕ］を得てもよい。秘匿化演算結果［ｕ］は記憶部１２８−ｈに格納される（ステップＳ３２５−ｈ）。
【００５４】
論理和演算部３２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。ただし、ｅｉ，ｊ＝ａ１、ｗｊ＝ｂ１、およびｕｊ＝ｃ１の少なくとも何れかを満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０およびｕｊ＝ｃ０のすべてを満たす場合にｙｉ，ｊ＝ｄ０である。ｙｉ，ｊ∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１の場合、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｊ∨ｕｊである。例えば、論理和演算部３２３−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｅｉ，ｊ］と［ｗｊ］と［ｕｊ］との論理和を行い、ｙｉ，ｊ＝ｅｉ，ｊ∨ｗｊ∨ｕｊを秘匿化した［ｙｉ，ｊ］を得、［ｙｉ，１］，…，［ｙｉ，Ｎ］の集合を秘匿化演算結果［ｙｉ］として得る。あるいは、論理和演算部３２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ］とを用いた秘密計算によって、ｙｉ，１，…，ｙｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｙｉ］を得てもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ３２３−ｈ）。
【００５５】
その後、第１実施形態で説明したステップＳ１２７−ｈ以降の処理が実行される。
【００５６】
＜具体例＞
以下に、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１である場合の具体例を示す。
【００５７】
図１５に例示するように、ｔ（２）＝ｎ＋１であり、ｊ＝１，…，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ２＝（１，１，…，０，…，１，０，１，…，１）、ｗ＝（０，０，…，１，…，０，０，０，…，０）、ｕ＝（０，０，…，０，…，０，１，１，…，１）、ｙ２＝（１，１，…，１，…，１，１，１，…，１）となる。そのため、ｚ２＝１となる。
【００５８】
図１６に例示するように、ｔ（３）＝ｎ‐１であり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，０，…，０，１，１，…，１）、ｗ＝（０，０，…，１，…，０，０，０，…，０）、ｕ＝（０，０，…，０，…，０，１，１，…，１）、ｙ３＝（１，１，…，１，…，０，１，１，…，１）となる。そのため、ｚ３＝０となる。
【００５９】
＜本実施形態の特徴＞
上述のように、本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【００６０】
［第４実施形態］
第４実施形態は第２，３実施形態の変形例である。本実施形態では、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行う。完全一致検索の場合と同様、検索対象ワードｘｉの文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含み得る場合、第３実施形態の方法では正しく前方一致検索を行うことができないことがある。本実施形態では、このような場合にも正しく前方一致検索を行う方式を説明する。
【００６１】
＜構成＞
図１に例示するように、本実施形態の検索システム４は、検索を依頼する依頼装置１１、および検索を行う検索装置４２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００６２】
図２に例示するように、本実施形態の検索装置４２−ｈは、制御部１２０−ｈ、等号判定部１２１−ｈ、ワイルドカード判定部１２２−ｈ、論理和演算部４２３−ｈ、ヌル判定部２２４−ｈ，３２５−ｈ、論理積演算部１２７−ｈ，２２６−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置４２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００６３】
＜前処理＞
第１実施形態と同じである。
【００６４】
＜検索処理＞
図１７を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎはワイルドカード文字を含んでもよい。第３実施形態と異なり、検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎを含んでいる場合に、ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含んでいてもよい。
【００６５】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置４２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置４２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００６６】
まず、等号判定部１２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｘｉ，ｊがｋｊの場合（ｘｉ，ｊ＝ｋｊの場合）にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合（ｘｉ，ｊ≠ｋｊの場合）にｅｉ，ｊ＝ａ０である。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ１２１−ｈ）。
【００６７】
ワイルドカード判定部１２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ１２２−ｈ）。
【００６８】
ヌル判定部３２５−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｕ＝（ｕ１，…，ｕＮ）が秘匿された秘匿化演算結果［ｕ］を得て出力する。ただし、ｋｊがヌル値の場合にｕｊ＝ｃ１であり、ｋｊがヌル値でない場合にｕｊ＝ｃ０である。例えば、ヌル判定部３２５−ｈは、秘匿化検索ワード［ｋ］とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［ｕ］を得る。秘匿化演算結果［ｕ］は記憶部１２８−ｈに格納される（ステップＳ３２５−ｈ）。
【００６９】
ヌル判定部２２４−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］を用いた秘密計算によって、演算結果μｉ＝（μｉ，１，…，μｉ，Ｎ）が秘匿された秘匿化演算結果［μｉ］を得て出力する。ただし、ｘｉ，ｊがヌル文字の場合にμｉ，ｊ＝θ０であり、ｘｉ，ｊがヌル文字でない場合にμｉ，ｊ＝θ１である。秘匿化演算結果［μｉ］は記憶部１２８−ｈに格納される（ステップＳ２２４−ｈ）。
【００７０】
論理積演算部２２６−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｗ］と秘匿化演算結果［μｉ］とを用いた秘密計算によって、演算結果ｖｉ＝（ｖｉ，１，…，ｖｉ，Ｎ）が秘匿された秘匿化演算結果［ｖｉ］を得て出力する。ただし、ｗｊ＝ｂ１およびμｉ，ｊ＝θ１の両方を満たす場合にｖｉ，ｊ＝ρ１であり、ｗｊ＝ｂ０およびμｉ，ｊ＝θ０の少なくとも一方を満たす場合にｖｉ，ｊ＝ρ０である。秘匿化演算結果［ｖｉ］は記憶部１２８−ｈに格納される（ステップＳ２２６−ｈ）。
【００７１】
論理和演算部４２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｕ］と秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。ただし、ｅｉ，ｊ＝ａ１、ｖｉ，ｊ＝ρ１、およびｕｊ＝ｃ１の少なくとも何れかを満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｖｉ，ｊ＝ρ０およびｕｊ＝ｃ０のすべてを満たす場合にｙｉ，ｊ＝ｄ０である。ｙｉ，ｊ∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ρ０＝０、ρ１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１の場合、ｙｉ，ｊ＝ｅｉ，ｊ∨ｖｉ，ｊ∨ｕｊである。例えば、論理和演算部４２３−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｅｉ，ｊ］と［ｖｉ，ｊ］と［ｕｊ］との論理和を行い、ｙｉ，ｊ＝ｅｉ，ｊ∨ｖｉ，ｊ∨ｕｊを秘匿化した［ｙｉ，ｊ］を得、［ｙｉ，１］，…，［ｙｉ，Ｎ］の集合を秘匿化演算結果［ｙｉ］として得る。あるいは、論理和演算部４２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｖｉ］と秘匿化演算結果［ｕ］とを用いた秘密計算によって、ｙｉ，１，…，ｙｉ，Ｎがまとめて秘匿された秘匿化演算結果［ｙｉ］を得てもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ４２３−ｈ）。
【００７２】
その後、第１実施形態で説明したステップＳ１２７−ｈ以降の処理が実行される。
【００７３】
＜具体例＞
以下に、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１、ρ０＝０、ρ１＝１、ｇ０＝０、ｇ１＝１である場合の具体例を示す。図１８および図１９はｎ＜Ｎおよびｔ（ｉ）＜Ｎの例である。ｋｎがワイルドカード文字「*」であり、ｋｎ＋１，…，ｋＮおよびｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字である。
【００７４】
図１８に例示するように、ｔ（１）＝ｎであり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，１，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，…，０）、ｕ＝（０，０，…，０，１，１，…，１）、μ１＝（１，１，…，１，１，０，０，…，０）、ｖ１＝（０，０，…，０，１，０，０，…，０）となり、ｙ１＝（１，１，…，１，１，１，１，…，１）となる。そのため、ｚ１＝１となる。
【００７５】
図１９に例示するように、ｔ（３）＝ｎ‐１であり、ｊ＝１，…，ｎ‐１についてｘ１，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，１，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，…，０）、ｕ＝（０，０，…，０，０，１，１，…，１）、μ３＝（１，１，…，１，０，０，０，…，０）、ｖ３＝（０，０，…，０，０，０，０，…，０）となり、ｙ３＝（１，１，…，１，０，１，１，…，１）となる。そのため、ｚ３＝０となる。
【００７６】
＜本実施形態の特徴＞
上述のように、本実施形態では、検索対象ワードｘｉの文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎがヌル文字であり、検索ワードｋの文字ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【００７７】
［第５実施形態］
第５実施形態は第１，２実施形態の変形例である。第１，２実施形態では秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であることが前提であった。これに対し、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず、完全一致検索を行うことができる。
【００７８】
＜構成＞
図１に例示するように、本実施形態の検索システム５は、検索を依頼する依頼装置１１、および検索を行う検索装置５２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００７９】
図２に例示するように、本実施形態の検索装置５２−ｈは、制御部１２０−ｈ、等号判定部５２１−ｈ、ワイルドカード判定部５２２−ｈ、論理和演算部５２３−ｈ、ヌル判定部５２４−ｈ，５２５−ｈ、論理積演算部５２７−ｈ、連結部５２８−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置５２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００８０】
＜前処理＞
記憶部１２８−ｈには、ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））（例えば、図２１のＤＢ参照）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］が格納されている。ただし、ｍ，ｔ（ｉ），Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｔ（ｉ）≦Ｎ（ｉ）である。検索対象ワードｘｉに含まれるｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）は検索対象となる通常文字である。一方、検索対象ワードｘｉに含まれる残りのＮ（ｉ）−ｔ（ｉ）個の文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎ（ｉ）はヌル文字である。文字ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ）のそれぞれを別々に秘匿化して得られた秘匿値［ｘｉ，１］，…，［ｘｉ，ｔ（ｉ）］，…，［ｘｉ，Ｎ（ｉ）］の集合を秘匿化検索対象ワード［ｘｉ］としてもよいし、Ｎ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ）をまとめて秘匿化したものを秘匿化検索対象ワード［ｘｉ］としてもよい。その他は第１実施形態で述べた通りである。
【００８１】
＜検索処理＞
図２０を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。ただし、ｊ＝１，…，Ｎであり、ｎは正整数であり、ｎ≦Ｎである。文字ｋ１，…，ｋｎはワイルドカード文字を含んでもよい。検索対象ワードｘｉがヌル文字ｘｉ，ｔ（ｉ）＋１，…，ｘｉ，Ｎ（ｉ）を含んでいる場合に、ｋｔ（ｉ）＋１，…，ｋＮがワイルドカード文字を含んでいてもよい。ｎ，Ｎが正整数であり、ｎ≦Ｎである。Ｎ≦Ｎ（ｉ）のときＭｍｉｎ＝Ｎであり、Ｎ＞Ｎ（ｉ）のときＭｍｉｎ＝Ｎ（ｉ）である。このようなＭｍｉｎをＭｍｉｎ＝ｍｉｎ（Ｎ（ｉ），Ｎ）と表記する。また、Ｎ≦Ｎ（ｉ）のときＮｍａｘ＝Ｎ（ｉ）であり、Ｎ＞Ｎ（ｉ）のときＮｍａｘ＝Ｎである。このようなＭｍａｘをＭｍａｘ＝ｍａｘ（Ｎ（ｉ），Ｎ）と表記する。記載表記の制約上、Ｎｍｉｎを「Ｎｍｉｎ」と表記し、Ｎｍａｘを「Ｎｍａｘ」と表記する場合がある。ｊ”＝Ｍｍｉｎ＋１，…，Ｎであり、ｊ”（ｉ）＝Ｍｍｉｎ＋１，…，Ｎ（ｉ）である。ただし、Ｍｍｉｎ＋１≧Ｎのときｊ”は空であり、Ｍｍｉｎ＋１≧Ｎ（ｉ）のときｊ”（ｉ）は空である。前述のように、文字ｋ１，…，ｋｎ，…，ｋＮのそれぞれを別々に秘匿化して得られた秘匿値［ｋ１］，…，［ｋｎ］，…，［ｋＮ］の集合を秘匿化検索ワード［ｋ］としてもよいし、Ｎ個の文字ｋ１，…，ｋｎ，…，ｋＮをまとめて秘匿化したものを秘匿化検索ワード［ｋ］としてもよい。
【００８２】
依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置５２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置５２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【００８３】
まず、等号判定部５２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｘｉ，ｊ’がｋｊ’の場合にｅｉ，ｊ’＝ａ１であり、ｘｉ，ｊ’がｋｊ’でない場合にｅｉ，ｊ’＝ａ０である。ｅｉ，ｊ’∈｛ａ０，ａ１｝であり、例えば、ａ０＝０であり、ａ１＝１である。例えば、等号判定部５２１−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎついて［ｋｊ’］と［ｘｉ，ｊ’］との等号判定を行い、ｅｉ，ｊ’を秘匿化した［ｅｉ，ｊ’］を得、［ｅi，1］，…，［ｅi，Ｎｍｉｎ］の集合を秘匿化演算結果［ｅｉ］として得る。あるいは、等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｅｉ，１，…，ｅｉ，Ｎｍｉｎがまとめて秘匿された秘匿化演算結果［ｅｉ］を得てもよい。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ５２１−ｈ）。
【００８４】
ワイルドカード判定部５２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮｍｉｎ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｋｊ’がワイルドカード文字の場合にｗｊ’＝ｂ１であり、ｋｊ’がワイルドカード文字でない場合にｗｊ’＝ｂ０である。例えば、ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］とワイルドカード文字を秘匿化して得られた秘匿化ワイルドカード文字とを用い、秘密計算によって秘匿化演算結果［ｗ］を得る。一例を挙げると、ワイルドカード判定部５２２−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎについて［ｋｊ’］と秘匿化ワイルドカード文字との等号判定を行い、ｗｊ’を秘匿化した［ｗｊ’］を得、［ｗ１］，…，［ｗＮｍｉｎ］の集合を秘匿化演算結果［ｗ］として得る。あるいは、ワイルドカード判定部５２２−ｈが、秘匿化検索ワード［ｋ］と秘匿化ワイルドカード文字とを用いた秘密計算によって、ｗ１，…，ｗＮｍｉｎがまとめて秘匿された秘匿化演算結果［ｗ］を得てもよい。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ５２２−ｈ）。
【００８５】
ヌル判定部５２５−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］の少なくとも一部を用いた秘密計算によって、演算結果ｕ’Ｍｍｉｎ＋１，…，ｕ’Ｎが秘匿された秘匿化演算結果［ｕ’］を得て出力する。ただし、ｊ”＝Ｍｍｉｎ＋１，…，Ｎについて、ｋｊ”がヌル文字の場合にｕ’ｊ”＝ｃ１であり、ｋｊ”がヌル文字でない場合にｕ’ｊ”＝ｃ０である。ｕ’ｊ”∈｛ｃ０，ｃ１｝であり、例えば、ｃ０＝０であり、ｃ１＝１である。例えば、ヌル判定部５２５−ｈは、秘匿化検索ワード［ｋ］の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［ｕ’］を得る。一例を挙げると、ヌル判定部５２５−ｈは、秘密計算によって、ｊ”＝Ｍｍｉｎ＋１，…，Ｎについて［ｋｊ”］と秘匿化ヌル文字との等号判定を行い、ｕ’ｊ”を秘匿化した［ｕ’ｊ”］を得、［ｕ’Ｍｍｉｎ＋１］，…，［ｕ’Ｎ］の集合を秘匿化演算結果［ｕ’］として得る。あるいは、ヌル判定部５２５−ｈが秘匿化検索ワード［ｋ］と秘匿化ヌル文字とを用いた秘密計算によって、ｕ’Ｍｍｉｎ＋１，…，ｕ’Ｎがまとめて秘匿された秘匿化演算結果［ｕ’］を得てもよい。秘匿化演算結果［ｕ’］は記憶部１２８−ｈに格納される（ステップＳ５２５−ｈ）。なお、Ｍｍｉｎ＋１≧ＮのときにはステップＳ５２５−ｈの処理は実行されない。
【００８６】
論理和演算部５２３−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｅｉ，ｊ’＝ａ１およびｗｊ’＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ’＝ｄ１であり、ｅｉ，ｊ’＝ａ０およびｗｊ’＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ’＝ｄ０である。ｅ’ｉ，ｊ’∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１の場合、ｅ’ｉ，ｊ’＝ｅｉ，ｊ’∨ｗｊ’である。例えば、論理和演算部５２３−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎについて、［ｅｉ，ｊ’］と［ｗｊ’］との論理和を行い、ｅ’ｉ，ｊ’＝ｅｉ，ｊ’∨ｗｊ’を秘匿化した［ｅ’ｉ，ｊ’］を得、［ｅ’ｉ，１］，…，［ｅ’ｉ，Ｎｍｉｎ］の集合を秘匿化演算結果［ｅ’ｉ］として得る。あるいは、論理和演算部５２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅ’ｉ，１，…，ｅ’ｉ，Ｎｍｉｎがまとめて秘匿された秘匿化演算結果［ｅ’ｉ］を得てもよい。秘匿化演算結果［ｅ’ｉ］は記憶部１２８−ｈに格納される（ステップＳ５２３１−ｈ）。
【００８７】
ヌル判定部５２４−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］の少なくとも一部を用いた秘密計算によって、演算結果μ’ｉ＝（μ’ｉ，Ｍｍｉｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［μ’ｉ］を得て出力する。ただし、ｊ”（ｉ）＝Ｍｍｉｎ＋１，…，Ｎ（ｉ）について、ｘｉ，ｊ”（ｉ）がヌル文字の場合にμ’ｉ，ｊ”（ｉ）＝ｄ１であり、ｘｉ，ｊ”（ｉ）がヌル文字でない場合にμ’ｉ，ｊ”（ｉ）＝ｄ０である。μ’ｉ，ｊ”（ｉ）∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。ヌル判定部５２４−ｈは、秘匿化検索対象ワード［ｘｉ］の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［μ’ｉ］を得る。一例を挙げると、ヌル判定部５２４−ｈは、秘密計算によって、ｊ”（ｉ）＝Ｍｍｉｎ＋１，…，Ｎ（ｉ）について［ｘｉ，ｊ”（ｉ）］と秘匿化ヌル文字との等号判定を行い、μ’ｉ，ｊ”（ｉ）を秘匿化した［μ’ｉ，ｊ”（ｉ）］を得、［μ’ｉ，Ｍｍｉｎ＋１］，…，［μ’ｉ，Ｎ（ｉ）］の集合を秘匿化演算結果［μ’ｉ］として得る。あるいは、ヌル判定部５２４−ｈが秘匿化検索対象ワード［ｘｉ］と秘匿化ヌル文字とを用いた秘密計算によって、μ’ｉ，Ｍｍｉｎ＋１，…，μ’ｉ，Ｎ（ｉ）がまとめて秘匿された秘匿化演算結果［μ’ｉ］を得てもよい。秘匿化演算結果［μ’ｉ］は記憶部１２８−ｈに格納される（ステップＳ５２４−ｈ）。なお、Ｍｍｉｎ＋１≧Ｎ（ｉ）のときにはステップＳ５２４−ｈの処理は実行されない。
【００８８】
連結部５２８−ｈは、少なくとも秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉが秘匿された秘匿化演算結果［ｙｉ］を得て出力する。Ｎ＝Ｎ（ｉ）の場合、連結部５２８−ｈは、秘匿化演算結果［ｅ’ｉ］を秘匿化演算結果［ｙｉ］として出力する。Ｎ＞Ｎ（ｉ）の場合、連結部５２８−ｈは、秘匿化演算結果［ｕ’］および秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。Ｎ＜Ｎ（ｉ）の場合、連結部５２８−ｈは、秘匿化演算結果［ｅ’ｉ］と秘匿化演算結果［μ’ｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ（ｉ））＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ，μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。［ｙｉ］はｙｉの要素がそれぞれ秘匿化された秘匿化結果の集合であってもよいし、ｙｉのすべての要素をまとめて秘匿化したものであってもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ５２８−ｈ）。
【００８９】
論理積演算部５２７−ｈは、記憶部１２８−ｈから読み出した秘匿化演算結果［ｙｉ］を用いた秘密計算によって、一致判定結果ｚｉが秘匿された秘匿化一致判定結果［ｚｉ］を得て出力する。ただし、ｙｉ，１＝…＝ｙｉ，Ｎｍａｘ＝ｄ１の場合にｚｉ＝ｇ１であり、ｙｉ，１＝…＝ｙｉ，Ｎｍａｘ＝ｄ１でない場合にｚｉ＝ｇ０である。ｚｉ∈｛ｇ０，ｇ１｝であり、例えば、ｇ０＝０であり、ｇ１＝１である。例えば、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１の場合、ｚｉ＝ｙｉ，１∧…∧ｙｉ，Ｎｍａｘである。秘匿化一致判定結果［ｚｉ］は記憶部１２８−ｈに格納される（ステップＳ５２７−ｈ）。
【００９０】
その後、第１実施形態で説明したステップＳ１２９２−ｈ以降の処理が実行される。
【００９１】
＜具体例＞
本実施形態の処理をＮ＝Ｎ（ｉ）の場合、Ｎ＞Ｎ（ｉ）の場合、Ｎ＜Ｎ（ｉ）の場合に区分して記載すると以下のようになる。
【００９２】
≪Ｎ＝Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。論理和演算部５２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］＝［ｅ’ｉ］を得て出力する。例えば、図２３に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ２，ｊ＝ｋｊを満たす場合、ｅ２＝（１，１，…，１，０，１，０，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｙ２＝ｅ’２＝（１，１，…，１，１，１，０，１，…，１）となる。そのため、ｚ２＝０となる。
【００９３】
≪Ｎ＞Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ（ｉ）＋１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）の場合にｅｉ，ｊ（ｉ）＝ａ１であり、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）でない場合にｅｉ，ｊ（ｉ）＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊ（ｉ）がワイルドカード文字の場合にｗｊ（ｉ）＝b１であり、ｋｊ（ｉ）がワイルドカード文字でない場合にｗｊ（ｉ）＝b０である、演算結果ｗ＝（ｗ１，…，ｗＮ（ｉ））が秘匿された秘匿化演算結果［ｗ］を得て出力する。ヌル判定部５２５−ｈ（第１ヌル判定部）は、秘匿化検索ワード［ｋ］の少なくとも一部を用いた秘密計算によって、ｋｊ”（ｉ）がヌル文字の場合にｕ’ｊ”（ｉ）＝ｃ１であり、ｋｊ”（ｉ）がヌル文字でない場合にｕ’ｊ”（ｉ）＝ｃ０である、演算結果ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎが秘匿された秘匿化演算結果［ｕ’］を得て出力する。論理和演算部５２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ（ｉ）＝ａ１およびｗｊ（ｉ）＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ１であり、ｅｉ，ｊ（ｉ）＝ａ０およびｗｊ（ｉ）＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。連結部５２８−ｈは、秘匿化演算結果［ｕ’］および秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。例えば、図２２に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，１，０，１，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｅ’１＝（１，１，…，１，１，１，１，１，…，１）となり、ｙ１＝（１，１，…，１，１，１，１，１，…，１，１）となる。そのため、ｚ１＝１となる。
【００９４】
≪Ｎ＜Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ＜Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ＋１，…，Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。論理和演算部５２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ）が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。ヌル判定部５２４−ｈ（第２ヌル判定部）は、秘匿化検索対象ワード［ｘｉ］の少なくとも一部を用いた秘密計算によって、ｘｉ，ｊ”（ｉ）がヌル文字の場合にμ’ｉ，ｊ”（ｉ）＝ｄ１であり、ｘｉ，ｊ”（ｉ）がヌル文字でない場合にμ’ｉ，ｊ”（ｉ）＝ｄ０である、演算結果μ’ｉ＝（μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［μ’ｉ］を得て出力する。連結部５２８−ｈは、秘匿化演算結果［ｅ’ｉ］と秘匿化演算結果［μ’ｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ（ｉ））＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ，μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。例えば、図２４に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ３，ｊ＝ｋｊを満たす場合、ｅ３＝（１，１，…，１，０，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｅ’３＝（１，１，…，１，１，０，１，１，…，１）となり、ｙ３＝（１，１，…，１，１，０，１，１，…，１，１）となる。そのため、ｚ３＝０となる。
【００９５】
＜本実施形態の特徴＞
上述のように、本実施形態では、検索ワードｋがワイルドカード文字を含み得る場合であっても、検索ワードｋおよび検索対象ワードｘｉの少なくとも一方がヌル文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの完全一致検索を行うことができる。さらに、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず完全一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【００９６】
［第６実施形態］
第６実施形態は第３，４実施形態の変形例である。第３，４実施形態では秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であることが前提であった。これに対し、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず、前方一致検索を行うことができる。
【００９７】
＜構成＞
図１に例示するように、本実施形態の検索システム６は、検索を依頼する依頼装置１１、および検索を行う検索装置６２−ｈを有し、秘密計算による検索処理を行う。ただし、ｈ＝１，…，Ｈであり、Ｈは１以上の整数である。秘密分散方式に基づく秘密計算を行う場合にはＨ≧２であり、準同型性暗号方式に基づく秘密計算を行う場合にはＨ＝１である。
【００９８】
図２に例示するように、本実施形態の検索装置６２−ｈは、制御部１２０−ｈ、等号判定部５２１−ｈ、ワイルドカード判定部５２２−ｈ、論理和演算部６２３−ｈ、ヌル判定部６２５−ｈ、論理積演算部５２７−ｈ、連結部６２８−ｈ、記憶部１２８−ｈ、入力部１２９１−ｈ、および出力部１２９２−ｈを有する。検索装置６２−ｈは、制御部１２０−ｈの制御のもとで各処理を実行する。また、各部で得られたデータは、逐一、記憶部１２８−ｈに格納され、必要に応じて読み出されて他の処理に用いられる。
【００９９】
＜前処理＞
第５実施形態と同じである。
【０１００】
＜検索処理＞
図２５を用いて本実施形態の検索処理を説明する。依頼装置１１は、ｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）を秘匿化して秘匿化検索ワード［ｋ］を得る。依頼装置１１は秘匿化検索ワード［ｋ］を出力する。出力された秘匿化検索ワード［ｋ］は、ネットワーク等を経由して検索装置６２−ｈに送られる。秘匿化検索ワード［ｋ］は、検索装置６２−ｈの入力部１２９１−ｈに入力されて記憶部１２８−ｈに格納される（ステップＳ１２９１−ｈ）。その後、各ｉ＝１，…，ｍについて以下の処理が実行される。
【０１０１】
まず、等号判定部５２１−ｈは、記憶部１２８−ｈから読み出した秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｘｉ，ｊ’がｋｊ’の場合にｅｉ，ｊ’＝ａ１であり、ｘｉ，ｊ’がｋｊ’でない場合にｅｉ，ｊ’＝ａ０である。秘匿化演算結果［ｅｉ］は記憶部１２８−ｈに格納される（ステップＳ５２１−ｈ）。
【０１０２】
ワイルドカード判定部５２２−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｋｊ’がワイルドカード文字の場合にｗｊ’＝ｂ１であり、ｋｊ’がワイルドカード文字でない場合にｗｊ’＝ｂ０である。秘匿化演算結果［ｗ］は記憶部１２８−ｈに格納される（ステップＳ５２２−ｈ）。
【０１０３】
ヌル判定部６２５−ｈは、記憶部１２８−ｈから読み出した秘匿化検索ワード［ｋ］を用いた秘密計算によって、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得て出力する。ただし、ｊ＝１，…，Ｎについて、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である。ｕ”ｊ∈｛ｃ０，ｃ１｝であり、例えば、ｃ０＝０であり、ｃ１＝１である。例えば、ヌル判定部６２５−ｈは、秘匿化検索ワード［ｋ］の少なくとも一部とヌル文字を秘匿化して得られた秘匿化ヌル文字とを用い、秘密計算によって秘匿化演算結果［ｕ”］を得る。一例を挙げると、ヌル判定部６２５−ｈは、秘密計算によって、ｊ＝１，…，Ｎについて［ｋｊ］と秘匿化ヌル文字との等号判定を行い、ｕ”ｊを秘匿化した［ｕ”ｊ］を得、［ｕ”１］，…，［ｕ”Ｎ］の集合を秘匿化演算結果［ｕ”］として得る。あるいは、ヌル判定部６２５−ｈが秘匿化検索ワード［ｋ］と秘匿化ヌル文字とを用いた秘密計算によって、ｕ”１，…，ｕ”Ｎがまとめて秘匿された秘匿化演算結果［ｕ”］を得てもよい。秘匿化演算結果［ｕ”］は記憶部１２８−ｈに格納される（ステップＳ６２５１−ｈ）。
【０１０４】
論理和演算部６２３−ｈ（第１論理和演算部）は、記憶部１２８−ｈから読み出した秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ”］の少なくとも一部を用いた秘密計算によって、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｗ’］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについてｕ”ｊ’＝ｃ１およびｗｊ’＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ’＝ｂ’１であり、ｕ”ｊ’＝ｃ０およびｗｊ’＝ｂ０の両方を満たす場合にｗ’ｊ’＝ｂ’０である。ｗ’ｊ∈｛ｂ’０，ｂ’１｝であり、例えば、ｂ’０＝０であり、ｂ’１＝１である。例えば、ｂ０＝０、ｂ１＝１、ｃ０＝０、ｃ１＝１、ｂ’０＝０、ｂ’１＝１の場合、ｗ’ｊ’＝ｕ”ｊ’∨ｗｊ’である。例えば、論理和演算部６２３−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎについて、［ｕ”ｊ’］と［ｗｊ’］との論理和を行い、ｗ’ｊ’＝ｕ”ｊ’∨ｗｊ’を秘匿化した［ｗ’ｊ’］を得、［ｗ’１］，…，［ｗ’Ｎｍｉｎ］の集合を秘匿化演算結果［ｗ’］として得る。あるいは、論理和演算部６２３−ｈは、秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ”］とを用いた秘密計算によって、ｗ’１，…，ｗ’Ｎｍｉｎがまとめて秘匿された秘匿化演算結果［ｗ’］を得てもよい。秘匿化演算結果［ｗ’］は記憶部１２８−ｈに格納される（ステップＳ６２３１−ｈ）。
【０１０５】
論理和演算部６２３−ｈ（第２論理和演算部）は、記憶部１２８−ｈから読み出した秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ’］とを用いた秘密計算によって、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎｍｉｎ）が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。ただし、ｊ’＝１，…，Ｎｍｉｎについて、ｅｉ，ｊ’＝ａ１およびｗ’ｊ’＝ｂ’１の少なくとも一方を満たす場合にｅ’ｉ，ｊ’＝ｄ１であり、ｅｉ，ｊ’＝ａ０およびｗ’ｊ’＝ｂ’０の両方を満たす場合にｅ’ｉ，ｊ’＝ｄ０である。ｅ’ｉ，ｊ’∈｛ｄ０，ｄ１｝であり、例えば、ｄ０＝０であり、ｄ１＝１である。例えば、ａ０＝０、ａ１＝１、ｂ’０＝０、ｂ’１＝１、ｄ０＝０、ｄ１＝１の場合、ｅ’ｉ，ｊ’＝ｅｉ，ｊ’∨ｗ’ｊ’である。例えば、論理和演算部６２３−ｈは、秘密計算によって、ｊ’＝１，…，Ｎｍｉｎについて、［ｅｉ，ｊ’］と［ｗ’ｊ’］との論理和を行い、ｅ’ｉ，ｊ’＝ｅｉ，ｊ’∨ｗ’ｊ’を秘匿化した［ｅ’ｉ，ｊ’］を得、［ｅ’ｉ，１］，…，［ｅ’ｉ，Ｎｍｉｎ］の集合を秘匿化演算結果［ｅ’ｉ］として得る。あるいは、論理和演算部６２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅ’ｉ，１，…，ｅ’ｉ，Ｎｍｉｎがまとめて秘匿された秘匿化演算結果［ｅ’ｉ］を得てもよい。秘匿化演算結果［ｅ’ｉ］は記憶部１２８−ｈに格納される（ステップＳ６２３２−ｈ）。
【０１０６】
連結部６２８−ｈは、少なくとも秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉが秘匿された秘匿化演算結果［ｙｉ］を得て出力する。Ｎ≦Ｎ（ｉ）の場合、連結部６２８−ｈは、秘匿化演算結果［ｅ’ｉ］を秘匿化演算結果［ｙｉ］として出力する。Ｎ＞Ｎ（ｉ）の場合、連結部６２８−ｈは、秘匿化演算結果［ｅ’ｉ］と秘匿化演算結果［ｕ”］の少なくとも一部とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ”Ｎ（ｉ）＋１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。［ｙｉ］はｙｉの要素がそれぞれ秘匿化された秘匿化結果の集合であってもよいし、ｙｉのすべての要素をまとめて秘匿化したものであってもよい。秘匿化演算結果［ｙｉ］は記憶部１２８−ｈに格納される（ステップＳ６２８−ｈ）。
【０１０７】
その後、ステップＳ５２７−ｈおよび第１実施形態で説明したステップＳ１２９２−ｈ以降の処理が実行される。
【０１０８】
＜具体例＞
本実施形態の処理をＮ＞Ｎ（ｉ）の場合、Ｎ≦Ｎ（ｉ）の場合に区分して記載すると以下のようになる。
【０１０９】
≪Ｎ＞Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ（ｉ）＋１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）の場合にｅｉ，ｊ（ｉ）＝ａ１であり、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）でない場合にｅｉ，ｊ（ｉ）＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊ（ｉ）がワイルドカード文字の場合にｗｊ（ｉ）＝ｂ１であり、ｋｊ（ｉ）がワイルドカード文字でない場合にｗｊ（ｉ）＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ（ｉ））が秘匿された秘匿化演算結果［ｗ］を得て出力する。ヌル判定部６２５−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得て出力する。論理和演算部６２３−ｈは、秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ”］の少なくとも一部を用いた秘密計算によって、ｕ”ｊ（ｉ）＝ｃ１およびｗｊ（ｉ）＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ（ｉ）＝ｂ’１であり、ｕ”ｊ（ｉ）＝ｃ０およびｗｊ（ｉ）＝ｂ０の両方を満たす場合にｗ’ｊ（ｉ）＝ｂ’０である、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎ（ｉ））が秘匿された秘匿化演算結果［ｗ’］を得て出力する。論理和演算部６２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅｉ，ｊ（ｉ）＝ａ１およびｗ’ｊ（ｉ）＝ｂ’１の少なくとも一方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ１であり、ｅｉ，ｊ（ｉ）＝ａ０およびｗ’ｊ（ｉ）＝ｂ’０の両方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅ’ｉ］を得て出力する。連結部６２８−ｈは秘匿化演算結果［ｅ’ｉ］と秘匿化演算結果［ｕ”］の少なくとも一部とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ”Ｎ（ｉ）＋１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。例えば、図２６に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｂ’０＝０、ｂ’１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ１，ｊ＝ｋｊを満たす場合、ｅ１＝（１，１，…，１，０，１，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｕ”＝（０，０，…，０，０，０，１，１，…，１，１）、ｗ’＝（０，０，…，０，１，０，１，１，…，１）となり、ｅ’１＝（１，１，…，１，１，１，１，１，…，１）となり、ｙ１＝（１，１，…，１，１，１，１，１，…，１，１）となる。そのた��、ｚ１＝１となる。
【０１１０】
≪Ｎ≦Ｎ（ｉ）の場合≫
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）である。等号判定部５２１−ｈは、秘匿化検索対象ワード［ｘｉ］と秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得て出力する。ワイルドカード判定部５２２−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊがワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得て出力する。ヌル判定部６２５−ｈは、秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得て出力する。論理和演算部６２３−ｈは、秘匿化演算結果［ｗ］と秘匿化演算結果［ｕ”］を用いた秘密計算によって、ｕ”ｊ＝ｃ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ＝ｂ’１であり、ｕ”ｊ＝ｃ０およびｗｊ＝ｂ０の両方を満たす場合にｗ’ｊ＝ｂ’０である、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎ）が秘匿された秘匿化演算結果［ｗ’］を得て出力する。論理和演算部６２３−ｈは、秘匿化演算結果［ｅｉ］と秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗ’ｊ＝ｂ’１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗ’ｊ＝ｂ’０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｅ’ｉ＝ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得て出力する。例えば、図２７に例示するように、ａ０＝０、ａ１＝１、ｂ０＝０、ｂ１＝１、ｂ’０＝０、ｂ’１＝１、ｃ０＝０、ｃ１＝１、ｄ０＝０、ｄ１＝１、ｇ０＝０、ｇ１＝１であり、ｋｎ−１がワイルドカード文字「*」であり、ｊ＝１，…，ｎ−２，ｎについてｘ１，ｊ＝ｋｊを満たし、Ｎ＝Ｎ（２）の場合、ｅ２＝（１，１，…，１，０，１，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｕ”＝（０，０，…，０，０，０，１，１，…，１）、ｗ’＝（０，０，…，０，１，０，１，１，…，１）となり、ｅ’２＝（１，１，…，１，１，１，１，１，…，１）となり、ｙ２＝（１，１，…，１，１，１，１，１，…，１）となる。そのため、ｚ１＝１となる。例えば、図２８に例示するように、Ｎ＜Ｎ（３）の場合、ｅ３＝（１，１，…，１，０，０，１，１，…，１）、ｗ＝（０，０，…，０，１，０，０，０，…，０）、ｕ”＝（０，０，…，０，０，０，１，１，…，１）、ｗ’＝（０，０，…，０，１，０，１，１，…，１）となり、ｅ’３＝（１，１，…，１，１，０，１，１，…，１）となり、ｙ３＝（１，１，…，１，１，０，１，１，…，１）となる。そのため、ｚ３＝０となる。
【０１１１】
＜本実施形態の特徴＞
上述のように、本実施形態では、検索ワードｋがワイルドカード文字を含み得る場合であっても、検索ワードｋおよび検索対象ワードｘｉの少なくとも一方がヌル文字を含み得る場合であっても、ワイルドカード文字を含む検索ワードを秘匿したまま、秘匿されたデータベースの前方一致検索を行うことができる。さらに、本実施形態では、秘匿化検索対象ワードと秘匿化検索ワードとの長さが互いに同一であるか否かにかかわらず前方一致検索を行うことができる。また、秘匿されたデータベースの一致検索を従来よりも少ない通信量で行うことができる。
【０１１２】
［変形例等］
なお、本発明は上述の実施形態に限定されるものではない。例えば、検索装置が秘匿化演算結果［ｙｉ］をそのまま出力してもよいし、秘匿化演算結果［ｙｉ］に対してステップＳ１２７−ｈとは異なる秘密計算を施し、それによって得られた結果を出力してもよい。
【０１１３】
前述したように秘密計算方式に限定はない。秘密計算による等号判定および論理演算（論理和演算、論理積演算）が可能であれば、秘密分散方式に基づく秘密計算が用いられてもよいし、準同型性暗号方式に基づく秘密計算が用いられてもよい。例えば、以下に記載された秘密計算方式を用いればよい。
参考文献１： 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.
参考文献２：千田浩司, 濱田浩気, 五十嵐大, 高橋克巳, “軽量検証可能３パーティ秘匿関数計算の再考（ A Three-party Secure Function Evaluation with Lightweight Verifiability Revisited）”, In CSS, 2010.
参考文献３：Takashi Nishide, Kazuo Ohta, “Multiparty computation for interval, equality, and comparison without bit-decomposition protocol”, PKC, pp. 343-360, 2007.
【０１１４】
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【０１１５】
上記の各装置は、例えば、ＣＰＵ（central processing unit）等のプロセッサ（ハードウェア・プロセッサ）およびＲＡＭ（random-access memory）・ＲＯＭ（read-only memory）等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される。このコンピュータは１個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めＲＯＭ等に記録されていてもよい。また、ＣＰＵのようにプログラムが読み込まれることで機能構成を実現する電子回路（circuitry）ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。１個の装置を構成する電子回路が複数のＣＰＵを含んでいてもよい。
【０１１６】
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な（non-transitory）記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
【０１１７】
このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【０１１８】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。
【０１１９】
コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されるのではなく、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
【符号の説明】
【０１２０】
１〜４  検索システム
１２−１〜Ｈ，２２−１〜Ｈ，３２−１〜Ｈ，４２−１〜Ｈ  検索装置
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
秘密計算によって完全一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎであり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る論理和演算部と、
を有する検索装置。
【請求項２】
秘密計算によって完全一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎであり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索対象ワード［ｘｉ］を用いた秘密計算によって、ｘｉ，ｊがヌル文字の場合にμｉ，ｊ＝θ０であり、ｘｉ，ｊがヌル文字でない場合にμｉ，ｊ＝θ１である、演算結果μｉ＝（μｉ，１，…，μｉ，Ｎ）が秘匿された秘匿化演算結果［μｉ］を得るヌル判定部と、
前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［μｉ］とを用いた秘密計算によって、ｗｊ＝ｂ１およびμｉ，ｊ＝θ１の両方を満たす場合にｖｉ，ｊ＝ρ１であり、ｗｊ＝ｂ０およびμｉ，ｊ＝θ０の少なくとも一方を満たす場合にｖｉ，ｊ＝ρ０である、演算結果ｖｉ＝（ｖｉ，１，…，ｖｉ，Ｎ）が秘匿された秘匿化演算結果［ｖｉ］を得る論理積演算部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｖｉ，ｊ＝ρ１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｖｉ，ｊ＝ρ０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る論理和演算部と、
を有する検索装置。
【請求項３】
秘密計算によって前方一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎであり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕｊ＝ｃ０である、演算結果ｕ＝（ｕ１，…，ｕＮ）が秘匿された秘匿化演算結果［ｕ］を得る第１ヌル判定部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［ｕ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１、ｗｊ＝ｂ１、およびｕｊ＝ｃ１の少なくとも何れかを満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０およびｕｊ＝ｃ０のすべてを満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る論理和演算部と、
を有する検索装置。
【請求項４】
秘密計算によって前方一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎが正整数であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎであり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ）が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕｊ＝ｃ０である、演算結果ｕ＝（ｕ１，…，ｕＮ）が秘匿された秘匿化演算結果［ｕ］を得る第１ヌル判定部と、
前記秘匿化検索対象ワード［ｘｉ］を用いた秘密計算によって、ｘｉ，ｊがヌル文字の場合にμｉ，ｊ＝θ０であり、ｘｉ，ｊがヌル文字でない場合にμｉ，ｊ＝θ１である、演算結果μｉ＝（μｉ，１，…，μｉ，Ｎ）が秘匿された秘匿化演算結果［μｉ］を得る第２ヌル判定部と、
前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［μｉ］とを用いた秘密計算によって、ｗｊ＝ｂ１およびμｉ，ｊ＝θ１の両方を満たす場合にｖｉ，ｊ＝ρ１であり、ｗｊ＝ｂ０およびμｉ，ｊ＝θ０の少なくとも一方を満たす場合にｖｉ，ｊ＝ρ０である、演算結果ｖｉ＝（ｖｉ，１，…，ｖｉ，Ｎ）が秘匿された秘匿化演算結果［ｖｉ］を得る論理積演算部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｕ］と前記秘匿化演算結果［ｖｉ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１、ｖｉ，ｊ＝ρ１、およびｕｊ＝ｃ１の少なくとも何れかを満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｖｉ，ｊ＝ρ０およびｕｊ＝ｃ０のすべてを満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る論理和演算部と、
を有する検索装置。
【請求項５】
請求項１から４の何れかの検索装置であって、
前記秘匿化演算結果［ｙｉ］を用いた秘密計算によって、ｙｉ，１＝…＝ｙｉ，Ｎ＝ｄ１の場合にｚｉ＝ｇ１であり、ｙｉ，１＝…＝ｙｉ，Ｎ＝ｄ１でない場合にｚｉ＝ｇ０である一致判定結果ｚｉが秘匿された秘匿化一致判定結果［ｚｉ］を得る論理積演算部を有する、検索装置。
【請求項６】
秘密計算によって完全一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ＞Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ（ｉ）＋１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）の場合にｅｉ，ｊ（ｉ）＝ａ１であり、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）でない場合にｅｉ，ｊ（ｉ）＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊ（ｉ）が前記ワイルドカード文字の場合にｗｊ（ｉ）＝ｂ１であり、ｋｊ（ｉ）が前記ワイルドカード文字でない場合にｗｊ（ｉ）＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ（ｉ））が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］の少なくとも一部を用いた秘密計算によって、ｋｊ”（ｉ）がヌル文字の場合にｕ’ｊ”（ｉ）＝ｃ１であり、ｋｊ”（ｉ）がヌル文字でない場合にｕ’ｊ”（ｉ）＝ｃ０である、演算結果ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎが秘匿された秘匿化演算結果［ｕ’］を得る第１ヌル判定部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ（ｉ）＝ａ１およびｗｊ（ｉ）＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ１であり、ｅｉ，ｊ（ｉ）＝ａ０およびｗｊ（ｉ）＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅ’ｉ］を得る論理和演算部と、
前記秘匿化演算結果［ｕ’］および秘匿化演算結果［ｅ’ｉ］を用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ’Ｎ（ｉ）＋１，…，ｕ’Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る連結部と、
を有する検索装置。
【請求項７】
秘密計算によって完全一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ＜Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ＋１，…，Ｎ（ｉ）であり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｅ’ｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗｊ＝ｂ０の両方を満たす場合にｅ’ｉ，ｊ＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ）が秘匿された秘匿化演算結果［ｅ’ｉ］を得る論理和演算部と、
前記秘匿化検索対象ワード［ｘｉ］の少なくとも一部を用いた秘密計算によって、ｘｉ，ｊ”（ｉ）がヌル文字の場合にμ’ｉ，ｊ”（ｉ）＝ｄ１であり、ｘｉ，ｊ”（ｉ）がヌル文字でない場合にμ’ｉ，ｊ”（ｉ）＝ｄ０である、演算結果μ’ｉ＝（μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［μ’ｉ］を得る第２ヌル判定部と、
前記秘匿化演算結果［ｅ’ｉ］と前記秘匿化演算結果［μ’ｉ］とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ（ｉ））＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ，μ’ｉ，Ｎ＋１，…，μ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｙｉ］を得る連結部と、
を有する検索装置。
【請求項８】
秘密計算によって前方一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ≦Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊがｋｊの場合にｅｉ，ｊ＝ａ１であり、ｘｉ，ｊがｋｊでない場合にｅｉ，ｊ＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ）が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊが前記ワイルドカード文字の場合にｗｊ＝ｂ１であり、ｋｊが前記ワイルドカード文字でない場合にｗｊ＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ）が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得るヌル判定部と、
前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［ｕ”］とを用いた秘密計算によって、ｕ”ｊ＝ｃ１およびｗｊ＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ＝ｂ’１であり、ｕ”ｊ＝ｃ０およびｗｊ＝ｂ０の両方を満たす場合にｗ’ｊ＝ｂ’０である、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎ）が秘匿された秘匿化演算結果［ｗ’］を得る第１論理和演算部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅｉ，ｊ＝ａ１およびｗ’ｊ＝ｂ’１の少なくとも一方を満たす場合にｙｉ，ｊ＝ｄ１であり、ｅｉ，ｊ＝ａ０およびｗ’ｊ＝ｂ’０の両方を満たす場合にｙｉ，ｊ＝ｄ０である、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る第２論理和演算部と、
を有する検索装置。
【請求項９】
秘密計算によって前方一致検索を行う検索装置であって、
ｍ，ｎ，ｔ（ｉ），Ｎ，Ｎ（ｉ）が正整数であり、Ｎ＞Ｎ（ｉ）であり、ｉ＝１，…，ｍであり、ｊ＝１，…，Ｎであり、ｊ（ｉ）＝１，…，Ｎ（ｉ）であり、ｊ”（ｉ）＝Ｎ（ｉ）＋１，…，Ｎであり、ｎ≦Ｎであり、ｔ（ｉ）≦Ｎ（ｉ）であり、
ｔ（ｉ）個の文字ｘｉ，１，…，ｘｉ，ｔ（ｉ）を含む検索対象ワードｘｉ＝（ｘｉ，１，…，ｘｉ，ｔ（ｉ），…，ｘｉ，Ｎ（ｉ））が秘匿された秘匿化検索対象ワード［ｘｉ］を含む秘匿化データベース［ｘ１］，…，［ｘｍ］を格納する記憶部と、
ワイルドカード文字を含むｎ個の文字ｋ１，…，ｋｎを含む検索ワードｋ＝（ｋ１，…，ｋｎ，…，ｋＮ）が秘匿された秘匿化検索ワード［ｋ］の入力を受け付ける入力部と、
前記秘匿化検索対象ワード［ｘｉ］と前記秘匿化検索ワード［ｋ］とを用いた秘密計算によって、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）の場合にｅｉ，ｊ（ｉ）＝ａ１であり、ｘｉ，ｊ（ｉ）がｋｊ（ｉ）でない場合にｅｉ，ｊ（ｉ）＝ａ０である、演算結果ｅｉ＝（ｅｉ，１，…，ｅｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅｉ］を得る等号判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊ（ｉ）が前記ワイルドカード文字の場合にｗｊ（ｉ）＝ｂ１であり、ｋｊ（ｉ）が前記ワイルドカード文字でない場合にｗｊ（ｉ）＝ｂ０である、演算結果ｗ＝（ｗ１，…，ｗＮ（ｉ））が秘匿された秘匿化演算結果［ｗ］を得るワイルドカード判定部と、
前記秘匿化検索ワード［ｋ］を用いた秘密計算によって、ｋｊがヌル文字の場合にｕ”ｊ＝ｃ１であり、ｋｊがヌル文字でない場合にｕ”ｊ＝ｃ０である、演算結果ｕ”＝（ｕ”１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｕ”］を得るヌル判定部と、
前記秘匿化演算結果［ｗ］と前記秘匿化演算結果［ｕ”］の少なくとも一部を用いた秘密計算によって、ｕ”ｊ（ｉ）＝ｃ１およびｗｊ（ｉ）＝ｂ１の少なくとも一方を満たす場合にｗ’ｊ（ｉ）＝ｂ’１であり、ｕ”ｊ（ｉ）＝ｃ０およびｗｊ（ｉ）＝ｂ０の両方を満たす場合にｗ’ｊ（ｉ）＝ｂ’０である、演算結果ｗ’＝（ｗ’１，…，ｗ’Ｎ（ｉ））が秘匿された秘匿化演算結果［ｗ’］を得る第１論理和演算部と、
前記秘匿化演算結果［ｅｉ］と前記秘匿化演算結果［ｗ’］とを用いた秘密計算によって、ｅ’ｉ，ｊ（ｉ）＝ａ１およびｗ’ｊ（ｉ）＝ｂ’１の少なくとも一方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ１であり、ｅｉ，ｊ（ｉ）＝ａ０およびｗ’ｊ（ｉ）＝ｂ’０の両方を満たす場合にｅ’ｉ，ｊ（ｉ）＝ｄ０である、演算結果ｅ’ｉ＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ））が秘匿された秘匿化演算結果［ｅ’ｉ］を得る第２論理和演算部と、
前記秘匿化演算結果［ｅ’ｉ］と前記秘匿化演算結果［ｕ”］の少なくとも一部とを用いた秘密計算によって、演算結果ｙｉ＝（ｙｉ，１，…，ｙｉ，Ｎ）＝（ｅ’ｉ，１，…，ｅ’ｉ，Ｎ（ｉ），ｕ”Ｎ（ｉ）＋１，…，ｕ”Ｎ）が秘匿された秘匿化演算結果［ｙｉ］を得る連結部と、
を有する検索装置。
【請求項１０】
請求項６から９の何れかの検索装置であって、
Ｎ≦Ｎ（ｉ）のときＮｍａｘ＝Ｎ（ｉ）であり、Ｎ＞Ｎ（ｉ）のときＮｍａｘ＝Ｎであり、
前記秘匿化演算結果［ｙｉ］を用いた秘密計算によって、ｙｉ，１＝…＝ｙｉ，Ｎｍａｘ＝ｄ１の場合にｚｉ＝ｇ１であり、ｙｉ，１＝…＝ｙｉ，Ｎｍａｘ＝ｄ１でない場合にｚｉ＝ｇ０である一致判定結果ｚｉが秘匿された秘匿化一致判定結果［ｚｉ］を得る論理積演算部を有する、検索装置。
【請求項１１】
請求項１から１０の何れかの検索装置の検索方法。
【請求項１２】
請求項１から１０の何れかの検索装置としてコンピュータを機能させるためのプログラム。
【請求項１３】
請求項１から１０の何れかの検索装置としてコンピュータを機能させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2019124134.tif 000031
【図２】
2019124134.tif 000032
【図３】
2019124134.tif 000033
【図４】
2019124134.tif 000034
【図５】
2019124134.tif 000035
【図６】
2019124134.tif 000036
【図７】
2019124134.tif 000037
【図８】
2019124134.tif 000038
【図９】
2019124134.tif 000039
【図１０】
2019124134.tif 000040
【図１１】
2019124134.tif 000041
【図１２】
2019124134.tif 000042
【図１３】
2019124134.tif 000043
【図１４】
2019124134.tif 000044
【図１５】
2019124134.tif 000045
【図１６】
2019124134.tif 000046
【図１７】
2019124134.tif 000047
【図１８】
2019124134.tif 000048
【図１９】
2019124134.tif 000049
【図２０】
2019124134.tif 000050
【図２１】
2019124134.tif 000051
【図２２】
2019124134.tif 000052
【図２３】
2019124134.tif 000053
【図２４】
2019124134.tif 000054
【図２５】
2019124134.tif 000055
【図２６】
2019124134.tif 000056
【図２７】
2019124134.tif 000057
【図２８】
2019124134.tif 000058
【国際調査報告】
2019124134.tif 000059
2019124134.tif 000060
2019124134.tif 000061
2019124134.tif 000062