(57)【要約】【課題】暗号化データベースに対して発行されたクエリを適切な暗号化方式で暗号化できる暗号化データベース管理システムを提供する。【解決手段】暗号化データベース管理システム４０は、暗号化データベース管理装置５０と、暗号化データを記憶する暗号化データベースを有する記憶装置６０とを含む暗号化データベース管理システムであって、暗号化データベース管理装置５０は、クエリの暗号化に用いられる暗号化方式をクエリと所定のモデルとに基づいて判定する判定部５１と、判定された暗号化方式を用いてクエリを暗号化する暗号化部５２とを有する。【選択図】図１１
2018128602.tif 000002
【特許請求の範囲】
【請求項１】
クエリの暗号化に用いられる暗号化方式を前記クエリと所定のモデルとに基づいて判定する判定部と、
判定された暗号化方式を用いて前記クエリを暗号化する暗号化部とを備える
ことを特徴とする暗号化データベース管理装置。
【請求項２】
所定のモデルは、機械学習が実行されることによって生成された学習モデルである
請求項１記載の暗号化データベース管理装置。
【請求項３】
判定部は、
暗号化されたクエリが実行された結果が蓄積されたデータである統計データを有し、
前記統計データを用いて機械学習を実行することによって学習モデルを生成する
請求項２記載の暗号化データベース管理装置。
【請求項４】
所定のモデルは、所定のアルゴリズムを基に生成されたモデルである
請求項１記載の暗号化データベース管理装置。
【請求項５】
クエリの暗号化に用いられる暗号化方式を前記クエリと所定のモデルとに基づいて判定し、
判定された暗号化方式を用いて前記クエリを暗号化する
ことを特徴とする暗号化データベース管理方法。
【請求項６】
コンピュータに、
クエリの暗号化に用いられる暗号化方式を前記クエリと所定のモデルとに基づいて判定する判定処理、および
判定された暗号化方式を用いて前記クエリを暗号化する暗号化処理
を実行させるための暗号化データベース管理プログラム。
【請求項７】
暗号化データベース管理装置と、暗号化データを記憶する暗号化データベースを有する記憶装置とを含む暗号化データベース管理システムであって、
前記暗号化データベース管理装置は、
クエリの暗号化に用いられる暗号化方式を前記クエリと所定のモデルとに基づいて判定する判定部と、
判定された暗号化方式を用いて前記クエリを暗号化する暗号化部とを有する
ことを特徴とする暗号化データベース管理システム。
【請求項８】
所定のモデルは、機械学習が実行されることによって生成された学習モデルである
請求項７記載の暗号化データベース管理システム。
【請求項９】
複数の暗号化データベース管理装置を含み、
記憶装置は、同期部を有し、
所定の暗号化データベース管理装置の判定部は、判定された暗号化方式を前記同期部に通知し、
前記同期部は、通知された暗号化方式を前記所定の暗号化データベース管理装置以外の暗号化データベース管理装置に通知する
請求項７または請求項８記載の暗号化データベース管理システム。
【請求項１０】
所定の暗号化データベース管理装置の判定部は、判定に使用された所定のモデルを同期部に通知し、
前記同期部は、通知された所定のモデルを前記所定の暗号化データベース管理装置以外の暗号化データベース管理装置に通知する
請求項９記載の暗号化データベース管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化データベース管理装置、暗号化データベース管理方法、暗号化データベース管理プログラムおよび暗号化データベース管理システムに関する。
【背景技術】
【０００２】
IoT(Internet of Things)の技術の普及により、大量データの分析結果がビジネスや社会で有効に活用されることが期待されている。同時に、過失や悪意により個人情報や秘密情報が大量に漏洩する危険性も高まっている。
【０００３】
機密性の高い情報を管理している組織からの内部犯行による情報漏洩を防止する技術として、データを暗号化された状態のまま保存し、暗号化データに対して検索、大小比較、計算等が行われるクエリ処理を実行する「秘匿データベースシステム」が知られている。秘匿データベースシステムは、大量データを効率的に分析したり活用したりする観点からも有用なシステムである。
【０００４】
例えば、特許文献１には、暗号化方式による処理制約に関わらず暗号化されたデータに対する処理そのものをセキュリティが担保された環境で処理できるようにアプリケーションの処理を変更する秘匿データ処理システムが記載されている。
【０００５】
一般的な秘匿データベースシステムは、１つ以上の「クライアント」と、１つ以上の「センタ」とで構成される。図１２は、一般的な秘匿データベースシステムの構成例を示すブロック図である。
【０００６】
図１２に示すように、秘匿データベースシステム１１は、クライアント１００〜クライアント１０ｎ（ｎは１以上の整数）と、センタ２００とを含む。図１２に示す秘匿データベースシステム１１は、センタを１つだけ含む。すなわち、秘匿データベースシステム１１は、合計ｎ個のクライアントと、１つのセンタ２００とを含む。
【０００７】
センタ２００は、クライアント１００〜クライアント１０ｎとそれぞれ通信可能に接続されている。センタ２００、およびクライアント１００〜クライアント１０ｎは、それぞれデータ送受信機能を有する。
【０００８】
クライアントは、例えばスマートフォンのような単体の装置である。また、クライアントは、コンピュータとマウスやモニタ等のI/O端末との組合せでもよいし、セットトップボックスと温湿度センサや照度センサ等の各種センサまたはカメラとの組合せでもよい。また、クライアントは、通信ネットワークに通信可能に接続し、取得データを送信する電化製品、自動車、またはロボットでもよい。
【０００９】
また、図１２に示す外部システム２０は、秘匿データベースシステム１１に対して、外部から所定のクエリを発行することによってデータの登録、データの更新、データの削除等の「登録等の処理」を行う。
【００１０】
また、外部システム２０は、外部から所定のクエリを発行することによって登録されたデータに対する算術演算、大小比較、検索等の「データ利用の処理」を行う。「データ利用の処理」が実行された後、外部システム２０は、データの利用結果を受け取ることができる。
【００１１】
図１２に示すように、クライアント１００は、外部インタフェース部１１０と、クエリ実行部１２０と、暗号化／復号処理部１３０とを有する。クライアント１０１〜クライアント１０ｎの各構成も、クライアント１００の構成と同様である。
【００１２】
外部インタフェース部１１０は、外部と接続するインタフェースとしての機能を有する。また、外部インタフェース部１１０は、クエリ実行部１２０、および暗号化／復号処理部１３０とそれぞれ疎通する。また、図１２に示す外部インタフェース部１１０に入力されるデータは、秘匿データベース２２０に登録される情報自体を表す。
【００１３】
クエリ実行部１２０は、外部システム２０から発行されたクエリを実行する機能を有する。クエリを実行することによって、クエリ実行部１２０は、秘匿データベース２２０に対して登録等の処理、およびデータ利用の処理を行う。また、クエリ実行部１２０は、暗号化／復号処理部１３０と疎通する。
【００１４】
暗号化／復号処理部１３０は、受け取ったクエリの内容を解釈する機能を有する。また、暗号化／復号処理部１３０は、暗号化方式テーブルを有する。暗号化／復号処理部１３０は、暗号化方式テーブルに設定されている情報を基に、クエリ処理の対象データ等の暗号化および復号を行う機能を有する。
【００１５】
具体的には、暗号化／復号処理部１３０は、テーブル内の特定のデータ領域ごとに暗号化方式がそれぞれ設定された暗号化方式テーブルを用いて、設定された暗号化方式で暗号化および復号を行う。なお、ユーザには、暗号化方式を暗号化方式テーブルに予め設定することが求められる。また、暗号化／復号処理部１３０は、センタ２００と疎通する。
【００１６】
暗号化方式テーブルは、クエリの実行対象のデータベースに格納されているテーブル内の特定のデータ領域に対応する暗号化方式を示す情報を有する。特定のデータ領域は、例えばテーブルのカラムである。
【００１７】
暗号化方式テーブルに設定されている暗号化方式は、例えば、性別のような少ないデータパタンでのセキュリティを保つ検索に向く「検索可能確率的暗号化方式」や、大小比較に向く「順序比較暗号化方式」や、算術演算に向く「準同型暗号化方式」である。
【００１８】
図１３は、暗号化方式テーブルの例を示す説明図である。図１３に示す暗号化方式テーブルには、テーブルのカラムごとに現在の暗号化方式の設定値がそれぞれ保持されている。
【００１９】
例えば、図１３に示すように暗号化方式テーブルには、第１テーブルの第１カラムに関して第１暗号化方式が現在設定されているという情報が保持されている。第１暗号化方式は、例えば検索可能確率的暗号化方式である。
【００２０】
同様に、暗号化方式テーブルには、図１３に示すように第１テーブルの第２カラムに関して第２暗号化方式が、第２テーブルの第１カラムに関して第３暗号化方式がそれぞれ現在設定されているという情報が保持されている。
【００２１】
第２暗号化方式は、例えば順序比較暗号化方式である。また、第３暗号化方式は、例えば準同型暗号化方式である。暗号化方式テーブルには、上記のように各テーブルの各カラムに関して現在の暗号化方式の設定値が保持される。
【００２２】
暗号化／復号処理部１３０は、クエリが暗号化方式テーブルに設定されている暗号化方式で暗号化された場合にクエリ処理が実行可能であるか否かを示す情報を含むエラー結果を「クエリ文・エラー結果」として、センタ２００のクエリ実行部２１０に向けて送信する。
【００２３】
図１２に示すように、センタ２００は、クエリ実行部２１０と、秘匿データベース２２０とを有する。
【００２４】
クエリ実行部２１０は、外部システム２０から発行されたクエリを実行する機能を有する。クエリを実行することによって、クエリ実行部２１０は、秘匿データベース２２０に対して登録等の処理、およびデータ利用の処理を行う。
【００２５】
クエリ実行部２１０は、ｎ個のクライアントの各暗号化／復号処理部とそれぞれ疎通する。また、クエリ実行部２１０は、秘匿データベース２２０と疎通する。秘匿データベース２２０には、データ等が暗号化された状態で保存される。
【００２６】
クライアント１００に入力されたデータは、暗号化方式テーブルに設定されている暗号化方式で暗号化／復号処理部１３０により暗号化される。暗号化されたデータは、センタ２００に送信される。センタ２００は、各クライアントから送信された暗号化データを秘匿データベース２２０に暗号化された状態のまま格納する。
【００２７】
以下、図１２に示す秘匿データベースシステム１１のデータを登録する動作を図１４を参照して説明する。図１４は、一般的な秘匿データベースシステムによるデータ登録処理の動作を示すフローチャートである。
【００２８】
外部インタフェース部１１０に対して、外部システム２０からデータを登録するクエリが発行される（ステップS001）。外部インタフェース部１１０は、発行されたクエリを暗号化／復号処理部１３０に入力する（ステップS002）。
【００２９】
次いで、暗号化／復号処理部１３０は、受け取ったクエリに”INSERT”文が記載されていることを確認する。すなわち、暗号化／復号処理部１３０は、クエリ処理がデータの登録処理であると識別する（ステップS003）。
【００３０】
次いで、暗号化／復号処理部１３０は、暗号化方式テーブルを参照して、クエリ処理の対象のテーブルのカラムに関して設定されている暗号化方式を確認する。暗号化／復号処理部１３０は、確認された暗号化方式で入力されたクエリを暗号化する（ステップS004）。
【００３１】
次いで、暗号化／復号処理部１３０は、暗号化クエリをセンタ２００に送信する。センタ２００のクエリ実行部２１０は、送信された暗号化クエリを受信する（ステップS005）。
【００３２】
次いで、クエリ実行部２１０は、受信された暗号化クエリの内容に従って、秘匿データベース２２０に対してクエリ処理を実行する（ステップS006）。本例では、クエリ実行部２１０は、秘匿データベース２２０に格納されているテーブルにデータを挿入する。クエリ処理を実行した後、秘匿データベースシステム１１は、データ登録処理を終了する。
【００３３】
上記のように、ステップS004以降、登録対象のデータは暗号化された状態のままである。すなわち、センタ２００において、登録対象のデータは常に暗号化された状態である。なお、データ登録処理以外の「登録等の処理」も、図１４に示す動作と同様の動作で実行される。
【００３４】
次に、図１２に示す秘匿データベースシステム１１の登録済のデータに対する「データ利用の処理」を行う動作を図１５を参照して説明する。図１５は、一般的な秘匿データベースシステムによるデータ利用処理の動作を示すフローチャートである。
【００３５】
外部インタフェース部１１０に対して、外部システム２０から「データ利用の処理」を行うためのクエリが発行される（ステップS011）。外部インタフェース部１１０は、発行されたクエリを暗号化／復号処理部１３０に入力する（ステップS012）。
【００３６】
次いで、暗号化／復号処理部１３０は、受け取ったクエリを基にクエリ処理の内容を識別する（ステップS013）。
【００３７】
次いで、暗号化／復号処理部１３０は、暗号化方式テーブルを参照して、クエリ処理の対象のテーブルのカラムに関して設定されている暗号化方式を確認する。暗号化／復号処理部１３０は、確認された暗号化方式で暗号化されたクエリの実行が可能であるか否かを示す情報を含むエラー結果を生成する（ステップS014）。
【００３８】
次いで、暗号化／復号処理部１３０は、暗号化方式テーブルを参照して、クエリ処理の対象のテーブルのカラムに関して設定されている暗号化方式でクエリを暗号化する（ステップS015）。
【００３９】
暗号化した後、暗号化／復号処理部１３０は、暗号化クエリおよび生成されたエラー結果をクエリ文・エラー結果として、センタ２００に送信する。センタ２００のクエリ実行部２１０は、送信されたクエリ文・エラー結果を受信する（ステップS016）。
【００４０】
次いで、クエリ実行部２１０は、受信されたクエリ文・エラー結果を参照して、センタ２００で暗号化クエリの実行が可能であるか否かを確認する（ステップS017）。
【００４１】
センタ２００で暗号化クエリが実行可能である場合（ステップS017におけるYes）、クエリ実行部２１０は、秘匿データベース２２０に対して暗号化クエリを実行する（ステップS018）。なお、暗号化クエリの処理結果も、暗号化クエリと同じ暗号化方式で暗号化されている。
【００４２】
暗号化クエリを実行した後、クエリ実行部２１０は、クエリ文・エラー結果を送信したクライアントの暗号化／復号処理部１３０に向けて処理結果を送信する。暗号化／復号処理部１３０は、送信された処理結果を受信する（ステップS019）。
【００４３】
次いで、暗号化／復号処理部１３０は、暗号化方式テーブルを参照して、受信された処理結果に対応する対象テーブルのカラムに関して設定されている暗号化方式を確認する。暗号化／復号処理部１３０は、確認された暗号化方式で受信された処理結果を復号する（ステップS020）。
【００４４】
次いで、暗号化／復号処理部１３０は、復号された処理結果を外部インタフェース部１１０に入力する。外部インタフェース部１１０は、外部システム２０に対して、復号された処理結果を返却する（ステップS021）。処理結果を返却した後、秘匿データベースシステム１１は、データ利用処理を終了する。
【００４５】
センタ２００で暗号化クエリが実行不可能である場合（ステップS017におけるNo）、クエリ実行部２１０は、秘匿データベース２２０に格納されている暗号化クエリの処理対象のデータを全て取得する（ステップS022）。
【００４６】
例えば、クエリに所定のカラム全体に渡る一致検索が含まれる場合、クエリ実行部２１０は、所定のカラムのデータを全て取得する。また、センタ２００で一致検索処理が可能なカラムに対応する別のカラムの値の合計を求める算術演算がクエリに含まれる場合、クエリ実行部２１０は、別のカラムの該当する全てのデータ（値）を取得する。
【００４７】
次いで、クエリ実行部２１０は、ステップS022で取得された処理対象のデータを暗号化された状態のまま、クエリ文・エラー結果を送信したクライアントの暗号化／復号処理部１３０に向けて送信する。暗号化／復号処理部１３０は、送信された処理対象のデータを受信する（ステップS023）。
【００４８】
次いで、暗号化／復号処理部１３０は、暗号化方式テーブルを参照して、受信された処理対象のデータが格納されていた対象テーブルのカラムに関して設定されている暗号化方式を確認する。暗号化／復号処理部１３０は、確認された暗号化方式で受信された処理対象のデータを復号する（ステップS024）。
【００４９】
次いで、暗号化／復号処理部１３０は、復号された処理対象のデータをクエリ実行部１２０に入力する。クエリ実行部１２０は、入力された処理対象のデータに対して、外部システム２０から発行されたクエリを実行する（ステップS025）。
【００５０】
クエリを実行した後、クエリ実行部１２０は、外部システム２０に対してクエリの処理結果を返却する（ステップS026）。処理結果を返却した後、秘匿データベースシステム１１は、データ利用処理を終了する。
【００５１】
なお、センタ２００での実行不可能な処理がクエリ処理の一部である場合、実行不可能な処理のみがクライアント１００のクエリ実行部１２０で実行されてもよい。次いで、暗号化／復号処理部１３０が処理結果を暗号化してセンタ２００に送信し、センタ２００のクエリ実行部２１０が実行可能な残りのクエリ処理を継続して実行してもよい。
【先行技術文献】
【特許文献】
【００５２】
【特許文献１】特開２０１６−１７７４００号公報
【特許文献２】特開２０１４−２１１６０７号公報
【発明の概要】
【発明が解決しようとする課題】
【００５３】
一般的な秘匿データベースシステムにおいて専門的な知識や技術を持たないユーザにより多数のデータ領域に関して暗号化方式が手動で設定される。よって、データが不適切な暗号化方式で暗号化されることが多い。
【００５４】
上記のデータが不適切な暗号化方式で暗号化されるケースには、暗号化方式がデータ等の利用用途に適合しないケースがある。例えば、性別のような少ないパタンでの検索が行われず順序比較や算術演算も行われない場合、暗号化方式として「確定的暗号化方式」が適切であるが、「検索可能確率的暗号化方式」が設定されている第１のケースが上記のケースに該当する。「検索可能確率的暗号化方式」は、上述したように性別のような少ないパタンでの検索が行われる場合に適切な暗号化方式である。
【００５５】
また、大小比較が行われる場合、暗号化方式として「順序比較暗号化方式」が適切であるが、「準同型暗号化方式」が設定されている第２のケースが上記のケースに該当する。「準同型暗号化方式」は、上述したように算術演算が行われる場合に適切な暗号化方式である。
【００５６】
不適切な暗号化方式でクエリが暗号化される場合であっても、クエリが暗号化されたままクエリ処理は実行される。しかし、例えば第１のケースでは、クエリ処理の実行により多くの時間が掛かるという問題がある。また、第２のケースでは、暗号化クエリが一旦復号された後でクライアントがクエリ処理を実行するため、処理全体により多くの時間が掛かるという問題がある。
【００５７】
すなわち、第１のケースは、センタ２００でクエリ処理が実行可能であるか否かに関わらず、不適切な暗号化方式が暗号化方式テーブルに設定されている場合に相当する。第１のケースの場合、クライアント１００のクエリ実行部１２０、またはセンタ２００のクエリ実行部２１０は、登録済のデータおよびクエリが適切な暗号化方式で暗号化されている場合に比べて、より多くの時間をクエリ処理の実行に要する。
【００５８】
また、第２のケースは、センタ２００でクエリ処理が実行不可能である場合に相当する。第２のケースの場合、センタ２００が、秘匿データベース２２０に格納されているクエリ処理の対象の全てのデータをクエリ処理の実行の要求元のクライアントに送信する。多くのクライアントの処理性能はセンタ２００の処理性能よりも劣るため、各クライアントは、クエリ処理の実行にセンタ２００よりも多くの時間を要する。
【００５９】
［発明の目的］
そこで、本発明は、上述した課題を解決する、暗号化データベースに対して発行されたクエリを適切な暗号化方式で暗号化できる暗号化データベース管理装置、暗号化データベース管理方法、暗号化データベース管理プログラムおよび暗号化データベース管理システムを提供することを目的とする。
【課題を解決するための手段】
【００６０】
本発明による暗号化データベース管理装置は、クエリの暗号化に用いられる暗号化方式をクエリと所定のモデルとに基づいて判定する判定部と、判定された暗号化方式を用いてクエリを暗号化する暗号化部とを備えることを特徴とする。
【００６１】
本発明による暗号化データベース管理方法は、クエリの暗号化に用いられる暗号化方式をクエリと所定のモデルとに基づいて判定し、判定された暗号化方式を用いてクエリを暗号化することを特徴とする。
【００６２】
本発明による暗号化データベース管理プログラムは、コンピュータに、クエリの暗号化に用いられる暗号化方式をクエリと所定のモデルとに基づいて判定する判定処理、および判定された暗号化方式を用いてクエリを暗号化する暗号化処理を実行させることを特徴とする。
【００６３】
本発明による暗号化データベース管理システムは、暗号化データベース管理装置と、暗号化データを記憶する暗号化データベースを有する記憶装置とを含む暗号化データベース管理システムであって、暗号化データベース管理装置は、クエリの暗号化に用いられる暗号化方式をクエリと所定のモデルとに基づいて判定する判定部と、判定された暗号化方式を用いてクエリを暗号化する暗号化部とを有することを特徴とする。
【発明の効果】
【００６４】
本発明によれば、暗号化データベースに対して発行されたクエリを適切な暗号化方式で暗号化できる。
【図面の簡単な説明】
【００６５】
【図１】本発明による秘匿データベースシステム１０の第１の実施形態の構成例を示すブロック図である。
【図２】暗号化方式判定部１４０が有する統計データの例を示す説明図である。
【図３】暗号化方式判定部１４０が推定した学習モデルの例を示す説明図である。
【図４】暗号化方式判定部１４０が有する所定のアルゴリズムの例を示す説明図である。
【図５】条件と暗号化方式との関連度が保持された関連度テーブルの例を示す説明図である。
【図６】第１の実施形態の秘匿データベースシステム１０によるデータ利用処理の動作を示すフローチャートである。
【図７】第１の実施形態の秘匿データベースシステム１０によるデータ同期処理の動作を示すフローチャートである。
【図８】本発明による秘匿データベースシステム１０の第２の実施形態の構成例を示すブロック図である。
【図９】第２の実施形態の秘匿データベースシステム１０によるデータ利用処理の動作を示すフローチャートである。
【図１０】本発明による暗号化データベース管理装置の概要を示すブロック図である。
【図１１】本発明による暗号化データベース管理システムの概要を示すブロック図である。
【図１２】一般的な秘匿データベースシステムの構成例を示すブロック図である。
【図１３】暗号化方式テーブルの例を示す説明図である。
【図１４】一般的な秘匿データベースシステムによるデータ登録処理の動作を示すフローチャートである。
【図１５】一般的な秘匿データベースシステムによるデータ利用処理の動作を示すフローチャートである。
【発明を実施するための形態】
【００６６】
以下、本発明の実施形態を、図面を参照して説明する。
【００６７】
本発明による暗号化データベース管理装置は、「データ類」を基に機械学習で生成される学習モデル、または所定のアルゴリズムを用いて、例えば秘匿データベースに格納されているテーブルのカラムごとに適切な暗号化方式を判断し、設定することを特徴とする。
【００６８】
なお、各実施形態における「データ類」は、「データ」および「メタデータ」、または「統計データ」のいずれかを意味する。各用語の定義は、それぞれ以下の通りである。
【００６９】
・データ：秘匿データベースに登録される情報自体
・メタデータ：「データ」に付随する情報（例えば、テーブル名やカラム名）
・統計データ：秘匿データベースに対して発行されるクエリの内容と「エラー結果」とが蓄積された情報
【００７０】
なお、秘匿データベースに対して発行されるクエリの内容は、例えば、算術演算子（‘＋’、‘−’、‘＊’、‘／’）等を含むSELECT句である。第１の実施形態の「データ類」は「統計データ」である。また、第２の実施形態の「データ類」は、「データ」および「メタデータ」である。
【００７１】
［第１の実施形態］
［構成の説明］
図１は、本発明による秘匿データベースシステム１０の第１の実施形態の構成例を示すブロック図である。上述したように、本実施形態の「データ類」は「統計データ」である。
【００７２】
本実施形態の秘匿データベースシステム１０は、統計データを基に、機械学習で生成される学習モデル、または所定のアルゴリズムを用いてより適切な暗号化方式を判断および設定するシステムである。
【００７３】
また、本実施形態のセンタは、複数のクライアント間でより適切な暗号化方式の設定が共有されるために使用される構成要素であるクライアント同期部を有する。センタがクライアント同期部を有する場合、秘匿データベースシステム全体に渡ってより適切な暗号化方式が選択および設定されるため、クエリ処理の実行時間の合計がより短縮される。
【００７４】
図１に示す秘匿データベースシステム１０は、図１２に示す秘匿データベースシステム１１と同様に、クライアント１００〜クライアント１０ｎと、センタ２００とを含む。
【００７５】
センタ２００は、クライアント１００〜クライアント１０ｎとそれぞれ通信可能に接続されている。センタ２００、およびクライアント１００〜クライアント１０ｎは、それぞれデータ送受信機能を有する。
【００７６】
また、図１に示すように、本実施形態のクライアント１００は、外部インタフェース部１１０と、クエリ実行部１２０と、暗号化／復号処理部１３０と、暗号化方式判定部１４０とを有する。クライアント１０１〜クライアント１０ｎの各構成も、クライアント１００の構成と同様である。
【００７７】
また、図１に示すように、本実施形態のセンタ２００は、クエリ実行部２１０と、秘匿データベース２２０と、クライアント同期部２３０とを有する。
【００７８】
図１に示す外部インタフェース部１１０、クエリ実行部１２０、暗号化／復号処理部１３０、クエリ実行部２１０、および秘匿データベース２２０の各構成要素は、図１２に示す各構成要素とそれぞれ同様の機能を有する。すなわち、暗号化方式判定部１４０およびクライアント同期部２３０以外の第１の実施形態の構成は、図１２に示す構成と同様である。
【００７９】
本実施形態のクライアントは、暗号化方式判定部１４０を有する。暗号化方式判定部１４０は、所定のアルゴリズムを基に生成されたモデル（以下、単に所定のアルゴリズムという。）、または機械学習の機能（以下、単に機械学習という。）を有する。機械学習を有する場合、暗号化方式判定部１４０は、さらに学習モデルを有する。
【００８０】
所定のアルゴリズムは、秘匿データベースシステム１０の提供者が理論や経験に基づいて予め定めた固定的なアルゴリズムである。また、機械学習は、秘匿データベースシステム１０が学習を行うことによって規則性を見出し、見出された規則性を用いて有用に予測する機能である。
【００８１】
暗号化／復号処理部１３０は、暗号化方式判定部１４０と疎通する。暗号化／復号処理部１３０は、暗号化方式テーブルに設定されている暗号化方式で暗号化されたクエリが実行されるとエラーが発生するか否かを示す情報を含むエラー結果とクエリ文自体を「クエリ文・エラー結果」として暗号化方式判定部１４０に入力する。
【００８２】
暗号化方式判定部１４０は、所定のアルゴリズムまたは機械学習と、統計データとを有する。上述したように、暗号化方式判定部１４０は、所定のアルゴリズムと機械学習のうちのいずれかを有する。
【００８３】
統計データは、暗号化／復号処理部１３０から入力されたクエリ文・エラー結果が蓄積されたデータである。図２は、暗号化方式判定部１４０が有する統計データの例を示す説明図である。図２に示すように、統計データは、「テーブル−カラム」と、「クエリ実行回数」と、「エラーカウンタ」と、各条件での実行回数とで構成されている。
【００８４】
「テーブル−カラム」は、クエリ処理の対象であるテーブルおよびカラムと、暗号化に使用された暗号化方式とを示す。「クエリ実行回数」は、クエリ処理の実行回数を示す。「エラーカウンタ」は、実行されたうちエラーが発生したクエリ処理の実行回数を示す。
【００８５】
また、各条件での実行回数は、実行されたうち指定された各条件でクエリ処理が実行された回数を示す。指定される条件は、図２における下部に示されている。
【００８６】
図２に示す統計データでは、各条件が、１つの暗号化方式に依存すると考えられる文字列の種類を含む条件ごとにまとめられている。しかし、統計データにおいて各条件は、まとめられなくてもよい。
【００８７】
例えば、‘＋’を含む条件Ａと‘−’を含む条件Ｂが、統計データにおいて‘＋−’を含む条件Ｃとして１つにまとめられてもよいし、まとめられなくてもよい。条件Ｃには、‘＋’または‘−’のうちの少なくとも１つを含むクエリが当てはまる。また、他の方法で複数の条件がまとめられてもよい。
【００８８】
以下、暗号化方式判定部１４０が機械学習を有する場合を説明する。機械学習を有する場合、暗号化方式判定部１４０は、学習モデルを有する。本実施形態の学習モデルは、統計データを基に暗号化方式判定部１４０が推定した各暗号化方式が適用される境界を示すモデルである。
【００８９】
図３は、暗号化方式判定部１４０が推定した学習モデルの例を示す説明図である。図３に示す各グラフでは、第１条件の実行割合がｘ軸に、第２条件の実行割合がｙ軸にそれぞれとられている。
【００９０】
第１条件の実行割合は、（第１条件でのクエリ実行回数／クエリ実行回数）で算出される。また、第２条件の実行割合は、（第２条件でのクエリ実行回数／クエリ実行回数）で算出される。なお、第１条件および第２条件は、図２に示す条件に対応する。
【００９１】
すなわち、図３に示す各グラフは、クエリの暗号化方式として第１暗号化方式と第２暗号化方式のどちらが適切か区別されるように統計データがプロットされたグラフである。暗号化方式判定部１４０は、グラフにおける第１暗号化方式と第２暗号化方式の境界を示す関数y=f(x)を導出する。本実施形態の学習モデルは、ｘとｙとの組合せが第１暗号化方式と第２暗号化方式のいずれが適当かを推定する、上述したように導出された数式、または数式の組を指す。
【００９２】
また、図３に示す右のグラフでは、左に示すグラフから破線の矩形で表された１つのプロットが除去されている。プロットの除去に伴い、第１暗号化方式と第２暗号化方式の境界を示す関数はy=g(x)に更新される。すなわち、暗号化方式判定部１４０は、学習モデルをy=f(x)からy=g(x)に更新する。学習モデルが更新された後、対象のテーブルのカラムに関して、例えば第２暗号化方式が新たに選択される。
【００９３】
なお、図３には、簡単のために第１条件と第２条件だけに対応する２次元のグラフが示されているが、第１条件から第ｍ条件（ｍは１以上の整数）に対応するｍ次元のグラフが使用されてもよい。すなわち、暗号化方式の境界を示す関数は、図３に示す２個の条件に対応する関数y=f(x)の代わりに、ｍ個の条件に対応する関数でもよい。
【００９４】
また、２つの暗号化方式の場合に対応する図３には、２つの暗号化方式の境界を示す関数y=f(x)だけが示されている。図３には簡単のために第１暗号化方式と第２暗号化方式の２つの暗号化方式の境界だけが示されているが、３つ以上の暗号化方式の各境界が示されてもよい。
【００９５】
例えば、図３に示すグラフにｍ個の関数y=f1(x)〜y=fm(x)が表示され、各暗号化方式が適用される条件が「第１暗号化方式：y＜f1(x)、第２暗号化方式：f1(x)≦y＜f2(x)、・・・、第ｍ暗号化方式：fm-1(x)≦y＜fm(x)」と設定されてもよい。また、上記の形式以外の形式で条件が設定されてもよい。
【００９６】
以上のように暗号化方式判定部１４０が行う機械学習の例を説明したが、暗号化方式判定部１４０が行う機械学習は他の方式による機械学習でもよい。
【００９７】
以下、暗号化方式判定部１４０が所定のアルゴリズムを有する場合を説明する。図４は、暗号化方式判定部１４０が有する所定のアルゴリズムの例を示す説明図である。
【００９８】
暗号化方式判定部１４０は、例えば図４に示すアルゴリズムに従って、暗号化方式の変更の試行を開始する。暗号化方式判定部１４０は、各第ｉ暗号化方式(i=1~k)に関して、評価関数E_iをそれぞれ算出する（ステップS101）。
【００９９】
次いで、暗号化方式判定部１４０は、算出された評価関数の値が現在設定されている暗号化方式に関する評価関数の値よりも大きい暗号化方式が、暗号化方式テーブルに少なくとも１つ存在するか否かを確認する（ステップS102）。
【０１００】
現在設定されている暗号化方式に関する評価関数の値よりも評価関数の値が大きい暗号化方式が存在しない場合（ステップS102におけるNo）、暗号化方式判定部１４０は、暗号化方式を変更しない（ステップS108）。暗号化方式を変更しないまま、暗号化方式判定部１４０は、暗号化方式の変更の試行を終了する。
【０１０１】
現在設定されている暗号化方式に関する評価関数の値よりも評価関数の値が大きい暗号化方式が少なくとも１つ存在する場合（ステップS102におけるYes）、暗号化方式判定部１４０は、評価関数の値が大きい方の暗号化方式を評価対象として取り出す。すなわち、選択ループに入る（ステップS103）。
【０１０２】
暗号化方式判定部１４０は、評価対象のうち最も評価関数の値が大きい暗号化方式のエラー率が所定値以下であるか否かを確認する（ステップS104）。エラー率は、例えば（エラーカウント／クエリ実行回数）で算出される。
【０１０３】
エラー率が所定値より大きい場合（ステップS104におけるNo）、暗号化方式判定部１４０は、エラー率が所定値より大きい暗号化方式を評価対象から除外する（ステップS105）。除外した後、暗号化方式判定部１４０は、再度ステップS104の処理を行う。
【０１０４】
エラー率が所定値以下である場合（ステップS104におけるYes）、暗号化方式判定部１４０は、エラー率が所定値以下の暗号化方式を選択する（ステップS106）。選択した後、暗号化方式判定部１４０は、暗号化方式の変更の試行を終了する。
【０１０５】
暗号化方式判定部１４０は、暗号化方式が選択されておらず、かつ評価対象に未だ検討されていない暗号化方式が残っている間、ステップS104〜ステップS105の処理を繰り返し実行する。ステップS104〜ステップS105の処理は暗号化方式ごとに繰り返し実行される。
【０１０６】
評価対象の全ての暗号化方式が検討された時、暗号化方式判定部１４０は、選択ループを抜ける（ステップS107）。選択ループを抜けた後、暗号化方式判定部１４０は、暗号化方式を変更しない（ステップS108）。暗号化方式を変更しないまま、暗号化方式判定部１４０は、暗号化方式の変更の試行を終了する。
【０１０７】
図４に示す所定のアルゴリズムで検討される第ｉ暗号化方式の評価関数E_iは、例えば、以下のように表される。
【０１０８】
E_i（クエリ実行回数，エラーカウント，第１条件での実行回数，第２条件での実行回数，・・・，第ｍ条件での実行回数，第１条件の関連度，第２条件の関連度，・・・，第ｍ条件の関連度）
【０１０９】
なお、ｉは１以上ｋ以下の整数であり、ｋは２以上の整数である。第ｉ暗号化方式の評価関数E_iにおける第１条件の関連度、第２条件の関連度、・・・、第ｍ条件の関連度として、例えば関連度テーブルの値が使用される。図５は、条件と暗号化方式との関連度が保持された関連度テーブルの例を示す説明図である。
【０１１０】
図５に示すように、関連度テーブルには、第１暗号化方式、第２暗号化方式、第３暗号化方式、・・・、第ｉ暗号化方式、・・・、第ｋ暗号化方式と各条件との関連度がそれぞれ保持されている。
【０１１１】
関連度は、例えば０から１の間の数値で表される。０から１の間の数値で表される場合、関連度は、数値が大きい程対象の条件に対して暗号化方式が向いていることを意味する。
【０１１２】
以上のように暗号化方式判定部１４０が有する所定のアルゴリズムの例を説明したが、暗号化方式判定部１４０が有する所定のアルゴリズムは他のアルゴリズムでもよい。
【０１１３】
図１に示すように、センタ２００は、クライアント同期部２３０と、暗号化方式テーブル（マスタ）とを有する。クライアント同期部２３０は、ｎ個のクライアントの各暗号化方式判定部とそれぞれ疎通する。クライアント同期部２３０は、暗号化方式テーブル（マスタ）を参照したり更新したりする。
【０１１４】
また、クライアント同期部２３０は、統計データ（マスタ）を有する。統計データ（マスタ）の形態は、暗号化方式判定部１４０が有する統計データの形態と同様である。
【０１１５】
また、クライアントが機械学習を有する場合、クライアント同期部２３０は、さらに学習モデル（マスタ）を有する。学習モデル（マスタ）の形態は、暗号化方式判定部１４０が有する学習モデルの形態と同様である。
【０１１６】
［動作の説明］
以下、図１に示す秘匿データベースシステム１０の動作を図６〜図７を参照して説明する。なお、図１に示す秘匿データベースシステム１０による「登録等の処理」の動作は、図１４に示すデータ登録処理の動作と同様である。
【０１１７】
最初に、図１に示す秘匿データベースシステム１０の登録済のデータに対する「データ利用の処理」を行う動作を図６を参照して説明する。図６は、第１の実施形態の秘匿データベースシステム１０によるデータ利用処理の動作を示すフローチャートである。
【０１１８】
外部インタフェース部１１０に対して、外部システム２０から「データ利用の処理」を行うためのクエリが発行される（ステップS111）。外部インタフェース部１１０は、発行されたクエリを暗号化／復号処理部１３０に入力する（ステップS112）。
【０１１９】
次いで、暗号化／復号処理部１３０は、受け取ったクエリを基にクエリ処理の内容を識別する（ステップS113）。
【０１２０】
次いで、暗号化／復号処理部１３０は、暗号化方式テーブルを参照して、クエリ処理の対象のテーブルのカラムに関して設定されている暗号化方式を確認する。暗号化／復号処理部１３０は、確認された暗号化方式で暗号化されたクエリの実行が可能であるか否かを示す情報を含むエラー結果を生成する（ステップS114）。
【０１２１】
次いで、暗号化／復号処理部１３０は、クエリ自体および生成されたエラー結果の情報を含むクエリ文・エラー結果を、暗号化方式判定部１４０に入力する。暗号化方式判定部１４０は、クエリ文・エラー結果を受け取る（ステップS115）。
【０１２２】
暗号化方式判定部１４０が機械学習を有する場合（ステップS116における「機械学習」）、暗号化方式判定部１４０は、受け取ったクエリ文・エラー結果を統計データに反映させる（ステップS117）。
【０１２３】
次いで、暗号化方式判定部１４０は、機械学習を実行することによって、クエリ文・エラー結果が反映された後の統計データを学習モデルに反映させる（ステップS118）。
【０１２４】
例えば、統計データにおけるエラー率（＝エラーカウンタ／クエリ実行回数）が所定の値を超えた場合やクエリ実行回数が所定の値を超えた場合、暗号化方式判定部１４０は、所定の値を超えた統計データを除外し、学習モデルを更新する。
【０１２５】
学習モデルを更新した後、暗号化方式判定部１４０は、更新された学習モデルに基づいて暗号化方式を変更するか否かを判断する（ステップS119）。
【０１２６】
暗号化方式判定部１４０が所定のアルゴリズムを有する場合（ステップS116における「所定のアルゴリズム」）、暗号化方式判定部１４０は、所定のアルゴリズムに従って暗号化方式の変更を図４に示す動作のように試行する。
【０１２７】
なお、暗号化方式判定部１４０は、暗号化方式の変更を試行する間に、受け取ったクエリ文・エラー結果を参照して、エラー率が所定の値を超えるか否か、またはクエリ実行回数が所定の値を超えるか否かを確認してもよい。暗号化方式の変更を試行することによって、暗号化方式判定部１４０は、暗号化方式を変更するか否かを判断する（ステップS120）。
【０１２８】
暗号化方式が変更される場合（ステップS121におけるYes）、暗号化方式判定部１４０は、変更された暗号化方式を暗号化方式テーブルに設定する（ステップS122）。
【０１２９】
ステップS123〜ステップS135の処理は、図１５に示すステップS014〜ステップS026の処理と同様である。
【０１３０】
次に、図１に示す秘匿データベースシステム１０の複数のクライアントが有する暗号化方式テーブル、統計データ、および学習モデルに対して同期をとる動作を図７を参照して説明する。図７は、第１の実施形態の秘匿データベースシステム１０によるデータ同期処理の動作を示すフローチャートである。
【０１３１】
なお、本例では暗号化方式判定部１４０が所定のアルゴリズムと機械学習のうち機械学習を有する場合が想定されている。また、本例ではデータ同期処理をクライアント１００が実行する場合が想定されているが、他のクライアントも図７に示す処理と同様にデータ同期処理を実行する。
【０１３２】
クライアント１００が、所定の契機に応じてセンタ２００との同期処理を開始する（ステップS141）。所定の契機は、例えば、クライアント１００が有する暗号化方式テーブルの更新である。
【０１３３】
次いで、暗号化方式判定部１４０は、センタ２００のクライアント同期部２３０に向けて同期のリクエストを発行する。クライアント同期部２３０は、同期のリクエストを受信する（ステップS142）。
【０１３４】
次いで、クライアント同期部２３０は、暗号化方式テーブル（マスタ）、統計データ（マスタ）、および学習モデル（マスタ）を、リクエスト元のクライアント１００に向けて送信する（ステップS143）。
【０１３５】
次いで、クライアント１００は、受信された暗号化方式テーブル（マスタ）、統計データ（マスタ）、および学習モデル（マスタ）の各データに対して、クライアント１００が有する暗号化方式テーブル、統計データ、および学習モデルをそれぞれ反映させる（ステップS144）。
【０１３６】
例えば暗号化方式テーブルの場合、クライアント１００は、暗号化方式テーブルに設定されている暗号化方式を、受信された暗号化方式テーブル（マスタ）に設定する。
【０１３７】
また、統計データの場合、クライアント１００は、統計データの各値を受信された統計データ（マスタ）に加算することによって、統計データ（マスタ）を更新する。
【０１３８】
また、学習モデルの場合、クライアント１００は、学習モデルの生成元であるプロットデータを受信された学習モデル（マスタ）に追加することによって、学習モデル（マスタ）を更新する。
【０１３９】
次いで、クライアント１００は、自身のデータが反映された後の暗号化方式テーブル（マスタ）、統計データ（マスタ）、および学習モデル（マスタ）の各データを、センタ２００のクライアント同期部２３０に向けて送信する（ステップS145）。
【０１４０】
なお、セキュリティを保つため、クライアント１００は、統計データ（マスタ）および学習モデル（マスタ）の各データを送信前に予め暗号化し、暗号化された各データをセンタ２００に送信してもよい。センタ２００は、暗号化された状態のマスタデータを常に保持できる。
【０１４１】
次いで、クライアント同期部２３０は、受信された暗号化方式テーブル（マスタ）、統計データ（マスタ）、および学習モデル（マスタ）の各データを用いて、自身が有する暗号化方式テーブル（マスタ）、統計データ（マスタ）、および学習モデル（マスタ）をそれぞれ更新する（ステップS146）。
【０１４２】
センタ２００は、所定の契機に応じて、クライアント１００以外の１つ以上のクライアントとの同期処理を開始する（ステップS147）。本例では、センタ２００がクライアント１０１との同期処理を開始する。なお、所定の契機は、例えば、暗号化方式テーブル（マスタ）、統計データ（マスタ）、または学習モデル（マスタ）のうちのいずれかの更新である。
【０１４３】
クライアントとの同期処理を開始した後、センタ２００は、クライアント１０１の暗号化方式判定部１４０に向けて、暗号化方式テーブル（マスタ）、統計データ（マスタ）、および学習モデル（マスタ）のうちの更新されたデータを送信する（ステップS148）。
【０１４４】
次いで、クライアント１０１の暗号化方式判定部１４０は、暗号化方式テーブル（マスタ）、統計データ（マスタ）、および学習モデル（マスタ）のうちの受信されたデータを用いて、クライアント１０１が有する暗号化方式テーブル、統計データ、または学習モデルを更新する（ステップS149）。
【０１４５】
暗号化方式判定部１４０は、例えばステップS144の処理と同様に各データを更新する。更新した後、秘匿データベースシステム１０は、データ同期処理を終了する。
【０１４６】
以上の処理により、センタ２００のクライアント同期部２３０は、クライアント１００で更新された暗号化方式テーブル、統計データ、および学習モデルの各データと、他のクライアントが有する各データの同期をとることができる。
【０１４７】
なお、暗号化方式判定部１４０が所定のアルゴリズムと機械学習のうち所定のアルゴリズムを有する場合、上記のデータ同期処理の動作のうち学習モデルに対する動作が除かれる。また、図７に示すデータ同期処理は、図６に示すデータ利用処理と並列に実行されてもよい。また、所定のアルゴリズムが、データ同期処理の対象でもよい。
【０１４８】
なお、センタ２００が有する統計データ（マスタ）、学習モデル（マスタ）と同期をとるために、クライアント１００の暗号化方式判定部１４０がクエリ文のヒストリを保持してもよい。暗号化方式判定部１４０は、クエリ文のヒストリを用いて、センタ２００が有する統計データ（マスタ）および学習モデル（マスタ）をそれぞれ更新してもよい。
【０１４９】
クエリ文のヒストリは、実行されたクエリのクエリ文自体と、実行されたクエリのシーケンシャルIDやタイムスタンプ等の実行順を示す情報とを少なくとも含む情報である。クエリ文のヒストリは、例えばSQL(Structured Query Language)の実行ログである。
【０１５０】
クエリ文のヒストリは、上記の統計データや学習モデルのようにセンタが有するデータと各クライアントが有するデータとを単純に合算することによって更新することが困難な学習データの更新に用いられる。具体的には、クエリ文のヒストリを他の学習データに学習させることによって、２つの学習データを反映させることが可能になる。
【０１５１】
例えば、ディープラーニングにおける学習データのように、機械学習で生成された学習データＡと別の機械学習で生成された学習データＢに関して、学習データＡと学習データＢの２つのデータが反映された学習データの生成は、通常困難である。しかし、学習データＢに対して学習データＡに対して行われた機械学習と同様の機械学習が行われると、両方のデータが反映された学習データが生成される。
【０１５２】
また、上記のデータ同期処理ではセンタ２００が統計データ（マスタ）、学習モデル（マスタ）、および暗号化方式テーブル（マスタ）をクライアントに送信したが、センタ２００にクライアントが統計データ、学習モデル、および暗号化方式テーブルを送信してもよい。センタ２００は、送信された統計データ、学習モデル、および暗号化方式テーブルをそれぞれ更新する。
【０１５３】
［効果の説明］
「データ類」が「統計データ」である場合、暗号化方式判定部１４０は、統計データを有する。クエリが発行された場合、暗号化／復号処理部１３０は、クエリ文および暗号化方式テーブルに設定されている暗号化方式で暗号化されたクエリが実行されるとエラーが発生するか否かを示すクエリ文・エラー結果を、暗号化方式判定部１４０に入力する。
【０１５４】
暗号化方式判定部１４０は、入力されたクエリ文・エラー結果を基に統計データを更新する。暗号化方式判定部１４０は、更新された統計データを用いて、機械学習で生成された学習モデルまたは所定のアルゴリズムに従って、特定のデータ領域ごとにより適切な暗号化方式を選択する。選択された暗号化方式は、暗号化方式テーブルに設定される。
【０１５５】
暗号化／復号処理部１３０は、暗号化方式テーブルに設定された暗号化方式を用いて、データの暗号化処理を実行する。すなわち、暗号化方式判定部１４０がより適切な暗号化方式を選択することによって、センタ２００のクエリ実行部２１０でクエリが実行されない可能性が低減する。処理性能がクライアントよりも高いセンタ２００のクエリ実行部２１０でクエリが実行される割合が増加するため、クエリ処理の実行時間の合計が短縮される。
【０１５６】
また、「データ類」が「統計データ」である場合、センタ２００のクライアント同期部２３０は、統計データ（マスタ）を有する。また、暗号化方式テーブルの場合と同様に、クライアントの暗号化方式判定部１４０は、所定の契機に応じてセンタ２００のクライアント同期部２３０を介して統計データ（マスタ）を更新する。
【０１５７】
また、センタ２００のクライアント同期部２３０は、所定の契機に応じて、統計データ（マスタ）を基に他のクライアントの各暗号化方式判定部を介してそれぞれの統計データを更新する。上記の同期処理により適切な暗号化方式の設定データが各クライアントに配信されるため、１つのクライアントだけでなく秘匿データベースシステム１０全体で、クエリ処理の実行時間が短縮される。
【０１５８】
［第２の実施形態］
［構成の説明］
次に、本発明の第２の実施形態を、図面を参照して説明する。図８は、本発明による秘匿データベースシステム１０の第２の実施形態の構成例を示すブロック図である。上述したように、本実施形態の「データ類」は「データ」および「メタデータ」である。
【０１５９】
本実施形態の秘匿データベースシステム１０の構成は、暗号化方式判定部１４０が統計データを有していない点、およびクライアント同期部２３０が統計データ（マスタ）を有していない点以外、第１の実施形態の秘匿データベースシステム１０の構成と同様である。
【０１６０】
本実施形態の暗号化／復号処理部１３０は、入力されたクエリが示すクエリ文を暗号化方式判定部１４０に入力する機能を有する。第１の実施形態のクエリ文・エラー結果と異なり、クエリ文にはエラー結果を示す情報が含まれなくてよい。
【０１６１】
暗号化方式判定部１４０が所定のアルゴリズムと機械学習のうち機械学習を有する場合、暗号化方式判定部１４０は、学習モデルを有する。暗号化方式判定部１４０に入力されるクエリ文に記載されたデータ類（データおよびメタデータ）と暗号化方式テーブルに設定されている暗号化方式とに基づいて、暗号化方式判定部１４０は、学習モデルを生成、および更新する。
【０１６２】
本実施形態の学習モデルは、データ類と暗号化方式との対応関係が学習されたモデルである。例えば、多くのデータが「男性」、「女性」、またはNullのいずれかであったり、メタデータ（例えば、ラベル名）が「性別」であったりする場合、データ類に対する適切な暗号化方式は、「検索可能確率的暗号化方式」である可能性が高い。
【０１６３】
また、多くのデータが数字、またはNullのいずれかであったり、メタデータ（例えば、ラベル名）が「得点」であったりする場合、データ類に対する適切な暗号化方式は、「準同型暗号化方式」である可能性が高い。
【０１６４】
なお、多数のデータ類を基に既に設定されている設定値（本実施形態の暗号化方式）とデータとの対応関係を機械的に学習する方法として、様々な方法が知られている。
【０１６５】
暗号化方式判定部１４０が所定のアルゴリズムと機械学習のうち所定のアルゴリズムを有する場合、暗号化方式判定部１４０は、予め定められた所定のアルゴリズムに従って適切な暗号化方式を選択する。
【０１６６】
具体的には、暗号化方式判定部１４０は、暗号化方式判定部１４０に入力されるクエリ文に記載されたデータ類（データおよびメタデータ）を基に所定のアルゴリズムに従って選択された適切な暗号化方式を、暗号化／復号処理部１３０が有する暗号化方式テーブルに設定する。
【０１６７】
所定のアルゴリズムは、例えば特許文献２に記載されているような経験則に基づいて予め定められたアルゴリズムである。
【０１６８】
［動作の説明］
以下、図８に示す秘匿データベースシステム１０の動作を図９を参照して説明する。なお、図８に示す秘匿データベースシステム１０による「登録等の処理」の動作は、図１４に示すデータ登録処理の動作と同様である。
【０１６９】
最初に、図８に示す秘匿データベースシステム１０の登録済のデータに対する「データ利用の処理」を行う動作を図９を参照して説明する。図９は、第２の実施形態の秘匿データベースシステム１０によるデータ利用処理の動作を示すフローチャートである。
【０１７０】
外部インタフェース部１１０に対して、外部システム２０から「データ利用の処理」を行うためのクエリが発行される（ステップS211）。外部インタフェース部１１０は、発行されたクエリを暗号化／復号処理部１３０に入力する（ステップS212）。
【０１７１】
次いで、暗号化／復号処理部１３０は、受け取ったクエリを基にクエリ処理の内容を識別する（ステップS213）。
【０１７２】
次いで、暗号化／復号処理部１３０は、暗号化方式テーブルを参照して、クエリ処理の対象のテーブルのカラムに関して設定されている暗号化方式を確認する。暗号化／復号処理部１３０は、確認された暗号化方式で暗号化されたクエリの実行が可能であるか否かを示す情報を含むエラー結果を生成する（ステップS214）。
【０１７３】
次いで、暗号化／復号処理部１３０は、入力されたクエリが示すクエリ文を暗号化方式判定部１４０に入力する。クエリ文には、クエリ自体の情報が含まれる。暗号化方式判定部１４０は、入力されたクエリ文を受け取る（ステップS215）。
【０１７４】
暗号化方式判定部１４０が機械学習を有する場合（ステップS216における「機械学習」）、暗号化方式判定部１４０は、機械学習を実行することによって、受け取ったクエリ文を学習モデルに反映させる（ステップS217）。
【０１７５】
次いで、暗号化方式判定部１４０は、クエリ文が反映された後の学習モデルに基づいて適切な暗号化方式を判定する（ステップS218）。すなわち、暗号化方式判定部１４０は、暗号化方式を変更するか否かを判断する。
【０１７６】
暗号化方式判定部１４０が所定のアルゴリズムを有する場合（ステップS216における「所定のアルゴリズム」）、暗号化方式判定部１４０は、所定のアルゴリズムに従って、受け取ったクエリ文を基に適切な暗号化方式を判定する（ステップS219）。すなわち、暗号化方式判定部１４０は、暗号化方式を変更するか否かを判断する。
【０１７７】
暗号化方式が変更される場合（ステップS220におけるYes）、暗号化方式判定部１４０は、変更された暗号化方式を暗号化方式テーブルに設定する（ステップS221）。
【０１７８】
ステップS222〜ステップS234の処理は、図１５に示すステップS014〜ステップS026の処理と同様である。
【０１７９】
なお、本実施形態の秘匿データベースシステム１０も、第１の実施形態の秘匿データベースシステム１０と同様に、図７に示すデータ同期処理を実行可能である。すなわち、クライアントの暗号化方式判定部１４０は、所定の契機に応じてセンタ２００のクライアント同期部２３０を介して、暗号化方式テーブル（マスタ）を更新する。所定の契機は、例えばクライアントが有する暗号化方式テーブルの更新である。
【０１８０】
また、センタ２００のクライアント同期部２３０は、所定の契機に応じて暗号化方式テーブル（マスタ）を基に、他のクライアントの各暗号化方式判定部を介してそれぞれの暗号化方式テーブルを更新する。所定の契機は、例えばセンタ２００が有する暗号化方式テーブル（マスタ）の更新である。上記の同期処理が実行されることによって、１つのクライアントだけでなく秘匿データベースシステム１０全体で、クエリ処理の実行時間が短縮される。
【０１８１】
［効果の説明］
「データ類」が「データ」および「メタデータ」である場合、暗号化方式判定部１４０は、入力される「データ類」を基に、機械学習で生成された学習モデルまたは所定のアルゴリズムに従って、特定のデータ領域ごとにより適切な暗号化方式を選択する。選択された暗号化方式は、暗号化方式テーブルに設定される。
【０１８２】
暗号化／復号処理部１３０は、暗号化方式テーブルに設定された暗号化方式を用いてデータの暗号化処理を実行する。すなわち、暗号化方式判定部１４０がより適切な暗号化方式を選択する場合、クエリが暗号化されたまま実行される割合が増えるため、クエリ処理の実行時間の合計が短縮される。
【０１８３】
なお、各実施形態の秘匿データベースシステム１０にはセンタが１つだけ含まれているが、秘匿データベースシステム１０にはセンタが２つ以上含まれてもよい。センタが２つ以上含まれる場合、例えば、１つのセンタが各実施形態のセンタ２００と同様に動作し、他のセンタがバックアップの用途や災害発生時に復旧を行うディザスタリカバリの用途で使用されてもよい。
【０１８４】
また、２つ以上のセンタにデータが分散されて保存されてもよい。また、各センタが他のセンタと同期をとりながらデータを保存してもよい。各センタが他のセンタと同期をとりながらデータを保存する場合、２つ以上のセンタの各クエリ実行部が、秘匿データベースへの「登録等の処理」の完了を示す情報を他のセンタへ通知する。また、他のセンタにおいても「登録等の処理」が完了した場合、各クエリ実行部に完了を示す情報が通知される。
【０１８５】
各センタが他のセンタと同期をとりながらデータを保存する場合、例えば、秘匿データベースに格納されているテーブルのカラムそれぞれが有効ビットを有してもよい。有効ビットが存在する場合、各センタで「登録等の処理」が完了した後に、有効ビットが無効を示す値から有効を示す値に変更される。すなわち、有効ビットが有効を示すカラムは、同期がとられているカラムである。
【０１８６】
また、各実施形態では暗号化方式が判定された後に判定された暗号化方式が暗号化方式テーブルに設定され、設定された後にクエリが暗号化されてクエリ処理が実行されている。しかし、暗号化方式の判定と暗号化されたクエリの実行は、並列に行われてもよい。２つの処理が並列に行われる場合、クエリ処理の対象のテーブルのカラムに関して、次回以降のクエリ処理の実行の際に、変更された暗号化方式が使用される。
【０１８７】
また、各実施形態のセンタは、センタでクエリ処理が実行不可能である場合、クエリ処理の対象のデータを全て取得し、処理の要求元のクライアントの暗号化／復号処理部にデータを暗号化されたまま送信した。送信されるデータには、クエリ処理の対象のデータ以外のデータが含まれてもよい。
【０１８８】
例えば、上述したようにセンタが一致検索できるデータに関して別のカラムの値の合計が求められる場合、別のカラムの該当する全てのデータ（値）が送信の対象になる。しかし、一致検索されるカラムの全てのデータおよび別のカラムの全てのデータが、送信の対象でもよい。なお、全てのデータが送信の対象になる場合、データ転送量が増加する。
【０１８９】
また、各実施形態では特定のデータ領域の単位がテーブルのカラムであるが、特定のデータ領域の単位は、テーブルのロウでもよいし、テーブル内の他の領域でもよい。また、特定のデータ領域の単位は、一意な番号と排他的な領域との組合せを示すテーブルが活用されて指定されてもよい。
【０１９０】
また、各実施形態では、テーブルのカラムに関して設定される暗号化方式は、更新されてから同期がとられるまでの間の差異を除けば、１つの暗号化方式である。しかし、クライアントごとに異なる暗号化方式が、テーブルの１つのカラムに関して設定されてもよい。クライアントごとに異なる暗号化方式が設定される場合、例えば、テーブルの１つのカラムに２つ以上の暗号化方式テーブルのカラムが使用される。
【０１９１】
なお、各実施形態のクライアント１００〜クライアント１０ｎ、およびセンタ２００は、例えば、ROM(Read Only Memory)やハードディスク等の非一時的な記憶媒体に格納されているプログラムに従って処理を実行するCPU(Central Processing Unit)によって実現される。すなわち外部インタフェース部１１０、クエリ実行部１２０、暗号化／復号処理部１３０、暗号化方式判定部１４０、クエリ実行部２１０、およびクライアント同期部２３０は、例えば、プログラム制御に従って処理を実行するCPUによって実現される。
【０１９２】
また、秘匿データベース２２０は、例えばRAM(Random Access Memory)で実現される。
【０１９３】
また、各実施形態のクライアント１００〜クライアント１０ｎにおける各部、およびセンタ２００における各部は、ハードウェア回路によって実現されてもよい。一例として、外部インタフェース部１１０、クエリ実行部１２０、暗号化／復号処理部１３０、暗号化方式判定部１４０、クエリ実行部２１０、秘匿データベース２２０、およびクライアント同期部２３０が、それぞれLSI(Large Scale Integration)で実現される。また、それらが１つのLSIで実現されていてもよい。
【０１９４】
次に、本発明の概要を説明する。図１０は、本発明による暗号化データベース管理装置の概要を示すブロック図である。本発明による暗号化データベース管理装置３０は、クエリの暗号化に用いられる暗号化方式をクエリと所定のモデルとに基づいて判定する判定部３１（例えば、暗号化方式判定部１４０）と、判定された暗号化方式を用いてクエリを暗号化する暗号化部３２（例えば、暗号化／復号処理部１３０）とを備える。
【０１９５】
そのような構成により、暗号化データベース管理装置は、暗号化データベースに対して発行されたクエリを適切な暗号化方式で暗号化できる。
【０１９６】
また、所定のモデルは、機械学習が実行されることによって生成された学習モデルでもよい。
【０１９７】
そのような構成により、暗号化データベース管理装置は、学習モデルを用いて適切な暗号化方式を判定できる。
【０１９８】
また、判定部３１は、暗号化されたクエリが実行された結果が蓄積されたデータである統計データを有し、統計データを用いて機械学習を実行することによって学習モデルを生成してもよい。
【０１９９】
また、統計データには、暗号化データベースに対するクエリ処理の内容、およびクエリ処理の実行エラー結果が含まれてもよい。また、統計データには、暗号化データベースに格納されているデータの情報、およびそのメタデータの情報が含まれてもよい。
【０２００】
そのような構成により、暗号化データベース管理装置は、過去のクエリ処理の実行結果が反映された学習モデルを用いて適切な暗号化方式を判定できる。
【０２０１】
また、判定部３１は、暗号化データベースに格納されているデータの情報、およびそのメタデータの情報を用いて機械学習を実行することによって学習モデルを生成してもよい。
【０２０２】
また、所定のモデルは、所定のアルゴリズムを基に生成されたモデルでもよい。
【０２０３】
また、所定のアルゴリズムは、暗号化データベースに対するクエリ処理の内容を基に生成されたアルゴリズムでもよい。また、所定のアルゴリズムは、暗号化データベースに格納されているデータおよびそのメタデータを基に生成されたアルゴリズムでもよい。
【０２０４】
そのような構成により、暗号化データベース管理装置は、予め固定的に定められたアルゴリズムを用いて適切な暗号化方式を判定できる。
【０２０５】
また、図１１は、本発明による暗号化データベース管理システムの概要を示すブロック図である。本発明による暗号化データベース管理システム４０は、暗号化データベース管理装置５０と、暗号化データを記憶する暗号化データベース（例えば、秘匿データベース２２０）を有する記憶装置６０とを含む暗号化データベース管理システムであって、暗号化データベース管理装置５０は、クエリの暗号化に用いられる暗号化方式をクエリと所定のモデルとに基づいて判定する判定部５１（例えば、暗号化方式判定部１４０）と、判定された暗号化方式を用いてクエリを暗号化する暗号化部５２（例えば、暗号化／復号処理部１３０）とを有する。
【０２０６】
そのような構成により、暗号化データベース管理システムは、暗号化データベースに対して発行されたクエリを適切な暗号化方式で暗号化できる。
【０２０７】
なお、記憶装置６０は、暗号化データベースに対するクエリ処理が実行される際、暗号化されたクエリを復号しない。
【０２０８】
また、所定のモデルは、機械学習が実行されることによって生成された学習モデルでもよい。
【０２０９】
そのような構成により、暗号化データベース管理システムは、学習モデルを用いて適切な暗号化方式を判定できる。
【０２１０】
また、暗号化データベース管理システム４０は、複数の暗号化データベース管理装置を含み、記憶装置６０は、同期部（例えば、クライアント同期部２３０）を有し、暗号化データベース管理装置５０の判定部５１は、判定された暗号化方式を同期部に通知し、同期部は、通知された暗号化方式を暗号化データベース管理装置５０以外の暗号化データベース管理装置に通知してもよい。
【０２１１】
そのような構成により、暗号化データベース管理システムは、クエリ処理の実行時間をシステム全体に渡って削減できる。
【０２１２】
また、暗号化データベース管理装置５０の判定部５１は、判定に使用された所定のモデルを同期部に通知し、同期部は、通知された所定のモデルを暗号化データベース管理装置５０以外の暗号化データベース管理装置に通知してもよい。
【０２１３】
そのような構成により、暗号化データベース管理システムは、暗号化に使用される暗号化方式をシステム全体に渡って統一できる。
【符号の説明】
【０２１４】
１０、１１  秘匿データベースシステム
２０  外部システム
３０、５０  暗号化データベース管理装置
３１、５１  判定部
３２、５２  暗号化部
４０  暗号化データベース管理システム
６０  記憶装置
１００〜１０ｎ  クライアント
１１０  外部インタフェース部
１２０  クエリ実行部
１３０  暗号化／復号処理部
１４０  暗号化方式判定部
２００  センタ
２１０  クエリ実行部
２２０  秘匿データベース
２３０  クライアント同期部
【図１】
2018128602.tif 000003
【図２】
2018128602.tif 000004
【図３】
2018128602.tif 000005
【図４】
2018128602.tif 000006
【図５】
2018128602.tif 000007
【図６】
2018128602.tif 000008
【図７】
2018128602.tif 000009
【図８】
2018128602.tif 000010
【図９】
2018128602.tif 000011
【図１０】
2018128602.tif 000012
【図１１】
2018128602.tif 000013
【図１２】
2018128602.tif 000014
【図１３】
2018128602.tif 000015
【図１４】
2018128602.tif 000016
【図１５】
2018128602.tif 000017