(57)【要約】  外部のデータベースを検索する際に、使用可能な検索命令が制限されている場合であっても、任意の検索命令を効率的に実行するデータベース検索装置を提供する。データベース検索装置は、入力された検索命令を、所定のデータベースにおいて実行可能な第１の検索命令と、所定のデータベースにおいて実行不能な第２の検索命令と、に分離する検索命令分離部と、所定のデータベースにおいて第１の検索命令を実行することにより取得した検索結果に対して、第２の検索命令を実行することで得られた検索結果を、入力された検索命令に対する検索結果とする検索命令実行部と、を備える。
2014092105.tif 000002
【特許請求の範囲】
【請求項１】
入力された検索命令を、所定のデータベースにおいて実行可能な第１の検索命令と、前記所定のデータベースにおいて実行不能な第２の検索命令と、に分離する検索命令分離部と、
前記所定のデータベースにおいて前記第１の検索命令を実行することにより取得した検索結果に対して、前記第２の検索命令を実行することで得られた検索結果を、前記入力された検索命令に対する検索結果とする検索命令実行部と、
を備えるデータベース検索装置。
【請求項２】
前記検索命令分離部は、前記入力された検索命令を、前記データベースにおいて実行可能な第１の原子論理式と前記データベースにおいて実行不能な第２の原子論理式と、を含む複数の基本論理式に分離する請求項１のデータベース検索装置。
【請求項３】
前記基本論理式は、複数の前記第１の原子論理式のそれぞれの論理積で示される外部連言と、複数の前記第２の原子論理式のそれぞれの、否定、論理積又は論理和の組み合わせで示される内部論理式と、の論理積により示される請求項２のデータベース検索装置。
【請求項４】
前記検索命令分離部は、前記入力された検索命令を、前記複数の基本論理式のそれぞれの論理和で示される分割和積標準論理式に変換する請求項３のデータベース検索装置。
【請求項５】
前記検索命令分離部は、前記入力された検索命令を分離する検索命令分離手順を実行することで、前記入力された検索命令を、前記第１及び第２の原子論理式に分離すると共に、前記第１の原子論理式から前記外部連言を生成し、且つ、前記第２の原子論理式から前記内部論理式を生成し、前記外部連言及び前記内部論理式を前記分割和積標準論理式に再構成する請求項４のデータベース検索装置。
【請求項６】
前記検索命令分離部は、前記検索命令分離手順を再帰的に実行することで、前記分割和積標準論理式を生成する請求項５のデータベース検索装置。
【請求項７】
前記外部連言は、互いに排他的である請求項３乃至６のいずれか一項に記載のデータベース検索装置。
【請求項８】
前記所定のデータベースは、検索可能暗号により暗号化されたデータを格納する請求項１乃至７のいずれか一項に記載のデータベース検索装置。
【請求項９】
入力された検索命令を、所定のデータベースにおいて実行可能な第１の検索命令と、前記所定のデータベースにおいて実行不能な第２の検索命令と、に分離する検索命令分離工程と、
前記所定のデータベースにおいて第１の検索命令を実行することにより取得した検索結果に対して、前記第２の検索命令を実行することで得られた検索結果を、前記入力された検索命令に対する検索結果とする検索命令実行工程と、
を含むデータベースの検索方法。
【請求項１０】
入力された検索命令を、所定のデータベースにおいて実行可能な第１の検索命令と、前記所定のデータベースにおいて実行不能な第２の検索命令と、に分離する検索命令分離処理と、
前記所定のデータベースにおいて第１の検索命令を実行することにより取得した検索結果に対して、前記第２の検索命令を実行することで得られた検索結果を、前記入力された検索命令に対する検索結果とする検索命令実行処理と、
をデータベース検索装置を制御するコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１２−２７１５４５号（２０１２年１２月１２日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、データベース検索装置、データベース検索方法及びプログラムに関する。特に、外部のデータベースを検索するデータベース検索装置、データベース検索方法及びプログラムに関する。
【背景技術】
【０００２】
近年、クライアントに対してインターネット経由によりアプリケーション等を提供するクラウドコンピューティングの利用が拡大している。さらに、クラウド上でデータベースサービスを提供する、データベース貸し出しサービス（ＤａａＳ；DataBase as a Service）の普及が始まっている。【０００３】
データベース貸し出しサービスでは、外部のデータベースに、ユーザが使用するデータを格納する。その際、データベース貸し出しサービスを利用するユーザが、必要に応じて、外部データベースに格納したデータを取り出すため、外部データベースに格納されたデータを検索できる仕組みを備えることが多い。ユーザが、外部データベースに検索命令を入力すると、外部データベースは検索命令を実行し、検索結果をユーザに送信する。【０００４】
ところで、このようなデータベース貸し出しサービスでは、データベースからの情報漏洩の防止が特に重要と考えられる。データベースからの情報漏洩を防ぐために、データベースに記録するデータを暗号化する手法が、これまで各種提案されている。【０００５】
非特許文献１及び２において、データが暗号化された暗号化データベースに関する技術が開示されている。このような暗号化データベースにおいては、種々の理由（例えば、セキュリティ上の理由）から、ユーザが送信できる検索命令の種類に制限が存在する場合がある。例えば、「検索可能暗号」と呼ばれる暗号方式により実現された暗号化データベースでは、ユーザが送信できる検索命令の種類が制限されている。なお、検索可能暗号とは、暗号文（暗号化されたデータ）を復号することなく、データの検索を可能とする技術である。暗号化データベースでは、データの秘匿性を確保しつつ、格納されたデータの検索を可能とする。【０００６】
例えば、非特許文献３において、「一致検索暗号」と呼ばれる検索可能暗号が開示されている。一致検索暗号では、暗号文を復号することなく、データベースに格納されたデータが定められた値と等しいか否かを判定できる。さらに、非特許文献４において、「順序保存暗号」と呼ばれる検索可能暗号が開示されている。順序保存暗号では、暗号文を復号することなく、データベースに格納されたデータが定められた値以上であるか否かを判定できる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Raluca Ada Popa, Catherine M. S. Redfield, Nickolai Zeldovich and Hari Balakrishnan, "CryptDB: Protecting Confidentiality with Encrypted Query Processing", SOSP'11 Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles, ［平成２４年１１月３０日検索］ <インターネット  URL: http://dl.acm.org/citation.cfm?doid=2043556.2043566>
【非特許文献２】Craig Gentry, "Fully Homomorphic Encryption Using Ideal Lattices", STOC'09 May 31-June 2, 2009, ［平成２４年１１月３０日検索］ <インターネット  URL:http://domino.research.ibm.com/comm/research_projects.nsf/pages/security.homoenc.html/$FILE/stocdhe.pdf>
【非特許文献３】D. Song, D. Wagner and A. Perrig, "Practical Techniques for Searches on Encrypted Data", 2000 IEEE Symposium May 14-17, 2000, ［平成２４年１１月３０日検索］ <インターネット  URL: http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=848445&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D848445>
【非特許文献４】Alexandra Boldyreva, Nathan Chenette, Younho Lee and Adam O'Neill, "Order-Preserving Symmetric Encryption", EUROCRYPT 2009 April 26-30, 2009, ［平成２４年１１月３０日検索］ <インターネット  URL: http://link.springer.com/chapter/10.1007%2F978-3-642-01001-9_13>
【発明の概要】
【発明が解決しようとする課題】
【０００８】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。【０００９】
検索可能暗号により実現されたセキュアな暗号化データベースにおいて、ユーザは、検索可能暗号を用いてデータの検索をする。しかし、上述したように、暗号化データベースでは、ユーザが使用できる検索命令の種類に制限が存在する。例えば、一致検索暗号のみが使用され暗号化データベースが実現されている場合には、「データが定められた値と等しいか否か」を検索する命令に限り実行することができる。同様に、順序保存暗号のみが使用され暗号化データベースが実現されている場合には、「データが定められた値以上か否か」を検索する命令に限り実行することができる。【００１０】
これらは、暗号文を復号せずに検索する場合の制限であって、暗号化の鍵をデータベース側に伝えれば、任意の検索が可能となる。しかしながら、暗号化の鍵を外部（外部データベースである暗号化データベース）に伝えることは、セキュリティ上、望ましい行為ではない。このように、暗号化データベースを使用するユーザが用いることのできる検索命令の種類は、制限される。一方で、検索命令の種類が制限されてしまうと、ユーザの利便性が低下する。即ち、使用できる検索式が制限されるため、ユーザが必要とするデータを取り出すための時間やコストが上昇する。【００１１】
そのため、外部のデータベースを検索する際に、使用可能な検索命令が制限されている場合であっても、任意の検索命令を効率的に実行するデータベース検索装置、データベース検索方法及びプログラムが、望まれる。
【課題を解決するための手段】
【００１２】
本発明の第１の視点によれば、入力された検索命令を、所定のデータベースにおいて実行可能な第１の検索命令と、前記所定のデータベースにおいて実行不能な第２の検索命令と、に分離する検索命令分離部と、前記所定のデータベースにおいて前記第１の検索命令を実行することにより取得した検索結果に対して、前記第２の検索命令を実行することで得られた検索結果を、前記入力された検索命令に対する検索結果とする検索命令実行部と、を備えるデータベース検索装置が提供される。【００１３】
本発明の第２の視点によれば、入力された検索命令を、所定のデータベースにおいて実行可能な第１の検索命令と、前記所定のデータベースにおいて実行不能な第２の検索命令と、に分離する検索命令分離工程と、前記所定のデータベースにおいて第１の検索命令を実行することにより取得した検索結果に対して、前記第２の検索命令を実行することで得られた検索結果を、前記入力された検索命令に対する検索結果とする検索命令実行工程と、を含むデータベースの検索方法が提供される。
なお、本方法は、データベースという、特定の機械に結びつけられている。【００１４】
本発明の第３の視点によれば、入力された検索命令を、所定のデータベースにおいて実行可能な第１の検索命令と、前記所定のデータベースにおいて実行不能な第２の検索命令と、に分離する検索命令分離処理と、前記所定のデータベースにおいて第１の検索命令を実行することにより取得した検索結果に対して、前記第２の検索命令を実行することで得られた検索結果を、前記入力された検索命令に対する検索結果とする検索命令実行処理と、をデータベース検索装置を制御するコンピュータに実行させるプログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント（ｎｏｎ−ｔｒａｎｓｉｅｎｔ）なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１５】
本発明の各視点によれば、外部のデータベースを検索する際に、使用可能な検索命令が制限されている場合であっても、任意の検索命令を効率的に実行することに寄与するデータベース検索装置、データベース検索方法及びプログラムが、提供される。
【図面の簡単な説明】
【００１６】
【図１】一実施形態の概要を説明するための図である。
【図２】第１の実施形態に係るデータベース検索システムの構成の一例を示す図である。
【図３】データベース検索装置１の内部構成の一例を示す図である。
【図４】検索命令分離手順の一例を示すフローチャートである。
【図５】検索命令Ｐが原子論理式の場合の動作の一例を示すフローチャートである。
【図６】検索命令ＰがＰ＝Ｑ∨Ｒと表記できる場合の動作の一例を示すフローチャートである。
【図７】検索命令ＰがＰ＝Ｑ∧Ｒと表記できる場合の動作の一例を示すフローチャートである。
【図８】第２の実施形態に係るデータベース検索システムの構成の一例を示す図である。
【図９】データベース検索装置１ａの内部構成の一例を示す図である。
【発明を実施するための形態】
【００１７】
初めに、図１を用いて一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
【００１８】
上述のように、外部のデータベースを検索する際に、使用可能な検索命令が制限されている場合であっても、任意の検索命令を効率的に実行するデータベース検索装置が、望まれる。
【００１９】
そこで、一例として図１に示すデータベース検索装置１００を提供する。データベース検索装置１００は、入力された検索命令を、所定のデータベースにおいて実行可能な第１の検索命令と、所定のデータベースにおいて実行不能な第２の検索命令と、に分離する検索命令分離部１０１と、所定のデータベースにおいて第１の検索命令を実行することにより取得した検索結果に対して、第２の検索命令を実行することで得られた検索結果を、入力された検索命令に対する検索結果とする検索命令実行部１０２と、を備える。
【００２０】
データベース検索装置１００は、ユーザ等が入力する検索命令を、「外部のデータベースで実行可能な命令」と「外部のデータベースで実行不能な命令」とに、適切に分離する。さらに、外部のデータベースにおいて実行可能な命令の検索結果に対して、データベース検索装置１００の内部で実行可能な命令を実行することで、ユーザ等が入力する検索命令に対する検索結果を生成する。その結果、任意の検索命令を効率的に実行することができる。
【００２１】
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。
【００２２】
［第１の実施形態］
第１の実施形態について、図面を用いてより詳細に説明する。
【００２３】
図２は、本実施形態に係るデータベース検索システムの構成の一例を示す図である。データベース検索システムは、データベース検索装置１と、外部データベース２と、を含んで構成される。データベース検索装置１と外部データベース２は、インターネット等のネットワークにより接続されており、データベース検索装置１から検索命令を出力し、外部データベース２は検索結果を応答する。
【００２４】
外部データベース２には、通信部２１と、記憶部２２と、制御部２３と、が含まれている。
【００２５】
通信部２１は、データベース検索装置１との通信を実現し、入力された検索命令を制御部２３に引き渡す。制御部２３は、検索命令に従い、記憶部２２を検索する。
【００２６】
外部データベース２の記憶部２２には、何らかのデータが格納されている。なお、記憶部２２が記憶するデータは暗号化されているか否かを問わない。さらに、外部データベース２が保持するデータを格納した主体や、データを格納する際の方法も限定されない。
【００２７】
制御部２３は、検索結果を、通信部２１を介してデータベース検索装置１に応答する。
【００２８】
図３は、データベース検索装置１の内部構成の一例を示す図である。データベース検索装置１は、通信部１１と、記憶部１２と、制御部１３と、が含まれている。さらに、制御部１３には、検索命令分離部１３１と、検索命令実行部１３２と、が含まれている。
【００２９】
データベース検索装置１は、通信部１１を介して検索命令を受け付ける。検索命令を入力するのは、外部データベース２を使用するユーザや、ネットワークに含まれる他の通信装置であることが想定される。あるいは、データベース検索装置１に実装されたアプリケーション等が、検索命令を出力してもよい。
【００３０】
通信部１１は、受け付けた検索命令を制御部１３に出力する。
【００３１】
制御部１３は、入力された検索命令を、「外部実行可能検索命令」と「外部実行不能検索命令」の２つの検索命令に分離する。なお、これらの２つの検索命令の詳細については後述する。
【００３２】
制御部１３は、外部実行可能検索命令を、通信部１１を介して外部データベース２に出力する。一方、外部実行不能検索命令は、外部データベース２に出力されない。
【００３３】
外部実行可能検索命令を受け付けた外部データベース２は、記憶部１２に格納されたデータに対して外部実行可能検索命令を実行し、検索結果をデータベース検索装置１に応答する。
【００３４】
制御部１３は、外部データベース２から受け付けた検索結果と、外部実行不能検索命令と、に基づいて、ユーザ等により入力された検索命令を実行し、その結果をユーザ等に応答する。
【００３５】
検索命令分離部１３１は、入力された検索命令を２つの命令に分離する手段である。
【００３６】
検索命令実行部１３２は、入力された検索命令を、外部データベース２から得た検索結果と、外部実行不能検索命令と、に基づいて実行する手段である。なお、制御部１３（検索命令分離部１３１及び検索命令実行部１３２）は、データベース検索装置１に搭載されたコンピュータに、そのハードウェアを用いて、後に詳述する処理を実行させるコンピュータプログラムにより実現することもできる。
【００３７】
ここで、外部データベース２においては、ユーザ等が発した検索命令の一部に限り、実行可能である。外部データベース２で実行可能な検索命令が、上述の外部実行可能検索命令である。一方、外部データベース２で実行不能な検索命令が、上述の外部実行不能検索命令である。
【００３８】
ユーザ等がデータベース検索装置１に入力する検索命令Ｐが、「外部実行可能命令と外部実行不能命令の両方を満たすデータを取得する」という場合を想定する。この場合、検索命令分離部１３１は、検索命令Ｐを、外部データベース２で実行可能な命令である外部実行可能命令と、外部実行不能命令と、に分離する。この検索命令Ｐを分離する方法を、検索命令分離手順と表記して以降の説明を行う。
【００３９】
検索命令分離手順は、検索命令Ｐを入力として受け付け、検索命令Ｐを分割和積標準論理式に変換する。分割和積標準論理式とは、外部実行可能命令と外部実行不能命令とから構成される論理式である。分割和積標準論理式の詳細については後述する。
【００４０】
制御部１３は、通信部１１を介して、外部実行可能命令を外部データベース２にクエリし、検索結果を得る。制御部１３は、検索結果を記憶部１２に格納する。検索命令実行部１３２は、外部データベース２から得た検索結果から、外部実行不能命令を満たすデータを算出する（選択する）。制御部１３は、検索命令実行部１３２が出力する結果を、ユーザ等により入力された検索命令Ｐに対する検索結果として、ユーザ等に応答する。
【００４１】
データベース検索装置１は、概略、以上のように動作する。即ち、データベース検索装置１は、ユーザ等が入力する検索命令を適切に分離することで、実行可能な検索命令を拡張する。
【００４２】
次に、データベース検索装置１の詳細を説明する際に使用する用語を定義する。
【００４３】
ユーザ等が入力する検索命令は、原子論理式の否定、論理積又は論理和の組み合わせにより構成される論理式として表現できるとする。以降の説明において、否定演算は「¬」、論理積演算は「∧」、論理和演算は「∨」と表記する。
【００４４】
外部データベース２で実行可能な原子論理式を「外部原子論理式」と定める。
【００４５】
データベース検索装置１の内部で実行可能な原子論理式であって、外部データベース２で実行不能な原子論理式を「内部原子論理式」と定める。
【００４６】
なお、原子論理式は任意に定めることができる。つまり、どのような論理式を原子論理式に定めたとしてもデータベース検索装置１の動作には影響しない。例えば、外部データベース２が暗号化データベースである場合には、その暗号化データベースが実装している検索可能暗号により可能になる検索命令を原子論理式に定めることができる。より具体的には、暗号化データベースが一致検索可能暗号及び順序保存暗号を実装していれば、定数Ｃｏｎｓｔに対して、以下の論理式を原子論理式と定めることができる。
・ａ＝ｃｏｎｓｔを満たすデータを検索する。
・ａ≧ｃｏｎｓｔを満たすデータを検索する。
【００４７】
論理式Ｋが、原子論理式、又は、原子論理式の否定である場合には、論理式Ｋをリテラルと表記する。論理式Ｋが、外部原子論理式、又は、外部原子論理式の否定である場合に、論理式Ｋを外部リテラルと表記する。論理式Ｋが、内部原子論理式、又は、内部原子論理式の否定である場合は、論理式Ｋを内部リテラルと表記する。
【００４８】
論理式Ｋが、論理式Ｌ又は論理式Ｌの否定である場合に、論理式Ｋを±Ｌと表記する。
【００４９】
有限個の相異なる外部リテラルを、論理積（∧）を用いて結合して得られる論理式を外部連言と定める。例えば、論理式Ｌ１〜Ｌｎを、有限個の相異なる外部原子論理式とすると、外部連言は以下のとおり表記できる。
・外部連言＝±Ｌ１∧・・・∧±Ｌｎ（ｎは正の整数、以下同じ）。
【００５０】
内部原子論理式の否定（¬）、論理積（∧）又は論理和（∨）の組み合わせで得られる論理式を内部論理式と定める。
【００５１】
次に、外部連言と内部論理式を組み合わせた論理式を定義する。
【００５２】
分割和積論理式を以下のとおりに定義する。
・分割和積論理式＝（（外部連言１）∧（内部論理式１））∨・・・∨（（外部連言ｎ）∧（内部論理式ｎ））。
【００５３】
また、分割和積論理式の構成要素である（外部連言ｉ）∧（内部論理式ｉ）を基本論理式と定める（ｉは１〜ｎのいずれかの値、以下同じ）。
【００５４】
さらに、分割和積論理式に含まれる論理式であって、「外部連言ｉ∧外部連言ｊ＝偽」となる分割和積論理式を分割和積標準論理式と定める（ｊは１〜ｎのいずれかの値、以下同じ）。
【００５５】
なお、以降の説明において、外部データベース２が以下の条件を満たすことを前提とする。
・検索命令Ｍが、外部データベース２で実行可能な場合には、¬Ｍも外部データベース２で実行可能である。
・検索命令Ｍ１及びＭ２が外部データベース２で実行可能な場合には、Ｍ１∨Ｍ２及びＭ１∧Ｍ２も外部データベース２で実行可能である。
・「外部データベース２内の全データを取得する」という検索命令が、外部データベース２で実行できる。
【００５６】
次に、検索命令分離手順について説明する。
【００５７】
検索命令分離手順とは、検索命令分離部１３１が実行する処理である。また、検索命令分離手順は、再帰的に定義される。
【００５８】
検索命令分離手順は、検索命令Ｐとビットｂを入力とする。なお、検索命令分離手順をある種の関数とみなし、検索命令分離手順の実行を、ＳＣＮＦ（Ｐ、ｂ）と表記し、以降の説明を行う。
【００５９】
入力ビットｂは、論理式の否定を検索命令分離手順において扱うために導入される。ド・モルガンの法則（¬（Ａ∨Ｂ）＝¬Ａ∧¬Ｂ）によれば、論理式の全体が否定される場合において、論理式を展開すると、論理和（∨）と論理積（∧）とが入れ替わる。入力ビットｂは、この入れ替わりの偶奇性を把握するためのフラグとして導入される。なお、偶数の否定演算子「¬」が存在すれば入力ビットｂを０とする。一方、奇数の否定演算子「¬」が存在すれば入力ビットｂを１とする。さらに、論理式Ｐが、論理式Ｑの否定で表現される場合には、ＳＣＮＦ（Ｐ、ｂ）を、ＳＣＮＦ（Ｐ、ｂ）＝ＳＣＮＦ（Ｑ、１−ｂ）として定義する。
【００６０】
検索命令分離手順は、分割和積標準論理式Ｐｏと、外部原子論理式の集合Ｓと、を出力とする。
【００６１】
外部原子論理式の集合Ｓは、検索命令分離手順を再帰的に実行するために用いられる補助的な出力である。より具体的には、集合Ｓは分割和積標準論理式Ｐｏに含まれる外部原子論理式の集合である。
【００６２】
分割和積標準論理式Ｐｏを、以下のように表記した場合を考える。
・Ｐｏ＝（（外部連言１）∧（内部論理式１））∨・・・∨（（外部連言ｎ）∧（内部論理式ｎ））。
この場合、外部連言ｉは、集合Ｓの要素Ｌ１、・・・、Ｌｍを用いて、外部連言ｉ＝±Ｌ１∧・・・∧±Ｌｍと表記できる。
【００６３】
図４は、検索命令分離手順の一例を示すフローチャートである。
【００６４】
ステップＳ０１において、検索命令分離部１３１は、検索命令Ｐ及び入力ビットｂを受け付ける。検索命令Ｐ及び入力ビットｂの受け付けることで、検索命令分離部１３１は、検索命令分離手順の実行を開始する（ＳＣＮＦ（Ｐ、ｂ）の計算を開始する）。
【００６５】
ステップＳ０２において、検索命令分離部１３１は、入力された検索命令Ｐが、原子論理式であるか否かを判断する。
【００６６】
検索命令Ｐが、原子論理式である場合（ステップＳ０２、Ｙｅｓ分岐）には、ステップＳ０３の処理が実行される。
【００６７】
ステップＳ０３は、検索命令Ｐが原子論理式の場合に実行される処理である。図５は、検索命令Ｐが原子論理式の場合の動作の一例を示すフローチャートである。
【００６８】
ステップＳ１０１において、検索命令分離部１３１は、検索命令Ｐが、内部原子論理式か否かを判断する。検索命令Ｐが、内部原子論理式であれば（ステップＳ１０１、Ｙｅｓ分岐）、さらに、入力ビットｂが０か否かを判断する（ステップＳ１０２）。
【００６９】
入力ビットｂが０であれば（ステップＳ１０２、Ｙｅｓ分岐）、検索命令分離部１３１は、検索命令Ｐに対する分割和積標準論理式Ｐｏとして、以下の出力を行う（ステップＳ１０３）。
・Ｐｏ＝（外部連言）∧（内部論理式）＝Ｔｒｕｅ∧Ｐ。
・集合Ｓは、空集合である。
【００７０】
入力ビットｂが１であれば（ステップＳ１０２、Ｎｏ分岐）、検索命令分離部１３１は、検索命令Ｐの分割和積標準論理式Ｐｏとして、以下の出力を行う（ステップＳ１０４）。
・Ｐｏ＝（外部連言）∧（内部論理式）＝Ｔｒｕｅ∧¬Ｐ。
・集合Ｓは、空集合である。
【００７１】
検索命令Ｐが、内部原子論理式でなければ（ステップＳ１０１、Ｎｏ分岐）、ステップＳ１０５の処理が実行される。
【００７２】
ステップＳ１０５において、検索命令分離部１３１は、検索命令Ｐが外部原子論理式であることを確認する。検索命令Ｐが、外部原子論理式であると確認できれば（ステップＳ１０５、Ｙｅｓ分岐）、入力ビットｂが０か否かを判断する（ステップＳ１０６）。
【００７３】
入力ビットｂが０であれば（ステップＳ１０６、Ｙｅｓ分岐）、検索命令分離部１３１は、検索命令Ｐの分割和積標準論理式Ｐｏとして、以下の出力を行う（ステップＳ１０７）。
・Ｐｏ＝（外部連言）∧（内部論理式）＝Ｐ∧Ｔｒｕｅ。
・集合Ｓとして、一元集合｛Ｐ｝を出力する。
【００７４】
入力ビットｂが１であれば（ステップＳ１０６、Ｎｏ分岐）、検索命令分離部１３１は、検索命令Ｐの分割和積標準論理式Ｐｏとして、以下の出力を行う（ステップＳ１０８）。
・Ｐｏ＝（外部連言）∧（内部論理式）＝¬Ｐ∧Ｔｒｕｅ。
・集合Ｓとして、一元集合｛Ｐ｝を出力する。
【００７５】
以上のように、検索命令分離手順は、検索命令Ｐから分割和積標準論理式Ｐｏを生成する。
【００７６】
図４のフローチャートに戻り、動作の説明を継続する。
【００７７】
検索命令Ｐが、原子論理式でない場合（ステップＳ０２、Ｎｏ分岐）には、ステップＳ０４の処理が実行される。
【００７８】
ステップＳ０４において、検索命令分離部１３１は、検索命令Ｐが論理式Ｑの否定（Ｐ＝¬Ｑ）と表記できるか否かを判断する。
【００７９】
検索命令Ｐが、論理式Ｑの否定で表記できる場合（ステップＳ０４、Ｙｅｓ分岐）には、ステップＳ０５の処理を実行する。
【００８０】
ステップＳ０５では、上述の入力ビットｂの定義から、ＳＣＮＦ（Ｐ、ｂ）をＳＣＮＦ（Ｑ、１−ｂ）に書き換え、再び、検索命令分離手順を実行する。つまり、ＳＣＮＦにＱを入力して、再帰的に検索命令分離手順を実行する。
【００８１】
検索命令Ｐが、論理式Ｑの否定で表記できない場合（ステップＳ０４、Ｎｏ分岐）には、ステップＳ０６の処理が実行される。
【００８２】
ステップＳ０６において、検索命令分離部１３１は、検索命令Ｐが論理式ＱとＲの論理和として表記（Ｐ＝Ｑ∨Ｒ）できるか否かを判断する。
【００８３】
検索命令Ｐが、論理式ＱとＲの論理和として表記できる場合（ステップＳ０６、Ｙｅｓ分岐）には、ステップＳ０７の処理を実行する。検索命令Ｐが、論理式ＱとＲの論理和として表記できない場合（ステップＳ０６、Ｎｏ分岐）には、ステップＳ０８の処理が実行される。
【００８４】
ステップＳ０８において、検索命令分離部１３１は、検索命令Ｐが論理式ＱとＲの論理積として表記（Ｐ＝Ｑ∧Ｒ）できるか否かを判断する。
【００８５】
検索命令Ｐが、論理式ＱとＲの論理積として表記できる場合（ステップＳ０８、Ｙｅｓ分岐）には、ステップＳ０９の処理を実行する。検索命令Ｐが、論理式ＱとＲの論理積として表記できない場合（ステップＳ０８、Ｎｏ分岐）には、図４に示す処理を終了する。
【００８６】
次に、ステップＳ０７において実行される処理について説明する。ステップＳ０７は、検索命令ＰがＰ＝Ｑ∨Ｒと表記できる場合に実行される処理である。
【００８７】
図６は、検索命令ＰがＰ＝Ｑ∨Ｒと表記できる場合の動作の一例を示すフローチャートである。ステップＳ０７以降の処理は、Ｐ＝Ｑ∨Ｒと表記できる場合に実行される。
【００８８】
ステップＳ２０１において、検索命令分離部１３１は、論理式Ｑ及び論理式Ｒについて、それぞれ、検索命令分離手順を再帰的に実行する。より具体的には、ＳＣＮＦ（Ｑ、ｂ）を実行することで、その出力である（Ｑｏ、Ｓｑ）を得る。また、ＳＣＮＦ（Ｒ、ｂ）を実行することで、その出力である（Ｒｏ、Ｓｒ）を得る。
【００８９】
検索命令分離手順は再帰的に定義されるのであるから、論理式Ｑｏ及びＲｏは、それぞれ、論理式Ｑ及びＲの分割和積標準論理式である。集合Ｓｑ及びＳｒは、それぞれ、分割和積標準論理式Ｑｏ及びＲｏに含まれる外部原子論理式の集合となる。論理式Ｑｏ及びＲｏは、それぞれ論理式Ｑ及びＲの分割和積標準論理式であるので、論理式Ｑｏ及びＲｏは、それぞれ、論理式Ｑ及びＲと同値である。
【００９０】
従って、Ｐ＝Ｑ∨Ｒ＝Ｑｏ∨Ｒｏが成り立つ。ここで、論理式Ｑｏ及びＲｏは、分割和積標準論理式であることから、論理式（Ｑｏ∨Ｒｏ）は、検索命令Ｐに対する分割和積論理式といえる。しかし、論理式（Ｑｏ∨Ｒｏ）が、検索命令Ｐに対する分割和積標準論理式とは限らない。例えば、論理式Ｑｏ及びＲｏは、外部原子論理式Ａ及びＢと、内部論理式Ｘ及びＹを用いて、以下のように表記できるとする。
・Ｑｏ＝（Ａ∧Ｘ）∨・・・。
・Ｒｏ＝（Ｂ∧Ｙ）∨・・・。
【００９１】
すると、Ｑｏ∨Ｒｏ＝（Ａ∧Ｘ）∨・・・∨（Ｂ∧Ｙ）∨・・・と書き換えることができる。
【００９２】
２つの外部原子論理式Ａ及びＢは、通常、Ａ∧Ｂ＝偽とはならないので、Ｑｏ∨Ｒｏは必ずしも分割和積標準論理式とは限らない。この問題を解決するために、ステップＳ２０２及びＳ２０３に係る処理が実行される。
【００９３】
ステップＳ２０２における処理を、論理式変形処理と表記し、以降の説明を行う。論理式変形処理は、検索命令分離手順により得られる論理式が、分割和積標準論理式となることを保証するための処理である。
【００９４】
論理式変形処理では、論理式Ｒｏには存在するが、論理式Ｑｏには存在しない外部原子論理式Ｂを用いて、論理式Ｑｏを変形し、論理式Ｑ１を出力する。より具体的には、論理式Ｑｏにおいて、外部原子論理式Ｂとその否定¬Ｂが、論理式Ｑｏに含まれるように、変形する。例えば、論理式Ｑｏを変形して、以下の論理式Ｑ１を得る。
・Ｑ１＝（（Ａ∧Ｂ）∧Ｘ）∨（（Ａ∧¬Ｂ）∧Ｘ）∨・・・。
このような変換操作が、論理式変形処理である。
【００９５】
なお、以上の説明においては、外部連言が外部原子論理式ＡとＢそのものであるような非常に簡単なケースを用いたため、論理式Ｒｏに存在するが、論理式Ｑｏには存在しない外部原子論理式は、１つである。しかし、そのような外部原子論理式は複数存在するのが通常であるため、論理式変形処理は、上述の操作について、外部原子論理式の個数分、繰り返す必要がある。
【００９６】
また、ＳＣＮＦ（Ｑ、ｂ）により得られる集合Ｓｑと、ＳＣＮＦ（Ｒ、ｂ）により得られる集合Ｓｒから、論理式Ｒｏには存在するが、論理式Ｑｏには存在しない外部原子論理式の集合を得ることができる。より具体的には、論理式Ｒｏには存在するが、論理式Ｑｏには存在しない外部原子論理式の集合は、集合Ｓｒと集合Ｓｑの差集合（Ｓｒ＼Ｓｑ）に一致する。論理式変形処理は、差集合Ｓｒ＼Ｓｑを入力として受け付けることで、論理式Ｒｏには存在するが、論理式Ｑｏには存在しない外部原子論理式の全て把握し、上述の操作を繰り返す。
【００９７】
また、論理式Ｒｏに対しても、同様に、論理式変形処理を施す。より具体的には、論理式Ｒｏを変形して、以下の論理式Ｒ１を得る。
・Ｒ１＝（（Ａ∧Ｂ）∧Ｙ）∨（（¬Ａ∧Ｂ）∧Ｙ）∨・・・。
【００９８】
論理式ＱｏとＱ１、及び、論理式ＲｏとＲ１は、それぞれ、同値な論理式であることから、以上の変形により、検索命令Ｐは、以下の式（１）として表記できる。
・Ｐ＝Ｑ∨Ｒ＝Ｑｏ∨Ｒｏ＝Ｑ１∨Ｒ１＝（（Ａ∧Ｂ）∧Ｘ）∨（（Ａ∧¬Ｂ）∧Ｘ）∨・・・∨（（Ａ∧Ｂ）∧Ｙ）∨（（¬Ａ∧Ｂ）∧Ｙ）・・・（１）
【００９９】
ステップＳ２０３における処理を、論理式統合処理と表記し、以降の説明を行う。論理式統合処理は、分割和積論理式に存在する内部論理式の数を減ずることで、検索命令分離手順を効率的に実行可能とする処理である。
【０１００】
論理式統合処理は、式（１）の右辺に存在する外部連言を、括り出すことで、式を単純にする処理である。例えば、上述の式（１）には、外部連言（Ａ∧Ｂ）が２回、表記されている。そこで、この外部連言（Ａ∧Ｂ）を括り出すことで、式（１）を以下の式（２）のように変形する。
・Ｐ＝（（Ａ∧Ｂ）∧（Ｘ∨Ｙ））∨（（Ａ∧¬Ｂ）∧Ｘ）∨・・・∨（（¬Ａ∧Ｂ）∧Ｙ）  ・・・（２）
【０１０１】
式（２）の右辺に存在する３つの外部連言（Ａ∧Ｂ）、（Ａ∧¬Ｂ）及び（¬Ａ∧Ｂ）は、互いに排他的であり、これらのどの２つも共通部分を有しない。従って、上記の式（２）の右辺は、検索命令Ｐに対する分割和積標準論理式といえる。
【０１０２】
ステップＳ２０４において、検索命令分離部１３１は、前ステップで算出された分割和積標準論理式を、検索命令Ｐに対する出力とする。
【０１０３】
次に、ステップＳ０９において実行される処理について説明する。ステップＳ０９は、検索命令ＰがＰ＝Ｑ∧Ｒと表記できる場合に実行される処理である。
【０１０４】
図７は、検索命令ＰがＰ＝Ｑ∧Ｒと表記できる場合の動作の一例を示すフローチャートである。
【０１０５】
ステップＳ３０１において、検索命令分離部１３１は、ステップＳ２０１と同様に、論理式Ｑ及びＲについて、それぞれ、検索命令分離手順を再帰的に実行する。本ステップが実行されることにより、論理式Ｑｏ及びＲｏと、集合Ｓｑ及びＳｒが得られる。
【０１０６】
検索命令分離手順は再帰的に定義される手順であるから、論理式Ｑｏ及びＲｏは、それぞれ、論理式Ｑ及びＲの分割和積標準論理式である。集合Ｓｑ及びＳｒは、それぞれ、分割和積標準論理式Ｑｏ及びＲｏに含まれる外部原子論理式の集合となる。従って、Ｐ＝Ｑ∧Ｒ＝Ｑｏ∧Ｒｏが成立する。しかし、論理式（Ｑｏ∧Ｒｏ）は、分割和積論理式ではない。
【０１０７】
ステップＳ３０２において、検索命令分離部１３１は、このような論理式（Ｑｏ∧Ｒｏ）を、分割和積標準論理式に変換する。なお、本ステップにおける処理を、論理式展開処理と表記し、以降の説明を行う。
【０１０８】
例えば、論理式Ｑｏ及びＲｏは、外部原子論理式Ａ１、Ａ２・・・及びＢ１、Ｂ２・・・と、内部論理式Ｘ１、Ｘ２、・・・及びＹ１、Ｙ２・・・を用いて、以下のように表記できるとする。
・Ｑｏ＝（Ａ１∧Ｘ１）∨（Ａ２∧Ｘ２）∨・・・。
・Ｒｏ３＝（Ｂ１∧Ｙ１）∨（Ｂ２∧Ｙ２）∨・・・。
【０１０９】
すると、検索命令Ｐは、以下の式（３）により表記できる。
・Ｐ＝Ｑｏ∧Ｒｏ＝（（Ａ１∧Ｘ１）∨（Ａ２∧Ｘ２）∨・・・）∧（（Ｂ１∧Ｙ１）∨（Ｂ２∧Ｙ２）∨・・・）  ・・・（３）
【０１１０】
式（３）を展開すると、式（４）となる。
・Ｐ＝Ｐ２＝Ｑｏ∧Ｒｏ＝（（Ａ１∧Ｂ１）∧（Ｘ１∧Ｙ１））∨（（Ａ１∧Ｂ２）∧（Ｘ１∧Ｙ２））∨・・・（４）
【０１１１】
このような処理が、論理式展開処理である。なお、論理式（Ｑｏ∧Ｒｏ）に対して論理式展開処理を実施した結果得られる式（４）の論理式を、論理式Ｐ２と表記する。
【０１１２】
ステップＳ３０３では、検索命令分離部１３１は、論理式展開処理が施された論理式Ｐ２に対して、上述の論理式統合処理を施すことで、分割和積標準論理式Ｐｏを得る。分割和積標準論理式Ｐｏが得られたので、検索命令分離部１３１は、処理を終了する。
【０１１３】
以上のように、検索命令分離部１３１において、検索命令分離手順を実行することにより、ユーザ等から入力された検索命令Ｐから、分割和積標準論理式Ｐｏを生成する。
【０１１４】
分割和積標準論理式Ｐｏは、外部データベース２において実行可能な外部原子論理式の論理積（∧）により示される外部連言と、外部データベース２において実行不能な内部原子論理式の組み合わせからなる内部論理式と、を論理積（∧）により結合した基本論理式同士の論理和として示される。
【０１１５】
制御部１３は、それぞれの基本論理式に含まれる外部連言を外部データベース２に出力し、外部データベース２から検索結果を得る。検索命令実行部１３２は、外部データベース２から得た検索結果と、内部論理式との、論理積を算出し、それぞれの基本論理式に対応する検索結果を得る。このような処理を、基本論理式ごとに実行することで、検索命令Ｐを実行する。
【０１１６】
その結果、例えば、暗号化されたデータベースを検索する際のように、使用可能な検索命令が制限されていても、任意の検索命令を効率的に実行することができる。
【０１１７】
なお、上述の検索命令分離手順の説明では、集合Ｓは、検索命令分離手順を実行した際の出力として与えられるものとした。しかし、集合Ｓは、分割和積標準論理式Ｐｏから得ることもできるので、ＳＣＮＦ（Ｐ、ｂ）の出力を分割和積標準論理式Ｐｏに限り、集合Ｓは分割和積標準論理式Ｐｏから得てもよい。
【０１１８】
また、検索命令分離手順をコンピュータ等の処理装置にプログラムを実行させることで実現する際には、論理式よりも集合表現で実装した場合が容易なときがある。即ち、検索命令分離手順の実装は、検索命令Ｐを論理式として扱い計算することも可能であるし、集合表現として扱い計算することも可能である。
【０１１９】
そこで、検索命令分離手順を集合表現で表す場合について説明する。
【０１２０】
検索命令分離手順を、集合表現を用いて実装するためには、分割和積標準論理式を集合表現に変換することが必要である。このような処理をＳＣＮＦＴｏＳＥＴと表記する。一方、集合表現から検索命令Ｐを再現する処理をＳＥＴＴｏＳＣＮＦと表記する。なお、論理式ＫからＫの集合表現を作成することや、逆にＫの集合表現から論理式Ｋを再現するのは容易である。
【０１２１】
分割和積標準論理式で表現されている論理式Ｋを以下のとおりとする。
・Ｋ＝（外部連言１）∧（内部論理式１））∨・・・∨（（外部連言ｎ）∧（内部論理式ｎ）。
【０１２２】
このような論理式Ｋに対して、論理式の組の集合ＳＣＮＦＴｏＳＥＴ（Ｋ）を以下のように定義する。
・ＳＣＮＦＴｏＳＥＴ（Ｋ）＝{（外部連言１、内部論理式１）、・・・、（外部連言ｎ、内部論理式ｎ）}。
【０１２３】
一方、論理式の組の集合Ｕを以下のとおりとする。
・Ｕ＝{（Ａ１、Ｘ１）、・・・、（Ａｎ、Ｘｎ）}。
その上で、ＳＥＴＴｏＳＣＮＦ（Ｕ）を以下のとおりとする。
・ＳＥＴＴｏＳＣＮＦ（Ｕ）＝（Ａ１∧Ｘ１）∨・・・∨（Ａｎ∧Ｘｎ）。
【０１２４】
なお、ＳＥＴＴｏＳＣＮＦ（ＳＣＮＦＴｏＳＥＴ（Ｋ））＝Ｋが成り立つ。
【０１２５】
検索命令分離手順を実装する際には、ＳＣＮＦＴｏＳＥＴ及びＳＥＴＴｏＳＣＮＦに加えて、既に説明した論理式変形処理、論理式統合処理及び論理式展開処理を使用する。以降の説明において、論理式変形処理を関数とみなし、Ｃｏｎｖ（Ｖ１、Ｖ２）と表記する。論理式統合処理を関数とみなし、Ｕｎｉｆ（Ｗ）と表記する。論理式展開処理を関数とみなし、Ｅｘｐａｎｄ（Ｕ１、Ｕ２）と表記する。
【０１２６】
論理式変形処理を集合表現により実現すると、論理式の組の集合Ｖ１及びＶ２に対し、Ｖ２＝｛Ｂ１、・・・、Ｂｎ｝とするとき、Ｃｏｎｖ（Ｖ１、Ｖ２）を以下の手順により得られる集合とすることができる。
・Ｃｏｎｖ（Ｖ１、Ｖ２）＝｛（Ｌ∧Ｃ１∧・・・∧Ｃｎ、Ｘ）|（Ｌ、Ｘ）∈Ｕ１、Ｃ１∈{Ｂ１、¬Ｂ１｝、・・・、Ｃｎ∈｛Ｂｎ、¬Ｂｎ｝｝。
【０１２７】
論理式統合処理を集合表現により実現すると、論理式の組の集合Ｗに対し、Ｕｎｉｆ（Ｗ）を以下の手順により得られる集合とすることができる。
・Ｗの要素（Ｌ、Ｘ）、（Ｍ、Ｙ）においてＬ＝Ｍとなる要素が存在すれば、Ｗから（Ｌ、Ｘ）、（Ｍ、Ｙ）を取り除き、（Ｌ、Ｘ∨Ｙ）をＷに追加する。
・Ｌ＝Ｍとなる組がＷからなくなるまで、上記の操作を繰り返す。
【０１２８】
論理式展開処理を集合表現により実現すると、論理式の組の集合Ｕ１及びＵ２に対して、Ｅｘｐａｎｄ（Ｕ１、Ｕ２）を以下の手順により得られる集合とすることができる。
・Ｅｘｐａｎｄ（Ｕ１、Ｕ２）＝｛（Ｌ∧Ｍ、Ｘ∧Ｙ）|（Ｘ、Ｌ）∈Ｕ１、（Ｙ、Ｍ）∈Ｕ２｝。
【０１２９】
以上のように、本実施形態に係るデータベース検索装置１は、検索命令分離手順により、検索命令Ｐから、分割和積標準論理式Ｐｏを生成する。
【０１３０】
分割和積標準論理式Ｐｏは、外部データベース２で実行可能な外部連言と、データベース検索装置１の内部で実行可能な内部論理式の論理積として示される基本論理式同士の論理和として示される。データベース検索装置１は、ユーザ等が入力する検索命令Ｐを、「外部データベース２で実行可能な部分」と「外部データベース２で実行不能な部分」とに、適切に分離することで、任意の検索命令を効率的に実行可能とする。なお、非特許文献１〜４において、検索命令を分解するという概念は開示されていない。
【０１３１】
例えば、検索命令Ｐが、「外部実行可能命令ＩＥと外部実行不能命令ＩＤの少なくとも一方を満たすデータを取得する」の場合を想定する。即ち、Ｐ＝ＩＥ∨ＩＤの場合を想定する。このような場合、検索命令Ｐを満たすデータには、「ＩＥを満たすデータ」と、「ＩＥを満たさないが、ＩＤを満たすデータ」の２種類が存在する。従って、単に、ＩＥを満たすデータの中からＩＤを満たすデータを選択しても、「ＩＥを満たさないが、ＩＤを満たすデータ」を取りこぼしてしまう。
【０１３２】
しかし、本実施形態に係るデータベース検索装置１は、検索命令分離手順により、検索命令Ｐから分割和積標準論理式Ｐｏを生成することで、このような取りこぼしを防止する。検索命令Ｐを、外部原子論理式及び内部原子論理式にまで細分化し、その上で、外部データベース２において実行可能な外部連言と、データベース検索装置１においてのみ実行可能な内部論理式と、の論理積に再構成するためである。
【０１３３】
あるいは、例えば検索命令Ｖ１及びＶ２が外部データベース２で実行可能であり、検索命令Ｗ１及びＷ２が外部データベース２では実行不能である状況において、Ｐ＝（Ｖ１∨Ｗ１）∧（Ｖ２∨Ｗ２）を実行する場合を考える。
【０１３４】
この場合、
・「検索命令Ｖ１」を満たすデータを外部データベース２から取得する。
・「検索命令Ｖ２」を満たすデータを外部データベース２から取得する。
・Ｐ＝（Ｖ１∨Ｗ１）∧（Ｖ２∨Ｗ２）をデータベース検索装置１で実行する。
という手順が考えられる。
しかし、このような手順では、「検索命令Ｖ１とＶ２の両方を満たすデータ」を取得しているため、非効率的な外部データベース２へのアクセスを行っている。
【０１３５】
このような場合であっても、本実施形態に係るデータベース検索装置１は、外部連言同士は互いに排他的であるため、上記のような重複したデータの取得を行うことがない。即ち、効率よく、外部データベース２にアクセスすることができる。
【０１３６】
［第２の実施形態］
続いて、第２の実施形態について図面を参照して詳細に説明する。
【０１３７】
本実施形態に係るデータベース検索システムでは、暗号化データベースを利用する。
【０１３８】
図８は、本実施形態に係るデータベース検索システムの構成の一例を示す図である。図８において、図２と同一の構成要素には同一の符号を付し、その説明を省略する。
【０１３９】
図８を参照すると、データベース検索システムには、データベース検索装置１ａと、暗号化データベース２ａと、が含まれている。暗号化データベース２ａは、検索可能暗号を暗号方式に用いることで、暗号化されたデータを保存する。
【０１４０】
検索可能暗号の実現には、鍵生成手順、暗号化手順、暗号検索手順、復号手順の４つの手順（工程）が必要である。
【０１４１】
鍵生成手順は暗号化に必要な秘密鍵を生成する。
【０１４２】
暗号化手順は秘密鍵と何らかのデータを入力として受け取り、当該データを用いて暗号文を出力する。暗号検索手順は暗号文を復号せずに、データの検索を行う。例えば、検索可能暗号が一致検索暗号であれば「データ＝定数」という形式の検索が、データを暗号化したまま、且つ、定数の秘匿性を保ちつつ実行できる。
【０１４３】
あるいは、検索可能暗号が、順序保存暗号であれば、「データ≧定数」、「データ＞定数」、「データ≦定数」、「データ＜定数」といった形式の検索が、データを暗号化したまま、且つ、定数の秘匿性を保ちつつ実行できる。
【０１４４】
復号手順は、秘密鍵と暗号文を受け取り、入力された暗号文の復号結果を出力する。本実施形態に係るデータベース検索装置１ａでは、外部原子論理式として、暗号化検索が可能な論理式を用いる。例えば、検索可能暗号として一致検索暗号と順序保存暗号とが実装されている場合であれば、「データ＝定数」、「データ≧定数」、「データ＞定数」、「データ≦定数」、「データ＜定数」の５種類の論理式が外部原子論理式である。
【０１４５】
図２に示す外部データベース２と暗号化データベース２ａの相違点は、暗号検索部２４を備える点である。暗号検索部２４は、１又は複数の検索可能暗号の暗号検索手順を実現する。なお、本実施形態では、一致検索暗号と順序保存暗号が実装されている場合について説明するが、他の暗号の場合であっても同様に対応可能である。
【０１４６】
図９は、データベース検索装置１ａの内部構成の一例を示す図である。図９において、図３と同一の構成要素には同一の符号を付し、その説明を省略する。
【０１４７】
データベース検索装置１とデータベース検索装置１ａの相違点は、暗号化管理部１４を備える点である。さらに、暗号化管理部１４には、暗号埋込部１４１と暗号復号部１４２と、が含まれている。
【０１４８】
暗号埋込部１４１は、入力された論理式に存在する外部原子論理式を暗号検索手順に置き換える。例えば、順序保存暗号の場合であれば、「データ≧定数」という原子論理式に対応する暗号検索手順は「データの暗号文≧Ｅｎｃ（Ｋ、定数）」である。そこで、暗号埋込部１４１は「データ≧定数」という原子論理式を「データの暗号文≧Ｅｎｃ（Ｓｋ、定数）」に置き換える。なお、Ｅｎｃは順序保存暗号の暗号化手順であり、Ｓｋは順序保存暗号の秘密鍵である。
【０１４９】
暗号復号部１４２は、検索可能暗号の復号手順を用いて暗号文を復号する。
【０１５０】
暗号化管理部１４は、一致検索暗号の秘密鍵ＫＣｏｎ、順序保存暗号の秘密鍵ＫＯＰＥをランダムに選択し、これらの鍵を記憶部１２に記憶する。さらに、データベース検索装置１ａが保持する各データから、秘密鍵ＫＣｏｎを用いて一致検索暗号で暗号化した暗号文と、秘密鍵ＫＯＰＥを用いて順序保存暗号で暗号化した暗号文と、を生成し、これらの暗号文を暗号化データベース２ａに格納する。
【０１５１】
図８に示すデータベース検索システムの動作は、概略、以下のとおりである。
【０１５２】
初めに、通信部１１がユーザ等から検索命令を受け取り、制御部１３に引き渡す。制御部１３の検索命令分離部１３１は、入力された検索命令を、「外部実行可能検索命令」と「外部実行不能検索命令」に分離する。制御部１３は、外部実行可能検索命令を暗号化管理部１４に出力する。暗号化管理部１４の暗号埋込部１４１は、外部実行可能検索命令に存在する外部原子論理式を暗号検索手順に置き換える。暗号化管理部１４は、置き換えが終了した外部実行可能検索命令を、通信部１１を介して暗号化データベース２ａに送信する。
【０１５３】
暗号化データベース２ａは、受け取った検索命令に対応する処理を、暗号検索部２４において実行し、その結果をデータベース検索装置１ａに送信する。
【０１５４】
データベース検索装置１ａは、受け取った検索結果を、暗号復号部１４２により復号し、得られた復号結果に対して、外部実行不能検索命令を実行し、実行結果を出力する。
【０１５５】
以上のように、本実施形態に係るデータベース検索システムでは、ユーザが送信できる検索命令の種類に制限がある暗号化データベースにおいて、任意の検索命令が実行可能である。その結果、データベース貸し出しサービスにおいて、データベースの安全性を保証しつつ、ユーザの利便性を高めることができる。
【０１５６】
上記の実施形態の一部又は全部は、以下のようにも記載され得るが、以下には限られない。
【０１５７】
［形態１］
上記第１の視点に係るデータベース検索装置のとおりである。
［形態２］
前記検索命令分離部は、前記入力された検索命令を、前記データベースにおいて実行可能な第１の原子論理式と前記データベースにおいて実行不能な第２の原子論理式と、を含む複数の基本論理式に分離する形態１のデータベース検索装置。
［形態３］
前記基本論理式は、複数の前記第１の原子論理式のそれぞれの論理積で示される外部連言と、複数の前記第２の原子論理式のそれぞれの、否定、論理積又は論理和の組み合わせで示される内部論理式と、の論理積により示される形態２のデータベース検索装置。
［形態４］
前記検索命令分離部は、前記入力された検索命令を、前記複数の基本論理式のそれぞれの論理和で示される分割和積標準論理式に変換する形態３のデータベース検索装置。
［形態５］
前記検索命令分離部は、前記入力された検索命令を分離する検索命令分離手順を実行することで、前記入力された検索命令を、前記第１及び第２の原子論理式に分離すると共に、前記第１の原子論理式から前記外部連言を生成し、且つ、前記第２の原子論理式から前記内部論理式を生成し、前記外部連言及び前記内部論理式を前記分割和積標準論理式に再構成する形態４のデータベース検索装置。
［形態６］
前記検索命令分離部は、前記検索命令分離手順を再帰的に実行することで、前記分割和積標準論理式を生成する形態５のデータベース検索装置。
［形態７］
前記外部連言は、互いに排他的である形態３乃至６のいずれか一に記載のデータベース検索装置。
［形態８］
前記所定のデータベースは、検索可能暗号により暗号化されたデータを格納する形態１乃至７のいずれか一に記載のデータベース検索装置。
［形態９］
前記検索命令分離手順は、再帰的に実行される手順であって、
前記入力された検索命令が、第１及び第２の論理式の論理和により示される場合には、前記第１及び第２の論理式のそれぞれを前記入力された検索命令として再帰的に実行することで、前記第１の論理式に対応する第３の論理式と、前記第２の論理式に対応する第４の論理式を出力し、
前記第３及び第４の論理式のそれぞれにおいて、前記第３及び第４の論理式の互いに含まれない前記第１の原子論理式を、前記第３及び第４の論理式に含ませる論理式変形処理を実行する形態５乃至８のいずれか一に記載のデータベース検索装置。
［形態１０］
前記検索命令分離手順は、
前記論理式変形処理が実行された前記第３及び第４の論理式のそれぞれの論理和により得られる論理式に含まれる前記基本論理式に共通する前記外部連言を括り出す論理式統合処理を実行する形態９のデータベース検索装置。
［形態１１］
前記検索命令分離手順は、
前記入力された検索命令が、第５及び第６の論理式の論理積により示される場合には、前記第５及び第６の論理式のそれぞれを前記入力された検索命令として再帰的に実行することで、前記第５の論理式に対応する第７の論理式と、前記第６の論理式に対応する第８の論理式を出力し、
前記第７の論理式と前記第８の論理式の論理積により示される論理式を展開する論理式展開処理を実行する形態１０のデータベース検索装置。
［形態１２］
前記検索命令分離手順は、
前記論理式展開処理により得られた論理式に対して、前記論理式統合処理を実行する形態１１のデータベース検索装置。
［形態１３］
上記第２の視点に係るデータベースの検索方法のとおりである。
［形態１４］
前記検索命令分離工程は、前記入力された検索命令を、前記データベースにおいて実行可能な第１の原子論理式と前記データベースにおいて実行不能な第２の原子論理式と、を含む複数の基本論理式に分離する形態１３のデータベースの検索方法。
［形態１５］
前記基本論理式は、複数の前記第１の原子論理式のそれぞれの論理積で示される外部連言と、複数の前記第２の原子論理式のそれぞれの、否定、論理積又は論理和の組み合わせで示される内部論理式と、の論理積により示される形態１４のデータベースの検索方法。
［形態１６］
前記検索命令分離工程は、前記入力された検索命令を、前記複数の基本論理式のそれぞれの論理和で示される分割和積標準論理式に変換する形態１５のデータベースの検索方法。
［形態１７］
前記検索命令分離工程は、前記検索命令を分離する検索命令分離手順を実行することで、前記入力された検索命令を、前記第１及び第２の原子論理式に分離すると共に、前記第１の原子論理式から前記外部連言を生成し、且つ、前記第２の原子論理式から前記内部論理式を生成し、前記外部連言及び前記内部論理式を前記分割和積標準論理式に再構成する形態１６のデータベースの検索方法。
［形態１８］
前記検索命令分離工程は、前記検索命令分離手順を再帰的に実行することで、前記分割和積標準論理式を生成する形態１７のデータベースの検索方法。
［形態１９］
前記外部連言は、互いに排他的である形態１５乃至１８のいずれか一に記載のデータベースの検索方法。
［形態２０］
前記所定のデータベースは、検索可能暗号により暗号化されたデータを格納する形態１３乃至１９のいずれか一に記載のデータベースの検索方法。
［形態２１］
前記検索命令分離手順は、再帰的に実行される手順であって、
前記入力された検索命令が、第１及び第２の論理式の論理和により示される場合には、前記第１及び第２の論理式のそれぞれを前記入力された検索命令として再帰的に実行することで、前記第１の論理式に対応する第３の論理式と、前記第２の論理式に対応する第４の論理式を出力し、
前記第３及び第４の論理式のそれぞれにおいて、前記第３及び第４の論理式の互いに含まれない前記第１の原子論理式を、前記第３及び第４の論理式に含ませる論理式変形処理を実行する形態１７乃至２０のいずれか一に記載のデータベースの検索方法。
［形態２２］
前記検索命令分離手順は、
前記論理式変形処理が実行された前記第３及び第４の論理式のそれぞれの論理和により得られる論理式に含まれる前記基本論理式に共通する前記外部連言を括り出す論理式統合処理を実行する形態２１のデータベースの検索方法。
［形態２３］
前記検索命令分離手順は、
前記入力された検索命令が、第５及び第６の論理式の論理積により示される場合には、前記第５及び第６の論理式のそれぞれを前記入力された検索命令として再帰的に実行することで、前記第５の論理式に対応する第７の論理式と、前記第６の論理式に対応する第８の論理式を出力し、
前記第７の論理式と前記第８の論理式の論理積により示される論理式を展開する論理式展開処理を実行する形態２２のデータベースの検索方法。
［形態２４］
前記検索命令分離手順は、
前記論理式展開処理により得られた論理式に対して、前記論理式統合処理を実行する形態２３のデータベースの検索方法。
［形態２５］
上記第３の視点に係るプログラムのとおりである。
［形態２６］
前記検索命令分離処理は、前記入力された検索命令を、前記データベースにおいて実行可能な第１の原子論理式と前記データベースにおいて実行不能な第２の原子論理式と、を含む複数の基本論理式に分離する形態２５のプログラム。
［形態２７］
前記基本論理式は、複数の前記第１の原子論理式のそれぞれの論理積で示される外部連言と、複数の前記第２の原子論理式のそれぞれの、否定、論理積又は論理和の組み合わせで示される内部論理式と、の論理積により示される形態２６のプログラム。
［形態２８］
前記検索命令分離処理は、前記入力された検索命令を、前記複数の基本論理式のそれぞれの論理和で示される分割和積標準論理式に変換する形態２７のプログラム。
［形態２９］
前記検索命令分離処理は、前記検索命令を分離する検索命令分離手順を実行することで、前記入力された検索命令を、前記第１及び第２の原子論理式に分離すると共に、前記第１の原子論理式から前記外部連言を生成し、且つ、前記第２の原子論理式から前記内部論理式を生成し、前記外部連言及び前記内部論理式を前記分割和積標準論理式に再構成する形態２８のプログラム。
［形態３０］
前記検索命令分離処理は、前記検索命令分離手順を再帰的に実行することで、前記分割和積標準論理式を生成する形態２９のプログラム。
［形態３１］
前記外部連言は、互いに排他的である形態２７乃至３０のいずれか一に記載のプログラム。
［形態３２］
前記所定のデータベースは、検索可能暗号により暗号化されたデータを格納する形態２５乃至３１のいずれか一に記載のプログラム。
［形態３３］
前記検索命令分離手順は、再帰的に実行される手順であって、
前記入力された検索命令が、第１及び第２の論理式の論理和により示される場合には、前記第１及び第２の論理式のそれぞれを前記入力された検索命令として再帰的に実行することで、前記第１の論理式に対応する第３の論理式と、前記第２の論理式に対応する第４の論理式を出力し、
前記第３及び第４の論理式のそれぞれにおいて、前記第３及び第４の論理式の互いに含まれない前記第１の原子論理式を、前記第３及び第４の論理式に含ませる論理式変形処理を実行する形態２９乃至３２のいずれか一に記載のプログラム。
［形態３４］
前記検索命令分離手順は、
前記論理式変形処理が実行された前記第３及び第４の論理式のそれぞれの論理和により得られる論理式に含まれる前記基本論理式に共通する前記外部連言を括り出す論理式統合処理を実行する形態３３のプログラム。
［形態３５］
前記検索命令分離手順は、
前記入力された検索命令が、第５及び第６の論理式の論理積により示される場合には、前記第５及び第６の論理式のそれぞれを前記入力された検索命令として再帰的に実行することで、前記第５の論理式に対応する第７の論理式と、前記第６の論理式に対応する第８の論理式を出力し、
前記第７の論理式と前記第８の論理式の論理積により示される論理式を展開する論理式展開処理を実行する形態３４のプログラム。
［形態３６］
前記検索命令分離手順は、
前記論理式展開処理により得られた論理式に対して、前記論理式統合処理を実行する形態３５のプログラム。
【０１５８】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１５９】
１、１ａ、１００  データベース検索装置
２  外部データベース
２ａ  暗号化データベース
１１、２１  通信部
１２、２２  記憶部
１３、２３  制御部
１４  暗号化管理部
２４  暗号検索部
１０１、１３１  検索命令分離部
１０２、１３２  検索命令実行部
１４１  暗号埋込部
１４２  暗号復号部
【図１】
2014092105.tif 000003
【図２】
2014092105.tif 000004
【図３】
2014092105.tif 000005
【図４】
2014092105.tif 000006
【図５】
2014092105.tif 000007
【図６】
2014092105.tif 000008
【図７】
2014092105.tif 000009
【図８】
2014092105.tif 000010
【図９】
2014092105.tif 000011
【国際調査報告】
2014092105.tif 000012
2014092105.tif 000013