説明

暗号化されたカラムを含むデータベースにおけるクエリーの暗号化変調による使用者クエリー処理装置及び方法

【課題】一部カラムを暗号化したデータベースに対する暗号化クエリーの処理性能を改善する。
【解決手段】一部カラムを暗号化したデータベースを管理するデータベース管理システム(DBMS)に対し要請する使用者の暗号化前のデータベース構造に基盤したクエリーを暗号化したデータベース構造のクエリーに変調し、DBMSにおいて処理させることにより、DBMSは、クエリーが暗号化に関連した項目が含まれているか否かに関係なく一貫してクエリーを処理することができ、暗号化クエリーの処理性能を画期的に改善したクエリー変調によるクエリー処理装置及び方法。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一部カラムを暗号化したデータベースのDBMS(データベース管理システム)に対し要請する使用者の暗号化前のデータベース構造に基盤したクエリーを、暗号化したデータベース構造のクエリーに変調し、暗号化クエリーの処理性能を画期的に改善した、クエリー変調によるクエリー処理装置及び方法に関する。
【背景技術】
【0002】
図1は、一部カラムを暗号化することができる従来のデータベース管理システム(DBMS)の構成図である。図1に示されたように、データベースの一部カラムを暗号化することができるデータベース管理システム(DBMS)100は、データベース110と、クエリー処理部120と、ビュー130と、暗号化モジュール150とを含んでいる。クエリー処理部120は、使用者160からのデータベースに対するクエリー要請があった場合、クエリーに該当するデータベースのテーブルを参照してその結果を抽出し使用者160に該結果値を伝送する役割を果たす(使用者に対し結果を見せるための仮想テーブルや生成されたテーブルをDBに格納してから該テーブルを返還したりすることもある。)。これは、一般的なDBMSの機能である。若し、要請されたクエリー内に暗号化されているカラムがあるテーブルや該カラムのフィールド値を参照する場合は、暗号化されたテーブルの処理にあたるため、それはビュー130において処理させる。ビュー130は、一部カラムが暗号化されたテーブルを主に取り扱うためのものであって、使用者をして暗号化されたテーブルの構成が分かるように暗号化前のテーブルの構造を見ることができるようにし、この構造に基盤して使用者がクエリーを作成して要請すれば、該クエリーを解釈し処理する機能を担う。すなわち、暗号化されたテーブルに対して暗号化前のテーブル形態で見せる一種のウィンドウのようなものである。ビューは、暗号化されたフィールド値の暗号化と復号化のために暗号化モジュール150を利用する。従来のデータベース管理システム100は、その内部に基本的な暗号化方法に関する暗号化モジュール150が組み込まれているものもあるが、その他、外部の暗号化モジュール155を参照して呼び出す場合も少なくない。この種の暗号化モジュール155の外部参照は、システムの複雑化や速度低下を引き起こす要因にもなる。
【0003】
図2は、ビューを介してデータベースのカラム暗号化を行なう時におけるテーブルの生成過程を示す例示図である。
【0004】
データベースのカラム暗号化は、テーブルにおいて暗号化の必要性のある一部のカラムのみを暗号化する。すなわち、0個以上乃至カラム全体を暗号化することができる。先ず、カラム暗号化のために暗号化前のテーブル210と同じテーブルを生成し、該生成されたテーブルに暗号化したいカラムに該当する暗号化されたカラム226を追加する。
【0005】
該テーブルが、すなわち暗号化されたテーブル220となる。暗号化されたテーブル220の名称は、一定した命名規則に基づいて暗号化の前テーブル210の名前と関連付けられて決められ、両名称は1:1にマッピングされ、命名規則さえ知っていれば、一方の名称が分かるだけで他方の名称が分かる。新たに追加された暗号化されたカラム222に該当する暗号化されたフィールド名226は、暗号化前のテーブル210のフィールド名216によって決められ、一定の1:1マッピングの命名規則に基づいて生成されることで一方の名称が分かるだけで他方の名称が分かる。上記テーブル名とフィールド名は、暗号化前の名称と暗号化された名称を暗号化関連名称テーブル140に格納して管理する。したがって、上記名称テーブル140に名称が存在するか否かによって暗号化関連有無が分かり、マッピングから対応する他方の名称が分かる。
【0006】
暗号化されたカラム226が作られれば、暗号化前のカラム216にあるすべてのフィールド値218を暗号化して暗号化されたカラム226に入力する。そして、暗号化されたテーブル220の暗号化前のフィールド名に該当するフィールド名のフィールド値をすべてゼロ(null)で処理する。フィールド値の暗号化は、1:1マッピング暗号化/復号化方法(アルゴリズム)によって暗号化する。1:1マッピングによる暗号化/復号化方法であるため、暗号化されたフィールド値228だけで復号化することで元のレコードフィールド値218への復元が可能である。
【0007】
図2の例示を更に詳しく説明することにする。図2aは暗号化前のテーブルを示しており、図2bは暗号化された以後のテーブルを示している。暗号化前のテーブルであるinfoから同じテーブルである暗号化されたテーブルinfo_encryptを生成し、暗号化対象となるカラムであるoc_codeに該当する暗号化されたカラムであるoc_code_secを作成する。そして、フィールド名がoc_codeであるフィールド値をすべて暗号化してカラムoc_code_secに入れる。そして、暗号化対象となるカラムであるoc_codeにはすべてゼロで処理する。また、暗号化関連名称テーブル140には、暗号化に係わって新たに作られたテーブル名infoと、暗号化カラムのフィールド名であるageとoc_codeに対してそれぞれ暗号化前の名称と暗号化後の名称とを組として格納する。
【0008】
また、一部カラムが暗号化されたテーブルが作られれば、該テーブルに関連した暗号化/復号化トリガーがレコード毎に作られる。一般的なDBMSにおけるトリガーは、テーブルにレコードアップデートや挿入をする時に自動で実行される手順であるが、暗号化/復号化トリガーは、当該フィールド値に対する暗号化/復号化を自動で行なうために作られたトリガーである。従来のビューを利用した技術では、上記のように、フィールド値の暗号化/復号化をトリガーを介して行なうため、一括して処理する作業の際に暗号化/復号化を遂行しすぎるようにするという原因を提供する。
【0009】
図3は、従来のビューを利用した暗号化に関連したクエリーを処理する方法を示すフローチャートである。使用者は、ビュー130から提供する暗号化前のテーブル構造を見て、該構造に基礎してクエリーを作成するようになる。すなわち、使用者は、暗号化前のテーブル構造にて必要なクエリーを要請するようになる(S310)。使用者が要請したクエリー内に暗号化に関連したフィールド名やテーブルがあるか否かを判断する(S320)。具体的に、暗号化関連名称マッピングテーブル140を参照して該テーブルに名称が存在すれば、「ある」と判断する。なお、クエリー内に暗号化されたテーブルを参照しない場合は、一般的なデータベースのクエリー処理と同様にテーブルにアクセスしてクエリーを処理し(S331)、その結果を生成して使用者に結果テーブルを見せる(S340)。使用者のクエリー内に暗号化されたテーブルを参照する場合は、先ず、クエリー内に示された暗号化前のテーブルの名前から名称マッピングテーブル140を参照して暗号化されたテーブル名前を探し出す(S321)。探し出した暗号化されたテーブルの暗号化されたカラムのすべてのフィールド値を復号化してクエリーを処理する(S323)。例えば、暗号化されたフィールド値に対する所定の条件を満足する場合(これは、通常、クエリーの条件を表示するWHERE節に表示するようになる)に該当するレコードだけを含むテーブルを抽出したいならば、すべてのレコードの暗号化されたフィールド値を復号化し該値が上記条件に満足するか否かを検査する。特に、条件式が「<」や「>」などの比較を示す場合は、暗号化された値では比較することができないため、すべて復号化して調査するしかない。条件を満足するレコードだけを追加して結果値を生成する(S324)。生成されたクエリーの結果値を使用者に伝送し、該結果値を見ることができるようにする(S340)。ビュー130は、通常、テーブルを選択(SELECT)して結果値を見る時、上記のように暗号化/復号化してその結果値を仮想テーブルとして見せることにより、使用者は、暗号化/復号化が分からなくても暗号化前のテーブルとして見て、その処理された結果値も暗号化前の値として見るようになる。結果値は、仮想テーブル形態で見せるか、または生成された結果値に対するテーブルをDBに格納し該テーブルを返還したりすることもある。上記のようにすべてのレコードに対する復号化を行なう作業は、一般のクエリー処理に比べて、暗号化されたフィールド値を含んだクエリーの処理性能を低下させる要因になる。しかし、テーブルにおけるレコードの挿入や更新は、上記のようにその結果値を敢えて返還しなくても良いため、ビューにおいてトリガーによって実行される。すなわち、前述したように、レコードを挿入や更新する時に、該トリガーが作動して暗号化/復号化過程を経て処理される。
【発明の開示】
【発明が解決しようとする課題】
【0010】
上記した従来のシステムの問題点は、暗号化モジュールの参照に起因する性能低下と暗号化に関連したテーブルのすべてのレコードの復号化に起因する性能低下とに大別することができる。前でも簡単に言及したように、暗号化モジュールはシステム内部にも存在するが、外部にも存在するため、これらを一律に管理することが難しく、好適な暗号化モジュールを探し出すにも多くの時間がかかる。また、外部の暗号化モジュールを利用するためには、内部の暗号化モジュールに比べて多くの費用がかかる。暗号化モジュールを一度実行するのにかかる時間は極めて小さいが、レコードの数が膨大である場合、すべてのレコード数に対して暗号化されたカラムのフィールド値をすべて暗号化/復号化しなければならないため、レバレッジ効果が発生して全体として大きな速度低下が発生し得る。例えば、暗号化されたフィールド値のフィールド名が 3個であり(すなわち、フィールド名に該当するすべてのフィールド値であるカラムが3個)、レコードが100,000個である場合、該フィールド値の条件をすべて検査するためには、3×100,000回を復号化しなければならない。すなわち、暗号化されたフィールド値のフィールド名の数が多いほど、レコードが多いほど条件検査のためのシステムの負荷が非常に大きくなる。
【0011】
本発明は、上記のような暗号化されたフィールド値を有するすべてのレコードを復号化する過程から発生するシステムの性能低下によるクエリー処理時間が遅延されるという問題点を解決するためになされたものであって、その目的は、従来の暗号化データベース管理システム(DBMS)の前端から使用者クエリーを受け取って暗号化データベース構造のクエリーに変調し、データベース管理システムに伝達することにより、暗号化クエリーの処理性能を画期的に改善する使用者クエリー処理装置及び方法を提供することである。
【0012】
また、他の目的は、上記のようにデーベース管理システムの内・外部に設けられている暗号化モジュールを管理し参照することから発生するクエリー処理の性能低下を克服するために、暗号化モジュールを統合的で且つ一律的に内部において管理することができる使用者クエリー処理装置及び方法を提供することである。
【0013】
また、従来のデータベース管理システムは、通常、商用化製品であって、かかる構成を内部に一体で具現しているため、使用者とデータベース管理システムとの間に使用者クエリー処理装置を介装することにより、従来のデータベース管理システムをそのまま利用し、これにより改善費用を最小化する使用者クエリー処理装置及び方法を提供することである。
【0014】
また、従来のビューを利用した暗号化処理及び方法では、暗号化前のテーブルを基礎にしたクエリー結果が暗号化されたテーブルを基礎にしたクエリー結果と完全に対応するように互換性(Transparency)を提供している。しかしながら、特殊な場合、従来の技術は互換性を提供することができないことがある。例えば、DBMSはテーブルの大きさが膨大である場合、多数のパーティションに分け、これらパーティションをリンクで管理する場合がある。ビューによって処理される仮想テーブルは、パーティションに対するリンク管理がまともにできないことから互換性を完全に保障することができない。本発明は、完全な互換性が提供できる使用者クエリー処理装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
上記目的を達成するための本発明は、一部カラムを暗号化したデータベースを管理するデータベース管理システム(DBMS)100に対し使用者160が暗号化前のDB構造に基盤したクエリーを要請すれば、上記クエリーを処理するための、クエリー変調によるクエリー処理処置400に関し、上記DBMS100の暗号化関連テーブルにおいて暗号化するカラムに該当するフィールド名と上記カラムを含むテーブル名に対して、暗号化前の名称と暗号化された名称とを組として格納する名称マッピングテーブル440と、使用者160がDBMS100に対し要請するクエリーをキャプチャー(Snapping)しDBMSに変調されたクエリーを伝送し、DBMSからクエリーが処理された結果値を受け取るパケット処理部410と、上記パケット処理部410においてキャプチャーしたクエリーを分析して暗号化に関連した項目を名称マッピングテーブル440を利用して変換するか、または暗号化処理部450において暗号化することで暗号化されたデータベースを参照することができるクエリーに変調するクエリー変調部420と、DBMS100において変調されたクエリーで処理された結果値から暗号化に関連した項目を名称マッピングテーブル440を利用して変換するか、または暗号化処理部450において復号化することで暗号化前のデータベースに対応する結果値に変調する結果値変調部430、及び上記クエリー変調部420の呼び出しによって暗号化に関連した項目を暗号化し、結果値変調部430の呼び出しによって暗号化に関連した項目を復号化する暗号化処理部450と、を含むことを特徴とする。
【0016】
また、本発明は、クエリー変調によるクエリー処理処置において、クエリーにおける項目がテーブル名611とフィールド名612であり且つ上記名称マッピングテーブル440にあるか、または定数値613であり且つ上記項目を含む関係式の変数が上記名称マッピングテーブル440にあるフィールド名612であれば、暗号化に関連した項目であり、結果値における項目がテーブル名711とフィールド名712であり且つ上記名称マッピングテーブル440にあるか、または定数値713であり且つ上記項目を含む関係式の変数が上記名称マッピングテーブル440にあるフィールド名712であれば、暗号化に関連した項目であることを特徴とする。
【0017】
また、本発明は、クエリー変調によるクエリー処理処置において、上記クエリー変調部420は、上記テーブル名611と上記フィールド名612を上記名称マッピングテーブル440に組として格納された名称に変換し、上記定数値613を上記暗号化処理部450によって暗号化した値に差し替えることにより、暗号化されたデータベースを参照することができるクエリーに変調し、上記結果値変調部430は、上記テーブル名711と上記フィールド名712を上記名称マッピングテーブル440に組として格納された名称に変換し、上記フィールド値713を上記暗号化処理部450によって復号化した値に差し替えることにより、結果値を暗号化前のデータベースに対応する結果値に変調することを特徴とする。
【0018】
また、本発明は、クエリー変調によるクエリー処理処置において、上記パケット処理部410は、キャプチャーしたクエリー内に暗号化に関連した項目があるか否かを判断し、上記項目があると判断されれば、上記クエリー変調部420を呼び出してクエリー変調を行なうようにし、上記項目がないと判断されれば、直ちにDBMS100にパケットを伝送することを特徴とする。
【0019】
また、本発明は、クエリー変調によるクエリー処理処置において、暗号化処理部450には、暗号化/復号化に必要なモジュールが組み込まれていることを特徴とする。
【0020】
また、本発明は、一部カラムを暗号化したデータベースを管理するDBMS100に対し使用者160が暗号化前のDB構造に基盤したクエリーを要請すれば、上記クエリーを処理するための、クエリー変調によるクエリー処理方法に関し、上記DBMS100が暗号化関連テーブルを生成する時、暗号化するカラムに該当するフィールド名と上記カラムを含むテーブル名に対し暗号化の前名称と暗号化された名称とを組として格納する名称マッピングテーブル440を作成するマッピングテーブル生成ステップS510と、使用者がDBMSに対し要請するクエリーをキャプチャーするパケットキャプチャーステップS520と、キャプチャーしたクエリーを分析して暗号化に関連した項目を名称マッピングテーブル440を利用して変換するか、または暗号化することで暗号化されたデータベースを参照することができるクエリーに変調するクエリー変調ステップS530と、変調されたクエリーにてDBMSに対しクエリーを要請し、処理された結果値を受け取るクエリー要請ステップS540と、DBMS100において変調されたクエリーで処理された結果値から暗号化に関連した項目を名称マッピングテーブル440を利用して変換するか、または復号化することで暗号化前のデータベースに対応する結果値に変調する結果値変調ステップS550、及び変調された結果値を使用者に見せる結果伝送ステップS560と、を含むことを特徴とする。
【0021】
また、本発明は、クエリー変調によるクエリー処理方法において、上記クエリー変調ステップS530は、クエリー内の項目を順に読み込むステップS531と、読み込んだ項目がテーブル名611であるかフィールド名612であり且つ暗号化と関連があれば、上記名称マッピングテーブル440を利用して変換するステップS532と、読み込んだ項目が定数値613であり且つ上記定数値613が含まれる関係式の変数が暗号化と関連があるフィールド名612であれば、上記定数値613を暗号化した値に差し替えるステップS534と、クエリー内に更に読み込むべき項目があるか否かを判断し、更にあると判断されれば、当該項目を読み込むステップS531を再び行い、ないと判断されれば、上記クエリー要請ステップS540に移行するステップと、を含み、上記結果値変調ステップS550は、上記結果値として受け取ったテーブル名711が暗号化と関連があれば、上記名称マッピングテーブル440を利用して変換するステップS552と、上記結果値として受け取ったテーブルのフィールド名712が暗号化と関連があれば、上記名称マッピングテーブル440を利用して変換し、上記フィールド名に該当するすべてのフィールド値を復号化して差し替えるステップS554と、を含むことを特徴とする。
【0022】
また、本発明は、クエリー変調によるクエリー処理方法において、上記S532ステップは、読み込んだクエリー内の項目がテーブル名611であるかフィールド名612であり且つ名称マッピングテーブル440にあれば、上記名称マッピングテーブル440において上記項目に対して組として格納された値に変換し、上記S552ステップまたはS553ステップは、結果値として受け取ったテーブル名711またはフィールド名712が名称マッピングテーブル440にあれば、上記名称マッピングテーブル440において上記テーブル名711またはフィールド名712に対し組として格納された値に変換することを特徴とする。
【発明の効果】
【0023】
上述したように、ビューを使用する従来の暗号化項目が含まれたクエリーの処理処置及び方法では、クエリー処理時に暗号化モジュールを内部で一律的に管理することができずに外部の暗号化モジュールを参照することにより全体的な性能低下をもたらしていたが、本発明によるクエリー変調によるクエリー処理装置及び方法では、暗号化モジュールを一律的に自己管理し直接呼び出し、データベース管理システム(DBMS)の資源共有なしに自己資源を使用することにより、効率的な速度を出すことができる。特に、一つのフィールド値を暗号化/復号化する過程における、従来の技術に比べてのその速度差は僅かであるが、暗号化/復号化処理回数が増える度にその差は相当に大きく広がる。暗号化/復号化に関連したクエリーを処理する場合には、条件を満足するか否かを比較するためにカラムの各値を復号化しなければならないため、テーブルの大きさが何十万、何百万となる場合、すべてのレコードの復号化のため処理速度の差は非常に大きく広がるようになる。
【0024】
また、ビューを使用する従来の暗号化クエリーの処理方法では、トリガーなどのレコードにアクセスした時、暗号化/復号化するプログラムが自動実行される構造となっているため、不要な暗号化/復号化を遂行する場合がある。しかしながら、本発明では、クエリー自体に対する暗号化/復号化手続きを通じて一般のクエリーを処理する方式を採っているため、ビュー方式に比べて少なくとも同じか、またはそれより少ない数の暗号化/復号化過程を発生させる。この処理回数において最も大きな差を示す時は、クエリー命令であるUDATEを行う時である。例えば、暗号化されたカラム全体を同じ値で埋めようとする場合、従来の方法では、更新するためにカラムの各フィールドにアクセスすると余儀なく条件トリガーが発生して暗号化/復号化が処理され、全体としてレコード数の略2倍の暗号化/復号化が起こる。これに対し、本発明では、クエリー変調時に一度だけ暗号化が実行される。通常、更新クエリーは、「ある条件を満足する場合、所定の値に更新する」形態も多いため、多くのレコードを一度に更新する場合が茶飯事である。
【0025】
したがって、本発明は、暗号化/復号化関数の単一処理速度の改善と暗号化処理回数の改善により、レコードの数が多くなるほど従来の技術に比べて画期的な性能改善効果を奏する。より具体的に、従来技術と本発明との性能の差を図8に示している。図8は、従来技術と本発明を実際にテストし、該テストから発生した性能結果を示している。図8aは、暗号化された3個のフィールド名に対して100、1,000、10,000個のレコードを処理した時の性能比較を示し、図8bは、暗号化された 1個のフィールド名のフィールド値に対して最大10万個のレコードを処理した結果を示している。図8において、一番目のグラフ棒は暗号化をしなかった場合の処理速度を示し、二番目のグラフ棒は従来技術によるクエリー処理を行った場合の処理速度を示し、最後のグラフ棒は本発明による処理速度を示している。
【0026】
また、本発明は、従来のビューを利用したクエリー処理方法と同じか、またはそれ以上の互換性を提供する。従来のビューを利用した暗号化に関連したクエリー処理は、特殊な場合、例えば、多数のパーティションに分け、これらパーティションをリンクで管理する場合などには、互換性を提供することができない場合が発生する。しかしながら、本発明では、変調されたクエリーにより暗号化されたテーブルを一般のテーブルのような方式でアクセスするため、100%の互換性を提供している。
【発明を実施するための最良の形態】
【0027】
以下、本発明のクエリー変調によるクエリー処理処置及び方法を添付図面を参照して詳しく説明することにする。
【0028】
図4は、本発明のクエリー変調によるクエリー処理処置の好適な一実施の形態の構成を示す図である。
【0029】
図4に示すように、本発明のクエリー変調によるクエリー処理処置は、パケット処理部410と、クエリー変調部420と、結果値変調部430と、名称マッピングテーブル440、及び暗号化処理部450とで構成されている。
【0030】
上記名称マッピングテーブル440は、DBMS100から暗号化されたテーブル220に関連したテーブル名とフィールド名に対して変換前の名称と変換された名称とを組として格納する暗号化関連名称テーブル140を読み込んで同一の値を格納するテーブルである。より詳しくは、前の従来技術において述べたように、暗号化されたテーブル220を生成する時に、暗号化するカラムのテーブル名と該カラムを含むテーブル名を命名規則に基づいて新しく作る。このとき、暗号化前の名称と命名規則に基づいて作られた名称とを暗号化関連名称テーブル140に組として格納して管理し、上記名称テーブル140に名称が存在するか否かによって暗号化と関連があるか否かが分かり、マッピングによって対応する他方の名称が分かる。名称マッピングテーブル440を用いて名称を変えることを「変換」と称し、これは、データの暗号化/復号化方法による暗号化や復号化とは異なる。すなわち、変換とは名称マッピングテーブル440に格納されている組に差し替えることを意味し、暗号化/復号化とは暗号化/復号化方法によって変更されることを意味する。
【0031】
上記パケット処理部410は、使用者160がDBMS100に対し要請するクエリーをキャプチャーしDBMSに変調されたクエリーを伝送し、またDBMSからクエリーが処理された結果値を受け取る。通常、使用者160とDBMS100とは、ネットワークを介して接続されて送受信を行なうため、パケット形態で伝送され、パケット処理部410は、事実上パケットをキャプチャーするようになる。キャプチャーされたパケットを分析し、使用者が要請したクエリー内に暗号化に関連した項目が存在する場合には、クエリー変調部420を呼び出してクエリーを変調させる。また、パケット処理部410は、変調しなければならない場合は変調されたクエリーを、そうでない場合は元のクエリーをDBMS100に伝送することによりDBMS100がクエリーを処理するようにする。また、パケット処理部410は、DBMS100から処理されたクエリーの結果を受け取り、該結果値に暗号化に関連した項目が存在すれば、暗号化前のテーブルに変調するために結果値変調部430を呼び出して処理するようにする。そして、パケット処理部410は、結果を使用者160に伝送し、該結果を使用者が見ることができるようにする。
【0032】
パケット処理部410におけるクエリー内の項目が暗号化に関連があるか否かの判断は、クエリー内の項目が上記名称マッピングテーブル440に存在するか否かによって行なうことができる。これは、後述するクエリー変調部において説明される方法と類似している。なお、暗号化に関連した項目を変換しないということだけが異なる。
【0033】
パケット処理部410は、クエリー内の項目が暗号化に関連があるか否かの判断を省いて直ちにクエリー変調部420を呼び出して上記クエリーを処理させるようにすることもできる。暗号化に関連があるか否かを判断するためには、クエリー内の項目を順に読み込んで判断しなければならないが、この過程は、後述するクエリー変調部420でも全く同様に処理される作業である。したがって、クエリー変調部420において一括して処理することができ、若し、暗号化に関連した項目がなければ、クエリー変調部420において使用者が要請した元のクエリーと同じクエリーを返還するはずである。特に、暗号化に関連した項目がない場合、パケット処理部410においてそれを判断するためにはクエリーのすべての項目を読み込まなければならないため、クエリー変調部420において処理される分の処理費用がかかる。したがって、パケット処理部410における暗号化に関連があるか否かの判断は、不要な作業であるともいえる。
【0034】
クエリー変調部420は、クエリー内に暗号化に関連した項目が含まれている項目が存在する場合、該項目を変換または暗号化してクエリーを変調する。変調されたクエリー620は、パケット処理部410を介してDBMS100において処理されるようにする。
【0035】
クエリーの変調に関する詳細について、図6を参照して説明することにする。図6は、クエリーの最も一般的な命令語であるSELECT文の一例に関する変調を示している。図6aは使用者が要請するクエリーを示し、図6bは上記クエリーを変調したクエリーを示している。使用者が要請したクエリー610は、SELECT、FROM、WHEREなどのクエリー命令語と、テーブル名611と、フィールド名612と、定数値613の使用者項目に分けられる。クエリーの変調では、クエリー命令語はそのままにしておき、暗号化に関連した使用者項目のみを変調する。使用者項目においても暗号化と関連がない項目はそのままにしておく。暗号化と関連があるか否かの判断は使用者項目の種類によって異なる。
【0036】
クエリー内の項目がテーブル名611やフィールド名612である場合には、上記名称マッピングテーブル440に存在するか否かによって判断する。すなわち、上記名称マッピングテーブル440に存在すれば、暗号化と関連があると判断し、上記名称マッピングテーブル440に組として存在する名称が暗号化されたデータベースに対応する名称である。したがって、組として存在する名称に変換してクエリーを変調する。例えば、図6に示すように、テーブル名infoは、名称マッピングテーブル440に存在するはずであり、その対応する暗号化された名称は組となっている名称であるinfo_encryptであるため、この値に変換する。フィールド名ageも同様な理由から、組となっている名称であるage_secに変換される。
【0037】
また、クエリー内の項目が定数値613である場合をみてみる。暗号化に関連した定数値613とは、暗号化に関連したフィールド名と関係する式での定数値のことをいう。クエリー内の条件などは、フィールド名とフィールド名、フィールド名と定数値などの関係を表す方式にて示される単位関係式である(括弧を用いて単位関係式を含んで複雑にする関係式もある)。このとき、フィールド名と定数値によって示される関係式のうちのフィールド名が暗号化に関連したフィールド名である場合、該関係式における定数値が暗号化に関連した定数値である。フィールド名が暗号化と関連がある否かの判断は、前述したように、名称マッピングテーブル440に上記フィールド名が存在するか否かによって判断する。
【0038】
図6の例をみれば、WHERE節にoc_code=‘A230'の関係式があるが、フィールド名であるoc_codeが暗号化に関連したフィールド名であるため、定数値613である‘A230'は暗号化に関連した定数値になるのである。また、暗号化に関連した定数値の暗号化は、該定数値が含まれた関係式のフィールド名のフィールド値を暗号化する暗号化方法と同じ方法にて暗号化する。前述した図6の例をみれば、フィールド名であるoc_codeに該当するフィールド値を暗号化する方法にて定数値613‘A230'を暗号化する。定数値を暗号化する方法は、フィールド値を暗号化する方法と同じ方法を用いればよく、前述した従来技術と同様に、1:1マッピングが可能な暗号化方法を用いる。
【0039】
結論的に、変調されたクエリー620は、使用者クエリー610において暗号化に関連したフィールド名612と、テーブル名611、定数値613を暗号化されたテーブルに相応する暗号化されたテーブル名621、フィールド名622、定数値623に変換または暗号化したクエリーのことをいう。変調されたクエリー620は、暗号化に関連した使用者項目だけが変更されたため、一般のクエリーと同じ形態である。また、暗号化されたテーブルとフィールド名も、その名称が元の名称と異なるだけで、一般のテーブルやフィールド名と同じ形態である。すなわち、DBMSに対し一般のクエリーを要請するようにクエリーの要請が可能であり、DBMSにおいても一般のクエリーを処理するような形で処理する。したがって、従来の暗号化DBMSにおいて暗号化に関連してその処理を主に担っていたビューを利用しなくても良い。
【0040】
前述したパケット処理部410におけるクエリー内に暗号化に関連した項目が含まれているか否かの判断についてより詳しく説明することにする。クエリー内に暗号化されたカラムの暗号化前のフィールド名612があるか、または暗号化前のカラムを含むテーブル名611が含まれている場合が、クエリー内に暗号化に関連した項目が含まれている場合である。
【0041】
再び図4を参照して、結果値変調部430について説明することにする。結果値変調部430は、変調されたクエリーによって生成された結果値から暗号化に関連した項目を変換または復号化して暗号化前のデータベースに相応する結果値に変調する。変調された結果値は、使用者160に送られて該結果を見ることができるようにする。
【0042】
結果値の変調に関する詳細については、図7を参照して説明することにする。図7は、結果値を暗号化前のデータベースに対応する結果値に変調したことを示す例示図である。結果値710において暗号化に関連した項目は、テーブル名711と、フィールド名712と、フィールド値713とに分けられる。テーブル名711は、結果値がテーブル形態で返還され、該テーブル名称が上記名称マッピングテーブル440に存在すれば、暗号化に関連した項目となる。この場合には、上記マッピングテーブル440に組となる値に変換する。フィールド名712は、結果値がテーブル形態で返還され、該テーブルのフィールド名をすべて調査し、上記名称マッピングテーブル440に存在すれば、暗号化に関連した項目を探し出すことができる。この場合、テーブル名と同様に、上記マッピングテーブル440に組となる値に変換する。フィールド値713は、上記フィールド名712が暗号化と関連があれば、すなわち、上記マッピングテーブル440に存在すれば、該フィールド名に該当するすべてのフィールド値713がすべて暗号化と関連がある。したがって、すべてのフィールド値713に対して復号化を行い、その値に差し替える。クエリー変調と同様に、暗号化と関連のない項目は変調しない。上記のようにして作られたテーブルが暗号化前のデータベースに対応する結果値になる。
【0043】
例えば、図7の例示を見れば、図2bに示す暗号化テーブル220に対して図6bに示す変調されたクエリー620をDBMSに要請すれば、図7aに示すテーブル形態の結果値710を受け取るようになる。このとき、テーブル名711は、info_encryptであるため、名称マッピングテーブル440に存在し、これと組をなすinfo721に変換される。そして、フィールド名712age_secが名称マッピングテーブル440に存在するため、これと組をなすageに変換される。そして、フィールド名ageに該当する‘AS28'、‘AS28'をそれぞれ65、65に復号化して差し替えることにより、暗号化前のデータベースに対応する結果値720に変調されるのである。
【0044】
上記暗号化処理部450は、フィールド値に対し暗号化方法によって暗号化と復号化を行なう。暗号化方法は、前の従来技術で説明したように、1:1マッピング暗号化アルゴリズムを用いて、暗号化されたフィールド値を復号化して暗号化前のフィールド値を抽出することができる。暗号化処理部450は、クエリー変調部420の呼び出しによってフィールド値を暗号化し、結果値変調部430の呼び出しによって復号化する。また、クエリー変調部420は、すべての暗号化モジュールを一括して内部において管理する。したがって、従来、データベース管理システムの暗号化モジュールをシステムの内外において管理することにより生じていた煩わしさと速度低下を解消することができる。
【0045】
本発明に係るクエリーの暗号化変調による使用者クエリー処理装置及び方法では、クエリーの変調により一般的なクエリーを要請するような形で従来のデータベース管理システム100に対し要請をするが、従来のシステムのビュー403の機能を全く使用しないものではない。すなわち、暗号化テーブルを作成する過程でビューの機能が利用され、このとき、作成される暗号化関連名称テーブル140の値をもってきて名称マッピングテーブル440を作成する。
【0046】
図5は、本発明に係るクエリー変調によるクエリー処理方法の好適な一実施の形態を示すフローチャートである。
【0047】
本発明に係るクエリー変調によるクエリー処理方法は、名称マッピングテーブル440を作成するマッピングテーブル生成ステップS510と、使用者がDBMSに対し要請するクエリーをキャプチャーするパケットキャプチャーステップS520と、キャプチャーしたクエリーを変調するクエリー変調ステップS530と、変調されたクエリーにてDBMSに対しクエリーを要請し処理された結果値を受け取るクエリー要請ステップS540と、DBMS100において変調されたクエリーで処理された結果値を変調する結果値変調ステップS550と、変調された結果値を使用者に見せる結果伝送ステップS560とで構成される。
【0048】
上記マッピングテーブル生成ステップS510は、上記DBMS100の暗号化関連名称テーブル140を参照して同じ内容を有する名称マッピングテーブル440を作成する。上記名称マッピングテーブル440は、DBMS100から暗号化されたテーブル220に関連したテーブル名とフィールド名に対して暗号化前の名称と変換された名称とを組として格納する暗号化関連名称テーブル140を読み込んで同じ値を格納するテーブルである。一つの項目が上記名称マッピングテーブル440にその名称が存在するか否かによって暗号化と関連があるか否かが分かり、マッピングから対応する他方の名称が分かる。
【0049】
パケットキャプチャーステップS520は、使用者がDBMSに対しクエリー要請をする時のクエリーをキャプチャーする。通常、使用者とDBMSとはネットワークを介して接続され、クエリーがパケット形態で伝送されるため、パケットをキャプチャーするが、他の形態で通信する場合には、その通信形態のクエリーをキャプチャーする形での適用が可能である。使用者がビューなどを介して暗号化前のデータベースに対応するテーブル構造を見てクエリーを作成する。したがって、使用者のクエリーは、暗号化前のデータベース構造に基盤したクエリーである。
【0050】
上記パケットキャプチャーステップS520においてクエリー内に暗号化に関連した項目があるか否かを判断し、上記クエリー変調部420に対し選択的に呼び出してクエリー変調を行なうようにすることもできる。すなわち、上記パケットキャプチャーステップS520は、パケットをキャプチャーした後、キャプチャーしたクエリー内に暗号化に関連した項目があるか否かを判断するステップを更に含み、上記クエリー変調ステップS530は上記項目がある場合に遂行し、上記クエリー処理方法は、上記項目がない場合には、直ちにDBMS100に対しクエリーを要請し、その結果値を使用者に伝送するステップを更に含むことができる。クエリー内の項目としては、前述したように、クエリー命令語とテーブル名611、フィールド名612、定数値613の使用者項目がある。このとき、クエリー内のテーブル名611やフィールド名612が上記名称マッピングテーブル440に存在する場合が、暗号化に関連した項目が存在する場合にあたる。すなわち、これら項目は、暗号化されたデータベースには存在しない項目であるため、暗号化されたデータベースに対応する暗号化項目に変換しなければならないのである。
【0051】
また、上記パケットキャプチャーステップS520におけるクエリー内の項目が暗号化に関連があるか否かの判断を省いて、パケットをクエリー変調するクエリー変調ステップS530に移行することもできる。暗号化に関連があるか否かを判断するためには、クエリー内の項目を順に読み込んで判断しなければならないが、この過程は、後述するクエリー変調ステップS530でも同様に処理される作業である。したがって、パケットキャプチャーステップS520における暗号化に関連があるか否かの判断は、不要な作業であるともいえる。
【0052】
上記クエリー変調ステップS530は、クエリー内に暗号化に関連した項目が含まれている項目が存在する場合、その項目を変換または暗号化してクエリーを変調する。クエリー内の項目としては、前述したように、クエリー命令語とテーブル名611、フィールド名612、定数値613の使用者項目があり、クエリーの変調は、クエリー命令語はそのままにしておき、暗号化に関連した使用者項目のみを変調する。クエリー内の項目がテーブル名611やフィールド名612である場合には、上記名称マッピングテーブル440に存在するか否かによって判断する。すなわち、上記名称マッピングテーブル440に存在すれば、暗号化と関連があるとみなし、上記名称マッピングテーブル440に組をなしている名称が暗号化されたデータベースに対応する名称である。したがって、組をなす名称に変換してクエリーを変調する。また、クエリー内の項目が定数値613である場合をみてみる。暗号化に関連した定数値613とは、暗号化に関連したフィールド名に関係する式における定数値のことをいう。クエリー内の条件などは、フィールド名とフィールド名、フィールド名と定数値などの関係を表す方式にて示される単位関係式である。このとき、フィールド名と定数値によって示される関係式のうちのフィールド名が暗号化に関連したフィールド名である場合、該関係式における定数値が暗号化に関連した定数値である。フィールド名が暗号化と関連があるか否かの判断は、前述したように、名称マッピングテーブル440に上記フィールド名が存在するか否かによって判断する。
【0053】
より詳しくは、上記クエリー変調ステップS530は、クエリー内の項目を順に読み込むステップS531と、読み込んだ項目がテーブル名611であるかフィールド名612である場合、上記項目が暗号化と関連があれば暗号化に対応する項目値に変換するステップS532と、読み込んだ項目が定数値613である場合、上記定数値613が含まれる関係式において変数がフィールド名612であり且つ上記フィールド名612が暗号化と関連があれば、上記定数値613を上記暗号化/復号化方法によって暗号化した値に差し替えるステップS534と、クエリー内に更に読み込むべき項目があるか否かを判断し、更にあると判断されれば、上記項目を読み込むステップS531を再び行い、ないと判断されれば、上記クエリー要請ステップS540に移行するステップと、を含むことができる。
【0054】
クエリー要請ステップS540は、変調されたクエリーにてDBMSに対しクエリーを要請し処理された結果値を受け取る。変調されたクエリーは、既に暗号化されたテーブル名、フィールド名、フィールド値に対応する名称に変換されているか、または定数値に暗号化されているため、データベース管理システム(DBMS)は、一般的なクエリーの処理と同様にクエリーを処理することができる。すなわち、DBMSは、暗号化と関連があるか否かに関係なく要請されたクエリーを一律的に処理する。
【0055】
結果値変調ステップS550は、DBMS100において変調されたクエリーで処理された結果値から暗号化に関連した項目を変換または復号化して暗号化前のデータベースに対応する結果値に変調する。結果値710において暗号化に関連した項目は、テーブル名711、フィールド名712、フィールド値713に分けられた。テーブル名711は、結果値がテーブル形態で返還され、該テーブル名称が上記名称マッピングテーブル440に存在すれば、暗号化に関連した項目になる。この場合には、上記マッピングテーブル440に対し組となる値に変換する。フィールド名712は、結果値がテーブル形態で返還され、該テーブルのフィールド名をすべて調査して上記名称マッピングテーブル440に存在すれば、暗号化に関連した項目を探し出すことができる。この場合、テーブル名と同様に上記マッピングテーブル440に対し組となる値に変換する。フィールド値713は、上記フィールド名712が暗号化と関連があれば、すなわち、上記マッピングテーブル440に存在すれば、該フィールド名に該当するすべてのフィールド値713がすべて暗号化と関連がある。したがって、すべてのフィールド値713に対して復号化してその値に差し替える。クエリー変調と同様に、暗号化と関連のない項目は変調しない。上記のようにして作られたテーブルが暗号化前のデータベースに対応する結果値になる。
【0056】
より詳しくは、上記結果値変調ステップS550は、上記結果値として受け取ったテーブル名711が暗号化と関連があれば、暗号化に対応するテーブル名に変換するステップS532と、上記結果値として受け取ったテーブルのフィールド名712が暗号化と関連があるか否かを判断するステップS553と、上記フィールド名712が暗号化と関連があれば、暗号化に対応するフィールド名に変換するステップS554と、上記フィールド名に該当するすべてのフィールド値を復号化して差し替えるステップS555と、上記結果値として受け取ったテーブルのそれぞれのフィールド名712に対して暗号化と関連があるか否かを判断するステップS553を繰り返し行うステップと、を含む。
【0057】
結果伝送ステップS560は、変調された結果値を使用者に見せるステップである。使用者は、暗号化前のテーブル構造に基づいてクエリーを要請し、該結果も暗号化前のテーブル構造に基づいて結果を受け取ることにより、全く暗号化過程を認知することができない。すなわち、互換性が提供される。
【0058】
前述したように、上記パケットキャプチャーステップS520においてクエリー内の暗号化に関連した項目を判断し、選択的にクエリー変調を行う場合、上記クエリー変調ステップS530から結果値変調ステップS550まではクエリー内に暗号化に関した項目が含まれた場合のステップである。若し、クエリー内に暗号化に関連した項目がない場合には、このステップを実行しない。その代わりに、DBMSに対しクエリーを要請し、その結果を受け取る。一般的なDBMSのクエリー要請手続きと同一である。DBMSから受け取ったその結果を使用者に見せる(S560)。
【図面の簡単な説明】
【0059】
【図1】一部カラムを暗号化することができる従来のデータベース管理システムDBMSの構成図である。
【図2a】ビューからデータベースのカラム暗号化を行なう時にテーブルを生成する過程を示す例示図である。
【図2b】ビューからデータベースのカラム暗号化を行なう時にテーブルを生成する過程を示す例示図である。
【図3】従来の暗号化に関連したクエリーを処理する方法に関するフローチャートである。
【図4】本発明に係る使用者クエリー処理装置の好適な一実施の形態を示す構成図である。
【図5】クエリーの暗号化変調による使用者クエリー処理方法の好適な一実施の形態を示すフローチャートである。
【図6a】クエリー変調の一実施の形態を示す図である。
【図6b】クエリー変調の一実施の形態を示す図である。
【図7a】結果テーブルの変調の一実施の形態を示す図である。
【図7b】結果テーブルの変調の一実施の形態を示す図である。
【図8a】暗号化された3個のカラムに対して100、1000、10000個のレコードを処理した場合における性能差を示す比較図である。
【図8b】暗号化された1個のカラムに対して最大10万個のレコードを処理した場合における性能差を示す比較図である。
【符号の説明】
【0060】
100:データベース
120:クエリー処理部
130:ビュー
140:名称テーブル
400:クエリー処理装置
410:パケット処理部
420:クエリー変調部
430:結果値変調部
440:名称マッピングテーブル
450:暗号化処理部

