(57)【要約】【課題】データベースの情報漏洩を抑止し処理の効率化を図るシステムの提供。【解決手段】データベースシステム（１０）にネットワーク（３０）を介して接続するユーザシステム（２０）は、暗号化と復号化のための鍵情報を管理する手段（２３、２４）と、前記データベースシステムに向けて発行されるデータベース操作命令を受け取り、前記データベース操作命令のデータ及び／又はメタデータとして、鍵情報を管理する手段で鍵情報により暗号化を行った暗号化データ及び／又は暗号化メタデータを、データベース制御手段（１２）に送信してデータベース操作を実行し、前記データベース制御手段から送信された処理結果を受け取り、復号化あるいは変換を行い、前記データベース操作命令の応答として返すアプリケーション応答手段（２２）を備えている。【選択図】図１
2014013582.tif 000002
【特許請求の範囲】
【請求項１】
データベースと、データベース操作の実行を制御するデータベース制御手段と、を備えたデータベースシステムと、
前記データベース制御手段にネットワークを介して接続するユーザシステムと、
を備え、
前記ユーザシステムが、
暗号化と復号化のための鍵情報を管理する鍵利用手段と、
前記データベースシステムに向けて発行されるデータベース操作命令を受け取り、前記データベース操作命令のデータ及び／又はメタデータとして、前記鍵利用手段の鍵情報により暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベース制御手段に送信してデータベース操作を実行させ、
前記データベース制御手段から送信されたデータベース処理結果を受け取り、変換、又は前記鍵利用手段の鍵情報による復号化を行った結果を、前記データベース操作命令の応答として前記データベース操作命令の発行元に返すアプリケーション応答手段と、
を備えている、ことを特徴とするデータベース暗号化システム。
【請求項２】
前記ユーザシステムは、
前記データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定する安全性設定手段と、
前記安全性の設定に関する情報を記憶する第１の記憶部と、を備え、
前記アプリケーション応答手段は、
前記データベースシステムに向けて発行されるデータベース操作命令を受け取り、前記第１の記憶部の情報を参照して、前記データベース操作命令のデータ及び／又はメタデータとして、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報により暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベース制御手段に送信してデータベース操作を実行させる、ことを特徴とする請求項１記載のデータベース暗号化システム。
【請求項３】
前記安全性設定手段は、
前記メタデータの暗号化の有無の設定又は変更、
前記データの暗号化の有無の設定又は変更、
前記安全性の程度を表す機密度情報の設定又は変更
の少なくとも１つを行う、ことを特徴とする請求項２記載のデータベース暗号化システム。
【請求項４】
前記第１の記憶部は、前記メタデータの暗号化の有無、前記データの暗号化の有無、前記データの安全性の程度を表す機密度情報、前記機密度情報に対応した暗号アルゴリズムの識別情報を保持する、ことを特徴とする請求項２記載のデータベース暗号化システム。
【請求項５】
前記第１の記憶部は、前記データベースに格納されるテーブル名、カラム名を含む前記メタデータが暗号化される場合、暗号化したテーブル名、カラム名を保持するとともに、暗号化前の平文のテーブル名、平文のカラム名を、復号後テーブル名、復号後カラム名としてそれぞれ記憶保持する、ことを特徴とする請求項４記載のデータベース暗号化システム。
【請求項６】
前記アプリケーション応答手段は、前記データベース処理結果のメタデータのうちテーブル名とカラム名の少なくとも一方が暗号化されている場合、前記第１の記憶部の前記復号後テーブル名と前記復号後カラム名に保持された平文のテーブル名と平文のカラム名の少なくとも一方を取得する、ことを特徴とする請求項５記載のデータベース暗号化システム。
【請求項７】
前記データベース制御手段は、前記アプリケーション応答手段から送信された前記データベース操作命令を受け、前記データベースに対して、暗号化されたデータに対する暗号プロトコルを用いたデータベース操作、又は、平文データに対するデータベース操作を実行し、処理結果を、前記データベース処理結果として、前記アプリケーション応答手段に返す、ことを特徴とする請求項１乃至６のいずれか１項に記載のデータベース暗号化システム。
【請求項８】
前記データベース制御手段は、前記データベース操作命令の予め定められた所定の操作と演算について、前記データベースに格納された暗号文のデータを暗号文のまま操作又は演算を行い、暗号文の処理結果を、前記データベース処理結果として、前記アプリケーション応答手段に送信する、ことを特徴とする請求項７記載のデータベース暗号化システム。
【請求項９】
前記データベースシステムは、前記データベースに格納されるテーブル名、カラム名を含む前記メタデータの暗号化の有無、データの暗号化の有無、データの安全性の程度を表す機密度情報、前記機密度情報に対応した暗号アルゴリズムの識別情報を記憶保持する第２の記憶部と、
前記データベース操作命令の処理内容と、機密度情報と、暗号アルゴリズムとを関連付ける暗号プロトコル識別情報を少なくとも記憶保持する第３の記憶部と、
を備えた、ことを特徴とする請求項５乃至８のいずれか１項に記載のデータベース暗号化システム。
【請求項１０】
前記データベースが、前記第２及び／又は第３の記憶部として機能し、
前記第２及び／又は第３の記憶部に記憶される情報を前記データベース内のテーブルとして保持する、ことを特徴とする請求項９記載のデータベース暗号化システム。
【請求項１１】
前記アプリケーション応答手段は、前記第１乃至第３の記憶部の少なくとも１つを参照して、前記データに対応する機密度情報に対応する暗号アルゴリズムを選択し、選択した暗号アルゴリズムと前記鍵利用手段の鍵情報を用いてデータを暗号化し前記データベース制御手段に送信する、ことを特徴とする請求項９又は１０記載のデータベース暗号化システム。
【請求項１２】
前記安全性設定手段は、
前記アプリケーション応答手段が受信した前記データベース操作命令で指定された処理内容に対して、前記第１乃至第３の記憶部の少なくとも１つを参照し、前記データベース操作命令に対応する機密度情報に対応可能な暗号アルゴリズムのうち、効率に関する所定の条件を満たす処理プランで前記データベース操作命令を実行可能なものを選択する、ことを特徴とする、請求項９又は１０記載のデータベース暗号化システム。
【請求項１３】
前記安全性設定手段は、選択した暗号アルゴリズム識別情報を、前記第２の記憶部に、前記データベース操作命令の対象であるテーブル、カラムと対応付けて記憶することを特徴とする、請求項１２記載のデータベース暗号化システム。
【請求項１４】
前記アプリケーション応答手段は、前記データベース操作命令で指定されたテーブル名、カラム名の暗号化の有無を、前記第１及び／又は第２の記憶部を参照して判別し、前記テーブル名とカラム名の少なくとも一方が暗号化されている場合には、前記データベース操作命令のテーブル名とカラム名の少なくとも一方を暗号文に置き換えた上で前記データベース制御手段に送信する、ことを特徴とする請求項１１記載のデータベース暗号化システム。
【請求項１５】
前記データベース制御手段は、前記機密度情報に対応した暗号アルゴリズムで暗号化されるデータに対して、前記第３の記憶部の暗号プロトコル識別情報に基づき、前記データベース操作命令に対応した処理内容の暗号プロトコル処理を実行する暗号プロトコル処理実行部を備えている、ことを特徴とする請求項１１記載のデータベース暗号化システム。
【請求項１６】
前記データベース制御手段は、前記データベース操作命令の演算操作について、前記データベースに暗号文で格納されている操作対象のデータが、予め定められた所定の準同型演算に対応した暗号アルゴリズムで暗号化されており、且つ、前記データベース操作命令の前記演算操作が前記所定の準同型演算を含む場合、前記操作対象の暗号化されたデータに対して暗号文のまま前記演算操作を行い、暗号文の演算結果を、前記データベース処理結果として、前記アプリケーション応答手段に送信し、
前記アプリケーション応答手段では、
（Ａ）前記データベース制御手段から送信された前記暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号した平文の演算結果を、前記データベース操作命令の発行元に返すか、
（Ｂ）前記データベース操作命令の演算操作が、さらに平文での演算を必要とするものである場合には、さらに前記平文での演算を行い、前記平文での演算結果を前記データベース操作命令の発行元に返し、
あるいは、
前記アプリケーション応答手段は、
（Ｃ）前記データベース制御手段から送信された前記暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号し、得られた平文の演算結果に対して、さらに平文での演算を行い、
（Ｄ）前記平文の演算結果を、前記鍵利用手段の鍵情報を用いて暗号化した上で、前記データベース制御手段に送信し、前記データベース制御手段にて、暗号文のまま演算操作を行い、
（Ｅ）前記データベース制御手段から送信された暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号して平文とし、
（Ｆ）前記平文での演算結果を前記データベース操作命令の発行元に返すか、前記平文の演算結果に対してさらに演算を行い、あるいは、さらに（Ｄ）と（Ｅ）の処理を少なくとも１回繰り返した上で、前記平文での演算結果を前記データベース操作命令の発行元に返す、ことを特徴とする請求項１乃至１５のいずれか１項に記載のデータベース暗号化システム。
【請求項１７】
前記データベース制御手段は、前記データベースに、暗号文で格納されている操作対象のデータが暗号文のままでは前記データベース操作命令の演算操作を行えない暗号アルゴリズムで暗号化されている場合、前記演算操作対象の暗号文のデータを、前記アプリケーション応答手段に送信し、
前記アプリケーション応答手段では、前記データベース制御手段から送信された前記暗号文のデータを前記鍵利用手段の鍵情報を用いて復号し、得られた平文のデータに対して前記データベース操作命令の演算操作を行い、前記演算操作結果を、前記データベース操作命令の発行元に返す、ことを特徴とする請求項１乃至１５のいずれか１項に記載のデータベース暗号化システム。
【請求項１８】
前記安定性設定手段の入力により、前記データべース内のテーブルのカラムデータを暗号化する場合、
前記データベース制御手段は、前記データベースからカラムデータを読み出し、
前記アプリケーション応答手段は、前記第１及び／又は第２の記憶部を参照して、前記データベースから読み出しが行われた前記カラムデータに対して、設定された機密度情報に対応する暗号アルゴリズムで前記鍵利用手段の鍵情報を用いて暗号化して前記データベース制御手段に送信し、
前記データベース制御手段は、通番と前記カラムデータの暗号文との対を含む暗号文テーブルを作成し、
前記データベース制御手段は、前記暗号文テーブルの管理のために、
テーブル名、カラム名、暗号アルゴリズム、暗号文テーブル名を組として含む暗号文テーブル情報表を備えている、ことを特徴とする請求項９又は１０記載のデータベース暗号化システム。
【請求項１９】
前記データベース制御手段が、前記アプリケーション応答手段から送信された公開鍵を用いてデータ及び／又はメタデータを暗号化する暗号演算部を備えた、ことを特徴とする請求項１乃至１７のいずれか１項に記載のデータベース暗号化システム。
【請求項２０】
前記安定性設定手段の入力により、前記データべース内のテーブルのカラムデータを暗号化する場合、
前記データベース制御手段は、前記データベースからカラムデータを読み出し、前記アプリケーション応答手段から公開鍵情報を取得し、前記暗号演算部で前記カラムデータに対して暗号化を行い、
前記データベース制御手段は、通番と前記カラムデータの暗号文との対を含む暗号文テーブルを作成し、
前記データベース制御手段は、前記暗号文テーブルの管理のために、
テーブル名、カラム名、暗号アルゴリズム、暗号文テーブル名を組として含む暗号文テーブル情報表を備えている、ことを特徴とする請求項１９記載のデータベース暗号化システム。
【請求項２１】
前記アプリケーション応答手段が、カラムデータを追加するデータベース操作命令を入力し、前記カラムデータの暗号化が必要な場合、前記カラムデータに対応する暗号アルゴリズムで前記追加データを前記鍵利用手段の鍵情報を用いて暗号化して前記データベース制御手段に送信し、
前記データベース制御手段は、前記データベースの前記暗号文テーブルの末尾に更新した通番と暗号文の対を追加する、ことを特徴とする請求項１８記載のデータベース暗号化システム。
【請求項２２】
前記安全性設定手段から、前記データベースに記憶されているデータの機密度情報の変更の指示を受けると、前記アプリケーション応答手段は、前記データベースに格納された、暗号化されたデータについて、一旦、前記鍵利用手段の鍵情報を用いて平文に復号化し、前記平文を、変更された前記機密度情報に対応する暗号アルゴリズムで再暗号化した上で前記データベース制御手段に送信し、前記データベースに再暗号化したデータを格納し、前記第１の記憶部の機密度情報と暗号アルゴリズム識別情報を更新する、ことを特徴とする請求項４記載のデータベース暗号化システム。
【請求項２３】
前記安全性設定手段は、前記データベースに記憶されているデータの機密度情報を変更にあたり、テーブル名、カラム名、変更後の機密度情報を指定し、
前記アプリケーション応答手段は、前記第２の記憶部から前記データベースに記憶されている前記テーブル名、カラム名の前記データの暗号化に用いられている暗号アルゴリズム識別子の第１の集合を取得し、入力された機密度情報に対応する暗号アルゴリズム識別子の第２の集合を取得し、
前記第１、第２の集合に共通の暗号アルゴリズム識別子が存在しない場合、前記第１の集合の中の１つの暗号アルゴリズム識別子の暗号アルゴリズムで暗号化されている、前記テーブル名、カラム名の前記データの暗号文を、前記鍵利用手段の鍵情報を用いて平文に復号し、前記平文を、前記第２の集合の前記入力された機密度情報に対応する暗号アルゴリズムで暗号化して前記データベース制御手段に送信し、
前記データベース制御手段は、暗号文テーブルに通番、暗号文の対を格納した上で前記暗号文テーブル情報表を更新し、前記機密度情報の変更が指定されたデータに関して、指定された機密度情報に対応しない暗号文テーブルを削除する、ことを特徴とする請求項２２記載のデータベース暗号化システム。
【請求項２４】
前記ユーザシステムは、前記データベースに対するデータベース操作命令を発行し、前記データベース操作命令の処理結果を受け取るデータベース利用アプリケーションプログラムを実行し、
前記アプリケーション応答手段は、前記データベース利用アプリケーションプログラムからのデータベース操作命令を受け取り、前記データベース操作命令の処理結果を、前記データベース利用アプリケーションプログラムに返す、ことを特徴とする請求項１乃至２３のいずれか１項に記載のデータベース暗号化システム。
【請求項２５】
データベースシステムにネットワークを介して接続するユーザ装置が、
暗号化と復号化のための鍵情報を管理する鍵利用手段と、
前記データベースシステムに向けて発行されるデータベース操作命令を受け取り、前記データベース操作命令のデータ及び／又はメタデータとして、前記鍵利用手段の鍵情報による暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベースシステムに送信し、前記データベースシステムにデータベース操作を実行させ、
前記データベースシステムから送信されたデータベース処理結果を受け取り、変換又は前記鍵利用手段の鍵情報による復号化を行った結果を、前記データベース操作命令の応答として前記データベース操作命令の発行元に返すアプリケーション応答手段と、
を備えている、ことを特徴とするユーザ装置。
【請求項２６】
前記ユーザシステムは、
前記データベースシステムに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定する安全性設定手段と、
前記安全性の設定に関する情報を記憶する第１の記憶部と、を備え、
前記アプリケーション応答手段は、
前記データベースシステムに向けて発行されるデータベース操作命令を受け取り、前記第１の記憶部の情報を参照して、前記データベース操作命令のデータ及び／又はメタデータとして、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報により暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベースシステムに送信してデータベース操作を実行させる、ことを特徴とする請求項２５記載のユーザ装置。
【請求項２７】
前記安全性設定手段は、前記データベースに格納されるテーブル名、カラム名を含む前記メタデータの暗号化の有無の設定又は変更、前記データの暗号化の有無の設定又は変更、データの安全性の程度を表す機密度情報の設定又は変更の少なくとも１つを行う、ことを特徴とする請求項２６記載のユーザ装置。
【請求項２８】
前記第１の記憶部は、前記データベースに格納されるテーブル名、カラム名を含むメタデータの暗号化の有無、データの暗号化の有無、データの安全性の程度を表す機密度情報、前記機密度情報に対応した暗号アルゴリズムの識別情報を保持し、
前記テーブル名、カラム名が暗号化されている場合、
暗号化されたテーブル名、カラム名に加えて、
暗号化前の平文のテーブル名、平文のカラム名を、復号後テーブル名、カラム名として記憶保持する、ことを特徴とする請求項２７記載のユーザ装置。
【請求項２９】
前記アプリケーション応答手段は、前記データベース操作命令で指定されたテーブル名、カラム名が暗号化されているか否かを、前記第１の記憶部を参照して判別し、
前記テーブル名、カラム名の少なくとも一方が暗号化されている場合には、平文を暗号文に置き換え、
前記第１の記憶部を参照して、データを暗号化する場合には、前記機密度情報に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報を用いてデータを暗号化して前記データベース装置に送信する、ことを特徴とする請求項２８記載のユーザ装置。
【請求項３０】
請求項２５乃至２９のいずれか１項に記載の前記ユーザ装置から送信されたデータベース操作命令を受け取り、前記データベースに対して、暗号化されたデータに対する暗号プロトコルを用いたデータベース操作、又は、平文データに対するデータベース操作を実行し、処理結果を、前記データベース処理結果として、前記アプリケーション応答手段に返す、ことを特徴とするデータベース装置。
【請求項３１】
データベースシステムにネットワークを介して接続するユーザシステムにて、暗号化と復号化のための鍵情報を記憶管理し、
前記データベースシステムに向けて発行されるデータベース操作命令に対して、  前記データベース操作命令のデータ及び／又はメタデータとして、前記鍵情報による暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベースシステムに送信してデータベース操作を実行させ、
前記データベースシステムから送信されたデータベース処理結果を受け取り、変換、又は前記鍵情報による復号化を行った結果を、前記データベース操作命令の応答として前記データベース操作命令の発行元に返す、ことを特徴とするデータベース暗号化方法。
【請求項３２】
前記ユーザシステムは、前記データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を第１の記憶部に記憶し、
前記データベースシステムに向けて発行されるデータベース操作命令に対して、前記第１の記憶部の情報を参照して、前記データベース操作命令のデータ及び／又はメタデータとして、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報により暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベースシステムに送信してデータベース操作を実行させる、ことを特徴とする請求項３１記載のデータベース暗号化方法。
【請求項３３】
前記データベースシステムは、前記ユーザシステムから送信された前記データベース操作命令を受け、前記データベースに対して、暗号化されたデータに対する暗号プロトコル、又は、平文データに対するデータベース操作を実行し、処理結果を前記ユーザシステムに返す、ことを特徴とする請求項３１又は３２記載のデータベース暗号化方法。
【請求項３４】
データベース装置にネットワークを介して接続するユーザ装置のコンピュータに、
暗号化と復号化のための鍵情報を管理する鍵利用処理と、
前記データベース装置に向けて発行されるデータベース操作命令に対して、前記データベース操作命令のデータ及び／又はメタデータとして、前記鍵情報による暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベース装置に送信してデータベース操作を実行させ、
前記データベース装置から送信されたデータベース処理結果を受け取り、変換あるいは前記鍵利用処理による復号化を行った結果を、前記データベース操作命令の応答として前記データベース操作命令の発行元に返すアプリケーション応答処理と、
を実行させるプログラム。
【請求項３５】
前記データベース装置に格納されるデータ及び／又はメタデータの安全性の設定に関する情報を第１の記憶部に記憶する安全性設定処理を含み、
前記アプリケーション応答処理は、
前記データベース装置に向けて発行されるデータベース操作命令に対して、前記第１の記憶部の情報を参照して、前記データベース操作命令のデータ及び／又はメタデータとして、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報により暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベース装置に送信してデータベース操作を実行させる、請求項３４記載のプログラム。
【請求項３６】
請求項３４又は３５の前記ユーザ装置から暗号化されたデータベース操作命令を受け取ると、データベースに対して暗号プロトコルを実行する処理と、
前記ユーザ装置から暗号化されないデータベース操作命令を受け取ると、前記データベースに対して平文データのデータベース操作を実行する処理と、
前記処理結果を、前記ユーザ装置に返す処理と、
をデータベース制御装置を構成するコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２０１１−２４７９０８号（２０１１年１１月１１日出願）に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、情報の暗号化技術に関し、特に、データベース暗号化システムと方法及びプログラムに関する。
【背景技術】
【０００２】
近時、クライアントに対してインターネット経由で、例えばソフトウェア、アプリケーション、又は、ＯＳ（オペレーティングシステム）等のインフラを提供するクラウドコンピューティングの利用が拡大している。今後、データベースについてもクラウド等にアウトソース（外部委託）する利用形態が増えることが予想される。
【０００３】
ところで、データベースのクラウド等へのアウトソースでは、データベースからの情報漏洩の防止が特に重要である。データベースからの情報漏洩を防ぐために、データベースに記録するデータを暗号化する手法はこれまで各種提案されている。特に制限されないが、これらの手法は一例として以下のように類別される。
【０００４】
１．データベースへのデータ格納時には、当該データを暗号化して格納し、データ取り出し時には、データを復号してユーザに戻す。
【０００５】
例えば特許文献１には、データベースユーザに透過的に暗号化をデータベースユーザに気づかれることなく、自動的に実行する自動データベース暗号化の方法と装置が開示されている。クライアント、データベースサーバ、データベースを備え、データベースシステムのカラムにデータを格納するリクエストを受信することによって動作する。ユーザがデータベースシステムのカラムを暗号化カラムとして指定した場合、暗号化機能を用いてデータを自動的に暗号化する。暗号化機能は、セキュリティアドミニストレータによって管理されるキーファイルに保存されたキーを用いる。データを暗号化したのち、システムは、データベースシステムの格納機能を利用してデータを保存する。また、データベースシステムの暗号化されたカラムからデータを取り出すリクエストを受信することによって動作する。システムはカラムIDのメタデータを調べて当該カラムが暗号化されているか調べ、暗号化されている場合、データを取り出すリクエストが、許可されたユーザからなされたものである場合、暗号化パラメータを検索し、復号鍵を検索してデータを復号化し、復号化したデータをクライアントに戻す。データを取り出すリクエストが、許可されたユーザからなされたものでない場合、暗号化されたデータの復号化は行わない。この特許文献１記載の方法、装置によれば、暗号化・復号の鍵（キー）をデータベース側で管理している。このため、データベースシステムのユーザ（データベースユーザ）は、データベースの問い合わせを変更する必要はない。
【０００６】
２．暗号文のまま処理可能な暗号化方式を用いることで鍵をユーザ側で管理する。
【０００７】
例えば特許文献２には、暗号化データベースに蓄積された文書を暗号化したまま検索する検索システムに適用可能なインデックス作成処理を行い、検索処理の高速化を図る暗号化データベース検索装置が開示されている。検索対象データを暗号化データと同じ暗号方式と鍵で暗号化し、検索を行う。このシステムでは、データベース側で情報漏洩があっても暗号文しか漏洩しない。
【０００８】
また、ユーザ側で鍵を管理し、ユーザ側の端末によりデータベースに保存するデータの暗号化、復号化を行うシステムとして、例えば特許文献３には、データベースアクセスシステムにおいて、ユーザ端末が、公開鍵を用いて秘密鍵を生成する秘密鍵生成手段と、秘密鍵を格納する格納手段と、公開鍵に基づいてデータを暗号化する暗号化手段と、暗号化されたデータを秘密鍵を用いて復号化する復号化手段を備え、外部から侵入する第三者、データを保管、管理する管理者等に対しても、データの漏洩を的確に防止できるようにしたデータベースアクセスシステムが開示されている。
【０００９】
３．任意の処理について暗号文のまま処理する。
【００１０】
非特許文献１には、完全準同型暗号（Fully Homomorphic Encryption）を用いることで、暗号を復号することなく、暗号化されたデータに対して任意の論理演算を可能であることが記載されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特表２００４−５２８６１５号公報（国際公開第０２／０２９５７７号）
【特許文献２】特開２００５−１３４９９０号公報
【特許文献３】特開２００４−２３４３４４号公報
【非特許文献】
【００１２】
【非特許文献１】Craig Gentry, "Fully Homomorphic Encryption Using Ideal Lattices", STOC'09 May 31-June 2, pp. 169-178, 2009
【発明の概要】
【発明が解決しようとする課題】
【００１３】
上記した関連技術について分析を以下に示す。
【００１４】
１．データベースへの格納時には、データを暗号化して格納し、データ取り出し時には、データを復号してユーザに戻す手法は、暗号化・復号の鍵を、データベース側に配置しているため、データベースシステムへの外部からの侵入や、データベース管理者（データベースアドミニストレータ等）の不正・操作ミスなどによる情報漏洩の可能性がある。
【００１５】
２．暗号文のまま処理可能な暗号化方式を用いることで鍵をユーザ側で管理できるようする手法は、一般的なデータベース操作（SQL: Structure Query Language）のうちの一部（例えば検索処理）にしか対応していない。
【００１６】
３．完全準同型暗号を用いて暗号文のままで処理可能とした手法は、膨大な演算量を要する。例えば、現行の１兆倍もの演算処理が必要とも推測されている。
【００１７】
したがって、本発明は、上記問題点に鑑みて創案されたものであって、その主たる目的は、データベースシステムの情報漏洩を抑止し処理の効率化を図るシステムと方法とプログラムを提供することにある。さらに、本発明は、上記目的を、例えばデータベース操作を行うアプリケーションの改造等を要することなく実現施可能とする、システムと方法とプログラムを提供することにある。
【課題を解決するための手段】
【００１８】
本発明によれば、データベースと、データベース操作の実行を制御するデータベース制御手段と、を備えたデータベースシステムと、
前記データベース制御手段にネットワークを介して接続するユーザシステムと、
を備え、前記ユーザシステムが、
暗号化と復号化のための鍵情報を管理する鍵利用手段と、
前記データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定する安全性設定手段と、
前記安全性の設定に関する情報を記憶する第１の記憶部と、
前記データベースシステムに向けて発行されるデータベース操作命令を受け取り、前記第１の記憶部の情報を参照して、データ及び／又はメタデータの暗号化の要否を判別し、
暗号化が必要な場合、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報により暗号化した暗号化データ及び／又は暗号化メタデータを、前記データベース制御手段に送信してデータベース操作を実行させ、
暗号化が不要な場合には、前記データベース操作命令をそのまま前記データベース制御手段に送信してデータベース操作を実行させ、
前記データベース制御手段から送信されたデータベース処理結果を受け取り、前記データベース処理結果のデータ及び／又はメタデータの変換又は復号化が必要な場合、前記変換又は前記鍵利用手段の鍵情報による復号化を行い、前記データベース操作命令の応答として発行元に返すアプリケーション応答手段と、を備えているデータベース暗号化システムが提供される。
【００１９】
本発明の別の側面によれば、データベース装置にネットワークを介して接続するユーザ装置が、暗号化と復号化のための鍵情報を管理する鍵利用手段と、
前記データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定する安全性設定手段と、
前記安全性の設定に関する情報を記憶する第１の記憶部と、
前記データベースシステムに向けて発行されるデータベース操作命令を受け取り、前記第１の記憶部の情報を参照して、データ及び／又はメタデータの暗号化の要否を判別し、
暗号化が必要な場合、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報により暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベース制御手段に送信してデータベース操作を実行させ、
暗号化が不要な場合には、前記データベース操作命令をそのまま前記データベース制御手段に送信してデータベース操作を実行させ、
前記データベース制御手段から送信されたデータベース処理結果を受け取り、前記データベース処理結果のデータ及び／又はメタデータの変換又は復号化が必要な場合、前記変換又は前記鍵利用手段による復号化を行い、前記データベース操作命令の応答として発行元に返すアプリケーション応答手段と、を備えているユーザ装置が提供される。
【００２０】
本発明のさらに別の側面によれば、データベースシステムにネットワークを介して接続するユーザシステムにて、暗号化と復号化のための鍵情報を記憶管理し、
さらに、前記データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定して第１の記憶部に記憶し、
前記データベースシステムに向けて発行されるデータベース操作命令に対して、前記第１の記憶部の情報を参照して、データ及び／又はメタデータの暗号化の要否を判別し、
暗号化が必要な場合、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵情報により暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベースシステムに送信してデータベース操作を実行させ、
暗号化が不要な場合には、前記データベース操作命令をそのまま前記データベースシステムに送信してデータベース操作を実行させ、
前記データベースシステムから送信されたデータベース処理結果を受け取り、前記データベース処理結果のデータ及び／又はメタデータの変換又は復号化が必要な場合、前記変換又は前記鍵情報による復号化を行い、前記データベース操作命令の応答として発行元に返す、データベース暗号化方法が提供される。
【００２１】
本発明のさらに別の側面によれば、データベース装置にネットワークを介して接続するユーザ装置のコンピュータに、
暗号化と復号化のための鍵情報を管理する鍵利用処理と、
データベースに格納するデータ及び／又はメタデータの安全性の設定に関する情報を設定して第１の記憶部に記憶する安全性設定処理と、
前記データベース装置に向けて発行されるデータベース操作命令を受け取り、前記第１の記憶部の情報を参照してデータ及び／又はメタデータの暗号化の要否を判別し、
暗号化が必要な場合、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用処理により暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベース装置に送信してデータベース操作を実行させ、
暗号化が不要な場合には、前記データベース操作命令をそのまま前記データベース装置に送信してデータベース操作を実行させ、
前記データベース装置から送信されたデータベース処理結果を受け取り、前記データベース処理結果のデータ及び／又はメタデータの変換あるいは復号化が必要な場合、前記変換あるいは前記鍵利用処理による復号化を行い、前記データベース操作命令の応答として発行元に返すアプリケーション応答処理と、を実行させるプログラムが提供される。
【発明の効果】
【００２２】
本発明によれば、データベースシステムの情報漏洩を抑止し処理の効率化を図ることができる。さらに、本発明によれば、データベース操作に対応しアプリケーションを改造せずに実施可能としている。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施形態のシステム構成を示す図である。
【図２】本発明の一実施形態の全体の動作例を示す図である。
【図３】本発明の一実施形態におけるデータべース制御手段の構成の一例を示す図である。
【図４】本発明の一実施形態におけるデータべース制御手段の構成の別の例を示す図である。
【図５】本発明の一実施形態における暗号プロトコル情報記憶部を説明する図である。
【図６】本発明の一実施形態における安全性設定情報記憶部を説明する図である。
【図７】本発明の一実施形態における暗号文テーブルを説明する図であり、（Ａ）は暗号化前のテーブル、（Ｂ）は暗号文テーブル情報表、（Ｃ）は暗号化後のテーブル、（Ｄ）〜（Ｆ）は暗号文テーブルを説明する図である。
【図８】本発明の一実施形態におけるアプリケーション応答手段の構成の一例を示す図である。
【図９】本発明の一実施形態における安全性設定情報一時記憶部を説明する図である。
【図１０】本発明の一実施形態における鍵情報記憶部の一例を示す図である。
【図１１】本発明の一実施形態における安全性設定手段の処理フローを示す流れ図である。
【図１２】図１１の設定更新処理において暗号化有の設定処理を説明する流れ図である。
【図１３】図１１の設定更新処理において暗号化無の設定処理を説明する流れ図である。
【図１４】図１１の設定更新処理において機密度の設定処理を説明する流れ図である。
【図１５】本発明の一実施形態のアプリケーション応答手段において、安全性設定手段から入力された設定対象、設定内容を反映させる処理の流れを説明する図である。
【図１６】本発明の一実施形態のアプリケーション応答手段において、データベース内の既に作成されたテーブルにデータを追加する処理を説明する流れ図である。
【図１７】本発明の一実施形態における暗号プロトコル情報記憶部の一例を説明する図である。
【図１８】本発明の一実施形態における安定性設定情報記憶部の一例を説明する図である。
【図１９】本発明の一実施形態における安定性設定情報一時記憶部の一例を説明する図である。
【図２０】本発明の一実施形態におけるカラムデータの暗号化の一例を説明する図である。
【図２１】本発明の一実施形態におけるデータ機密度の設定処理を説明する図である。
【図２２】本発明の一実施形態におけるデータ機密度の設定処理を説明する図である。
【図２３】本発明の一実施形態におけるデータ操作処理を説明する図である。
【図２４】本発明の一実施形態におけるデータ操作処理を説明する図である。
【図２５】本発明の一実施形態におけるデータ操作処理（暗号プロトコル情報記憶部）を説明する図である。
【図２６】本発明の一実施形態におけるデータべース制御手段の構成例を示す図である。
【図２７】本発明の一実施形態におけるデータべース制御手段の構成のさらに別の例を示す図である。
【図２８】本発明の一実施形態における機密度の設定処理の別の例を説明する流れ図である。
【発明を実施するための形態】
【００２４】
はじめに本発明の概要を説明し、つづいて実施形態について説明する。本発明の形態の１つによれば、データベース（例えば図１の１１）と、データベース操作の実行を制御するデータベース制御手段（例えば図１の１２）を備えたデータベースシステム（例えば図１の１０）と、前記データベース制御手段（１２）にネットワーク（例えば図１の３０）を介して接続するユーザシステム（例えば図１の２０）とが設けられる。前記ユーザシステム（２０）は、データ及び／又はメタデータ（データとメタデータの少なくとも一方）の暗号化と復号化のための鍵情報を管理する鍵利用手段（例えば図１の２３）と、前記データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定する安全性設定手段（例えば図１の２６）と、前記安全性設定手段（２６）で設定される情報を記憶する第１の記憶部（例えば図１の２５）と、アプリケーション応答手段（例えば図１の２２）を備えている。アプリケーション応答手段（２２）は、前記データベースシステム（１０）に向けて発行されるデータベース操作命令を受け取り、前記第１の記憶部（２５）の情報を参照して、データベース操作命令で扱うデータ及び／又はメタデータの暗号化の要否を判別し、暗号化が必要な場合、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用手段（２３）の鍵情報により暗号化した暗号化データ及び／又は暗号化メタデータを、データベース操作命令のデータ及び／又はメタデータとして、前記データベース制御手段（１２）に送信してデータベース操作を実行させる。アプリケーション応答手段（２２）は、暗号化が不要な場合には、前記データベース操作命令をそのまま（暗号化せず平文のまま）前記データベース制御手段（１２）に送信してデータベース操作を実行させる。アプリケーション応答手段（２２）は、前記データベース制御手段（１２）から送信されたデータベース処理結果を受け取り、前記データベース処理結果のデータ及び／又はメタデータの変換又は復号化が必要な場合、前記変換又は前記鍵利用手段の鍵情報による復号化を行い、前記データベース操作命令の応答として、前記データベース操作命令の発行元（例えば図１の２１）に返す。
【００２５】
本発明の形態の１つによれば、前記安全性設定手段（２６）は、
前記データベース（１１）に格納される、
メタデータの暗号化の有無の設定又は変更、
データの暗号化の有無の設定又は変更、
データの安全性の程度を表す機密度情報の設定又は変更
の少なくとも１つを行う。前記メタデータは、テーブルのテーブル名、カラム名を含む。
前記第１の記憶部（２５）は、
前記データベースに格納される、
メタデータの暗号化の有無、
データの暗号化の有無、
データの安全性の程度を表す機密度情報、
前記機密度情報に対応した暗号アルゴリズムの識別情報
の少なくとも１つを保持する構成としてもよい。
【００２６】
本発明の形態の１つによれば、前記第１の記憶部（２５）は、
前記データベースに格納される前記テーブル名、カラム名を含む前記メタデータが暗号化されている場合、暗号化されたテーブル名、カラム名に加えて、
暗号化前の平文のテーブル名、平文のカラム名を、
復号後テーブル名、復号後カラム名として記憶保持する。
前記アプリケーション応答手段（２２）は、入力された前記データベース操作命令で指定される前記テーブル名、カラム名を含む前記メタデータの暗号化が必要であり、前記第１の記憶部（２５）に暗号化されたテーブル名、カラム名として記憶保持されている場合、
前記第１の記憶部（２５）に暗号化されたテーブル名、カラム名を暗号化メタデータとして取得する（この場合、鍵利用手段による復号化は行わない）。
また、前記アプリケーション応答手段（２２）は、前記データベース制御手段（１２）から送信された前記データベース処理結果のメタデータのうち、テーブル名とカラム名の少なくとも一方が暗号化されている場合、
前記第１の記憶部の前記復号後テーブル名と前記復号後カラム名の平文のテーブル名と平文カラム名の少なくとも一方を取得し（この場合、鍵利用手段による復号化は行わない）、前記データベース操作命令の応答として発行元に返す構成としてもよい。
【００２７】
本発明の形態の１つによれば、前記アプリケーション応答手段（２２）は、前記データベース操作命令で指定されたテーブル名、カラム名が暗号化されているか否かを、前記第１及び／又は第２の記憶部を参照して判別し、
前記テーブル名とカラム名の少なくとも一方が暗号化されている場合には、平文のテーブル名とカラム名の少なくとも一方を、暗号文に置き換える構成としてもよい。
【００２８】
本発明の形態の１つによれば、前記データベースシステム（１０）は、
前記データベースに格納されるテーブル名、カラム名を含む前記メタデータの暗号化の有無、
データの暗号化の有無、
データの安全性の程度を表す機密度情報、
前記機密度情報に対応した暗号アルゴリズムの識別情報を
記憶保持する第２の記憶部（１４）と、
前記データベース操作命令の処理内容と、
機密度情報と、
暗号アルゴリズムとを関連付ける暗号プロトコル識別情報と、
を少なくとも記憶保持する第３の記憶部（１３）と、を備えた構成としてもよい。
【００２９】
本発明の形態の１つによれば、前記データベース（１１）が、前記第２及び／又は第３の記憶部（１４、１３）の少なくとも一方の記憶部として機能し、前記第２及び／又は第３の記憶部に記憶される情報を前記データベース内のテーブルとして保持する情報が、前記データベースにテーブルとして格納される構成としてもよい。
【００３０】
本発明によれば、データの暗号化、復号化に用いる鍵情報を、データベースの利用者であるユーザシステム（２０）で管理し、ユーザシステム（２０）側で、データ／メタデータを暗号化した上で、データベースシステム（１０）に送信してデータべース（１１）に格納する。
【００３１】
さらに、データベース操作命令（例えばSQL（Structured Query Language））を発行する利用者側のデータベース利用アプリケーション（２１）において、データベース操作を透過的（transparent）とし、該アプリケーションではデータの暗号化を意識することなく、通常のデータベース操作命令を用いてデータベース操作を行うことができるようにしている。このため、データベース利用アプリケーションにおいて、暗号化に伴う変更、改造等は不要とされる（ただし、データベース利用アプリケーションの変更、改造等を禁じるものではない）。
【００３２】
＜Ａ．情報漏洩の防止＞
データの暗号化、復号化のための鍵情報を記憶する記憶部（２４）と、鍵情報を管理する鍵利用手段（２３）を、ユーザシステム（１０）側に備えたことで、データベースシステムへの外部からの侵入や、データベース管理者等による不正・操作ミスなどによる情報漏洩を防ぐことができる。
【００３３】
＜Ｂ．効率的な処理＞
データベース利用アプリケーション（図１の２１）から入力されたデータベース操作命令の操作対象データに対して求められる安全性の程度（機密度）に対応した処理（暗号アルゴリズム）を選択して実行する。例えば求められる安全性の低いデータは、相対的に高速であるが、安全性が相対的に高くない暗号アルゴリズムを用いる。さらに、安全性（機密性）が要求されないデータは、暗号化の対象から外すことで、効率的な処理を可能としている。
【００３４】
＜Ｃ：任意のデータベース操作に対応可能＞
データベース利用アプリケーション（図１の２１）から入力されたデータベース操作命令に応答して、データベースに格納された暗号化データに対して、暗号化された状態で演算処理（加算又は乗算等）を実行する。
【００３５】
よく知られているように、例えばPaillier暗号等の加法準同型暗号では、平文ｍ１の暗号文Ｅ（ｍ１）と平文ｍ２の暗号文Ｅ（ｍ２）に対して、
m1+m2の暗号文Ｅ（ｍ１＋ｍ２）として、
Ｅ（ｍ１）＋Ｅ（ｍ２）＝Ｅ（ｍ１＋ｍ２）
が成り立つ。すなわち、平文ｍ１と平文ｍ２の和ｍ２＋ｍ２の暗号文Ｅ（ｍ１＋ｍ２）は、ｍ１の暗号文とｍ２の暗号文の和から直接求められる。また、ＲＳＡ暗号、Ｅｌｇａｍａｌｌ暗号等の乗法準同型暗号では、
平文ｍ１とｍ２の積ｍ１×ｍ２の暗号文Ｅ（ｍ１×ｍ２）に関して、
Ｅ（ｍ１×ｍ２）＝Ｅ（ｍ１）×Ｅ（ｍ２）
が成り立ち、平文ｍ１×ｍ２の暗号文Ｅ（ｍ１×ｍ２）は、平文ｍ１の暗号文と平文ｍ２の暗号文の積から直接求められる。
【００３６】
暗号化されたデータのままでの演算は、暗号アルゴリズムが上記した準同型暗号の場合には、加算又は乗算等に対応可能であるが、加減乗除の複雑な演算や論理演算等には対応していない。したがって、データベース操作命令の演算がデータベースに格納された暗号化データをそのまま演算することで求めることができない場合、データベースに記録された暗号化されたデータを読み出してユーザシステム側に戻し、ユーザシステム側で平文に復号化した上で演算処理を行い、平文での演算結果を、当該データベース操作命令の発行元のデータベース利用アプリケーションに返す。あるいは、より複雑な処理が必要な場合、ユーザシステム側で平文に復号化した上で演算処理を行って得られた平文の演算結果を再度暗号化してデータベース側に送信し、データベース側で暗号化されたデータでの演算処理を継続して実行するというように、データベース側での暗号化データでの処理とユーザシステム側での平文での処理を複数組み合わせた処理を行うようにしてもよい。このように、暗号データでの演算と、平文での演算処理を組み合わせることで、任意のデータベース操作に対応可能としている。
【００３７】
＜Ｄ．機密度の設定＞
ユーザシステム側でデータベースへ格納する情報の暗号化の有無を、例えばテーブル、カラム、カラムデータ単位で設定可能とするとともに、データの操作内容と、求められる安全性（機密度）とに応じた処理手順（暗号アルゴリズム）を選択可能としている。これにより、処理の効率化を実現可能としている。
【００３８】
＜Ｅ．アプリケーションの改造の回避＞
本発明の実施にあたり、データベース操作命令（例えばSQL命令等）の構文の変更等を不要とし、データベース利用アプリケーション（図１の２１）では、データベース操作命令をそのまま（命令の構文、及び、命令で指定するテーブル名、カラム名、データ等すべて平文のまま）発行すればよい。データベース利用アプリケーション（図１の２１）でテーブル（表）作成、カラム追加、行追加、データの演算等のデータベース操作命令を発行すると、アプリケーション応答手段（図１の２２）に入力される。アプリケーション応答手段（図１の２２）では、データの安全性に対応した暗号アルゴリズムの選択が行われ、該暗号アルゴリズムで暗号化を行った上で、データベースシステム（１０）に送信される。そして、データベース（１１）に格納するデータの安全性設定を行う安全性設定手段（２６）を、データベース利用アプリケーション（２１）とは別に用意することで、データベースを利用する既存アプリケーションの改造等を不要としている。すなわち、本発明の実施にあたり、アプリケーションで、データの暗号化、復号、安全性の設定等を行うことは不要であり、データベース操作命令を発行する既存の任意のアプリケーションに対応可能である（既存のアプリケーションをそのまま利用することが可能である）。
【００３９】
なお、ユーザ端末が、公開鍵を用いて秘密鍵を生成する秘密鍵生成手段と、秘密鍵を格納する格納手段と、公開鍵に基づいてデータを暗号化する暗号化手段と、暗号化されたデータを秘密鍵を用いて復号化する復号化手段を備え、外部から侵入する第三者、データを保管、管理する管理者等に対しても、データの漏洩を的確に防止できるようにしたデータベースアクセスシステムを開示した特許文献３は、上記Ａの情報漏洩の防止を実現するものであるが、特許文献３には、上記Ｂ乃至Ｅは開示されていない。
【００４０】
＜実施形態＞
以下添付図面を参照して実施形態を説明する。
【００４１】
＜システム構成例＞
図１は、本発明の一実施形態を説明する図である。図１を参照すると、データベースシステム１０と、ユーザシステム（ユーザ装置）２０とは、例えばLAN（Local Area Network）、WAN(Wide Area Network)、又はインターネット等のネットワーク３０を介して接続されている。データベースシステム１０は、データベース１１と、データベース制御手段１２と、暗号プロトコル情報記憶部１３と、安全性設定情報記憶部１４とを備えている。
【００４２】
ユーザシステム２０は、データベース利用アプリケーション２１と、アプリケーション応答手段２２と、鍵利用手段２３と、鍵情報記憶部２４と、安全性設定情報一時記憶部２５と、安全性設定手段２６と、入力／出力装置２７を備えている。特に制限されないが、ユーザシステム２０は、例えばネットワーク３０に接続してデータベースシステム１０に通信接続する機能を備えたデータ処理装置（ＣＰＵ、プロセッサ）に実装される。この場合、データベース利用アプリケーション２１は、データ処理装置上で動作するアプリケーションプログラムである。また、特に制限されないが、アプリケーション応答手段２２、鍵利用手段２３、安全性設定手段２６も、データ処理装置上で動作するプログラム（制御プログラム等）で実現してもよい。あるいはシンクライアント方式等に実装する場合、サーバに仮想化技術を導入し、サーバ上の仮想マシン上にユーザシステムを実装し、シンクライアント端末から、該サーバ上の仮想マシン上のデータベース利用アプリケーションへの入力を行うようにしてもよい。
【００４３】
なお、図１では、ユーザシステム２０を構成する各手段は１つのブロック内に配置されているが、これらは、例えばローカルエリアネットワーク等の通信網を介して別々の装置として構成してもよい。同様に、データベースシステム１０においても、データベース１１とデータベース制御手段１２とが１つのブロック内に配置されているが、別々に配置してもよいことは勿論である。
【００４４】
また、図１では、単に説明の簡単のため、ユーザシステム２０を１つ備えた例が示されているが、データベースシステム１０にネットワーク３０を介して接続されるユーザシステム２０は複数台であってもよいことは勿論である。さらに、複数台のユーザシステム２０に対して、データベースシステム１０と通信接続するアプリケーション応答手段２２を共通に１つ備えた構成としてもよい。この場合、複数台のユーザシステム２０のそれぞれは、ユーザ毎に、鍵利用手段２３と鍵情報記憶部２４を備え、ユーザ側で鍵情報を記憶管理し、さらに安全性設定手段２６を備え、共通のアプリケーション応答手段２２を介して、データベースシステム１０に接続する構成とされる。安全性設定情報一時記憶部２５は、複数台のユーザシステム２０に対して１つのストレージ装置（システム）に統合化して配置してもよいし、個々のユーザシステム２０に分散配置するようにしてもよい。
【００４５】
＜データベースシステム＞
次に、データベースシステム１０の要素についてその概略を説明する。データベース制御手段１２は、データベース１１に対する操作（データベース操作命令によるデータベース操作）を行う機能と、暗号プロトコルを実行する機能を備えている。
【００４６】
安全性設定情報記憶部１４は、データベース１１内に格納されるデータの安全性設定のための情報として、例えば暗号化に用いられる暗号アルゴリズムの情報等を記憶保持する。安全性設定情報記憶部１４は、例えば、
・データベース１１に格納されるテーブル名、カラム名を含むメタデータの暗号化の有無、
・データの暗号化の有無、
・データの安全性の程度を表す機密度情報、
・データの暗号化を行う場合の暗号アルゴリズムを識別する暗号アルゴリズム識別情報、
等を記憶保持する。
【００４７】
暗号プロトコル情報記憶部１３は、データベース１１のデータの暗号化のための暗号プロトコル情報を記憶する。例えば、
・データベース操作命令の処理内容（単純一致、加算等）と、データに求められる安全性の程度（機密度）に対応する暗号アルゴリズムの識別情報と、
・暗号プロトコルの識別情報
を記憶保持する。暗号プロトコル情報記憶部１３には、データベース１１内のデータを暗号文のまま加算する演算処理には、当該処理内容に応じて、加法性準同型暗号アルゴルズムを選択するための情報が記憶される。
【００４８】
データベース制御手段１２は、アプリケーション応答手段２２から送信されたデータベース操作命令（平文データでのデータベース操作）、又は、暗号プロトコル実行の指示を受け、平文データでのデータベース操作、又は暗号プロトコルを実行し、処理結果をアプリケーション応答手段２２に送信する。データベース制御手段１２は、ユーザシステム（１０）をクライアントとするデータベースサーバとして実装してもよい。
【００４９】
＜ユーザシステム＞
次に、ユーザシステム２０の各要素についてその概略を説明する。データべース利用アプリケーション２１は、データベース操作命令を発行する。なお、特に制限されないが、データべース利用アプリケーション２１は、データベース操作を実行するためのデータベース操作命令（SQL(Structured Query Language)命令）を発行するアプリケーションプログラムからなる。あるいは、データべース利用アプリケーション２１では、データベースシステム１０のデータベース制御手段１２にアプリケーション応答手段２２を介して、画面上でテーブル定義、データ追加、検索、演算等の操作を行うＧＵＩ(Graphical User Interface)環境として実装してもよい。この場合、ユーザが画面上で選択した操作は、対応するSQL命令に変換され、アプリケーション応答手段２２に入力される。データべース利用アプリケーション２１は、既存のアプリケーションをそのまま用いることが可能である。これは、データべース利用アプリケーション２１を新たに開発してはならないということを意味するものでなく、データべース利用アプリケーション２１を新たに開発又は改造、改版するにあたり、データの暗号化、復号化、データの安全性設定のための情報の設定を、当該データべース利用アプリケーション２１で行わなくてもよいことを意味している。
【００５０】
安全性設定手段２６は、データの安全性の情報の設定を行う。
【００５１】
鍵利用手段２３は、鍵情報記憶部２４を参照して、データの暗号化・復号など各種暗号プロトコルの実行に必要な鍵の生成等を行う。
【００５２】
入力／出力装置２７は、キーボード、マウス、あるいはタッチパネル等の入力装置と、表示装置又はファイル装置（プリンタ）等の出力装置からなり、データベースの利用者（ユーザ）の情報入力、出力情報の表示又は出力を行う。なお、図１では、タッチパネル／タブレット・ディスプレイ等、入力・出力一体型装置、又は、入力と出力が個別の装置も含めて、入力／出力装置２７としている。
【００５３】
安全性設定情報一時記憶部２５は、安全性設定情報記憶部１４に格納されている情報と、操作対象データを特定するための情報を格納する。例えばデータベース１１内のデータを特定する情報であるメタデータ（例えばテーブル名やカラム名等）について、該メタデータが暗号化されている場合、
暗号化されたメタデータと、
復号されたメタデータ（平文メタデータ）と
を対応させて記憶保持する。
【００５４】
アプリケーション応答手段２２は、データべース利用アプリケーション２１からデータベース操作命令が入力されると、安全性設定情報一時記憶部２５、安全性設定情報記憶部１４、暗号プロトコル情報記憶部１３を参照し、
・テーブル名・カラム名等メタデータの暗号文メタデータへの置き換えや、
・データベース操作の内容（処理内容）に応じた暗号プロトコル、あるいは、
・通常のデータベース操作
を、データベース制御手段１２や鍵利用手段２３と協調して実行する。
【００５５】
例えば、データべース利用アプリケーション２１から入力されたデータベース操作命令がテーブルの新規作成等であり、データの安全性を動的に設定・変更する必要が生じた場合には、アプリケーション応答手段２２は、安全性設定手段２６を呼び出し、安全性設定情報の設定を行った上で、データベース制御手段１２を介してデータベース１１内にテーブルを作成する。
【００５６】
その際、安全性設定手段２６は、ユーザに、安全性設定情報の入力を督促する画面表示を行うようにしてもよい。新規にテーブルを作成する場合の安全性設定情報の入力は、上記以外にも、各種態様が可能である。例えばデータべース利用アプリケーション２１によるデータベース操作命令の発行に先立って、当該新規に作成するテーブル名に関する暗号化の有無等の安全性設定情報を、安全性設定手段２６で事前に設定しておいてもよい。あるいは、データベース１１へ新規に作成されるテーブルに関して、テーブル名の一部をワイルドカード等で置き換えたテーブル名のテンプレートに対して、機密度、暗号プロトコル識別情報（デフォルト情報）を設定しておき、新規に作成するテーブルが当該ワイルドカードを含むテーブル名と一致する場合、デフォルトの機密度に対応した暗号プロトコルで暗号化を行うようにしてもよい。
【００５７】
アプリケーション応答手段２２は、データべース利用アプリケーション２１から入力されたデータベース操作命令の操作対象のデータの暗号化が必要である場合、データの暗号化等を行う。その際、アプリケーション応答手段２２は、鍵情報を用いて暗号化を行い、データベース制御手段１２に送信する。アプリケーション応答手段２２は、データベース制御手段１２から返送されたデータベース操作結果（処理結果）を、データべース利用アプリケーション２１に返す。特に制限されないが、データべース利用アプリケーション２１は、入力／出力装置２７にデータベース操作結果を出力する。
【００５８】
＜動作概説＞
図１に示したシステムの動作例を概説する。データベース制御手段１２は、データべース利用アプリケーション２１から入力され、アプリケーション応答手段２２を介して転送されたデータベース操作命令が、例えば検索（Query）など、暗号文のままで処理可能な暗号プロトコルが存在する操作である場合、暗号文のまま処理（検索等）を行う。データベース制御手段１２は、データベース１１内の暗号文の処理結果を、暗号文のままアプリケーション応答手段２２に返す。アプリケーション応答手段２２は、暗号文を鍵利用手段２３で平文に復号した結果を受け取り、データベース利用アプリケーション２１に、平文のデータベース操作結果を返す。
【００５９】
データべース利用アプリケーション２１から入力されたデータベース操作命令が、暗号文のままではデータベースでの処理が難しい操作（例えば加減乗除等の複合算術演算、論理演算等）である場合、データベース制御手段１２は、操作対象のデータを、データベース１１から暗号文のまま取り出し、演算操作は行わず、アプリケーション応答手段２２に送る。アプリケーション応答手段２２は、データベース制御手段１２から送られた、暗号化されたデータを、鍵利用手段２３の復号用の鍵を用いて復号し、得られた平文に対して、前記データベース操作命令で指定された操作を行い、操作結果を、データべース利用アプリケーション２１に返す。
【００６０】
また、平均演算等、複合算術演算のうち、一部の演算が、暗号文のまま処理が可能な場合には、データベース制御手段１２は、暗号文による部分演算を行った演算結果（暗号文）をアプリケーション応答手段２２に返す。アプリケーション応答手段２２では、暗号文での演算結果を、鍵利用手段２３で平文に復号化し、前記複合算術演算の残りの演算を平文で行うようにしてもよい。こうすることで、個々のデータを全て復号してから複合算出演算を行う場合よりも処理を効率化している。
【００６１】
アプリケーション応答手段２２は、データべース利用アプリケーション２１から入力されたデータベース操作命令に対して、安全性設定情報記憶部１４を参照することで、入力されたデータベース操作命令の操作対象となっているデータベース１１内のデータが、暗号化による保護が必要であるか否か（暗号化の要否）を確認する。暗号化が不要な場合には、通常のデータベース操作と同じ処理が行われる。また、アプリケーション応答手段２２は、安全性設定情報一時記憶部２５を参照することで、データべース利用アプリケーション２１から入力されたデータベース操作命令の操作対象となっているデータのメタデータ（例えばSQLではテーブル名やカラム名など）が暗号化されている場合でも、操作対象のデータを特定することができる。
【００６２】
上記のとおり、本実施形態によれば、アプリケーション応答手段２２は、入力されたデータベース操作命令に対して安全性設定情報を参照することで、操作対象となっているデータベース１１に求められる安全性の程度に応じた処理を決定することができる。これにより、求められる安全性の低いデータは、相対的に高速であるが、安全性が高くない暗号アルゴリズムを用いることにより、効率的な処理を可能としている。
【００６３】
本実施形態によれば、データベース１１に記録されるデータのうち安全性が求められるデータは暗号化されているため、当該データについて情報漏洩を防ぐことができる。また、アプリケーション応答手段２２と協働することで、入力された任意のデータベース操作命令に対して対応が可能となる。
【００６４】
図２（Ａ）、（Ｂ）は、それぞれ、本実施形態におけるアプリケーション応答手段２２とデータベース制御手段１２の処理動作を説明するためのフローチャートである。
【００６５】
＜アプリケーション応答手段の動作＞
アプリケーション応答手段２２の処理動作を説明する。図２（Ａ）を参照すると、アプリケーション応答手段２２は、以下のステップを実行する。
【００６６】
ステップ１：  データベース利用アプリケーション２１からデータベース操作命令（SQL）を入力する。
【００６７】
ステップ２：  安全性設定情報一時記憶部２５を参照することで、データベース操作命令で操作対象に指定されたテーブル名やカラム名等のメタデータの暗号化の有無を判定する。
【００６８】
ステップ３：  テーブル名やカラム名等のメタデーダを暗号化してデータベースに格納する場合、データベース操作命令で操作対象に指定されたメタデータを暗号文へ置き換える置換処理を行う。
【００６９】
ステップ４：  安全性設定情報記憶部１４を参照して、データベース操作命令で操作対象に指定されたデータの暗号化の要否を決定する。
【００７０】
ステップ５：  データ暗号化が不要の場合、データベース操作命令をデータベース制御手段１２に送信する。
【００７１】
ステップ６：  データベース制御手段１２からのデータベース操作結果を受信する。
【００７２】
ステップ７：  データベース操作結果の変換の要否を判定する。このステップ７の判定は、データベース制御手段１２からの操作結果が暗号文で返される場合があるために行われる。
【００７３】
ステップ８：  データベース操作結果の変換（あるいは復号化）が必要な場合、鍵利用手段２３の復号鍵を用いて変換を行う。この変換処理（復号化）において、鍵利用手段２３の復号鍵を用いた変換や、後述される安全性設定情報一時記憶部２５の復号後テーブル名、復号後カラム名を参照した変換を行う。
【００７４】
ステップ１４：  操作結果（又は変換結果）を、データべース利用アプリケーション２１に出力する。
【００７５】
一方、ステップ４でデータ暗号化が必要な場合、アプリケーション応答手段２２は、以下の処理を行う。
【００７６】
ステップ９：  暗号プロトコル情報記憶部１３を参照して、該当する暗号アルゴリズムで暗号化処理を行う。
【００７７】
ステップ１０：  アプリケーション応答手段２２は、暗号プロトコルの実行指示（暗号プロトコル処理実行の依頼）をデータベース制御手段１２に送信する。
【００７８】
ステップ１１：  データベース制御手段１２で暗号プロトコルを実行する。
【００７９】
ステップ１２：  データベース制御手段１２から暗号プロトコルの実行結果を受信する。
【００８０】
ステップ１１、１２において、アプリケーション応答手段２２による、データベース制御手段１２からの暗号文の演算結果を復号化して平文とし、平文での部分演算と、該部分演算結果を暗号化した上でデータベース制御手段１２への送信、データベース制御手段１２による暗号文での演算を協働して実行するようにしてもよい。
【００８１】
ステップ１３：  暗号プロトコルの実行結果を鍵利用手段２３の鍵情報を用いて復号化する変換処理を行う。暗号プロトコルの実行結果に対して、鍵利用手段２３の鍵情報を用いた復号化、又は、安全性設定情報一時記憶部２５の復号後テーブル名、復号後カラム名を参照した復号化による変換処理を行う。
【００８２】
ステップ１４：  変換結果をデータべース利用アプリケーション２１に出力する。
【００８３】
＜データベース制御手段の動作＞
図２（Ｂ）を参照すると、データベース制御手段１２では、
ステップ１：  アプリケーション応答手段２２からの指示の受信を待つ。
【００８４】
ステップ２：  アプリケーション応答手段２２からデータベース操作命令を受信した場合、データベース操作命令を実行する。
【００８５】
ステップ３：  データベース操作結果をアプリケーション応答手段２２に返す。
【００８６】
ステップ４：  アプリケーション応答手段２２から暗号プロトコル処理依頼を受信した場合、暗号プロトコルを実行する（図２（Ａ）のステップ１１に対応）。
【００８７】
ステップ５：  暗号プロトコル実行処理結果をアプリケーション応答手段２２に返す。
【００８８】
＜実施形態の作用効果＞
図２に示したように、データベース制御手段１２とアプリケーション応答手段２２との協働により、データベースシステム１０における情報漏洩を防止するとともに、任意のデータベース操作への対応、効率的な処理実行を実現している。
【００８９】
ユーザシステム２０では、暗号化、復号化のための鍵情報の管理を行い、データベース１１内の暗号化されたデータをユーザシステム２０に転送し、ユーザシステム１１側で復号処理を行う。このため、データベースシステム１０での情報漏洩の可能性の増大を抑制している。
【００９０】
データベース１１内のデータに対して暗号化の有無や求められる安全性の程度の情報を記憶する安全性設定情報記憶部１４を備え、アプリケーション応答手段２２は、データベース操作命令を入力した際に、安全性設定情報記憶部１４を参照し、操作対象のデータの暗号化の要否を判断し、データの暗号化が不要の場合（通常のデータベース操作の場合）には、暗号化処理を行わない（図２（Ａ）のステップ５、６）。このように、機密性が要求されないデータを暗号化の対象から外すことで、全てのデータベース操作を暗号化する場合に生じる、処理性能への影響を抑制している。
【００９１】
また、データベース内のデータを特定するためのメタデータ（例えばSQLでは、テーブル名やカラム名）に関して、暗号化されたメタデータと、復号されたメタデータの対応情報を、ユーザシステム２０で保持する。このため、データベース１１において、メタデータが暗号化されている場合であっても、操作対象のデータを容易に特定することができる。メタデータの暗号化による処理性能への影響を回避可能としている。
【００９２】
＜データベース制御手段の構成＞
次に、上記したデータベース制御手段１２について詳細に説明する。図３は、図１のデータベース制御手段１２の構成の一例を示す図である。図３を参照すると、データベース制御手段１２は、データベース操作部１２１と、暗号プロトコル処理実行部１２２と、処理・通信制御部１２５と、暗号プロトコル情報操作部１２３と、安全性設定情報操作部１２４を備えている。
【００９３】
暗号プロトコル処理実行部１２２は、暗号文のままデータベース１１の検索や加算等を実行する。
【００９４】
データベース操作部１２１は、データベース１１に対するデータベース操作（テーブル作成、データの追加・削除、データ検索、データ演算等）を実行する。なお、アプリケーション応答手段２２から平文データのデータベース１１への格納、追加、削除、更新等を行うデータベース操作命令を処理・通信制御部１２５で受信した場合、平文データは、処理・通信制御部１２５からデータベース操作部１２１にそのまま転送され、データベース操作部１２１は、平文データでのデータベース操作を行う。
【００９５】
なお、暗号プロトコル処理実行部１２２は、データを暗号文状態のまま操作を行うが、データベース１１へのアクセスは、データベース操作部１２１を介して行う。例えば、データベース１１内のテーブルＡからカラムＢ、Ｃを取得する場合の命令、SQLの検索文  ＳＥＬＥＣＴ  Ｂ、Ｃ  ＦＲＯＭ  Ａ
に関して、データベース１１内のテーブル名ＡにおけるカラムＢ、Ｃが暗号化されている場合、データベース操作部１２１では、カラムＢ、Ｃを暗号化された状態のまま検索処理し、暗号プロトコル処理実行部１２２に検索結果を返す。
【００９６】
処理・通信制御部１２５は、ネットワーク３０を介してのアプリケーション応答手段２２との通信やデータベース制御手段１２内部の各部の制御を行う。
【００９７】
暗号プロトコル情報操作部１２３は、暗号プロトコル情報記憶部１３に対して、暗号プロトコル情報の読み出しや書き込みを行う。暗号プロトコル情報操作部１２３は、アプリケーション応答手段２２からの暗号プロトコル情報記憶部１３へのアクセス要求（読み出し要求）に対して暗号プロトコル情報記憶部１３をアクセスし、読み出した暗号プロトコル情報を、処理・通信制御部１２５を介してアプリケーション応答手段２２に返す。
【００９８】
安全性設定情報操作部１２４は、安全性設定情報記憶部１４からの安全設定情報の読み出しや安全性設定情報記憶部１４への書き込みを行う。安全性設定情報操作部１２４は、アプリケーション応答手段２２からの安全性設定情報記憶部１４へのアクセス要求（読み出し要求）に対して、安全性設定情報記憶部１４にアクセスし、安全性設定情報記憶部１４から読み出した安全設定情報を、処理・通信制御部１２５を介してアプリケーション応答手段２２に返す。
【００９９】
＜データベース制御手段の変形例１＞
図４は、図３の変形例を示す図である。図４に示す例では、暗号プロトコル情報と、安全性設定情報はデータベース１１内に、暗号プロトコル情報テーブル１１１と、安全性設定情報テーブル１１２として格納されている。図４の暗号プロトコル情報操作部１２３は、データベース操作部１２１に、データベース操作命令（テーブル名を暗号プロトコル情報テーブルとして指定したSQL命令等）を発行することで、データベース１１内の暗号プロトコル情報テーブル１１１の情報にアクセスする。同様に、安全性設定情報操作部１２４は、データベース操作部１２１を介してデータベース１１内の安全性設定情報テーブル１１２の情報にアクセスする。
【０１００】
＜データベース制御手段の変形例２＞
図２６は、図１のデータベース制御手段１２のさらに別の構成例を示す図である。図２６を参照すると、データベース制御手段１２は、データベース操作部１２１と、暗号プロトコル処理実行部１２２と、処理・通信制御部１２５と、暗号プロトコル情報操作部１２３と、安全性設定情報操作部１２４と、暗号演算部１２６を備えている。図３とは、暗号演算部１２６を備えた点が相違している。データベース操作部１２１と、暗号プロトコル処理実行部１２２と、処理・通信制御部１２５と、暗号プロトコル情報操作部１２３と、安全性設定情報操作部１２４は、図３と同様であるため説明は省略する。
【０１０１】
アプリケーション応答手段２２は、暗号化アルゴリズムが公開鍵暗号の場合、暗号化に用いる公開鍵を、データベース制御手段１２に送信し、データベース制御手段１２の暗号演算部１２６で暗号化する。例えばデータベース１１に格納されているデータを暗号化して格納する場合に、図３の構成では、暗号化対象のデータをデータベースシステム１０側からユーザシステム２０側に送付して、ユーザシステム２０側で暗号化し、暗号文データを、ユーザシステム２０からデータベースシステム１０に送信する必要がある。図２６の構成によれば、データベース１１に格納されているデータを暗号化して格納する場合に、暗号化対象のデータを暗号演算部１２６で暗号化する。このため、データベースシステム１０側からユーザシステム２０側に送付する必要がない。この結果、データベースシステム１０とユーザシステム２０との間の通信量の増加を抑制する効果が期待できる。
【０１０２】
＜データベース制御手段の変形例３＞
図２７は、図１のデータベース制御手段１２の構成の別の例を示す図である。図２７を参照すると、本実施形態は、図２６の構成において、図４と同様に、暗号プロトコル情報テーブル１１１、安全性設定情報テーブル１１２をデータベース１１内に備えている。暗号演算部１２６は、図２６と同様であるため、説明は省略する。
【０１０３】
＜暗号プロトコル情報記憶部の一例＞
図５は、図１の暗号プロトコル情報記憶部１３の例を説明するための図である。図５において、処理内容識別子は、データベース操作の処理内容を識別する情報である。特に制限されないが、図５では、「単純一致」（指定された文字列と一致するかを単純に照合）、「加算」等のデータベース操作の識別コードが設定される。
【０１０４】
機密度は、データの安全性（機密性）の度合いを示しており、特に制限されないが、この例では、「高」、「中」、「低」のいずれかが設定される。機密度は、数値化してもよい。
【０１０５】
暗号アルゴリズム識別子は、データの暗号化に用いられる暗号アルゴリズムを表している。暗号プロトコル識別子は、処理内容識別子、機密度、暗号アルゴリズム識別子の各情報に対して、機密性を保ち、実行可能な暗号プロトコルの識別子が格納される。
【０１０６】
機密度が「中」で、暗号アルゴリズムが例えば「SE1」で暗号化されるデータに対して、「単純一致」の処理を行う場合、データベース制御手段１２の暗号プトロコル処理実行部１２２では、図５の３行目の「SE1_SS_M」の暗号プロトコルが実行される。「SE1_SS_M」のSS(Simple-Search)は単純一致、Mは機密度がMiddle（中）を表している。
【０１０７】
暗号プトロコル情報操作部１２３は、暗号プロトコル情報記憶部１３から暗号プロトコル識別子を読み出し、処理内容識別子、機密度、暗号アルゴリズム識別子をデコードすることで、データの処理内容、機密度、暗号アルゴリズムが導出される。
【０１０８】
なお、AES（Advance Encryption Standard）は米国で新規格として規格された共通鍵暗号方式である。HE1は、準同型暗号（HE: Homomorphic Encryption）の１つを示している（この場合、加法性準同型暗号のＰａｉｌｌｉｅｒ暗号）。SE1は、公開鍵方式の検索可能な暗号（SE: Searchable Encryption）の１つを示している。
【０１０９】
なお、図５に示すように、処理内容が同一の加算であっても、準同型暗号ではない（暗号文のまま加算演算等ができない）暗号アルゴリズムAESが設定される場合もある。この場合、データベース１１の暗号文は、アプリケーション応答手段２２に送信され、アプリケーション応答手段２２では、鍵利用手段２３で暗号アルゴリズムAESで復号して平文としたデータについて加算演算を行う。
【０１１０】
＜安全性設定情報記憶部の一例＞
図６は、図１の安全性設定情報記憶部１４の一例を示す図である。図６を参照すると、安全性設定情報記憶部１４は、データベース１１に作成されたテーブル名、該テーブル名が暗号化されているか否か（テーブル名暗号化有無）、カラム名、該カラム名が暗号化されているか否か（カラム名暗号化有無）、カラムデータが暗号化されているか否か（カラムデータ暗号化有無）、カラムデータの機密度、カラムデータの暗号化に用いられる暗号アルゴリズムの識別子（カラムデータ暗号化アルゴリズム識別子）の欄を含む。
【０１１１】
図６の安全性設定情報記憶部１４において、例えば１行目の「社員表」のテーブル名は暗号化されていず、カラム名「勤務地」は暗号化されていず、カラムデータは暗号化されており、カラムデータの機密度は「中」であり、暗号アルゴリズム識別子は「ＳＥ１」である。「社員表」のテーブル名に関して３行目はカラム名が暗号化され、カラムデータは暗号化されており、カラムデータの機密度は「高」であり、暗号アルゴリズム識別子は「AES」である。４行目のテーブル名は暗号化されており、カラム名、カラムデータは暗号化されていない（該当欄にNULLが設定されている）。一方、５行目のテーブル名は暗号化されていず、カラム名は暗号化され、カラムデータは暗号化されていない。
【０１１２】
テーブル名、カラム名等のメタデータの暗号化はカラムデータを暗号化する暗号アルゴリズムと同じ暗号アルゴリズムで暗号化してもよい。安全性設定情報記憶部１４において、同一の暗号アルゴリズムで暗号化されるテーブル名、カラム名、カラムデータは互いに関連付けされ、１つのエントリを構成している。あるいは、テーブル名、カラム名の暗号化に用いられる暗号アルゴリズムは、カラムデータの暗号化に用いられる暗号アルゴリズムとは別の暗号アルゴリズムを用いてもよい。あるいは、テーブル名、カラム名の暗号化に用いられる暗号アルゴリズムを、複数のテーブル名、カラム名に対して共通に定められた特定の暗号アルゴリズムとしてもよい。
【０１１３】
安全性設定情報記憶部１４は、例えばデータベース１１に登録されている全てのテーブルに関する安全性設定情報を保持する。なお、安全性設定情報記憶部１４の各欄の設定内容は、ユーザシステム２０の安全性設定手段２６において、ユーザ（ユーザシステム２０の管理者等）によって設定された情報に基づく。
【０１１４】
＜データベース内のテーブルの例＞
図７は、データベース１１内のテーブル情報を説明するための図である。前述の図６に示した安全性設定情報記憶部１４におけるカラム「勤務地」のように、データが複数の暗号アルゴリズムで暗号化される場合がある。そこで、複数の暗号アルゴリズムで暗号化される暗号文の本体は、別のテーブルで管理する。
【０１１５】
図７（Ｂ）の暗号文テーブル情報表に、テーブル名、カラム名、暗号アルゴリズムに対して、
暗号文本体を格納したテーブルである暗号文テーブルの名前（暗号文テーブル名）と、
暗号アルゴリズムと、
パラメータ（暗号アルゴリズムに与えるパラメータ）と、
を対応させて保持する。
【０１１６】
暗号アルゴリズムのパラメータとして、図７（Ｂ）の暗号アルゴリズムSE1（Searchable Encryption：公開鍵）では、鍵生成アルゴリズム（公開鍵、秘密鍵を出力）で用いられるセキュリティパラメータがある。暗号アルゴリズムAESのパラメータとしては、例えば、鍵長、平文ブロック長、ラウンド数等がある（図７（Ｂ）ではAESのパラメータは設定されていない。この場合、デフォルト値が用いられる）。
【０１１７】
図７（Ｂ）の暗号文テーブル情報表の１行目のテーブル名「社員表」において、
カラム名は「勤務地」、
暗号アルゴリズムは「AES」、
パラメータは「Null」（無）、
暗号文テーブル名は「暗号文_AES_1」
である。
【０１１８】
図７（Ｂ）の暗号文テーブル情報表の２行目のテーブル名が「社員表」において、
カラム名は「勤務地」、
暗号アルゴリズムは「SE1」、
パラメータは「0x16a・・・」（0xはヘキサデシマル表示を表す）、
暗号文テーブル名は「暗号文_SE1_1」
である。暗号文テーブル名が「暗号文_AES_1」、「暗号文_SE1_1」の表は、図７（Ｄ）、（Ｅ）にそれぞれ示される。
【０１１９】
暗号化前の平文データが格納された表（図７（Ａ）の社員表）のカラムに、通し番号（通番）を平文で格納する。図７（Ａ）のテーブル「社員表」のカラム「勤務地」のデータ「本社」、「多摩川」等に対して、１、２、・・・のように、通し番号を付ける。
【０１２０】
また図７（Ｃ）に示すように、暗号化後の社員表では、カラム名「役職」は、暗号化され「0xa638・・・」となり、カラム名「勤務地」、及び、カラム名「0xa638・・・」における通し番号１、２、・・・は、暗号化された内容を指示するIDに対応する。
【０１２１】
図７（Ｄ）の暗号アルゴリズムAESで暗号化した暗号文_AES_1表では、ID=１、２の暗号文「0x3d8・・・」、「0x962・・・」は、カラム名「勤務地」をAESで暗号化した「0xa638・・・」に対する、通し番号ID=１、２のデータの暗号文（図７（Ａ）の「本社」、「多摩川」の暗号化データ）である。
【０１２２】
図７（Ｅ）の暗号アルゴリズムAESで暗号化した暗号文_AES_2表では、ID=１、２の暗号文「0x61b・・・」、「0xa53・・・」は、カラム名「役職」を暗号化した「0xa638・・・」に対する通し番号ID=１、２のデータの暗号文（図７（Ａ）の「課長」、「主任」の暗号化データ）である。
【０１２３】
図７（Ｆ）の暗号アルゴリズムSE1で暗号化した暗号文_SE1_1表では、ID=１、２の暗号文「0x8ec・・・」、「0xA7c0・・・」は、カラム名「役職」を暗号化した「0xa638・・・」に対する通し番号ID=１、２のデータの暗号文（図７（Ａ）の「課長」、「主任」の暗号化データ）である。
【０１２４】
上記の通り、図７（Ａ）の社員表のカラム名「勤務地」のデータ「本社」、「多摩川」、・・・は、暗号化後、図７（Ｃ）に示すように、「勤務地」の欄にそれぞれ、通し番号ID=１、２、・・・が付与される。暗号化したデータを格納する暗号文テーブルは、図７（Ｄ〜（Ｆ）等に示すような形式、すなわち、通し番号ID=１、２、・・・に対してそれぞれ対応する暗号文を格納した形式でデータベース１１に格納される。
【０１２５】
このように、本実施形態においては、暗号文テーブル情報表（図７（Ｂ））にて、
・暗号文本体を格納したテーブルを特定するための情報と、
・暗号アルゴリズムのパラメータを、
管理している。暗号文テーブル情報表（図７（Ｂ））は、安全性設定情報記憶部１４内に格納するようにしてもよい。あるいは、暗号文テーブル情報表（図７（Ｂ））は、安全性設定情報記憶部１４とは、別の記憶部にて管理するようにしてもよい。
【０１２６】
＜アプリケーション応答手段の構成例＞
図８は、図１のアプリケーション応答手段２２、安全性設定手段２６、鍵利用手段２３の構成の一例を示す図である。図８を参照すると、アプリケーション応答手段２２は、処理・通信制御部２２１と、暗号プロトコル処理実行部２２２と、データベース操作変換処理部２２３と、暗号演算部２２４と、安全性設定情報操作部２２５を備えている。
【０１２７】
安全性設定手段２６は、設定表示部２６１と設定入力部２６２を備えている。設定表示部２６１と設定入力部２６２は、図１の入力／出力装置２７への出力及び入力を行う。具体的には、入力／出力装置２７を構成する表示装置への操作画面（メニュー）の表示、メニュー選択、入力情報の入力を行う。
【０１２８】
鍵利用手段２３は、暗号演算部２３１と鍵情報管理部２３２を備えている。
【０１２９】
処理・通信制御部２２１は、データベース利用アプリケーション２１、安全性設定手段２６、鍵利用手段２３、データベースシステム１０のデータベース制御手段１２との通信や、アプリケーション応答手段２２内部の各部の制御などを行う。
【０１３０】
暗号演算部２２４は、例えば、公開鍵暗号による暗号化演算等、鍵情報のうち秘密ではない情報を用いた暗号演算を行う。
【０１３１】
データベース操作変換処理部２２３は、データベース利用アプリケーション２１から入力されたデータベース操作命令に対して、操作対象のデータの機密度等に応じて、暗号プロトコル処理、又は、通常のデータベース操作とするか判定し、暗号化する場合、暗号プロトコルへの変換処理を行う（図２（Ａ）のステップ４、９の処理に対応）。
【０１３２】
データベース操作変換処理部２２３は、データベース制御手段１２から暗号プロトコル処理、又は通常のデータベース操作で得られた処理結果を、入力された通常のデータベース操作命令に対応した処理結果に変換する（図２（Ａ）のステップ７、８、１３の処理に対応）。
【０１３３】
暗号プロトコル処理実行部２２２は、データベース１１にアクセスするデータベース制御手段１２における暗号文のままでの検索、あるいは、加算、あるいは、乗算等の暗号プロトコル処理を、処理内容に応じて、データベース制御手段１２と通信して実行する（図２（Ａ）のステップ１１の処理に対応）。
【０１３４】
安全性設定情報操作部２２５は、データベースシステム１０の安全性設定情報記憶部１４に格納されている情報（メタデータの暗号化の有無等の情報を含む）を、処理・通信制御部２２１を介して取得し、操作対象データを特定するための補助情報を作成する。安全性設定情報操作部２２５は、安全性設定情報一時記憶部２５に対して情報の読み出し、書き込みを行う。
【０１３５】
データベースシステム１０の安全性設定情報記憶部１４に保持される情報を、ユーザシステム２０の安全性設定情報一時記憶部２５に保持する（キャッシュする）ことで、アプリケーション応答手段２２からデータベースシステム１０への問合せ（トラフィック）を減らし、ユーザシステム２０のアプリケーション応答手段２２での処理を高速化する。
【０１３６】
安全性設定手段２６において、設定表示部２６１は、アプリケーション応答手段２２を介してデータベース１１に格納されたデータに対して設定されている機密度情報等の安全性設定情報を、出力装置（図１の２７）に表示出力する。設定入力部２６２は、ユーザから、入力装置２７を介してデータの機密度情報に関する入力情報を受け取り、アプリケーション応答手段２２を介して、入力設定情報を、安全性設定情報一時記憶部２５に反映させ、データベースシステム１０の安全性設定情報記憶部１４にも反映させる。その際、入力設定情報を、安全性設定情報一時記憶部２５と安全性設定情報記憶部１４に、同時に書き込むようにしてもよいし、安全性設定情報一時記憶部２５にだけ書き込み、その後、安全性設定情報記憶部１４に書き込むようにしてもよい。
【０１３７】
鍵利用手段２３において、暗号演算部２３１は、鍵情報管理部２３２を介して読み出した鍵情報（秘密鍵）を用いて暗号文の復号処理等の暗号演算を行う。
【０１３８】
鍵情報管理部２３２は、データベース操作対象のデータとその安全性設定情報に対応する鍵情報を、当該鍵情報の所有者であるユーザ（例えば、データベース利用アプリケーション２１のユーザ、あるいは、ユーザシステム側のシステム管理者）の認証を経た上で鍵情報記憶部２４から読み出す。鍵情報管理部２３２は、鍵情報を鍵情報記憶部２４に書き込む。
【０１３９】
＜安全性設定情報一時記憶部の一例＞
図９は、図１のユーザシステム２０側の安全性設定情報一時記憶部２５の内容の一例を模式的に示す図である。安全性設定情報一時記憶部２５は、図６に示したデータベースシステム１０の安全性設定情報記憶部１４の内容に、データベース操作対象を特定するための補助情報として、「復号後テーブル名」と「復号後カラム名」とが追加されている。その他の情報は、図６の安全性設定情報記憶部１４の内容と同一である。
【０１４０】
図９のテーブル名「社員表」において、例えば暗号化されたカラム名「0xa638・・・」は、「復号後カラム名」から、復号した平文のカラム名が「役職」であることを示している。これは、図７（Ａ）のテーブル「社員表」内のカラム「役職」と、図７（Ｃ）の暗号化したカラム名「0xa638・・・」の対応関係を表している。
【０１４１】
図９において、例えば、データベース１１内のテーブル名「××表」を参照するデータベース問合せを実行する場合、データベース１１において、暗号化されたテーブル名「0x30c8a4・・・」を参照する必要がある。
【０１４２】
安全性設定情報操作部２２５は、データベース利用アプリケーション２１から入力されたデータベース操作命令にテーブル名「××表」が含まれる場合（例えばSQL命令：select  列名、from "××表"）、安全性設定情報一時記憶部２５から「××表」に対応する暗号化されたテーブル名「0x30c8a4・・・」を取り出し、暗号プロトコル処理実行部２２２、処理・通信制御部２２１を介して、暗号化されたテーブル名「0x30c8a4・・・」に関するデータベース操作命令（select  列名、from  "0x30c8a4・・・"）を、処理・通信制御部２２１を介して、データベース制御手段１２に送信する。
【０１４３】
＜鍵情報記憶部の一例＞
図１０は、鍵情報記憶部２４の一例を示す図である。鍵情報記憶部２４は、暗号アルゴリズム識別子と鍵情報を含む。図９に示す例では、データを暗号アルゴリズム「AES」で暗号化や復号する際に用いる鍵情報は「0x51a4・・・」である。また、公開鍵暗号である暗号アルゴリズムHE1の鍵情報は「0xb316・・・」であり、鍵情報には、暗号化や準同型演算処理に用いる公開鍵情報と、復号に用いる秘密鍵情報と、が含まれている。
【０１４４】
＜安全性設定手段の処理＞
以下では、図１、図８を参照して説明した安全性設定手段２６の処理手順を詳細に説明する。ユーザシステム２０において、安全性設定手段２６は、データベース１１のデータに関する安全性情報を設定する。
【０１４５】
図１１は、安全性設定手段２６の処理手順の一例を示す流れ図である。データベース利用アプリケーション２１としては、例えば既存のアプリケーションが用いられる。本実施形態では、既存のアプリケーションに対する改造を避けるため、データに対して機密度等を設定する処理は、安全性設定手段２６において機密度を入力することで実現する。図１１を参照して、安全性設定手段２６の処理フローを説明する。
【０１４６】
ステップ１．安全性設定情報取得：
アプリケーション応答手段２２に対してデータベース１１の現在の安全性設定情報を要求して安全性設定情報を取得する。アプリケーション応答手段２２は、データベースシステム１０の安全性設定情報記憶部１４又はユーザシステム２０の安全性設定情報一時記憶部２５を参照して、データベース操作対象のデータ等に該当する安全性設定情報を取得し、安全性設定手段２６に返す。
【０１４７】
アプリケーション応答手段２２は、安全性設定情報記憶部１４から安全性設定情報（図９参照）を取得した場合、安全性設定情報一時記憶部２５のデータ形式（図６参照）を作成して返信する。すなわち、安全性設定情報記憶部１４から取得した安全性設定情報（図６参照）において、メタデータ（テーブル名やカラム名）の暗号化が「有」となっている部分については、暗号化されたメタデータを鍵利用手段２３を用いて復号し、平文のメタデータを作成し、安全性設定手段２６に返す。あるいは、安全性設定情報記憶部１４から取得した安全性設定情報（図９参照）において、メタデータ（テーブル名やカラム名）の暗号化が「有」となっている部分については、復号後テーブル名、カラム名の欄の情報（平文メタデータ）を安全性設定手段２６に返す。
【０１４８】
ステップ１の安全性設定情報の取得は、データベース１１の全体でなく、テーブル名に関する情報、又は、特定のテーブルに関する情報を、選択的（部分的）に段階的に取得し表示するようにしてもよい。
【０１４９】
ステップ２．安全性設定情報表示：
安全性設定手段２６の設定表示部２６１は、アプリケーション応答手段２２から返信された安全性設定情報を入力／出力装置２７に表示する。
【０１５０】
ステップ３．設定対象及び設定内容入力：
安全性設定手段２６の設定入力部２６２は、データベースのユーザ（利用者）が入力／出力装置２７から入力した、設定の対象（例えばテーブル名、カラム名）と設定内容（例えばテーブル名の暗号化有無、カラム名の暗号化有無、カラムデータの機密度）を受け付ける。
【０１５１】
ステップ４．設定更新処理：
安全性設定手段２６の設定入力部２６２は、アプリケーション応答手段２２に対して、入力された設定対象、設定内容を送信して、設定変更（更新）を依頼する。安全性設定の変更は、データベース制御手段１２の安全性設定情報操作部１２４、アプリケーション応答手段２２の安全性設定情報操作部２２５により、安全性設定情報記憶部１４、安全性設定情報一時記憶部２５にそれぞれ書き込まれる。
【０１５２】
なお、図１１に示した安全性設定手段２６の処理手順の実行タイミングに関して、データベース１１へのテーブルの新規作成の場合、データベース利用アプリケーション２１がテーブル作成命令を発行する前に、事前に、ユーザが設定するようにしてもよい。あるいは、データベース利用アプリケーション２１でテーブル作成命令を発行した時、安全性設定情報記憶部１４、安全性設定情報一時記憶部２５に該当するテーブル名等が登録されてない場合、テーブル名、カラム名と、テーブル名の暗号化有無、カラム名の暗号化有無、カラムデータの機密度等の情報の入力督促を、安全性設定手段２６が画面表示するなどして、ユーザに入力を促すようにしてもよい。ユーザが、データベース１１内に作成されたテーブル等について安全性設定を変更する場合には、安全性設定手段２６を介して設定を変更する。その際、安全性設定手段２６において、入力／出力装置２７へのGUI(Graphical User Interface)は任意であるが、例えば、操作メニューとして、テーブル一覧表示コマンド等を選択実行して、テーブル名の全体又は部分の一覧を画面表示し（テーブル名が暗号化されている場合、安全性設定情報一時記憶部２５の復号後テーブル名を参照する等して平文テーブル名で表示する）、ユーザが該当テーブルを選択し、設定操作を選択することで、設定情報を更新するようにしてもよい。
【０１５３】
＜設定更新処理（暗号化有への変更）＞
図１２は、図１１のステップ４の設定更新処理の詳細な処理を説明する流れ図である。ここでは、メタデータ（テーブル名、カラム名）の暗号化を「有」に設定する処理について説明する。ここでは、安全性設定情報記憶部１４、安全性設定情報一時記憶部２５において、該当メタデータ（テーブル名、カラム名）の暗号化が「無」に設定されているものとする。
【０１５４】
ステップ０：
安全性設定手段２６は、設定対象のメタデータ（テーブル名、カラム名）と設定内容（暗号化「有」）を入力／出力装置２７から受けとる。
【０１５５】
ステップ１．対象メタデータの暗号文を作成：
安全性設定手段２６からの設定更新依頼を受けたアプリケーション応答手段２２は、鍵利用手段２３を用いて、設定対象のメタデータ（テーブル名、及び／又はカラム名）の暗号文を作成する。アプリケーション応答手段２２は、安全性設定情報一時記憶部２５、又は安全性設定情報記憶部１４を参照して、該当メタデータに対応する暗号アルゴリズム情報を取得し、暗号演算部２３１でメタデータ（テーブル名、及び／又はカラム名）を暗号化し、暗号文メタデータを作成する。
【０１５６】
ステップ２．データベースの平文メタデータを暗号文メタデータに変更：
安全性設定手段２６からの設定変更の指示を受けたアプリケーション応答手段２２は、データベース制御手段１２に対して、データベース１１内の設定対象のメタデータを、上記ステップ１で作成した暗号文メタデータに置き換えるよう依頼する。データベース制御手段１２は、データベース１１内の平文メタデータを、暗号文メタデータに置き換える。実装固有（Implementation Specific）で本発明を特に制限するものではないが、テーブル名を暗号文に変更する場合、例えば、アプリケーション応答手段２２において、例えばSQL命令
ALTER TABLE  変更前テーブル  RENAME TO  変更後テーブル名
において、変更後テーブル名を暗号文テーブル名としたSQL文を自動生成し、データ制御手段１２のデータベース操作部１２１（図４）に発行するようにしてもよい。また、カラム名を暗号文で変更する場合、例えばSQL命令
ALTER TABLE  テーブル名  RENAME COLUMN  変更前カラム名  TO  変更後カラム名
において、変更後カラム名を暗号文カラム名としたSQL文を、アプリケーション応答手段２２で自動生成し、データベース操作部１２１（図４）に発行するようにしてもよい。
【０１５７】
ステップ３．安全性設定情報を変更：
アプリケーション応答手段２２は、データベース制御手段１２に対して、安全性設定情報記憶部１４（図６参照）において、同様に、設定対象の平文のテーブル名又はカラム名を暗号文デーブル名又は暗号文カラム名に置き換えるとともに、テーブル名暗号化有無又はカラム名暗号化有無）の欄の「有」への変更を行うよう依頼し、データベース制御手段１２の安全性設定情報操作部１２４が、安全性設定情報記憶部１４の安全性設定情報を変更する。また、暗号文テーブル情報表（図７（Ｂ））のテーブル名の該当テーブル名、カラム名を暗号文テーブル名、暗号文カラム名で置き換える。
【０１５８】
ステップ４．安全性設定情報一時記憶部を変更：
アプリケーション応答手段２２の安全性設定情報操作部２２５は、安全性設定情報一時記憶部２５（図９参照）において、設定対象のもとの平文のテーブル名又はカラム名を、復号後テーブル名又は復号後カラム名の欄に書き込み、テーブル名又はカラム名を暗号文デーブル名又は暗号文カラム名で置き換え、テーブル名暗号化有無又はカラム名暗号化有無）の欄を「有」に変更する。
【０１５９】
ステップ５．変更完了を返信：
アプリケーション応答手段２２は、安全性設定手段２６に対して、設定変更（設定更新処理）の完了を返信する。安全性設定手段２６は、入力／出力装置２７に完了を表示する。その際、安全性設定情報一時記憶部２５の変更後の内容を画面表示して変更完了をユーザに提示するようにしてもよい。
【０１６０】
なお、安全性設定手段２６において、テーブル名、カラム名を同時に暗号化「有」に変更してもよいし、あるいは、テーブル名、カラム名を個別に変更してもよい。あるいは、複数のテーブル、又は複数のカラムをまとめて暗号化「有」に変更してもよい。この場合、上記ステップ１〜４の処理が、各テーブル／カラムに対して実行される。
【０１６１】
＜設定更新処理（暗号化無への変更）＞
次に、図１１のステップ４の設定更新処理の詳細な処理手順として、暗号化「無」への変更処理を説明する。図１３は、図１１の設定更新処理４の処理の別の例を説明する流れ図である。図１３には、メタデータ（テーブル名、カラム名）の暗号化を「有」から「無」に変更する処理の手順が示されている。ここでは、メタデータ（テーブル名、カラム名）の暗号化が既に「有」に設定されているものとする。
【０１６２】
ステップ０：、安全性設定手段２６は、設定対象のメタデータ（テーブル名、カラム名）と設定内容（暗号化「無」）を入力／出力装置２７から受けとる。
【０１６３】
ステップ１．対象のメタデータの（平文、暗号文）のペアを取得：
安全性設定手段２６からの設定変更の指示を受けたアプリケーション応答手段２２は、安全性設定情報一時記憶部２５（図９参照）を参照し、設定対象のメタデータ（テーブル名又はカラム名）について、データベース１１中での暗号文メタデータを取得し、復号後テーブル名又は復号後カラム名の欄から、対応する平文のテーブル名又は平文のカラム名を取得する。
【０１６４】
ステップ２．データベース１１の暗号文メタデーダを、平文メタデータに変更：  
アプリケーション応答手段２２は、データベース制御手段１２に対して、暗号文メタデータ（テーブル名又はカラム名）を、対応する平文メタデータに置き換えるよう依頼し、データベース１１内のテーブル名／カラム名を平文のテーブル名／カラム名に置き換える。テーブル名を変更する場合、データベース制御手段１２において、例えばSQL命令
ALTER TABLE  変更前テーブル名  RENAME TO  変更後テーブル名
において、変更前テーブル名を暗号文とし、変更後テーブル名を平文テーブル名として、データベース操作部１２１（図４）に発行するようにしてもよい。またカラム名を暗号文で変更する場合、例えばSQL命令
ALTER TABLE  テーブル名 RENAME COLUMN  変更前カラム名  TO  変更後カラム名
において、変更前カラム名を暗号文、変更後カラム名を平文として、データベース操作部１２１（図４）に発行するようにしてもよい。また、暗号文テーブル情報表（図７（Ｂ））のテーブル名の該当テーブル名、カラム名を平文テーブル名、平文カラム名で置き換える。
【０１６５】
ステップ３．安全性設定情報を変更：
データベース制御手段１２に対し、安全性設定情報記憶部１４（図６参照）についても、暗号文テーブル名又は暗号文カラム名の欄を、平文テーブル名又は平文カラム名に置き換える。また、テーブル名暗号化有無又はカラム名の暗号化有無の欄を「無」に変更を行うよう依頼し、データベース制御手段１２の安全性設定情報操作部１２４は、安全性設定情報を変更する。
【０１６６】
ステップ４．安全性設定情報一時記憶部を変更：
アプリケーション応答手段２２の安全性設定情報操作部２２５は、安全性設定情報一時記憶部２５（図９参照）において、暗号文テーブル名又は暗号文カラム名を、対応する平文テーブル名又は平文カラム名に置き換え、復号後のテーブル名又は復号後カラム名の欄を「NULL」に変更し、テーブル名暗号化有無又はカラム名暗号化有無の欄を「無」に変更する。
【０１６７】
ステップ５．変更完了を返信：
アプリケーション応答手段２２は安全性設定手段２６に変更完了を返信する。
【０１６８】
なお、安全性設定手段２６において、テーブル名、カラム名を同時に暗号化「無」に変更してもよいし、あるいはテーブル名、カラム名を個別に変更してもよい。あるいは、複数のテーブル、又は複数のカラムをまとめて暗号化「無」に変更してもよい。この場合、上記ステップ１〜４の処理が、各テーブル／カラムに対して実行される。
【０１６９】
＜機密度設定処理＞
本実施形態では、既存のデータベース利用アプリケーション２１への改造を避ける（不要とする）ため、データの機密度を設定する操作は、安全性設定手段２６を介して行う。安全性設定手段２６は、アプリケーション応答手段２２に対して、現在の安全性設定情報記憶部１４の内容と、データベース１１の内容とを問い合わせる。安全性設定手段２６は一度に全部の情報を問い合わせるのではなく、全テーブル名の一覧、続いて、あるテーブルのカラム名と安全性設定の一覧、というように、部分的・段階的に問合せを行うようにしてもよい。
【０１７０】
アプリケーション応答手段２２は、安全性設定情報記憶部１４の内容を読み出し、メタデータが暗号化されている場合には、鍵利用手段２３により、暗号化されたメタデータを復号した上で安全性設定手段２６に送る。
【０１７１】
本実施形態によれば、安全性設定情報一時記憶部２５に保持されている情報を利用することで処理の効率化を可能としている。
【０１７２】
アプリケーション応答手段２２は、データベース制御手段１２を介してデータベース１１の内容を読み出し、メタデータ（テーブル名、カラム名）や、カラムデータが暗号化されている場合には、鍵利用手段２３により復号した上で、安全性設定手段２６に送り、安全性設定手段２６は、安全性設定情報やデータベース情報を表示する。
【０１７３】
データベース利用者は、メタデータに対する暗号化の有無の指定や、カラムデータの機密度（例えば、「低」、「中」、「高」の３段階）の指定を入力／出力装置２７から、安全性設定手段２６に入力する。
【０１７４】
安全性設定手段２６は、入力された機密度情報を、アプリケーション応答手段２２に送信する。アプリケーション応答手段２２は、安全性設定手段２６から送信された機密度情報を、安全性設定情報一時記憶部２５に反映させ、さらにデータベース制御手段１２を介して安全性設定情報記憶部１４に、データベース１１の内容を変更する。
【０１７５】
＜機密度の設定１＞
図１４は、データベース１１の格納された平文のカラムデータに機密度を設定する（平文のカラムデータを暗号化する）処理手順を説明する流れ図である。
【０１７６】
ステップ０．設定対象と設定内容（機密度）受信：
アプリケーション応答手段２２は、安全性設定手段２６から設定対象のテーブル名、カラム名と、設定内容（機密度）を受信する。
【０１７７】
ステップ１．暗号アルゴリズムを選択：
アプリケーション応答手段２２は、暗号プロトコル情報記憶部１３（図５参照）を参照し、入力された機密度（高、中、低）に対応する暗号アルゴリズム識別子の一覧を取得し、その中から１つを選択する。同一の機密度に対応して暗号アルゴリズム識別子の一覧の中から１つを選択する場合、処理効率が良いことが知られているものを選択する。アプリケーション応答手段２２で、暗号アルゴリズム識別子を自動で選択してもよいし、安全性設定手段２６を介して暗号アルゴリズム識別子の一覧を画面表示し、機密度の変更作業を行うユーザが選択するようにしてもよい。
【０１７８】
ステップ２．安全性設定情報を変更：
アプリケーション応答手段２２は、データベース制御手段１２の安全性設定情報操作部１２４に、安全性設定情報記憶部１４（図６参照）に設定対象のテーブル名、カラム名のカラムデータ機密度の欄を、入力された機密度に変更を依頼するとともに、カラムデータ暗号アルゴリズム識別子の欄を、ステップ１で選択したものに変更するよう依頼し、安全性設定情報記憶部１４の安全性設定情報を更新する。設定対象のテーブル名、カラム名が、暗号化されている場合、アプリケーション応答手段２２は、安全性設定情報一時記憶部２５の復号後テーブル名又は復号後カラム名から、安全性設定手段２６から入力された平文テーブル名又は平文カラム名に一致する名前を検出し、対応する暗号文テーブル名又は暗号文カラム名を取得し、安全性設定情報記憶部１４（図６参照）において、設定対象の暗号文テーブル名、暗号文カラム名を特定する。
【０１７９】
ステップ３．安全性設定情報一時記憶部を変更；
アプリケーション応答手段２２の安全性設定情報操作部２２５は、安全性設定情報一時記憶部２５に対し、設定対象のテーブル名、カラム名のカラムデータ機密度の欄をＮｕｌｌから、入力された機密度に変更するとともに、カラムデータ暗号アルゴリズム識別子の欄を、ステップ１で選択したものに変更する。
【０１８０】
ステップ４．設定対象のカラムデータを取得：
アプリケーション応答手段２２は、データベース制御手段１２に対して、設定対象のテーブル名、カラム名のカラムデータの取得を依頼し、カラムデータを取得する。前述したように、カラムデータは、データベース１１中に、暗号文テーブル（図７（B）の暗号文テーブル名で参照される）として格納されている。データベースに該等するカラムのカラムデータがなければ、ステップ９へ制御を移す。
【０１８１】
ステップ５．カラムデータの暗号化、通し番号、平文、暗号文の作成：
アプリケーション応答手段２２は、取得したカラムデータ（平文カラムデータ）と、ステップ１で選択した暗号アルゴリズム識別子とを鍵利用手段２３に送り、カラムデータの暗号化を依頼する。アプリケーション応答手段２２は、得られた暗号文のカラムデータに、通し番号を付け、
［通し番号、平文カラムデータ、暗号文カラムデータ］
の組の一覧を作成する。
【０１８２】
ステップ６．暗号文テーブルの作成：
アプリケーション応答手段２２は、ステップ５で作成した
［通し番号、暗号文カラムデータ］
の組の一覧を格納するテーブルの作成をデータベース制御手段１２に依頼して、データベース１１に暗号文テーブル（暗号文テーブル名は、図７（Ｂ）に示すように、暗号文＿暗号アルゴリズム識別子）を作成する。
【０１８３】
ステップ７．暗号文テーブル情報表の更新：
アプリケーション応答手段２２は、暗号文テーブル情報表（図７（Ｂ）参照）に、
［設定対象のテーブル名、設定対象のカラム名、ステップ１で選択された暗号アルゴリズム識別子、作成した暗号文テーブルの名前］
の組を追加するように、データベース制御手段１２に依頼する。データベース制御手段１２は、暗号文テーブル情報表（図７（Ｂ）参照）に、
［テーブル名、カラム名、暗号アルゴリズム識別子、暗号文テーブル名］
の組を追加する。
【０１８４】
ステップ８．  平文カラムデータの置き換え：
アプリケーション応答手段２２は、データベース制御手段１２に対して、データベース操作対象カラムの平文カラムデータ（例えば図７（Ａ）のカラム名の「勤務地」のデータ）を、ステップ５で作成した
［通し番号、平文カラムデータ、暗号文カラムデータ］
の組で対応付けられた、通し番号で置き換えるように依頼する（図７（Ｃ）参照）。データベース制御手段１２は、暗号文テーブルにおいて、ID=１、２、・・・の各々に対して、ステップ５で暗号化された暗号文カラムデータを対応させて格納する（図７（Ｄ）乃至（Ｆ）の格納形式参照）。
【０１８５】
ステップ９．変更完了を返信：
アプリケーション応答手段２２は、安全性設定手段２６に変更完了を返信する。
【０１８６】
なお、図１４の手順は、データベース１１に既に格納されている平文のカラムデータを機密度に対応した暗号アルゴリズムで暗号化しデータベース１１に格納する場合のほかに、アプリケーション応答手段２２に入力されたデータベース操作命令にて平文カラムデータをデータベース１１に格納する場合（例えば、新規に登録するカラムデータに対して、安全性設定手段２６により機密度が設定されたが、暗号アルゴリズムの選択等は行われていない場合等）にも適用可能である。
【０１８７】
＜機密度の設定２＞
前述した図１４の機密度設定手順は、データベース制御手段１２が図３又は図４の構成の場合における、データベース１１に格納された平文のカラムデータに機密度を設定する処理手順である。図２８は、データベース制御手段１２が図２６又は図２７の構成の場合における、データベース１１に格納された平文のカラムデータに機密度を設定する処理手順を説明する流れ図である。図２８において、ステップ１から９は、図１４のステップ１から９と同一である。図２８において、ステップ１で選択した暗号アルゴリズムが、HE1等の公開鍵暗号の場合、ステップ３の後、ステップ１０へ分岐する。
【０１８８】
ステップ１０：  アプリケーション応答手段２２は、ステップ１で選択された暗号アルゴリズムがHE1等の公開鍵暗号の場合、鍵利用手段２３を介して公開鍵情報を取得し、取得した公開鍵情報を、対応する暗号アルゴリズム識別子とともに、データベース制御手段１２に送信し、平文のカラムデータの暗号化を依頼する。
【０１８９】
ステップ１１：  データベース制御手段１２は、設定対象の平文カラムデータをデータベース１１から取得する。もし、該当するカラムデータがなければ、ステップ１６へ分岐する。
【０１９０】
ステップ１２：  データベース制御手段１２は、アプリケーション応答手段２２から受信した暗号アルゴリズム識別子、公開鍵情報を用いて、暗号演算部１２６にて、カラムデータを暗号化する。得られた暗号文のカラムデータに通し番号を付け、
［通し番号、平文カラムデータ、暗号文カラムデータ］
の組の一覧を作成する。
【０１９１】
ステップ１３：  データベース制御手段１２は、
［通し番号、暗号文カラムデータ］
の組の一覧を格納する暗号文テーブル（図７（Ｄ）乃至（Ｆ）参照）を作成する。
【０１９２】
ステップ１４：  データベース制御手段１２は、暗号文テーブル情報表（図７（Ｂ）参照）に、
［設定対象のテーブル名、設定対象のカラム名、ステップ１で選択された暗号アルゴリズム識別子、ステップ１２で作成した暗号文テーブルの名前］
の組を追加する。
【０１９３】
ステップ１５：  データベース制御手段１２は、操作対象のカラムの平文カラムデータを、ステップ１２作成した、
［通し番号、平文カラムデータ、暗号文カラムデータ］
の組で対応付けられた通し番号に置き換え、データベース１１に格納する。
【０１９４】
ステップ１６：  データベース制御手段１２は、平文のカラムデータの暗号化が完了したことを、アプリケーション応答手段２２に返信する。アプリケーション応答手段２２は、安全性設定手段２６に変更完了を返信する（ステップ９）。
【０１９５】
＜機密度の変更＞
カラムデータの機密度の指定を安全性設定情報記憶部１４、安全性設定情報一時記憶部２５、データベース１１に反映する処理において、機密度が既に設定されている場合について、以下に説明する。
【０１９６】
アプリケーション応答手段２２は、安全性設定情報記憶部１４を参照し、指定されたカラムに設定されているカラムデータ機密度情報を取得し、新たに指定された機密度と比較し、機密度が同じ場合には特に処理は行わない。新たに指定された機密度の方が、安全性設定情報記憶部１４に設定されているカラムデータ機密度よりも低い場合、安全性設定情報のカラムデータ機密度の欄を新たに指定された機密度に変更する。
【０１９７】
安全性設定手段２６で指定された機密度の方が、安全性設定情報記憶部１４に設定されているカラムデータ機密度よりも高い場合、図１５のステップ４以下の処理を行う。
【０１９８】
図１５は、アプリケーション応答手段２２において、安全性設定手段２６から入力された設定対象、設定内容を反映させる処理の流れを説明する図である。図１５を参照して、設定されている機密度を変更する（より高い値に変更する）処理（アプリケーション応答手段２２の処理）について説明する。
【０１９９】
ステップ０．設定対象と設定内容（機密度）受信：
アプリケーション応答手段２２は、安全性設定手段２６から設定対象のテーブル名、カラム名と、設定内容（機密度の変更）を受信する。
【０２００】
ステップ１．設定済みの暗号アルゴリズム識別子一覧を取得：
アプリケーション応答手段２２は、データベースシステム１０の安全性設定情報記憶部１４（図６参照）から、入力された設定対象テーブル名、カラム名で指定されているカラムデータの暗号化に用いられている暗号アルゴリズム識別子の一覧を取得する。なお、設定対象のテーブル名、カラム名が、暗号化されている場合、アプリケーション応答手段２２は、安全性設定情報一時記憶部２５の復号後テーブル名又は復号後カラム名から、安全性設定手段２６から入力された平文テーブル名又は平文カラム名に一致する名前を検出し、対応する暗号文テーブル名又は暗号文カラム名を取得し、安全性設定情報記憶部１４（図６参照）において、設定対象の暗号文テーブル名、暗号文カラム名を特定する。
【０２０１】
ステップ２．指定された機密度に対応する暗号アルゴリズム識別子の一覧を取得：
アプリケーション応答手段２２は、データベースシステム１０の暗号プロトコル情報記憶部１３（図５）を参照し、新たに入力された機密度に対応する暗号アルゴリズム識別子の一覧を取得する。
【０２０２】
ステップ３．暗号アルゴリズム識別子の比較：
アプリケーション応答手段２２は、ステップ１で得られた暗号アルゴリズム識別子の一覧と、ステップ２で得られた新たな機密度に対応する暗号アルゴリズム識別子の一覧を比較照合する。
【０２０３】
ステップ４．新たな暗号文テーブルの作成：
アプリケーション応答手段２２は、ステップ３で比較照合した結果、ステップ１で得られた暗号アルゴリズム識別子の一覧と、ステップ２で得られた新たな機密度に対応する暗号アルゴリズム識別子の一覧に、共通の暗号アルゴリズム識別子が存在しない場合、以下の手順で新たに暗号文テーブルを作成する。共通の暗号アルゴリズム識別子が存在する場合、同じ機密度の暗号アルゴリズムで暗号化されているデータが存在するため、以下の機密度の変更処理（新たな機密度情報に対応する暗号アルゴリズムでデータを再暗号化して暗号文テーブルを作成し暗号文テーブル情報を更新）は行わない。
【０２０４】
ステップ５．既存の暗号文テーブルから全ての暗号文を取得：
アプリケーション応答手段２２は、ステップ１で取得した暗号アルゴリズム識別子一覧に複数の暗号アルゴリズム識別子が含まれる場合、その中から暗号アルゴリズム識別子を１つ選択し（１つしか含まれない場合、当該１つの暗号アルゴリズム識別子が選択される）、データベース制御手段１２に、選択した暗号アルゴリズム識別子に対応する暗号文テーブルの内容をデータベース１１から取得するように依頼する。データベース制御手段１２は、暗号文テーブル情報表（図７（Ｂ）参照）を参照し、選択した暗号アルゴリズム識別子に対応する暗号文テーブル名を特定し、特定した暗号文テーブルの内容（IDと暗号文の対形式で格納される）を取得し、アプリケーション応答手段２２に送信する。
【０２０５】
ステップ６．暗号文を復号：
アプリケーション応答手段２２は、ステップ５で選択した暗号アルゴリズム識別子と取得した暗号文を鍵利用手段２３に送信し、平文への復号を依頼する。
【０２０６】
ステップ７．新たな識別子の暗号アルゴリズムによる暗号文作成：
アプリケーション応答手段２２は、ステップ２で得られた機密度に対応する暗号アルゴリズム識別子の一覧にだけ含まれる暗号アルゴリズム識別子が複数存在する場合（ステップ１で取得した暗号アルゴリズム識別子一覧に含まれない）、その中から暗号アルゴリズム識別子を１つ選択し（ステップ２で得られた機密度に対応する暗号アルゴリズム識別子の一覧に１つの暗号アルゴリズム識別子しか含まれない場合、当該１つの暗号アルゴリズム識別子が選択される）、ステップ６で得た平文とともに、鍵利用手段２３に送信し、新たな識別子の暗号アルゴリズムによる暗号化を依頼する。そして、新たな
［通し番号、平文、暗号文］
の組の一覧を作成する。
【０２０７】
ステップ８．暗号文テーブルの作成：
アプリケーション応答手段２２は、データベース制御手段１２に対し、
［通し番号、暗号文］
の組の一覧を格納する暗号文テーブルの作成を依頼し、暗号文テーブル（図７（Ｄ）乃至（Ｆ）の格納形式参照）を作成する。
【０２０８】
ステップ９．暗号文テーブル情報表の更新：
アプリケーション応答手段２２は、データベース制御手段１２に対して、暗号テーブル情報表（図７（Ｂ）参照）に、新たなテーブルを追加するため、
［対象テーブル名、対象カラム名、新たな暗号アルゴリズム識別子、ステップ８で作成された暗号文テーブル名］
の組を追加するように依頼する。
【０２０９】
ステップ１０．指定された機密度を満たさない暗号テーブルの削除：
ステップ１だけに含まれる暗号アルゴリズム識別子について、暗号文テーブル情報表（図７（Ｂ）参照）を参照して、対応する暗号文テーブル名を特定し、データベース１１から、該当する暗号文テーブルと、暗号文テーブル情報表の対応部分（削除対象の暗号文テーブルのテーブル名を含む行（エントリ））を削除するように、データベース制御手段１２に依頼する。この操作により、機密度の変更が指定されたカラムデータに関して、新たに指定された機密度よりも低い機密度の暗号アルゴリズムで暗号化された暗号カラムデータがデータベース１１から削除される。
【０２１０】
安全性設定手段２６でカラムデータ機密度を現在設定されている機密度よりも低い値に設定する場合も、上記と同様にして行われる。新たに指定された機密度と同じ機密度の暗号アルゴリズムで暗号化されているデータが存在する場合、新たに指定された機密度に対応する暗号アルゴリズムで再暗号化し、暗号文テーブルを作成する処理は行わない。
【０２１１】
＜データ追加処理＞
次に、データベース１１にカラムデータを新たに追加する場合の処理手順の一例を説明する。図１６は、アプリケーション応答手段２２において、データベース１１内において既に作成されたテーブルに、データを追加する処理を説明する流れ図である。
【０２１２】
ステップ０．  データ追加指示を受信：
アプリケーション応答手段２２において、データベース利用アプリケーション２１から入力されたデータベース操作命令が、例えばSQLの
INSERT文（INSERT INTO  （列名１、列名２・・・）  VALUES  （値１、値２・・・）
等のデータ追加指示であることを認識する。
【０２１３】
ステップ１．  メタデータ暗号化の有無の確認：
アプリケーション応答手段２２は、データベースシステム１０の安全性設定情報記憶部１４や安全性設定情報一時記憶部２５を参照し、追加対象のテーブル名やカラム名がデータベース１１で暗号化されているか否か確認する。
【０２１４】
ステップ２．平文メタデータの暗号文への置き換え：
データ追加指示のデータベース操作命令で指定されたテーブル名、カラム名が暗号化されている場合、アプリケーション応答手段２２は、安全性設定情報一時記憶部２５に復号後テーブル名、復号後カラム名の欄の平文のテーブル名、カラム名に対応する暗号文のテーブル名、カラム名を取得し、上記INSERT文等のデータ追加指示に含まれている平文のテーブル名、平文のカラム名を、取得した暗号文テーブル名、暗号文カラム名に置き換える。
【０２１５】
アプリケーション応答手段２２は、安全性設定情報記憶部１４又は安全性設定情報一時記憶部２５を参照し、追加対象のカラムについて、カラムデータ機密度と、暗号アルゴリズム識別子を取得する。
【０２１６】
ステップ３．設定済み機密度の確認：
アプリケーション応答手段２２は、安全性設定情報記憶部１４又は安全性設定情報一時記憶部２５において、該等するテーブル名、カラム名のカラムデータ機密度がＮｕｌｌの場合（機密度が設定されていない場合）、ステップ８へ制御を移す。一方、カラムデータ機密度が設定されている場合、アプリケーション応答手段２２は、次のステップ４を実行する。
【０２１７】
ステップ４．設定済機密度に応じた暗号データの作成：
アプリケーション応答手段２２は、カラムデータ機密度と暗号アルゴリズム識別子が設定されている場合、設定されている全ての暗号アルゴリズム識別子について、追加する平文データと、暗号アルゴリズム識別子とを鍵利用手段２３に送り、平文データを、設定された暗号アルゴリズムで暗号化した
［暗号アルゴリズム識別子、暗号データ］
の組のリストを作成する
【０２１８】
ステップ５．暗号アルゴリズム識別子と暗号データとを含むデータ追加依頼：
アプリケーション応答手段２２は、
追加対象のテーブル名、カラム名、
ステップ４で得られた
［暗号アルゴリズム識別子、暗号データ］
をデータベース制御手段１２に送信し、データベース１１への追加を依頼する。
【０２１９】
ステップ６．暗号文テーブルへの暗号データ追加：
データベース制御手段１２は、追加対象のカラムに格納されている通し番号の最大値を取得し、通し番号の最大値＋１を追加用IDの開始番号IDxとする。
【０２２０】
データベース制御手段１２は、ステップ４で得られた全ての
［暗号アルゴリズム識別子、暗号データ］
について、暗号文テーブル情報表（図７（Ｂ））を参照し、追加対象のテーブル、カラムの指定された暗号アルゴリズム識別子に対応する暗号文テーブル名を取得する。
【０２２１】
そして、データベース制御手段１２は、得られた暗号文テーブルに、
［追加用ID、暗号データ］
の組を追加する。暗号文テーブルは、図７（Ｄ）乃至（Ｆ）等に示したように、IDと暗号データの対情報を記憶する。したがって、
[追加用ID、暗号文データ]
は暗号文テーブルの最後尾に追加される。追加するデータが複数の場合、追加用IDはその開始番号IDxから順に、IDx+1、IDx+2、・・・とインクリメントされる。
【０２２２】
ステップ７．対象テーブルのカラムに追加用IDを追加：
追加対象のテーブルのカラムに、カラムのデータとして、ステップ６で得られた追加用IDを追加する。例えば図７（Ｃ）のテーブル（暗号化後）のカラムの最後尾に追加用IDを追加する。追加するデータがＮ個の場合、IDx、IDx+1、IDx+2、・・、IDx+N-1が図７（Ｃ）のテーブル（暗号化後）のカラムの最後尾に追加され、IDの最大値はIDx+N-1に更新される。
【０２２３】
以上、ステップ４から７は、機密度が設定されている場合のデータ追加処理である。
【０２２４】
ステップ３において、機密度が設定されていない場合、以下の処理を行う。
【０２２５】
ステップ８．対象テーブルへのデータ追加依頼：
アプリケーション応答手段２２は、ステップ２で得られた追加対象のテーブル名、カラム名の暗号文への置き換えが行われた後のデータの追加指示を、データベース制御手段１２に送信し、データベース１１へのデータの追加を依頼する。
【０２２６】
ステップ９．対象テーブルへのデータ追加：
データベース制御手段１２は、アプリケーション応答手段２２から送信されたデータ追加指示に従ってデータベース１１にデータを追加する。
【０２２７】
以上、本実施形態における、安全性情報設定として、暗号化の有無の設定、及び機密度の設定の処理手順、データベース操作の一例としてカラムデータの追加操作の処理手順について、それぞれ流れ図を参照して説明した。以下では、本実施形態のシステムのいくつかの代表的な処理を説明する（ただし、処理に基本的に分岐等がないため、流れ図は参照しない）。
【０２２８】
＜アプリケーション応答手段の起動後の初期動作＞
図１において、アプリケーション応答手段２２を起動した後の初期動作について説明する。アプリケーション応答手段の初期動作では、以後の処理を効率化するため、起動後の初期動作として、データベースシステム１０に置かれている情報の一部をユーザシステム２０側に読み出す処理と、補助的な情報を生成する処理を行う。
【０２２９】
アプリケーション応答手段２２は、データベース制御手段１２を介して、データベースシステム１０の安全性設定情報記憶部１４の内容を読み出し、安全性設定情報一時記憶部２５に格納する。
【０２３０】
データベース１１のメタデータ（テーブル名、カラム名）が暗号化されている場合、アプリケーション応答手段２２は、鍵利用手段２３を介してそれらの暗号化されたメタデータを復号し、安全性設定情報一時記憶部２５の復号後テーブル名、復号後カラム名の欄に格納する。さらに、データベースシステム１０の暗号プロトコル情報記憶部１３の内容についても、アプリケーション応答手段２２の初期動作時に、ユーザシステム２０側に読み出し、記憶部に記憶保持するようにしてもよい。
【０２３１】
＜メタデータに対する操作の処理＞
データベース１１に新たなテーブルを追加したり、既存のテーブル名やカラム名を変更する操作（メタデータに対する操作）について説明する。データベース１１に新たなテーブルを追加する場合に、前述したように、安全性設定手段２６により安全性情報の設定が行われる。
【０２３２】
アプリケーション応答手段２２は、データベース利用アプリケーション２１からテーブル追加のデータベース操作命令が入力されると、安全性設定手段２６に通知する。安全性設定手段２６は、テーブル追加命令の内容を画面に表示し、データベース利用者に対して追加されるテーブルの安全性設定情報（テーブル名、カラム名の暗号化の有無、カラムデータの機密度）を入力するように促す。安全性設定手段２６は、データベース利用者から入力された安全性設定情報を、アプリケーション応答手段２２に送信する。
【０２３３】
アプリケーション応答手段２２は、安全性設定手段２６から送信された安全性設定情報に従ってテーブル名、カラム名を暗号化した上で、テーブル追加のデータベース操作命令をデータベース制御手段１２に送信し、データベース１１にテーブルを作成する。
【０２３４】
アプリケーション応答手段２２は、安全性設定情報をデータベース制御手段１２に送信し、安全性設定情報記憶部１４に格納する。アプリケーション応答手段２２は、安全性設定情報一時記憶部２５に、安全性設定情報記憶部１４に格納する安全性設定情報と同じ安全性設定情報を、安全性設定情報一時記憶部２５に格納する。テーブル名、カラム名を暗号化した場合、復号後テーブル名、カラム名に暗号化前のテーブル名、カラム名を格納する。
【０２３５】
＜テーブル名、カラム名の変更＞
データベース１１に格納したテーブルのテーブル名やカラム名等のメタデータの設定内容の変更（暗号化「有」への変更、暗号化「無」への変更）は、すでに図１２、図１３を参照して説明した。以下では、テーブル名、カラム名の変更について説明する。
【０２３６】
データベース１１に格納済みの既存のテーブル名やカラム名を変更する場合、テーブル名やカラム名が暗号化されているか否かで処理を変える必要がある。
【０２３７】
アプリケーション応答手段２２は、テーブル名やカラム名を変更するデータベース操作命令を入力されると、安全性設定情報一時記憶部２５を検索し、変更対象となるテーブル名やカラム名の暗号化有無の設定が「有」であるか否か確認する。
【０２３８】
暗号化有無の設定が「無」であれば、そのまま通常のデータベース操作命令としてデータベース制御手段１２に送信し、データベース操作を実行する。また、安全性設定情報記憶部１４、安全性設定情報一時記憶部２５に格納されているテーブル名やカラム名もあわせて変更する。暗号化有無の設定が「有」であれば、以下の処理を行う。
【０２３９】
ステップ１：  アプリケーション応答手段２２は、指定された変更後の平文のテーブル名やカラム名を、鍵利用手段２３により暗号化し、変更後のテーブル名やカラム名に関して、
［平文のテーブル名やカラム名、暗号文のテーブル名やカラム名］
の組を作成する。
【０２４０】
ステップ２：  アプリケーション応答手段２２は、安全性設定情報一時記憶部２５を参照し、指定された変更対象の平文のテーブル名やカラム名に対応する、暗号文のテーブル名やカラム名を検索し、データベース１１に登録されている暗号文のテーブル名やカラム名を特定する。
【０２４１】
ステップ３：  アプリケーション応答手段２２は、データベース制御手段１２に対して、ステップ２で特定した、現在、データベース１１に登録されている暗号文のテーブル名やカラム名を、ステップ１で作成した変更後の暗号文のテーブル名やカラム名に置き換えるように、データベース操作命令を送信してデータベース１１のテーブル名やカラム名の変更を実行する。
【０２４２】
ステップ４：  アプリケーション応答手段２２は、安全性設定情報記憶部１４、安全性設定情報一時記憶部２５に記録されている、ステップ２で特定した、暗号文のテーブル名やカラム名を、ステップ１で作成した、暗号文のテーブル名やカラム名に置き換える。また、安全性設定情報一時記憶部２５に記録されている、対応する平文のテーブル名やカラム名（復号後テーブル名やカラム名）を、指定された変更後の平文のテーブル名やカラム名に置き換える。
【０２４３】
＜既存テーブルへのデータの追加＞
データベース１１に格納済みの既存テーブルのカラムへのデータの追加は、図１６を参照して説明した。追加データを暗号化し、指定されたテーブルの指定カラムのテータとして、現在のテーブルの行数（通し番号の最大値）に、＋１した数値（追加用ID）を追加し、暗号文テーブル情報表（図７（Ｂ））を参照して、追加データに対応する暗号アルゴリズムの暗号文テーブル（暗号アルゴリズムが複数存在する場合、複数の暗号アルゴリズムにそれぞれ対応した複数の暗号文テーブル）に、追加用IDと暗号文の対を追加する。
【０２４４】
＜既存テーブルのデータの変更＞
データベース利用アプリケーション２１から入力されたデータベース操作命令がデータ変更の場合のアプリケーション応答手段２２、データベース制御手段１２の処理を説明する。データ変更は、例えばSQL命令（UPDATE テーブル名  SET ＜列＞＝＜値＞）等に対応する。
【０２４５】
ステップ１：  アプリケーション応答手段２２は、安全性設定情報記憶部１４（又は安全性設定情報一時記憶部２５）を参照し、追変更対象のテーブル名、カラム名が暗号化されているか否か確認する。
【０２４６】
ステップ２：  追変更対象のテーブル名、カラム名が暗号化されている場合、アプリケーション応答手段２２は、安全性設定情報一時記憶部２５を参照して、データベース１１上での暗号文のテーブル名やカラム名を取得し、アプリケーション応答手段２２に入力されたデータベース操作命令の対応する（平文の）テーブル名やカラム名を取得した暗号文のテーブル名やカラム名に置き換える。
【０２４７】
ステップ３：  アプリケーション応答手段２２は、安全性設定情報記憶部１４（又は安全性設定情報一時記憶部２５）を参照し、変更対象のカラムデータに機密度が設定されているか否か確認する。
【０２４８】
ステップ４：  安全性設定情報記憶部１４（又は安全性設定情報一時記憶部２５）の該当テーブル名、該当カラム名のカラムデータ機密度がＮｕｌｌの場合（機密度が設定されていない場合）、前述のテーブル名やカラム名の置き換えだけを行ったデータベース操作命令をデータベース制御手段１２に送信して変更を実行する。
【０２４９】
安全性設定情報記憶部１４（又は安全性設定情報一時記憶部２５）の該当テーブル名、該当カラム名のカラムデータ機密度が設定されている場合、以下の処理を行う
【０２５０】
ステップ５：  アプリケーション応答手段２２は、安全性設定情報記憶部１４（又は安全性設定情報一時記憶部２５）を参照して、対象のカラムの暗号アルゴリズム識別子を全て取得する。
【０２５１】
ステップ６：  アプリケーション応答手段２２は、変更対象の平文のデータを、取得した全ての識別子の暗号アルゴリズムで暗号化する。
【０２５２】
ステップ７：  アプリケーション応答手段２２は、データベース制御手段１２に対して、変更対象のテーブル名やカラム名、変更対象行の指定、作成した全ての
［暗号アルゴリズム識別子、暗号文］
の組を送信する。
【０２５３】
ステップ８：  データベース制御手段１２は，変更対象のテーブル・カラムを参照して変更対象の行に格納された通し番を取得する。
【０２５４】
ステップ９：  データベース制御手段１２は、暗号文テーブル情報を参照して暗号アルゴリズムごとの暗号文テーブルを特定し、ステップ４で取得した通し番号に対応する行の暗号文をステップ７で受信した暗号文に書き換える。
【０２５５】
＜既存テーブルからのデータの削除＞
データベース利用アプリケーション２１から入力されたデータベース操作命令がデータベース１１からのデータ削除の場合におけるアプリケーション応答手段２２とデータベース制御手段１２の処理を説明する。
【０２５６】
ステップ１：  アプリケーション応答手段２２は、安全性設定情報記憶部１４（又は安全性設定情報一時記憶部２５）を参照し、操作対象のテーブル名が暗号化されているか否か確認する。
【０２５７】
ステップ２：  操作対象のテーブル名が暗号化されていない場合、アプリケーション応答手段２２は、そのまま通常のデータベース操作命令としてデータベース制御手段１２に送信する。
【０２５８】
ステップ３：  操作対象のテーブル名が暗号化されている場合、アプリケーション応答手段２２は、安全性設定情報一時記憶部２５を参照して、データベース１１上での暗号文のテーブル名を取得し、操作対象のテーブル名を、取得した暗号文のテーブル名に置き換えた上でデータベース制御手段１２に送信する。
【０２５９】
ステップ４：  データベース制御手段１２は、アプリケーション応答手段２２からのデータベース操作命令に従って、データの削除を行う。このとき、削除対象のテーブルに、データの暗号化が行われているカラムが存在するか否か確認し、暗号化が行われているカラムが存在する場合は、対応する暗号文テーブルのデータも削除する。
【０２６０】
＜既存テーブルのデータに対する検索や演算＞
データベース操作命令がデータベース１１内の既存テーブルのデータに対する検索や演算である場合の処理を以下に説明する。
【０２６１】
ステップ１：  アプリケーション応答手段２２は、安全性設定情報記憶部１４（又は安全性設定情報一時記憶部２５）を参照し、操作対象のテーブル名、カラム名が暗号化されているか否か確認する。
【０２６２】
ステップ２：  操作対象のテーブル名やカラム名が暗号化されている場合、アプリケーション応答手段２２は、安全性設定情報一時記憶部２５を参照してデータベース１１上での暗号文のテーブル名やカラム名を取得し、アプリケーション応答手段２２に入力されたデータベース操作命令の対応する平文のテーブル名やカラム名を、取得した暗号文のテーブル名やカラム名に置き換える。
【０２６３】
ステップ３：  アプリケーション応答手段２２は、安全性設定情報記憶部１４又は安全性設定情報一時記憶部２５を参照し、操作対象のカラムのデータに、カラムデータ機密度が設定されているか否か確認する。
【０２６４】
操作対象のカラムに機密度が設定されていない場合（カラムデータは暗号化されていない）、以下のステップ４〜６の処理を行う。
【０２６５】
ステップ４：  アプリケーション応答手段２２は、前述のテーブル名やカラム名の置き換えを行ったデータベース操作命令（検索や演算）をデータベース制御手段１２に送信する。
【０２６６】
ステップ５：  データベース制御手段１２は、アプリケーション応答手段２２から受信したデータベース操作（検索や演算）を実行し、実行結果をアプリケーション応答手段２２に返信する。
【０２６７】
ステップ６：  データベース制御手段１２は、データベース操作命令（検索や演算）に含まれるテーブル名やカラム名が暗号文に置き換えられている場合、データベース操作の実行結果に含まれるテーブル名やカラム名を、対応する平文のテーブル名やカラム名に再度置き換えた上で、アプリケーション応答手段２２に送る。
【０２６８】
操作対象のカラムのカラムデータ機密度が設定されている場合のデータベース１１内の既存テーブルのデータに対する検索や演算について以下に説明する。
【０２６９】
ステップ７：  アプリケーション応答手段２２は、安全性設定情報記憶部１４を参照し、操作対象のカラムの暗号化に用いられている暗号アルゴリズムの識別子を取得する。
【０２７０】
ステップ８：  アプリケーション応答手段２２は、暗号プロトコル情報記憶部１３を参照し、
［処理内容、操作対象のカラムに設定されている機密度、操作対象のカラムの暗号化に用いられている暗号アルゴリズム識別子］
の３つ組（triplet）に対応する暗号プロトコル識別子（図５参照）を取得する。
【０２７１】
ステップ９：  アプリケーション応答手段２２の暗号プロトコル処理実行部２２２に、
［暗号プロトコル識別子と、操作対象カラム、処理内容］
を入力する。
【０２７２】
ステップ１０：  アプリケーション応答手段２２の暗号プロトコル処理実行部２２２は、入力された暗号プロトコル識別子に応じて、データベース制御手段１２と通信を行ってデータベース操作を実行し、実行結果を得る。なお、暗号プロトコル処理の具体的な内容は、暗号プロトコルによって異なる。
【０２７３】
ステップ１１：  データベース制御手段１２は、データベース操作命令に含まれるテーブル名やカラム名の置き換えを行っていれば、得られた実行結果の含まれる暗号文のテーブル名やカラム名を、平文のテーブル名やカラム名に再度置き換えた上で、実行結果をアプリケーションに送る。
【０２７４】
＜データに機密度を設定する処理の動作例＞
次に、本実施形態においてデータべース１１内のテーブルに、「社員表」のカラムと「勤務地」のカラムを、機密度「中」を設定する場合について説明する。
【０２７５】
ステップ１．暗号アルゴリズムの選択：
アプリケーション応答手段２２は、安全性設定手段２６でユーザから指定された機密度に対応する暗号アルゴリズムの選択する。図１７に示すように、暗号プロトコル情報記憶部１３を参照し、機密度「中」に対応する暗号アルゴリズム識別子の一覧（「SE1」、「AES」、「HE1」）を取得する。暗号アルゴリズム識別子の一覧（「SE1」、「AES」、「HE1」）の中から、１つアルゴリズムを選択する。ここでは、暗号文作成の効率性を重視して「AES」を選ぶものとする。
【０２７６】
ステップ２．安全性設定情報記憶部の変更：
データベースシステム１０の安全性設定情報操作部１２４は、図１８に示すように、安全性設定情報記憶部１４のテーブル名「社員表」、カラム名「勤務地」の情報を格納している行について、
「カラムデータ暗号化有無」の欄を「無」から「有」に、
「カラムデータ機密度」の欄を「NULL」から「中」に、
「カラムデータ暗号アルゴリズム識別子」の欄を「NULL」から「AES」
に変更する。
【０２７７】
ステップ３．安全性設定情報一時記憶部２５の変更：  
アプリケーション応答手段２２の安全性設定情報操作部２２５は、安全性設定情報一時記憶部２５のテーブル名「社員表」、カラム名「勤務地」の情報を格納している行について、安全性設定情報記憶部１４と同様に変更する。すなわち、図１９に示すように、テーブル名「社員表」について、カラム名「勤務地」の情報を格納している行について、
「カラムデータ暗号化有無」の欄を「無」から「有」に、
「カラムデータ機密度」の欄を「NULL」から「中」に、
「カラムデータ暗号アルゴリズム識別子」の欄を「NULL」から「AES」
に変更する。
【０２７８】
ステップ４．対象カラムデータの取得：
テーブル「社員表」は、図２０（Ａ）に示すものとする。データベース制御手段１２は、テーブル「社員表」からカラム「勤務地」のデータの一覧を取得し、アプリケーション応答手段２２に送信する。このとき、テーブル「社員表」の列を一意に識別する主キーのカラムについてもあわせて取得する。ここでは、「社員番号」を主キーとする。
【０２７９】
ステップ５．取得したカラムデータの暗号化：
アプリケーション応答手段２２は、「勤務地」のカラムのデータを鍵利用手段２３により暗号化し、暗号文を、元の平文、社員番号と対応付け、図２０（Ｂ）に示すように、通し番号１、２、３、・・・をつけたリストを作る。なお、このリストは、アプリケーション応答手段２２内の記憶部で保持する。
【０２８０】
ステップ６．暗号文テーブルの作成：
データベース制御手段１２に、ステップ５で作成されたリスト（図２１（Ａ））のうち、暗号文（平文「本社」の暗号文「0x3d8・・・」、平文「多摩川」の暗号文「０ｘ９６２・・・」）と、通し番号（１、２、・・・）の組のリストを送付し、暗号文テーブルを作成して格納する。図２１（Ｂ）に示すように、暗号文テーブル名は、「暗号文＿AES＿１」とする。暗号文テーブルは、通し番号と暗号文の対からなる。
【０２８１】
ステップ７．暗号文テーブル情報表の更新：
図２１（Ｃ）に示すように、暗号文テーブル情報表に、テーブル名「社員表」、カラム名「勤務地」、暗号アルゴリズム「AES」、暗号文テーブル名「暗号文＿AES＿１」を格納する。
【０２８２】
ステップ８．平文のカラムデータの置き換え：
ステップ５で作成された、社員番号と通し番号の組のリスト（図２２（Ａ））をデータベース制御手段１２に送付し、図２２（Ｂ）に示すように、テーブル「社員表」のカラム「勤務地」の値を、通し番号（１、２、・・・）に置き換える。通し番号への置き換えが完了したら、ステップ５で作成されたリスト（図２２（Ａ））は削除する。図２２（Ｃ）、（Ｄ）の暗号文テーブル、暗号文テーブル情報表は、図２１（Ｂ）、（Ｃ）の暗号文テーブル、暗号文テーブル情報表と同じである。
【０２８３】
＜平均値演算＞
次に、データベース１１に記憶された暗号化データの平均値を求める演算操作の一例について説明する。図２３は、この例で参照する安全性設定情報一時記憶部２５の例を示す図である。データベース１１に記憶されているテーブル名「勤務時間管理表」のカラム名「残業時間」のデータが暗号化されているとき、その平均値を求める処理について説明する。
【０２８４】
テーブル名「勤務時間管理表」において、カラム「勤務時間」のカラムデータと第１のカラム「残業時間」のカラムデータは、カラムデータ機密度がいずれも「中」に設定されており、識別子「AES」の暗号アルゴリズムで暗号化されている。また、第２のカラム「残業時間」のカラムデータは、識別子「HE1」の暗号アルゴリズムで暗号化されている。なお、データベースシステム１０側の安全性設定情報記憶部１４は、図２３の安全性設定情報一時記憶部２５から、「復号後テーブル名」と「復号後カラム名」を除いたものとなる。
【０２８５】
テーブル名「勤務時間管理表」の本体は、例えば図２４（Ａ）に示すような内容とする。なお、「勤務時間」、「残業時間」の通し番号（ID）１、２、３・・・は、暗号文テーブルにおいて、暗号文と対で格納される通し番号（ID）１、２、３・・である。「勤務時間」の暗号データを格納する暗号文テーブル「暗号文＿AES＿１」、「残業時間」の暗号データを格納する暗号文テーブル「暗号文＿AES＿２」、「暗号文＿HE1＿１」表の例は、図２４（Ｃ）、（Ｄ）、（Ｅ）、のようなものとなり、これらの対応関係を規定する暗号文テーブル情報表は、例えば図２４（Ｂ）に示すようなものとなる。
【０２８６】
暗号プロトコル情報記憶部１３は、図２５のようになっているものとする。暗号アルゴリズム識別子OPE1は、Oder Preserving Symmetric Encryption（順序保存対称暗号）アルゴリズム（共通鍵方式）の１つを表している。またHE1は、準同型暗号（Homomorphic Encryption）の１つ、SE1はSearchable Encryptionの１つを示している。
【０２８７】
データベース利用アプリケーション２１から入力されたデータベース操作命令が、平均値演算操作（例えばSQL文： SELECT AVG（カラム名）  FROM  テーブル名）である場合、アプリケーション応答手段２２は、メタデータ（テーブル名、カラム名）の暗号化の有無を判定する。アプリケーション応答手段２２は、図２３の安全性設定情報一時記憶部２５を参照し、テーブル名「勤務時間管理表」のカラム名「残業時間」に対応する情報を取得する。「テーブル名暗号化有無」、「カラム名暗号化有無」の欄を参照し、どちらも暗号化が「無」に設定されていることを確認する。アプリケーション応答手段２２は、この場合、メタデータの置き換え処理は行わない。
【０２８８】
次に、アプリケーション応答手段２２は、図２３の安全性設定情報一時記憶部２５のテーブル名「勤務時間管理表」のカラム名「残業時間」の「カラムデータ機密度」の欄を参照し、カラムデータ機密度が「中」が設定されていることを確認する。そこで、暗号プロトコル処理を伴った処理を行う。
【０２８９】
アプリケーション応答手段２２は、図２３の安全性設定情報一時記憶部２５のテーブル名「勤務時間管理表」の「カラムデータ暗号アルゴリズム識別子」の欄を確認し、暗号化に用いられている暗号アルゴリズム識別子「AES」と「HE1」を取得する。
【０２９０】
アプリケーション応答手段２２は、暗号プロトコル情報記憶部１３（図２５参照）を参照し、機密度「中」で処理内容「平均」に対応する暗号プロトコル識別子を、暗号アルゴリズム「AES」、「HE1」それぞれについて検索する。
【０２９１】
アプリケーション応答手段２２は、検索の結果、暗号アルゴリズム「HE1」について、暗号プロトコル識別子「HE1_AVG_M」を得る。
【０２９２】
アプリケーション応答手段２２の暗号プロトコル処理実行部２２２に対し、
暗号プロトコル識別子：「HE1_AVG_M」、
テーブル名：「勤務時間管理表」、
カラム名：「残業時間」、
暗号アルゴリズム：「HE1」、
処理内容：「平均」
を入力する。
【０２９３】
暗号プロトコル処理実行部２２２は、入力された暗号プロトコル識別子に応じて、データベース制御手段１２の暗号プロトコル処理実行部１２２とやりとりして暗号プロトコル処理を行う。具体的な動作は、暗号プロトコルやその実装如何によって様々である（特に制限されないが、以下に動作の１例を挙げる）。暗号プロトコル処理実行部２２２での実行結果をデータベース利用アプリケーション２１に返す
【０２９４】
ユーザシステム２０側の暗号プロトコル処理実行部２２２は、操作対象のテーブル名「勤務時間管理表」、カラム名「残業時間」、暗号アルゴリズム識別子「HE1」、暗号プロトコル識別子「HE1_AVG_M」の４つを、データベース制御手段１２の暗号プロトコル処理実行部１２２に送付する。
【０２９５】
暗号プロトコル処理実行部１２２は、受信した暗号プロトコル識別子「HE1_AVG_M」で指定される処理手順に従い、以下のように動作する。
【０２９６】
暗号プロトコル処理実行部１２２は、暗号文テーブル情報表（図２４（Ｂ））を参照し、テーブル「勤務時間管理表」のカラム「勤務時間」について、暗号アルゴリズム「HE1」で暗号化されたデータが格納されているテーブル名「暗号文_HE1_1」を取得する。
【０２９７】
暗号プロトコル処理実行部１２２は、続いて、「暗号文_HE1_1」のカラム「暗号文」格納された暗号文データの全てとデータ数を取得する。
【０２９８】
暗号プロトコル処理実行部１２２は、得られた暗号文データを復号することなく、平文の総和の暗号文を計算する。Paillier暗号等の加法準同型暗号では、例えば、平文ｍ１の暗号文Ｅ（ｍ１）と平文ｍ２の暗号文Ｅ（ｍ２）に関して、ｍ１＋ｍ２の暗号文Ｅ（ｍ１＋ｍ２）は、Ｅ（ｍ１）＋Ｅ（ｍ２）＝Ｅ（ｍ１＋ｍ２）が成り立つ。したがって、総和の暗号文Ｅ（Σｍｉ）はΣＥ（ｍｉ）で計算される。
【０２９９】
データベース制御手段１２の暗号プロトコル処理実行部１２２は、得られた総和の暗号文とデータ数とを、処理・通信制御部１２５（図３参照）を介して、ユーザシステム２０側の暗号プロトコル処理実行部２２２（図８参照）に送付する。なお、前述したＲＳＡ暗号やElgamal暗号は、乗法準同型である。したがって、演算操作（処理内容識別子）に対応して暗号アルゴリズムが設定される。例えば図２５の暗号プロトコル情報記憶部１３の例では、「平均」の処理内容演算子に対して準同型暗号アルゴリズムHE1（この場合、HE1はPaillier暗号等）が設定されている。
【０３００】
ユーザシステム２０側の暗号プロトコル処理実行部２２２では、データベース制御手段１２から受信した総和の暗号文と、暗号アルゴリズム識別子「HE1」を鍵利用手段２３に送付し、総和の暗号文を復号し、総和の平文を得る。そして、暗号プロトコル処理実行部２２２は、総和（平文）をデータ数（平文）で除することで平均値（平文）を求める。求めた平均値を、データベース操作命令（平均値）の発行元のデータベース利用アプリケーション２１に返す。
【０３０１】
上記平均値以外でも、加算又は乗算など複合算術演算の一部の演算が、加法準同型暗号アルゴリズム、又は、乗法準同型暗号アルゴリズムを用いて、暗号文のまま演算処理が可能である場合には、データベース制御手段１２の暗号プロトコル処理実行部１２２では、暗号文のまま演算を行った結果（暗号文）を、アプリケーション応答手段２２の暗号プロトコル処理実行部２２２に返し、アプリケーション応答手段２２では、処理結果の暗号文を、鍵利用手段２３で平文に復号化し、前記複合算術演算の残りの演算を、平文で行い、演算結果を、データベース利用アプリケーション２１に返す。かかる構成により、処理を効率化している。また、データベース制御手段１２において、データベース操作命令の演算が、加算、又は乗算以外の演算の場合（例えば、加減乗除等の復号演算、大小比較演算や、論理演算等）、暗号文のままでの演算処理が不可能である場合、データベース１１の演算対象データを、暗号文のまま、アプリケーション応答手段２２に送信する。アプリケーション応答手段２２では、鍵利用手段２３を用いて演算対象暗号データを平文に復号化し、該平文のデータに対して前記演算を行い、演算結果を、データベース利用アプリケーション２１に返す。かかる構成により任意の演算に対応可能としている。
【０３０２】
上記実施形態では、データベース操作命令の一例としてSQL命令を例示したが、データベース操作命令はSQL命令に限定されるものでないことは勿論である。
【０３０３】
上記した実施形態の少なくとも一部は例えば以下のように付記される（ただし以下に限定されない）。
【０３０４】
(付記１）
データベースと、データベース操作の実行を制御するデータベース制御手段と、を備えたデータベースシステムと、
前記データベース制御手段にネットワークを介して接続するユーザシステムと、
を備え、
前記ユーザシステムが、
暗号化と復号化のための鍵情報を管理する鍵利用手段と、
前記データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定する安全性設定手段と、
前記安全性の設定に関する情報を記憶する第１の記憶部と、
前記データベースシステムに向けて発行されるデータベース操作命令を受け取り、前記第１の記憶部の情報を参照して、前記データベース操作命令で扱うデータ及び／又はメタデータに関して暗号化の要否を判別し、
暗号化が必要な場合、前記データベース操作命令のデータ及び／又はメタデータとして、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報により暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベース制御手段に送信してデータベース操作を実行させ、
暗号化が不要な場合には、前記データベース操作命令をそのまま前記データベース制御手段に送信して前記データベース制御手段に前記データベース操作を実行させ、
前記データベース制御手段から送信されたデータベース処理結果を受け取り、前記データベース処理結果のデータ及び／又はメタデータの変換又は復号化が必要な場合には、前記変換、又は前記鍵利用手段の鍵情報による復号化を行った結果を、前記データベース操作命令の応答として前記データベース操作命令の発行元に返すアプリケーション応答手段と、
を備えている、ことを特徴とするデータベース暗号化システム。
【０３０５】
(付記２）
前記安全性設定手段は、
前記メタデータの暗号化の有無の設定又は変更、
前記データの暗号化の有無の設定又は変更、
前記安全性の程度を表す機密度情報の設定又は変更
の少なくとも１つを行う、ことを特徴とする付記１記載のデータベース暗号化システム。
【０３０６】
(付記３）
前記第１の記憶部は、前記メタデータの暗号化の有無、前記データの暗号化の有無、前記データの安全性の程度を表す機密度情報、前記機密度情報に対応した暗号アルゴリズムの識別情報を保持する、ことを特徴とする付記２記載のデータベース暗号化システム。
【０３０７】
(付記４）
前記第１の記憶部は、前記データベースに格納されるテーブル名、カラム名を含む前記メタデータが暗号化される場合、暗号化したテーブル名、カラム名を保持するとともに、暗号化前の平文のテーブル名、平文のカラム名を、復号後テーブル名、復号後カラム名としてそれぞれ記憶保持する、ことを特徴とする付記３記載のデータベース暗号化システム。
【０３０８】
(付記５）
前記アプリケーション応答手段は、前記データベース処理結果のメタデータのうちテーブル名とカラム名の少なくとも一方が暗号化されている場合、前記第１の記憶部の前記復号後テーブル名と前記復号後カラム名に保持された平文のテーブル名と平文のカラム名の少なくとも一方を取得する、ことを特徴とする付記４記載のデータベース暗号化システム。
【０３０９】
(付記６）
前記データベース制御手段は、前記アプリケーション応答手段から送信された前記データベース操作命令を受け、前記データベースに対して、暗号化されたデータに対する暗号プロトコルを用いたデータベース操作、又は、平文データに対するデータベース操作を実行し、処理結果を、前記データベース処理結果として、前記アプリケーション応答手段に返す、ことを特徴とする付記１乃至５のいずれか一に記載のデータベース暗号化システム。
【０３１０】
(付記７）
前記データベース制御手段は、前記データベース操作命令の予め定められた所定の操作と演算について、前記データベースに格納された暗号文のデータを暗号文のまま操作又は演算を行い、暗号文の処理結果を、前記データベース処理結果として、前記アプリケーション応答手段に送信する、ことを特徴とする付記６記載のデータベース暗号化システム。
【０３１１】
(付記８）
前記データベースシステムは、前記データベースに格納されるテーブル名、カラム名を含む前記メタデータの暗号化の有無、データの暗号化の有無、データの安全性の程度を表す機密度情報、前記機密度情報に対応した暗号アルゴリズムの識別情報を記憶保持する第２の記憶部と、
前記データベース操作命令の処理内容と、機密度情報と、暗号アルゴリズムとを関連付ける暗号プロトコル識別情報を少なくとも記憶保持する第３の記憶部と、
を備えた、ことを特徴とする付記４乃至７のいずれか一に記載のデータベース暗号化システム。
【０３１２】
(付記９）
前記データベースが、前記第２及び／又は第３の記憶部として機能し、
前記第２及び／又は第３の記憶部に記憶される情報を前記データベース内のテーブルとして保持する、ことを特徴とする付記８記載のデータベース暗号化システム。
【０３１３】
(付記１０）
前記アプリケーション応答手段は、前記第１乃至第３の記憶部の少なくとも１つを参照して、前記データに対応する機密度情報に対応する暗号アルゴリズムを選択し、選択した暗号アルゴリズムと前記鍵利用手段の鍵情報を用いてデータを暗号化し前記データベース制御手段に送信する、ことを特徴とする付記８又は９記載のデータベース暗号化システム。
【０３１４】
(付記１１）
前記アプリケーション応答手段は、前記データベース操作命令で指定されたテーブル名、カラム名の暗号化の有無を、前記第１及び／又は第２の記憶部を参照して判別し、前記テーブル名とカラム名の少なくとも一方が暗号化されている場合には、前記データベース操作命令のテーブル名とカラム名の少なくとも一方を暗号文に置き換えた上で前記データベース制御手段に送信する、ことを特徴とする付記１０記載のデータベース暗号化システム。
【０３１５】
(付記１２）
前記データベース制御手段は、前記機密度情報に対応した暗号アルゴリズムで暗号化されるデータに対して、前記第３の記憶部の暗号プロトコル識別情報に基づき、前記データベース操作命令に対応した処理内容の暗号プロトコル処理を実行する暗号プロトコル処理実行部を備えている、ことを特徴とする付記１０記載のデータベース暗号化システム。
【０３１６】
(付記１３）
前記データベース制御手段は、前記データベース操作命令の演算操作について、前記データベースに暗号文で格納されている操作対象のデータが、予め定められた所定の準同型演算に対応した暗号アルゴリズムで暗号化されており、且つ、前記データベース操作命令の前記演算操作が前記所定の準同型演算を含む場合、前記操作対象の暗号化されたデータに対して暗号文のまま前記演算操作を行い、暗号文の演算結果を、前記データベース処理結果として、前記アプリケーション応答手段に送信し、
前記アプリケーション応答手段では、
（Ａ）前記データベース制御手段から送信された前記暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号した平文の演算結果を、前記データベース操作命令の発行元に返すか、
（Ｂ）前記データベース操作命令の演算操作が、さらに平文での演算を必要とするものである場合には、さらに前記平文での演算を行い、前記平文での演算結果を前記データベース操作命令の発行元に返し、
あるいは、
前記アプリケーション応答手段は、
（Ｃ）前記データベース制御手段から送信された前記暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号し、得られた平文の演算結果に対して、さらに平文での演算を行い、
（Ｄ）前記平文の演算結果を、前記鍵利用手段の鍵情報を用いて暗号化した上で、前記データベース制御手段に送信し、前記データベース制御手段にて、暗号文のまま演算操作を行い、
（Ｅ）前記データベース制御手段から送信された暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号して平文とし、
（Ｆ）前記平文での演算結果を前記データベース操作命令の発行元に返すか、前記平文の演算結果に対してさらに演算を行い、あるいは、さらに（Ｄ）と（Ｅ）の処理を少なくとも１回繰り返した上で、前記平文での演算結果を前記データベース操作命令の発行元に返す、ことを特徴とする付記１乃至１２のいずれか一に記載のデータベース暗号化システム。
【０３１７】
(付記１４）
前記データベース制御手段は、前記データベースに、暗号文で格納されている操作対象のデータが暗号文のままでは前記データベース操作命令の演算操作を行えない暗号アルゴリズムで暗号化されている場合、前記演算操作対象の暗号文のデータを、前記アプリケーション応答手段に送信し、
前記アプリケーション応答手段では、前記データベース制御手段から送信された前記暗号文のデータを前記鍵利用手段の鍵情報を用いて復号し、得られた平文のデータに対して前記データベース操作命令の演算操作を行い、前記演算操作結果を、前記データベース操作命令の発行元に返す、ことを特徴とする付記１乃至１２のいずれか一に記載のデータベース暗号化システム。
【０３１８】
(付記１５）
前記安定性設定手段の入力により、前記データべース内のテーブルのカラムデータを暗号化する場合、
前記データベース制御手段は、前記データベースからカラムデータを読み出し、
前記アプリケーション応答手段は、前記第１及び／又は第２の記憶部を参照して、前記データベースから読み出しが行われた前記カラムデータに対して、設定された機密度情報に対応する暗号アルゴリズムで前記鍵利用手段の鍵情報を用いて暗号化して前記データベース制御手段に送信し、
前記データベース制御手段は、通番と前記カラムデータの暗号文との対を含む暗号文テーブルを作成し、
前記データベース制御手段は、前記暗号文テーブルの管理のために、
テーブル名、カラム名、暗号アルゴリズム、暗号文テーブル名を組として含む暗号文テーブル情報表を備えている、ことを特徴とする付記８又は９記載のデータベース暗号化システム。
【０３１９】
(付記１６）
前記データベース制御手段が、前記アプリケーション応答手段から送信された公開鍵を用いてデータ及び／又はメタデータを暗号化する暗号演算部を備えた、ことを特徴とする付記１乃至１４のいずれか一に記載のデータベース暗号化システム。
【０３２０】
(付記１７）
前記安定性設定手段の入力により、前記データべース内のテーブルのカラムデータを暗号化する場合、
前記データベース制御手段は、前記データベースからカラムデータを読み出し、前記アプリケーション応答手段から公開鍵情報を取得し、前記暗号演算部で前記カラムデータに対して暗号化を行い、
前記データベース制御手段は、通番と前記カラムデータの暗号文との対を含む暗号文テーブルを作成し、
前記データベース制御手段は、前記暗号文テーブルの管理のために、
テーブル名、カラム名、暗号アルゴリズム、暗号文テーブル名を組として含む暗号文テーブル情報表を備えている、ことを特徴とする付記１６記載のデータベース暗号化システム。
【０３２１】
(付記１８）
前記アプリケーション応答手段が、カラムデータを追加するデータベース操作命令を入力し、前記カラムデータの暗号化が必要な場合、前記カラムデータに対応する暗号アルゴリズムで前記追加データを前記鍵利用手段の鍵情報を用いて暗号化して前記データベース制御手段に送信し、
前記データベース制御手段は、前記データベースの前記暗号文テーブルの末尾に更新した通番と暗号文の対を追加する、ことを特徴とする付記１５記載のデータベース暗号化システム。
【０３２２】
(付記１９）
前記安全性設定手段から、前記データベースに記憶されているデータの機密度情報の変更の指示を受けると、前記アプリケーション応答手段は、前記データベースに格納された、暗号化されたデータについて、一旦、前記鍵利用手段の鍵情報を用いて平文に復号化し、前記平文を、変更された前記機密度情報に対応する暗号アルゴリズムで再暗号化した上で前記データベース制御手段に送信し、前記データベースに再暗号化したデータを格納し、前記第１の記憶部の機密度情報と暗号アルゴリズム識別情報を更新する、ことを特徴とする付記３記載のデータベース暗号化システム。
【０３２３】
(付記２０）
前記安全性設定手段は、前記データベースに記憶されているデータの機密度情報を変更にあたり、テーブル名、カラム名、変更後の機密度情報を指定し、
前記アプリケーション応答手段は、前記第２の記憶部から前記データベースに記憶されている前記テーブル名、カラム名の前記データの暗号化に用いられている暗号アルゴリズム識別子の第１の集合を取得し、入力された機密度情報に対応する暗号アルゴリズム識別子の第２の集合を取得し、
前記第１、第２の集合に共通の暗号アルゴリズム識別子が存在しない場合、前記第１の集合の中の１つの暗号アルゴリズム識別子の暗号アルゴリズムで暗号化されている、前記テーブル名、カラム名の前記データの暗号文を、前記鍵利用手段の鍵情報を用いて平文に復号し、前記平文を、前記第２の集合の前記入力された機密度情報に対応する暗号アルゴリズムで暗号化して前記データベース制御手段に送信し、
前記データベース制御手段は、暗号文テーブルに通番、暗号文の対を格納した上で前記暗号文テーブル情報表を更新し、前記機密度情報の変更が指定されたデータに関して、指定された機密度情報に対応しない暗号文テーブルを削除する、ことを特徴とする付記１９記載のデータベース暗号化システム。
【０３２４】
(付記２１）
前記ユーザシステムは、前記データベースに対するデータベース操作命令を発行し、前記データベース操作命令の処理結果を受け取るデータベース利用アプリケーションプログラムを実行し、
前記アプリケーション応答手段は、前記データベース利用アプリケーションプログラムからのデータベース操作命令を受け取り、前記データベース操作命令の処理結果を、前記データベース利用アプリケーションプログラムに返す、ことを特徴とする付記１乃至２０のいずれか一に記載のデータベース暗号化システム。
【０３２５】
(付記２２）
データベース装置にネットワークを介して接続するユーザ装置が、
暗号化と復号化のための鍵情報を管理する鍵利用手段と、
データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定する安全性設定手段と、
前記安全性設定手段で設定される情報を記憶する第１の記憶部と、
前記データベースシステムに向けて発行されるデータベース操作命令を受け取り、前記第１の記憶部の情報を参照して、データベース操作命令で扱うデータ及び／又はメタデータに関して暗号化の要否を判別し、
暗号化が必要な場合、前記データベース操作命令のデータ及び／又はメタデータとして、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報による暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベース制御手段に送信し、前記データベース制御手段にデータベース操作を実行させ、
暗号化が不要な場合には、前記データベース操作命令をそのまま前記データベース制御手段に送信してデータベース操作を実行し、
前記データベース制御手段から送信されたデータベース処理結果を受け取り、前記データベース処理結果のデータ及び／又はメタデータの変換又は復号化が必要な場合、前記変換又は前記鍵利用手段の鍵情報による復号化を行った結果を、前記データベース操作命令の応答として前記データベース操作命令の発行元に返すアプリケーション応答手段と、
を備えている、ことを特徴とするユーザ装置。
【０３２６】
(付記２３）
前記安全性設定手段は、前記データベースに格納されるテーブル名、カラム名を含む前記メタデータの暗号化の有無の設定又は変更、前記データの暗号化の有無の設定又は変更、データの安全性の程度を表す機密度情報の設定又は変更の少なくとも１つを行う、ことを特徴とする付記２２記載のユーザ装置。
【０３２７】
(付記２４）
前記第１の記憶部は、前記データベースに格納されるテーブル名、カラム名を含むメタデータの暗号化の有無、データの暗号化の有無、データの安全性の程度を表す機密度情報、前記機密度情報に対応した暗号アルゴリズムの識別情報を保持し、
前記テーブル名、カラム名が暗号化されている場合、
暗号化されたテーブル名、カラム名に加えて、
暗号化前の平文のテーブル名、平文のカラム名を、復号後テーブル名、カラム名として記憶保持する、ことを特徴とする付記２３記載のユーザ装置。
【０３２８】
(付記２５）
前記アプリケーション応答手段は、前記データベース操作命令で指定されたテーブル名、カラム名が暗号化されているか否かを、前記第１の記憶部を参照して判別し、
前記テーブル名、カラム名の少なくとも一方が暗号化されている場合には、平文を暗号文に置き換え、
前記第１の記憶部を参照して、データを暗号化する場合には、前記機密度情報に対応した暗号アルゴリズムを用いて前記鍵利用手段の鍵情報を用いてデータを暗号化して前記データベース装置に送信する、ことを特徴とする付記２４記載のユーザ装置。
【０３２９】
(付記２６）
付記２２乃至２５のいずれか一に記載のユーザ装置から送信されたデータベース操作命令を受け取り、前記データベースに対して、暗号化されたデータに対する暗号プロトコルを用いたデータベース操作、又は、平文データに対するデータベース操作を実行し、処理結果を、前記データベース処理結果として、前記アプリケーション応答手段に返す、ことを特徴とするデータベース装置。
【０３３０】
(付記２７）
前記データベース制御手段は、前記アプリケーション応答手段から送信された前記データベース操作命令を受け、前記データベースに対して、暗号化されたデータに対する暗号プロトコルを用いたデータベース操作、又は、平文データに対するデータベース操作を実行し、処理結果を、前記データベース処理結果として、前記アプリケーション応答手段に返す、ことを特徴とする付記２６記載のデータベース装置。
【０３３１】
(付記２８）
前記データベース制御手段は、前記データベース操作命令の予め定められた所定の操作と演算について、前記データベースに格納された暗号文のデータを暗号文のまま操作又は演算を行い、暗号文の処理結果を、前記データベース処理結果として、前記アプリケーション応答手段に送信する、ことを特徴とする付記２６記載のデータベース装置。
【０３３２】
(付記２９）
前記データベースシステムは、前記データベースに格納されるテーブル名、カラム名を含む前記メタデータの暗号化の有無、データの暗号化の有無、データの安全性の程度を表す機密度情報、前記機密度情報に対応した暗号アルゴリズムの識別情報を記憶保持する第２の記憶部と、
前記データベース操作命令の処理内容と、機密度情報と、暗号アルゴリズムとを関連付ける暗号プロトコル識別情報を少なくとも記憶保持する第３の記憶部と、
を備えた、ことを特徴とする付記２６に記載のデータベース装置。
【０３３３】
(付記３０）
前記データベースが、前記第２及び／又は第３の記憶部として機能し、
前記第２及び／又は第３の記憶部に記憶される情報を前記データベース内のテーブルとして保持する、ことを特徴とする付記２９記載のデータベース装置。
【０３３４】
(付記３１）
前記データベース制御手段は、前記機密度情報に対応した暗号アルゴリズムで暗号化されるデータに対して、前記第３の記憶部の暗号プロトコル識別情報に基づき、前記データベース操作命令に対応した処理内容の暗号プロトコル処理を実行する暗号プロトコル処理実行部を備えている、ことを特徴とする付記２９記載のデータベース装置。
【０３３５】
(付記３２）
前記データベース制御手段は、前記データベース操作命令の演算操作について、前記データベースに暗号文で格納されている操作対象のデータが、予め定められた所定の準同型演算に対応した暗号アルゴリズムで暗号化されており、且つ、前記データベース操作命令の前記演算操作が前記所定の準同型演算を含む場合、前記操作対象の暗号化されたデータに対して暗号文のまま前記演算操作を行い、暗号文の演算結果を、前記データベース処理結果として、前記アプリケーション応答手段に送信し、
前記アプリケーション応答手段では、
（Ａ）前記データベース制御手段から送信された前記暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号した平文の演算結果を、前記データベース操作命令の発行元に返すか、
（Ｂ）前記データベース操作命令の演算操作が、さらに平文での演算を必要とするものである場合には、さらに前記平文での演算を行い、前記平文での演算結果を前記データベース操作命令の発行元に返し、
あるいは、
前記アプリケーション応答手段は、
（Ｃ）前記データベース制御手段から送信された前記暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号し、得られた平文の演算結果に対して、さらに平文での演算を行い、
（Ｄ）前記平文の演算結果を、前記鍵利用手段の鍵情報を用いて暗号化した上で、前記データベース制御手段に送信し、前記データベース制御手段にて、暗号文のまま演算操作を行い、
（Ｅ）前記データベース制御手段から送信された暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号して平文とし、
（Ｆ）前記平文での演算結果を前記データベース操作命令の発行元に返すか、前記平文の演算結果に対してさらに演算を行い、あるいは、さらに（Ｄ）と（Ｅ）の処理を少なくとも１回繰り返した上で、前記平文での演算結果を前記データベース操作命令の発行元に返す、ことを特徴とする付記２６乃至３１のいずれか一に記載のデータベース装置。
【０３３６】
(付記３３）
前記データベース制御手段は、前記データベースに、暗号文で格納されている操作対象のデータが暗号文のままでは前記データベース操作命令の演算操作を行えない暗号アルゴリズムで暗号化されている場合、前記演算操作対象の暗号文のデータを、前記アプリケーション応答手段に送信し、
前記アプリケーション応答手段では、前記データベース制御手段から送信された前記暗号文のデータを前記鍵利用手段の鍵情報を用いて復号し、得られた平文のデータに対して前記データベース操作命令の演算操作を行い、前記演算操作結果を、前記データベース操作命令の発行元に返す、ことを特徴とする付記２６乃至３１のいずれか一に記載のデータベース装置。
【０３３７】
(付記３４）
前記データべース内のテーブルのカラムデータを暗号化する場合、
前記データベース制御手段は、前記データベースからカラムデータを読み出し、
前記アプリケーション応答手段は、前記第１及び／又は第２の記憶部を参照して、前記データベースから読み出しが行われた前記カラムデータに対して、設定された機密度情報に対応する暗号アルゴリズムで前記鍵利用手段の鍵情報を用いて暗号化して前記データベース制御手段に送信し、
前記データベース制御手段は、通番と前記カラムデータの暗号文との対を含む暗号文テーブルを作成し、
前記データベース制御手段は、前記暗号文テーブルの管理のために、
テーブル名、カラム名、暗号アルゴリズム、暗号文テーブル名を組として含む暗号文テーブル情報表を備えている、ことを特徴とする付記２６記載のデータベース装置。
【０３３８】
(付記３５）
前記データベース制御手段が、前記アプリケーション応答手段から送信された公開鍵を用いてデータ及び／又はメタデータを暗号化する暗号演算部を備えた、ことを特徴とする付記２６に記載のデータベース装置。
【０３３９】
(付記３６）
前記データべース内のテーブルのカラムデータを暗号化する場合、
前記データベース制御手段は、前記データベースからカラムデータを読み出し、前記アプリケーション応答手段から公開鍵情報を取得し、前記暗号演算部で前記カラムデータに対して暗号化を行い、
前記データベース制御手段は、通番と前記カラムデータの暗号文との対を含む暗号文テーブルを作成し、
前記データベース制御手段は、前記暗号文テーブルの管理のために、
テーブル名、カラム名、暗号アルゴリズム、暗号文テーブル名を組として含む暗号文テーブル情報表を備えている、ことを特徴とする付記２６記載のデータベース装置。
【０３４０】
(付記３７）
前記アプリケーション応答手段が、カラムデータを追加するデータベース操作命令を入力し、前記カラムデータの暗号化が必要な場合、前記カラムデータに対応する暗号アルゴリズムで前記追加データを前記鍵利用手段の鍵情報を用いて暗号化して前記データベース制御手段に送信し、
前記データベース制御手段は、前記データベースの前記暗号文テーブルの末尾に更新した通番と暗号文の対を追加する、ことを特徴とする付記２６記載のデータベース装置。
【０３４１】
(付記３８）
データベースシステムにネットワークを介して接続するユーザシステムにて、暗号化と復号化のための鍵情報を記憶管理し、
さらに、前記データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定して第１の記憶部に記憶し、
前記データベースシステムに向けて発行されるデータベース操作命令に対して、前記第１の記憶部の情報を参照して、前記データベース操作命令で扱うデータ及び／又はメタデータの暗号化の要否を判別し、
暗号化が必要な場合、前記データベース操作命令のデータ及び／又はメタデータとして、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用い前記鍵情報による暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベースシステムに送信してデータベース操作を実行させ、
暗号化が不要な場合には、前記データベース操作命令をそのまま前記データベースシステムに送信してデータベース操作を実行させ、
前記データベースシステムから送信されたデータベース処理結果を受け取り、前記データベース処理結果のデータ及び／又はメタデータの変換又は復号化が必要な場合、前記変換、又は前記鍵情報による復号化を行った結果を、前記データベース操作命令の応答として前記データベース操作命令の発行元に返す、ことを特徴とするデータベース暗号化方法。
【０３４２】
(付記３９）
前記安全性の設定において、
前記メタデータの暗号化の有無の設定又は変更、
前記データの暗号化の有無の設定又は変更、
前記安全性の程度を表す機密度情報の設定又は変更
の少なくとも１つを行う、ことを特徴とする付記３８記載のデータベース暗号化方法。
【０３４３】
(付記４０）
前記第１の記憶部は、前記メタデータの暗号化の有無、前記データの暗号化の有無、前記データの安全性の程度を表す機密度情報、前記機密度情報に対応した暗号アルゴリズムの識別情報を保持する、ことを特徴とする付記３８記載のデータベース暗号化方法。
【０３４４】
(付記４１）
前記第１の記憶部は、前記データベースに格納されるテーブル名、カラム名を含む前記メタデータが暗号化される場合、暗号化したテーブル名、カラム名を保持するとともに、暗号化前の平文のテーブル名、平文のカラム名を、復号後テーブル名、復号後カラム名としてそれぞれ記憶保持する、ことを特徴とする付記４０記載のデータベース暗号化方法。
【０３４５】
(付記４２）
前記データベース処理結果のメタデータのうちテーブル名とカラム名の少なくとも一方が暗号化されている場合、前記第１の記憶部の前記復号後テーブル名と前記復号後カラム名に保持された平文のテーブル名と平文のカラム名の少なくとも一方を取得する、ことを特徴とする付記４１記載のデータベース暗号化方法。
【０３４６】
(付記４３）
前記データベースシステムは、前記ユーザシステムから送信された前記データベース操作命令を受け、前記データベースに対して、暗号化されたデータに対する暗号プロトコルを用いたデータベース操作、又は、平文データに対するデータベース操作を実行し、処理結果を、前記データベース処理結果として、前記ユーザシステムに返す、ことを特徴とする付記３８乃至４２のいずれか一に記載のデータベース暗号化方法。
【０３４７】
(付記４４）
前記データベース制御手段は、前記データベース操作命令の予め定められた所定の操作と演算について、前記データベースに格納された暗号文のデータを暗号文のまま操作又は演算を行い、暗号文の処理結果を、前記データベース処理結果として、前記ユーザシステムに送信する、ことを特徴とする付記４３記載のデータベース暗号化方法。
【０３４８】
(付記４５）
前記データベースシステムでは、前記データベースに格納されるテーブル名、カラム名を含む前記メタデータの暗号化の有無、データの暗号化の有無、データの安全性の程度を表す機密度情報、前記機密度情報に対応した暗号アルゴリズムの識別情報を第２の記憶部で記憶保持し、
前記データベース操作命令の処理内容と、機密度情報と、暗号アルゴリズムとを関連付ける暗号プロトコル識別情報を第３の記憶部で少なくとも記憶保持する、ことを特徴とする付記４１乃至４４のいずれか一に記載のデータベース暗号化方法。
【０３４９】
(付記４６）
前記データベースが、前記第２及び／又は第３の記憶部として機能し、
前記第２及び／又は第３の記憶部に記憶される情報を前記データベース内のテーブルとして保持する、ことを特徴とする付記４５記載のデータベース暗号化方法。
【０３５０】
(付記４７）
前記ユーザシステムは、前記第１乃至第３の記憶部の少なくとも１つを参照して、前記データに対応する機密度情報に対応する暗号アルゴリズムを選択し、選択した暗号アルゴリズムと前記鍵利用手段の鍵情報を用いてデータを暗号化し前記データベースシステムに送信する、ことを特徴とする付記４５又は４６記載のデータベース暗号化方法。
【０３５１】
(付記４８）
前記ユーザシステムは、前記データベース操作命令で指定されたテーブル名、カラム名の暗号化の有無を、前記第１及び／又は第２の記憶部を参照して判別し、前記テーブル名とカラム名の少なくとも一方が暗号化されている場合には、前記データベース操作命令のテーブル名とカラム名の少なくとも一方を暗号文に置き換えた上で前記データベースシステムに送信する、ことを特徴とする付記４７記載のデータベース暗号化方法。
【０３５２】
(付記４９）
前記データベースシステムは、前記機密度情報に対応した暗号アルゴリズムで暗号化されるデータに対して、前記第３の記憶部の暗号プロトコル識別情報に基づき、前記データベース操作命令に対応した処理内容の暗号プロトコル処理を実行する暗号プロトコル処理実行部を備えている、ことを特徴とする付記４７記載のデータベース暗号化方法。
【０３５３】
(付記５０）
前記データベースシステムは、前記データベース操作命令の演算操作について、前記データベースに暗号文で格納されている操作対象のデータが、予め定められた所定の準同型演算に対応した暗号アルゴリズムで暗号化されており、且つ、前記データベース操作命令の前記演算操作が前記所定の準同型演算を含む場合、前記操作対象の暗号化されたデータに対して暗号文のまま前記演算操作を行い、暗号文の演算結果を、前記データベース処理結果として、前記ユーザシステムに送信し、
前記ユーザシステムでは、
（Ａ）前記データベースシステムから送信された前記暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号した平文の演算結果を、前記データベース操作命令の発行元に返すか、
（Ｂ）前記データベース操作命令の演算操作が、さらに平文での演算を必要とするものである場合には、さらに前記平文での演算を行い、前記平文での演算結果を前記データベース操作命令の発行元に返し、
あるいは、
前記ユーザシステムは、
（Ｃ）前記データベースシステムから送信された前記暗号文の演算結果を前記鍵利用手段の鍵情報を用いて復号し、得られた平文の演算結果に対して、さらに平文での演算を行い、
（Ｄ）前記平文の演算結果を、前記鍵利用手段の鍵情報を用いて暗号化した上で、前記データベースシステムに送信し、前記データベースシステムにて、暗号文のまま演算操作を行い、
（Ｅ）前記データベースシステムから送信された暗号文の演算結果を前記鍵情報を用いて復号して平文とし、
（Ｆ）前記平文での演算結果を前記データベース操作命令の発行元に返すか、前記平文の演算結果に対してさらに演算を行い、あるいは、さらに（Ｄ）と（Ｅ）の処理を少なくとも１回繰り返した上で、前記平文での演算結果を前記データベース操作命令の発行元に返す、ことを特徴とする付記３８乃至４９のいずれか一に記載のデータベース暗号化方法。
【０３５４】
(付記５１）
前記データベースシステムは、前記データベースに、暗号文で格納されている操作対象のデータが暗号文のままでは前記データベース操作命令の演算操作を行えない暗号アルゴリズムで暗号化されている場合、前記演算操作対象の暗号文のデータを、前記ユーザシステムに送信し、
前記ユーザシステムでは、前記データベースシステムから送信された前記暗号文のデータを前記鍵利用手段の鍵情報を用いて復号し、得られた平文のデータに対して前記データベース操作命令の演算操作を行い、前記演算操作結果を、前記データベース操作命令の発行元に返す、ことを特徴とする付記３８乃至４９のいずれか一に記載のデータベース暗号化方法。
【０３５５】
(付記５２）
前記安定性の設定入力により、前記データべース内のテーブルのカラムデータを暗号化する場合、
前記データベースシステムは、前記データベースからカラムデータを読み出し、
前記ユーザシステムは、前記第１及び／又は第２の記憶部を参照して、前記データベースから読み出しが行われた前記カラムデータに対して、設定された機密度情報に対応する暗号アルゴリズムで前記鍵利用手段の鍵情報を用いて暗号化して前記データベース制御手段に送信し、
前記データベースシステムは、通番と前記カラムデータの暗号文との対を含む暗号文テーブルを作成し、
前記データベースシステムは、前記暗号文テーブルの管理のために、
テーブル名、カラム名、暗号アルゴリズム、暗号文テーブル名を組として含む暗号文テーブル情報表を備えている、ことを特徴とする付記４５又は４８記載のデータベース暗号化方法。
【０３５６】
(付記５３）
前記データベースシステムが、前記アプリケーション応答手段から送信された公開鍵を用いてデータ及び／又はメタデータを暗号化する、ことを特徴とする付記３８乃至５１のいずれか一に記載のデータベース暗号化方法。
【０３５７】
(付記５４）
前記安定性の設定入力により、前記データべース内のテーブルのカラムデータを暗号化する場合、
前記データベースシステムは、前記データベースからカラムデータを読み出し、前記アプリケーション応答手段から公開鍵情報を取得し、前記暗号演算部で前記カラムデータに対して暗号化を行い、
前記データベースシステムは、通番と前記カラムデータの暗号文との対を含む暗号文テーブルを作成し、
前記データベースシステムは、前記暗号文テーブルの管理のために、
テーブル名、カラム名、暗号アルゴリズム、暗号文テーブル名を組として含む暗号文テーブル情報表を備えている、ことを特徴とする付記５３記載のデータベース暗号化方法。
【０３５８】
(付記５５）
前記ユーザシステムが、カラムデータを追加するデータベース操作命令を入力し、前記カラムデータの暗号化が必要な場合、前記カラムデータに対応する暗号アルゴリズムで前記追加データを前記鍵情報を用いて暗号化して前記データベースシステムに送信し、
前記データベースシステムは、前記データベースの前記暗号文テーブルの末尾に更新した通番と暗号文の対を追加する、ことを特徴とする付記５２記載のデータベース暗号化方法。
【０３５９】
(付記５６）
前記安全性の設定において、前記データベースに記憶されているデータの機密度情報の変更の指示を受けると、前記ユーザシステムは、前記データベースに格納された、暗号化されたデータについて、一旦、前記鍵情報を用いて平文に復号化し、前記平文を、変更された前記機密度情報に対応する暗号アルゴリズムで再暗号化した上で前記データベースシステムに送信し、前記データベースに再暗号化したデータを格納し、前記第１の記憶部の機密度情報と暗号アルゴリズム識別情報を更新する、ことを特徴とする付記４０記載のデータベース暗号化方法。
【０３６０】
(付記５７）
前記安全性の設定において、前記データベースに記憶されているデータの機密度情報を変更にあたり、テーブル名、カラム名、変更後の機密度情報を指定し、
前記ユーザシステムは、前記第２の記憶部から前記データベースに記憶されている前記テーブル名、カラム名の前記データの暗号化に用いられている暗号アルゴリズム識別子の第１の集合を取得し、入力された機密度情報に対応する暗号アルゴリズム識別子の第２の集合を取得し、
前記第１、第２の集合に共通の暗号アルゴリズム識別子が存在しない場合、前記第１の集合の中の１つの暗号アルゴリズム識別子の暗号アルゴリズムで暗号化されている、前記テーブル名、カラム名の前記データの暗号文を、前記鍵情報を用いて平文に復号し、前記平文を、前記第２の集合の前記入力された機密度情報に対応する暗号アルゴリズムで暗号化して前記データベースシステムに送信し、
前記データベースシステムは、暗号文テーブルに通番、暗号文の対を格納した上で前記暗号文テーブル情報表を更新し、前記機密度情報の変更が指定されたデータに関して、指定された機密度情報に対応しない暗号文テーブルを削除する、ことを特徴とする付記５６記載のデータベース暗号化方法。
【０３６１】
(付記５８）
前記ユーザシステムは、前記データベースに対するデータベース操作命令を発行し、前記データベース操作命令の処理結果を受け取るデータベース利用アプリケーションプログラムを実行し、
前記データベース利用アプリケーションプログラムからのデータベース操作命令を受け取り、前記データベース操作命令の処理結果を、前記データベース利用アプリケーションプログラムに返す、ことを特徴とする付記３８乃至５７のいずれか一に記載のデータベース暗号化方法。
(付記５９）
前記データベースシステムは、前記ユーザシステムから送信された前記データベース操作命令を受け、前記データベースに対して、暗号化されたデータに対する暗号プロトコル、又は、平文データに対するデータベース操作を実行し、処理結果を前記ユーザシステムに返す、ことを特徴とする付記３８記載のデータベース暗号化方法。
(付記６０）
データベース装置にネットワークを介して接続するユーザ装置のコンピュータに、
暗号化と復号化のための鍵情報を管理する鍵利用処理と、
データベースに格納されるデータ及び／又はメタデータの安全性の設定に関する情報を設定して第１の記憶部に記憶する安全性設定処理と、
前記データベース装置に向けて発行されるデータベース操作命令に対して、前記第１の記憶部の情報を参照して、前記データベース操作命令で扱うデータ及び／又はメタデータの暗号化の要否を判別し、
暗号化が必要な場合、前記データベース操作命令のデータ及び／又はメタデータとして、前記データ及び／又はメタデータの安全性に対応した暗号アルゴリズムを用いて前記鍵情報による暗号化を行った暗号化データ及び／又は暗号化メタデータを、前記データベース装置に送信してデータベース操作を実行させ、
暗号化が不要な場合には、前記データベース操作命令をそのまま前記データベース装置に送信してデータベース操作を実行させ、
前記データベース装置から送信されたデータベース処理結果を受け取り、前記データベース処理結果のデータ及び／又はメタデータの変換あるいは復号化が必要な場合、前記変換あるいは前記鍵利用処理による復号化を行った結果を、前記データベース操作命令の応答として前記データベース操作命令の発行元に返すアプリケーション応答処理と、
を実行させるプログラム。
(付記６１）
付記６０の前記ユーザ装置から暗号化されたデータベース操作命令を受け取ると、前記データベースに対して暗号プロトコルを実行する処理と、
前記ユーザシステムから暗号化されないデータベース操作命令を受け取ると、前記データベースに対して平文データのデータベース操作実行する処理と、
前記処理結果を、前記ユーザシステムに返す処理と、
をデータベース制御装置を構成するコンピュータに実行させるプログラム。
【０３６２】
(付記６２）
付記６０又は６１のプログラムを記録したコンピュータ読み出し可能な記録媒体。
【０３６３】
なお、上記の特許文献１−３、非特許文献１の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各付記の各要素、各実施例の各要素、各図面の各要素等を含む）の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０３６４】
１０  データベースシステム
１１  データベース
１２  データベース制御手段
１３  暗号プロトコル情報記憶部
１４  安全性設定情報記憶部
２０  ユーザシステム
２１  データベース利用アプリケーション（プログラム）
２２  アプリケーション応答手段
２３  鍵利用手段
２４  鍵情報記憶部
２５  安全性設定情報一時記憶部
２６  安全性設定手段
２７  入力／出力装置
３０  ネットワーク
１１１  暗号プロトコル情報テーブル
１１２  安全性設定情報テーブル
１２１  データベース操作部
１２２  暗号プロトコル処理実行部
１２３  暗号プロトコル情報操作部
１２４  安全性設定情報操作部
１２５  処理・通信制御部
１２６  暗号演算部
２２１  処理・通信制御部
２２２  暗号プロトコル処理実行部
２２３  データベース操作変換処理部
２２４  暗号演算部
２２５  安全性設定情報操作部
２３１  暗号演算部
２３２  鍵情報管理部
２６１  設定表示部
２６２  設定入力部
【図１】
2014013582.tif 000003
【図２】
2014013582.tif 000004
【図３】
2014013582.tif 000005
【図４】
2014013582.tif 000006
【図５】
2014013582.tif 000007
【図６】
2014013582.tif 000008
【図７】
2014013582.tif 000009
【図８】
2014013582.tif 000010
【図９】
2014013582.tif 000011
【図１０】
2014013582.tif 000012
【図１１】
2014013582.tif 000013
【図１２】
2014013582.tif 000014
【図１３】
2014013582.tif 000015
【図１４】
2014013582.tif 000016
【図１５】
2014013582.tif 000017
【図１６】
2014013582.tif 000018
【図１７】
2014013582.tif 000019
【図１８】
2014013582.tif 000020
【図１９】
2014013582.tif 000021
【図２０】
2014013582.tif 000022
【図２１】
2014013582.tif 000023
【図２２】
2014013582.tif 000024
【図２３】
2014013582.tif 000025
【図２４】
2014013582.tif 000026
【図２５】
2014013582.tif 000027
【図２６】
2014013582.tif 000028
【図２７】
2014013582.tif 000029
【図２８】
2014013582.tif 000030