【特許請求の範囲】
【請求項1】
一部カラムを暗号化したデータベースを管理するデータベース管理システム(DBMS)100に対し使用者160が暗号化前のDB構造に基盤したクエリーを要請すれば、前記クエリーを処理するための、クエリー変調によるクエリー処理処置400において、
前記DBMS100の暗号化関連テーブルにおいて暗号化するカラムに該当するフィールド名と前記カラムを含むテーブル名に対して、暗号化前の名称と暗号化された名称とを組として格納する名称マッピングテーブル440と、
使用者160がDBMS100に対し要請するクエリーをキャプチャー(Snapping)しDBMSに変調されたクエリーを伝送し、DBMSからクエリーが処理された結果値を受け取るパケット処理部410と、
前記パケット処理部410においてキャプチャーしたクエリーを分析して暗号化に関連した項目を名称マッピングテーブル440を利用して変換するか、または暗号化処理部450において暗号化することで暗号化されたデータベースを参照することができるクエリーに変調するクエリー変調部420と、
DBMS100において変調されたクエリーで処理された結果値から暗号化に関連した項目を名称マッピングテーブル440を利用して変換するか、または暗号化処理部450において復号化することで暗号化前のデータベースに対応する結果値に変調する結果値変調部430、及び
前記クエリー変調部420の呼び出しによって暗号化に関連した項目を暗号化し、結果値変調部430の呼び出しによって暗号化に関連した項目を復号化する暗号化処理部450と、
を含むことを特徴とするクエリー変調によるクエリー処理処置。
【請求項2】
クエリーにおける項目がテーブル名611とフィールド名612であり且つ前記名称マッピングテーブル440にあるか、または定数値613であり且つ前記クエリーにおける項目を含む関係式の変数が前記名称マッピングテーブル440にあるフィールド名612であれば、暗号化に関連した項目であり、
結果値における項目がテーブル名711とフィールド名712であり且つ前記名称マッピングテーブル440にあるか、または定数値713であり且つ前記結果値における項目を含む関係式の変数が前記名称マッピングテーブル440にあるフィールド名712であれば、暗号化に関連した項目であることを特徴とする請求項1に記載のクエリー変調によるクエリー処理処置。
【請求項3】
前記クエリー変調部420は、前記テーブル名611と前記フィールド名612とを前記名称マッピングテーブル440に組として格納された名称に変換し、前記定数値613を前記暗号化処理部450によって暗号化した値に差し替えることにより、暗号化されたデータベースを参照することができるクエリーに変調し、
前記結果値変調部430は、前記テーブル名711と前記フィールド名712とを前記名称マッピングテーブル440に組として格納された名称に変換し、前記定数値713を前記暗号化処理部450によって復号化した値に差し替えることにより、結果値を暗号化前のデータベースに対応する結果値に変調することを特徴とする請求項2に記載のクエリー変調によるクエリー処理処置。
【請求項4】
前記パケット処理部410は、キャプチャーしたクエリー内に暗号化に関連した項目があるか否かを判断し、前記項目があると判断されれば、前記クエリー変調部420を呼び出してクエリー変調を行なうようにし、前記項目がないと判断されれば、直ちにDBMS100にパケットを伝送することを特徴とする請求項1に記載のクエリー変調によるクエリー処理処置。
【請求項5】
前記暗号化処理部450には、暗号化/復号化に必要なモジュールが組み込まれていることを特徴とする請求項1に記載のクエリー変調によるクエリー処理処置。
【請求項6】
一部カラムを暗号化したデータベースを管理するDBMS100に対し使用者160が暗号化前のDB構造に基盤したクエリーを要請すれば、前記クエリーを処理するための、クエリー変調によるクエリー処理方法において、
前記DBMS100が暗号化関連テーブルを生成する時、暗号化するカラムに該当するフィールド名と前記カラムを含むテーブル名に対し暗号化前の名称と暗号化された名称とを組として格納する名称マッピングテーブル440を作成するマッピングテーブル生成ステップS510と、
使用者がDBMSに対し要請するクエリーをキャプチャーするパケットキャプチャーステップS520と、
キャプチャーしたクエリーを分析して暗号化に関連した項目を名称マッピングテーブル440を利用して変換するか、または暗号化処理部において暗号化することで暗号化されたデータベースを参照することができるクエリーに変調するクエリー変調ステップS530と、
変調されたクエリーにてDBMSに対しクエリーを要請し、処理された結果値を受け取るクエリー要請ステップS540と、
DBMS100において変調されたクエリーで処理された結果値から暗号化に関連した項目を名称マッピングテーブル440を利用して変換するか、または暗号化処理部において復号化することで暗号化前のデータベースに対応する結果値に変調する結果値変調ステップS550、及び
変調された結果値を使用者に見せる結果伝送ステップS560と、
を含むことを特徴とするクエリー変調によるクエリー処理方法
【請求項7】
前記クエリー変調ステップS530は、
クエリー内の項目を順に読み込むステップS531と、
読み込んだ項目がテーブル名611であるかフィールド名612であり且つ暗号化と関連があれば、前記名称マッピングテーブル440を利用して変換するステップS532と、
読み込んだ項目が定数値613であり且つ前記定数値613が含まれる関係式の変数が暗号化と関連があるフィールド名612であれば、前記定数値613を暗号化した値に差し替えるステップS534と、
クエリー内に更に読み込むべき項目があるか否かを判断し、更にあると判断されれば、当該項目を読み込むステップS531を再び行ない、ないと判断されれば、前記クエリー要請ステップS540に移行するステップと、を含み、
前記結果値変調ステップS550は、
前記結果値として受け取ったテーブル名711が暗号化と関連があれば、前記名称マッピングテーブル440を利用して変換するステップS552と、
前記結果値として受け取ったテーブルのフィールド名712が暗号化と関連があれば、前記名称マッピングテーブル440を利用して変換し、前記フィールド名に該当するすべてのフィールド値を復号化して差し替えるステップS554と、を含むことを特徴とする請求項6に記載のクエリー変調によるクエリー処理方法。
【請求項8】
前記S532ステップは、読み込んだクエリー内の項目がテーブル名611であるかフィールド名612であり且つ名称マッピングテーブル440にあれば、前記名称マッピングテーブル440において前記読み込んだクエリー内の項目に対して組として格納された値に変換し、
前記S552ステップまたはS553ステップは、結果値として受け取ったテーブル名711またはフィールド名712が名称マッピングテーブル440にあれば、前記名称マッピングテーブル440において前記結果値として受け取ったテーブル名711またはフィールド名712に対して組として格納された値に変換することを特徴とする請求項7に記載のクエリー変調によるクエリー処理方法。

【図1】
image rotate

【図2a】
image rotate

【図2b】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6a】
image rotate

【図6b】
image rotate

【図7a】
image rotate

【図7b】
image rotate

【図8a】
image rotate

【図8b】
image rotate