(57)【特許請求の範囲】
【請求項１】
一部カラムを暗号化したデータベースを管理するデータベース管理システム（ＤＢＭＳ）１００に対し使用者１６０が暗号化前のＤＢ構造に基づいたクエリーを要請したときに、クエリー変調によって前記クエリーを処理するクエリー処理装置４００において、
名称マッピングテーブル４４０と、パケット処理部４１０と、クエリー変調部４２０と、結果値変調部４３０と、暗号化処理部４５０とを含み、
前記名称マッピングテーブル４４０は、前記ＤＢＭＳ１００の暗号化関連テーブルにおいて暗号化するカラムに該当するフィールド名と前記カラムを含むテーブル名に対して、暗号化前の名称と暗号化された名称とを組として格納し、
前記パケット処理部４１０は、使用者１６０がＤＢＭＳ１００に対し要請するクエリーをキャプチャー（Ｓｎａｐｐｉｎｇ）し、キャプチャーしたクエリー内に前記データベースにおける暗号化されたカラムに関連した項目があるか否かを判断し、前記暗号化されたカラムに関連した項目があると判断されれば、前記クエリー変調部４２０を呼び出してクエリー変調を行なうようにして変調されたクエリーをＤＢＭＳ１００に伝送し、前記暗号化されたカラムに関連した項目がないと判断されれば、直ちにパケットをＤＢＭＳ１００に伝送し、ＤＢＭＳで処理されたクエリーの結果値を受け取り、
前記クエリー変調部４２０は、前記パケット処理部４１０においてキャプチャーしたクエリーを分析して前記暗号化されたカラムに関連した項目を前記名称マッピングテーブル４４０を利用して変換するか、または前記暗号化処理部４５０において暗号化することで、ＤＢＭＳ１００が管理する暗号化されたデータベースを参照することができるクエリーに変調し、
前記結果値変調部４３０は、変調されたクエリーを用いてＤＢＭＳ１００において処理されたクエリーの前記結果値を、当該結果値内の前記暗号化されたカラムに関連した項目を前記名称マッピングテーブル４４０を利用して変換するか、または前記暗号化処理部４５０において復号化することで、暗号化前のデータベースに対応する結果値に変調し、
前記暗号化処理部４５０は、暗号化／復号化に必要なモジュールが組み込まれたものであって、前記クエリー変調部４２０の呼び出しによって前記暗号化されたカラムに関連した項目を暗号化し、前記結果値変調部４３０の呼び出しによって前記暗号化されたカラムに関連した項目を復号化することを特徴とするクエリー処理装置。
【請求項２】
クエリー内の項目は、当該項目がテーブル名６１１とフィールド名６１２であり且つ前記名称マッピングテーブル４４０にある場合、または、当該項目が定数値６１３であり且つ前記クエリーにおける項目を含む関係式の変数が前記名称マッピングテーブル４４０にあるフィールド名６１２である場合に、前記暗号化されたカラムに関連した項目であり、
結果値内の項目は、当該項目がテーブル名７１１とフィールド名７１２であり且つ前記名称マッピングテーブル４４０にある場合、または、当該項目が定数値７１３であり且つ前記結果値における項目を含む関係式の変数が前記名称マッピングテーブル４４０にあるフィールド名７１２である場合に、前記暗号化されたカラムに関連した項目であることを特徴とする請求項１に記載のクエリー処理装置。
【請求項３】
前記クエリー変調部４２０は、前記テーブル名６１１と前記フィールド名６１２とを前記名称マッピングテーブル４４０に各名称と組として格納された名称に変換し、前記定数値６１３を前記暗号化処理部４５０によって暗号化された値に差し替えることにより、変調されたクエリーが暗号化されたデータベースを参照することができるようにクエリーを変調し、
前記結果値変調部４３０は、前記テーブル名７１１と前記フィールド名７１２とを前記名称マッピングテーブル４４０に各名称と組として格納された名称に変換し、前記定数値７１３を前記暗号化処理部４５０によって復号化された値に差し替えることにより、結果値を暗号化前のデータベースに対応する結果値に変調することを特徴とする請求項２に記載のクエリー処理装置。 
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一部カラムを暗号化したデータベースのＤＢＭＳ（データベース管理システム）に対し要請する使用者の暗号化前のデータベース構造に基盤したクエリーを、暗号化したデータベース構造のクエリーに変調し、暗号化クエリーの処理性能を画期的に改善した、クエリー変調によるクエリー処理装置及び方法に関する。
【背景技術】
【０００２】
図１は、一部カラムを暗号化することができる従来のデータベース管理システム（ＤＢＭＳ）の構成図である。図１に示されたように、データベースの一部カラムを暗号化することができるデータベース管理システム（ＤＢＭＳ）１００は、データベース１１０と、クエリー処理部１２０と、ビュー１３０と、暗号化モジュール１５０とを含んでいる。クエリー処理部１２０は、使用者１６０からのデータベースに対するクエリー要請があった場合、クエリーに該当するデータベースのテーブルを参照してその結果を抽出し使用者１６０に該結果値を伝送する役割を果たす（使用者に対し結果を見せるための仮想テーブルや生成されたテーブルをＤＢに格納してから該テーブルを返還したりすることもある。）。これは、一般的なＤＢＭＳの機能である。若し、要請されたクエリー内に暗号化されているカラムがあるテーブルや該カラムのフィールド値を参照する場合は、暗号化されたテーブルの処理にあたるため、それはビュー１３０において処理させる。ビュー１３０は、一部カラムが暗号化されたテーブルを主に取り扱うためのものであって、使用者をして暗号化されたテーブルの構成が分かるように暗号化前のテーブルの構造を見ることができるようにし、この構造に基盤して使用者がクエリーを作成して要請すれば、該クエリーを解釈し処理する機能を担う。すなわち、暗号化されたテーブルに対して暗号化前のテーブル形態で見せる一種のウィンドウのようなものである。ビューは、暗号化されたフィールド値の暗号化と復号化のために暗号化モジュール１５０を利用する。従来のデータベース管理システム１００は、その内部に基本的な暗号化方法に関する暗号化モジュール１５０が組み込まれているものもあるが、その他、外部の暗号化モジュール１５５を参照して呼び出す場合も少なくない。この種の暗号化モジュール１５５の外部参照は、システムの複雑化や速度低下を引き起こす要因にもなる。
【０００３】
図２は、ビューを介してデータベースのカラム暗号化を行なう時におけるテーブルの生成過程を示す例示図である。
【０００４】
データベースのカラム暗号化は、テーブルにおいて暗号化の必要性のある一部のカラムのみを暗号化する。すなわち、０個以上乃至カラム全体を暗号化することができる。先ず、カラム暗号化のために暗号化前のテーブル２１０と同じテーブルを生成し、該生成されたテーブルに暗号化したいカラムに該当する暗号化されたカラム２２６を追加する。
【０００５】
該テーブルが、すなわち暗号化されたテーブル２２０となる。暗号化されたテーブル２２０の名称は、一定した命名規則に基づいて暗号化の前テーブル２１０の名前と関連付けられて決められ、両名称は１：１にマッピングされ、命名規則さえ知っていれば、一方の名称が分かるだけで他方の名称が分かる。新たに追加された暗号化されたカラム２２２に該当する暗号化されたフィールド名２２６は、暗号化前のテーブル２１０のフィールド名２１６によって決められ、一定の１：１マッピングの命名規則に基づいて生成されることで一方の名称が分かるだけで他方の名称が分かる。上記テーブル名とフィールド名は、暗号化前の名称と暗号化された名称を暗号化関連名称テーブル１４０に格納して管理する。したがって、上記名称テーブル１４０に名称が存在するか否かによって暗号化関連有無が分かり、マッピングから対応する他方の名称が分かる。
【０００６】
暗号化されたカラム２２６が作られれば、暗号化前のカラム２１６にあるすべてのフィールド値２１８を暗号化して暗号化されたカラム２２６に入力する。そして、暗号化されたテーブル２２０の暗号化前のフィールド名に該当するフィールド名のフィールド値をすべてゼロ（ｎｕｌｌ）で処理する。フィールド値の暗号化は、１：１マッピング暗号化／復号化方法（アルゴリズム）によって暗号化する。１：１マッピングによる暗号化／復号化方法であるため、暗号化されたフィールド値２２８だけで復号化することで元のレコードフィールド値２１８への復元が可能である。
【０００７】
図２の例示を更に詳しく説明することにする。図２ａは暗号化前のテーブルを示しており、図２ｂは暗号化された以後のテーブルを示している。暗号化前のテーブルであるｉｎｆｏから同じテーブルである暗号化されたテーブルｉｎｆｏ＿ｅｎｃｒｙｐｔを生成し、暗号化対象となるカラムであるｏｃ＿ｃｏｄｅに該当する暗号化されたカラムであるｏｃ＿ｃｏｄｅ＿ｓｅｃを作成する。そして、フィールド名がｏｃ＿ｃｏｄｅであるフィールド値をすべて暗号化してカラムｏｃ＿ｃｏｄｅ＿ｓｅｃに入れる。そして、暗号化対象となるカラムであるｏｃ＿ｃｏｄｅにはすべてゼロで処理する。また、暗号化関連名称テーブル１４０には、暗号化に係わって新たに作られたテーブル名ｉｎｆｏと、暗号化カラムのフィールド名であるａｇｅとｏｃ＿ｃｏｄｅに対してそれぞれ暗号化前の名称と暗号化後の名称とを組として格納する。
【０００８】
また、一部カラムが暗号化されたテーブルが作られれば、該テーブルに関連した暗号化／復号化トリガーがレコード毎に作られる。一般的なＤＢＭＳにおけるトリガーは、テーブルにレコードアップデートや挿入をする時に自動で実行される手順であるが、暗号化／復号化トリガーは、当該フィールド値に対する暗号化／復号化を自動で行なうために作られたトリガーである。従来のビューを利用した技術では、上記のように、フィールド値の暗号化／復号化をトリガーを介して行なうため、一括して処理する作業の際に暗号化／復号化を遂行しすぎるようにするという原因を提供する。
【０００９】
図３は、従来のビューを利用した暗号化に関連したクエリーを処理する方法を示すフローチャートである。使用者は、ビュー１３０から提供する暗号化前のテーブル構造を見て、該構造に基礎してクエリーを作成するようになる。すなわち、使用者は、暗号化前のテーブル構造にて必要なクエリーを要請するようになる（Ｓ３１０）。使用者が要請したクエリー内に暗号化に関連したフィールド名やテーブルがあるか否かを判断する（Ｓ３２０）。具体的に、暗号化関連名称マッピングテーブル１４０を参照して該テーブルに名称が存在すれば、「ある」と判断する。なお、クエリー内に暗号化されたテーブルを参照しない場合は、一般的なデータベースのクエリー処理と同様にテーブルにアクセスしてクエリーを処理し（Ｓ３３１）、その結果を生成して使用者に結果テーブルを見せる（Ｓ３４０）。使用者のクエリー内に暗号化されたテーブルを参照する場合は、先ず、クエリー内に示された暗号化前のテーブルの名前から名称マッピングテーブル１４０を参照して暗号化されたテーブル名前を探し出す（Ｓ３２１）。探し出した暗号化されたテーブルの暗号化されたカラムのすべてのフィールド値を復号化してクエリーを処理する（Ｓ３２３）。例えば、暗号化されたフィールド値に対する所定の条件を満足する場合（これは、通常、クエリーの条件を表示するＷＨＥＲＥ節に表示するようになる）に該当するレコードだけを含むテーブルを抽出したいならば、すべてのレコードの暗号化されたフィールド値を復号化し該値が上記条件に満足するか否かを検査する。特に、条件式が「＜」や「＞」などの比較を示す場合は、暗号化された値では比較することができないため、すべて復号化して調査するしかない。条件を満足するレコードだけを追加して結果値を生成する（Ｓ３２４）。生成されたクエリーの結果値を使用者に伝送し、該結果値を見ることができるようにする（Ｓ３４０）。ビュー１３０は、通常、テーブルを選択（ＳＥＬＥＣＴ）して結果値を見る時、上記のように暗号化／復号化してその結果値を仮想テーブルとして見せることにより、使用者は、暗号化／復号化が分からなくても暗号化前のテーブルとして見て、その処理された結果値も暗号化前の値として見るようになる。結果値は、仮想テーブル形態で見せるか、または生成された結果値に対するテーブルをＤＢに格納し該テーブルを返還したりすることもある。上記のようにすべてのレコードに対する復号化を行なう作業は、一般のクエリー処理に比べて、暗号化されたフィールド値を含んだクエリーの処理性能を低下させる要因になる。しかし、テーブルにおけるレコードの挿入や更新は、上記のようにその結果値を敢えて返還しなくても良いため、ビューにおいてトリガーによって実行される。すなわち、前述したように、レコードを挿入や更新する時に、該トリガーが作動して暗号化／復号化過程を経て処理される。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記した従来のシステムの問題点は、暗号化モジュールの参照に起因する性能低下と暗号化に関連したテーブルのすべてのレコードの復号化に起因する性能低下とに大別することができる。前でも簡単に言及したように、暗号化モジュールはシステム内部にも存在するが、外部にも存在するため、これらを一律に管理することが難しく、好適な暗号化モジュールを探し出すにも多くの時間がかかる。また、外部の暗号化モジュールを利用するためには、内部の暗号化モジュールに比べて多くの費用がかかる。暗号化モジュールを一度実行するのにかかる時間は極めて小さいが、レコードの数が膨大である場合、すべてのレコード数に対して暗号化されたカラムのフィールド値をすべて暗号化／復号化しなければならないため、レバレッジ効果が発生して全体として大きな速度低下が発生し得る。例えば、暗号化されたフィールド値のフィールド名が ３個であり（すなわち、フィールド名に該当するすべてのフィールド値であるカラムが３個）、レコードが１００,０００個である場合、該フィールド値の条件をすべて検査するためには、３×１００,０００回を復号化しなければならない。すなわち、暗号化されたフィールド値のフィールド名の数が多いほど、レコードが多いほど条件検査のためのシステムの負荷が非常に大きくなる。
【００１１】
本発明は、上記のような暗号化されたフィールド値を有するすべてのレコードを復号化する過程から発生するシステムの性能低下によるクエリー処理時間が遅延されるという問題点を解決するためになされたものであって、その目的は、従来の暗号化データベース管理システム（ＤＢＭＳ）の前端から使用者クエリーを受け取って暗号化データベース構造のクエリーに変調し、データベース管理システムに伝達することにより、暗号化クエリーの処理性能を画期的に改善する使用者クエリー処理装置及び方法を提供することである。
【００１２】
また、他の目的は、上記のようにデーベース管理システムの内・外部に設けられている暗号化モジュールを管理し参照することから発生するクエリー処理の性能低下を克服するために、暗号化モジュールを統合的で且つ一律的に内部において管理することができる使用者クエリー処理装置及び方法を提供することである。
【００１３】
また、従来のデータベース管理システムは、通常、商用化製品であって、かかる構成を内部に一体で具現しているため、使用者とデータベース管理システムとの間に使用者クエリー処理装置を介装することにより、従来のデータベース管理システムをそのまま利用し、これにより改善費用を最小化する使用者クエリー処理装置及び方法を提供することである。
【００１４】
また、従来のビューを利用した暗号化処理及び方法では、暗号化前のテーブルを基礎にしたクエリー結果が暗号化されたテーブルを基礎にしたクエリー結果と完全に対応するように互換性（Ｔｒａｎｓｐａｒｅｎｃｙ）を提供している。しかしながら、特殊な場合、従来の技術は互換性を提供することができないことがある。例えば、ＤＢＭＳはテーブルの大きさが膨大である場合、多数のパーティションに分け、これらパーティションをリンクで管理する場合がある。ビューによって処理される仮想テーブルは、パーティションに対するリンク管理がまともにできないことから互換性を完全に保障することができない。本発明は、完全な互換性が提供できる使用者クエリー処理装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明のクエリー処理装置は、一部カラムを暗号化したデータベースを管理するデータベース管理システム（ＤＢＭＳ）１００に対し使用者１６０が暗号化前のＤＢ構造に基づいたクエリーを要請したときに、クエリー変調によって前記クエリーを処理するクエリー処理装置４００であって、名称マッピングテーブル４４０と、パケット処理部４１０と、クエリー変調部４２０と、結果値変調部４３０と、暗号化処理部４５０とを含む。前記名称マッピングテーブル４４０は、前記ＤＢＭＳ１００の暗号化関連テーブルにおいて暗号化するカラムに該当するフィールド名と前記カラムを含むテーブル名に対して、暗号化前の名称と暗号化された名称とを組として格納する。前記パケット処理部４１０は、使用者１６０がＤＢＭＳ１００に対し要請するクエリーをキャプチャー（Ｓｎａｐｐｉｎｇ）し、キャプチャーしたクエリー内に前記データベースにおける暗号化されたカラムに関連した項目があるか否かを判断し、前記暗号化されたカラムに関連した項目があると判断されれば、前記クエリー変調部４２０を呼び出してクエリー変調を行なうようにして変調されたクエリーをＤＢＭＳ１００に伝送し、前記暗号化されたカラムに関連した項目がないと判断されれば、直ちにパケットをＤＢＭＳ１００に伝送し、ＤＢＭＳで処理されたクエリーの結果値を受け取る。前記クエリー変調部４２０は、前記パケット処理部４１０においてキャプチャーしたクエリーを分析して前記暗号化されたカラムに関連した項目を前記名称マッピングテーブル４４０を利用して変換するか、または前記暗号化処理部４５０において暗号化することで、ＤＢＭＳ１００が管理する暗号化されたデータベースを参照することができるクエリーに変調する。前記結果値変調部４３０は、変調されたクエリーを用いてＤＢＭＳ１００において処理されたクエリーの前記結果値を、当該結果値内の前記暗号化されたカラムに関連した項目を前記名称マッピングテーブル４４０を利用して変換するか、または前記暗号化処理部４５０において復号化することで、暗号化前のデータベースに対応する結果値に変調する。前記暗号化処理部４５０は、暗号化／復号化に必要なモジュールが組み込まれたものであって、前記クエリー変調部４２０の呼び出しによって前記暗号化されたカラムに関連した項目を暗号化し、前記結果値変調部４３０の呼び出しによって前記暗号化されたカラムに関連した項目を復号化する。
【００１６】
クエリー内の項目は、当該項目がテーブル名６１１とフィールド名６１２であり且つ前記名称マッピングテーブル４４０にある場合、または、当該項目が定数値６１３であり且つ前記クエリーにおける項目を含む関係式の変数が前記名称マッピングテーブル４４０にあるフィールド名６１２である場合に、前記暗号化されたカラムに関連した項目であり、結果値内の項目は、当該項目がテーブル名７１１とフィールド名７１２であり且つ前記名称マッピングテーブル４４０にある場合、または、当該項目が定数値７１３であり且つ前記結果値における項目を含む関係式の変数が前記名称マッピングテーブル４４０にあるフィールド名７１２である場合に、前記暗号化されたカラムに関連した項目であってよい。
【００１７】
前記クエリー変調部４２０は、前記テーブル名６１１と前記フィールド名６１２とを前記名称マッピングテーブル４４０に各名称と組として格納された名称に変換し、前記定数値６１３を前記暗号化処理部４５０によって暗号化された値に差し替えることにより、変調されたクエリーが暗号化されたデータベースを参照することができるようにクエリーを変調し、前記結果値変調部４３０は、前記テーブル名７１１と前記フィールド名７１２とを前記名称マッピングテーブル４４０に各名称と組として格納された名称に変換し、前記定数値７１３を前記暗号化処理部４５０によって復号化された値に差し替えることにより、結果値を暗号化前のデータベースに対応する結果値に変調してよい。
【発明の効果】
【００２３】
上述したように、ビューを使用する従来の暗号化項目が含まれたクエリーの処理処置及び方法では、クエリー処理時に暗号化モジュールを内部で一律的に管理することができずに外部の暗号化モジュールを参照することにより全体的な性能低下をもたらしていたが、本発明によるクエリー変調によるクエリー処理装置及び方法では、暗号化モジュールを一律的に自己管理し直接呼び出し、データベース管理システム（ＤＢＭＳ）の資源共有なしに自己資源を使用することにより、効率的な速度を出すことができる。特に、一つのフィールド値を暗号化／復号化する過程における、従来の技術に比べてのその速度差は僅かであるが、暗号化／復号化処理回数が増える度にその差は相当に大きく広がる。暗号化／復号化に関連したクエリーを処理する場合には、条件を満足するか否かを比較するためにカラムの各値を復号化しなければならないため、テーブルの大きさが何十万、何百万となる場合、すべてのレコードの復号化のため処理速度の差は非常に大きく広がるようになる。
【００２４】
また、ビューを使用する従来の暗号化クエリーの処理方法では、トリガーなどのレコードにアクセスした時、暗号化／復号化するプログラムが自動実行される構造となっているため、不要な暗号化／復号化を遂行する場合がある。しかしながら、本発明では、クエリー自体に対する暗号化／復号化手続きを通じて一般のクエリーを処理する方式を採っているため、ビュー方式に比べて少なくとも同じか、またはそれより少ない数の暗号化／復号化過程を発生させる。この処理回数において最も大きな差を示す時は、クエリー命令であるＵＰＤＡＴＥを行う時である。例えば、暗号化されたカラム全体を同じ値で埋めようとする場合、従来の方法では、更新するためにカラムの各フィールドにアクセスすると余儀なく条件トリガーが発生して暗号化／復号化が処理され、全体としてレコード数の略２倍の暗号化／復号化が起こる。これに対し、本発明では、クエリー変調時に一度だけ暗号化が実行される。通常、更新クエリーは、「ある条件を満足する場合、所定の値に更新する」形態も多いため、多くのレコードを一度に更新する場合が茶飯事である。 
【００２５】
したがって、本発明は、暗号化／復号化関数の単一処理速度の改善と暗号化処理回数の改善により、レコードの数が多くなるほど従来の技術に比べて画期的な性能改善効果を奏する。より具体的に、従来技術と本発明との性能の差を図８に示している。図８は、従来技術と本発明を実際にテストし、該テストから発生した性能結果を示している。図８ａは、暗号化された３個のフィールド名に対して１００、１,０００、１０,０００個のレコードを処理した時の性能比較を示し、図８ｂは、暗号化された １個のフィールド名のフィールド値に対して最大１０万個のレコードを処理した結果を示している。図８において、一番目のグラフ棒は暗号化をしなかった場合の処理速度を示し、二番目のグラフ棒は従来技術によるクエリー処理を行った場合の処理速度を示し、最後のグラフ棒は本発明による処理速度を示している。
【００２６】
また、本発明は、従来のビューを利用したクエリー処理方法と同じか、またはそれ以上の互換性を提供する。従来のビューを利用した暗号化に関連したクエリー処理は、特殊な場合、例えば、多数のパーティションに分け、これらパーティションをリンクで管理する場合などには、互換性を提供することができない場合が発生する。しかしながら、本発明では、変調されたクエリーにより暗号化されたテーブルを一般のテーブルのような方式でアクセスするため、１００％の互換性を提供している。
【発明を実施するための最良の形態】
【００２７】
以下、本発明のクエリー変調によるクエリー処理装置及び方法を添付図面を参照して詳しく説明することにする。 
【００２８】
図４は、本発明のクエリー変調によるクエリー処理装置の好適な一実施の形態の構成を示す図である。 
【００２９】
図４に示すように、本発明のクエリー変調によるクエリー処理装置は、パケット処理部４１０と、クエリー変調部４２０と、結果値変調部４３０と、名称マッピングテーブル４４０、及び暗号化処理部４５０とで構成されている。
【００３０】
上記名称マッピングテーブル４４０は、ＤＢＭＳ１００から暗号化されたテーブル２２０に関連したテーブル名とフィールド名に対して変換前の名称と変換された名称とを組として格納する暗号化関連名称テーブル１４０を読み込んで同一の値を格納するテーブルである。より詳しくは、前の従来技術において述べたように、暗号化されたテーブル２２０を生成する時に、暗号化するカラムのテーブル名と該カラムを含むテーブル名を命名規則に基づいて新しく作る。このとき、暗号化前の名称と命名規則に基づいて作られた名称とを暗号化関連名称テーブル１４０に組として格納して管理し、上記名称テーブル１４０に名称が存在するか否かによって暗号化と関連があるか否かが分かり、マッピングによって対応する他方の名称が分かる。名称マッピングテーブル４４０を用いて名称を変えることを「変換」と称し、これは、データの暗号化／復号化方法による暗号化や復号化とは異なる。すなわち、変換とは名称マッピングテーブル４４０に格納されている組に差し替えることを意味し、暗号化／復号化とは暗号化／復号化方法によって変更されることを意味する。
【００３１】
上記パケット処理部４１０は、使用者１６０がＤＢＭＳ１００に対し要請するクエリーをキャプチャーしＤＢＭＳに変調されたクエリーを伝送し、またＤＢＭＳからクエリーが処理された結果値を受け取る。通常、使用者１６０とＤＢＭＳ１００とは、ネットワークを介して接続されて送受信を行なうため、パケット形態で伝送され、パケット処理部４１０は、事実上パケットをキャプチャーするようになる。キャプチャーされたパケットを分析し、使用者が要請したクエリー内に暗号化に関連した項目が存在する場合には、クエリー変調部４２０を呼び出してクエリーを変調させる。また、パケット処理部４１０は、変調しなければならない場合は変調されたクエリーを、そうでない場合は元のクエリーをＤＢＭＳ１００に伝送することによりＤＢＭＳ１００がクエリーを処理するようにする。また、パケット処理部４１０は、ＤＢＭＳ１００から処理されたクエリーの結果を受け取り、該結果値に暗号化に関連した項目が存在すれば、暗号化前のテーブルに変調するために結果値変調部４３０を呼び出して処理するようにする。そして、パケット処理部４１０は、結果を使用者１６０に伝送し、該結果を使用者が見ることができるようにする。
【００３２】
パケット処理部４１０におけるクエリー内の項目が暗号化に関連があるか否かの判断は、クエリー内の項目が上記名称マッピングテーブル４４０に存在するか否かによって行なうことができる。これは、後述するクエリー変調部において説明される方法と類似している。なお、暗号化に関連した項目を変換しないということだけが異なる。
【００３３】
パケット処理部４１０は、クエリー内の項目が暗号化に関連があるか否かの判断を省いて直ちにクエリー変調部４２０を呼び出して上記クエリーを処理させるようにすることもできる。暗号化に関連があるか否かを判断するためには、クエリー内の項目を順に読み込んで判断しなければならないが、この過程は、後述するクエリー変調部４２０でも全く同様に処理される作業である。したがって、クエリー変調部４２０において一括して処理することができ、若し、暗号化に関連した項目がなければ、クエリー変調部４２０において使用者が要請した元のクエリーと同じクエリーを返還するはずである。特に、暗号化に関連した項目がない場合、パケット処理部４１０においてそれを判断するためにはクエリーのすべての項目を読み込まなければならないため、クエリー変調部４２０において処理される分の処理費用がかかる。したがって、パケット処理部４１０における暗号化に関連があるか否かの判断は、不要な作業であるともいえる。
【００３４】
クエリー変調部４２０は、クエリー内に暗号化に関連した項目が含まれている項目が存在する場合、該項目を変換または暗号化してクエリーを変調する。変調されたクエリー６２０は、パケット処理部４１０を介してＤＢＭＳ１００において処理されるようにする。
【００３５】
クエリーの変調に関する詳細について、図６を参照して説明することにする。図６は、クエリーの最も一般的な命令語であるＳＥＬＥＣＴ文の一例に関する変調を示している。図６ａは使用者が要請するクエリーを示し、図６ｂは上記クエリーを変調したクエリーを示している。使用者が要請したクエリー６１０は、ＳＥＬＥＣＴ、ＦＲＯＭ、ＷＨＥＲＥなどのクエリー命令語と、テーブル名６１１と、フィールド名６１２と、定数値６１３の使用者項目に分けられる。クエリーの変調では、クエリー命令語はそのままにしておき、暗号化に関連した使用者項目のみを変調する。使用者項目においても暗号化と関連がない項目はそのままにしておく。暗号化と関連があるか否かの判断は使用者項目の種類によって異なる。
【００３６】
クエリー内の項目がテーブル名６１１やフィールド名６１２である場合には、上記名称マッピングテーブル４４０に存在するか否かによって判断する。すなわち、上記名称マッピングテーブル４４０に存在すれば、暗号化と関連があると判断し、上記名称マッピングテーブル４４０に組として存在する名称が暗号化されたデータベースに対応する名称である。したがって、組として存在する名称に変換してクエリーを変調する。例えば、図６に示すように、テーブル名ｉｎｆｏは、名称マッピングテーブル４４０に存在するはずであり、その対応する暗号化された名称は組となっている名称であるｉｎｆｏ＿ｅｎｃｒｙｐｔであるため、この値に変換する。フィールド名ａｇｅも同様な理由から、組となっている名称であるａｇｅ＿ｓｅｃに変換される。
【００３７】
また、クエリー内の項目が定数値６１３である場合をみてみる。暗号化に関連した定数値６１３とは、暗号化に関連したフィールド名と関係する式での定数値のことをいう。クエリー内の条件などは、フィールド名とフィールド名、フィールド名と定数値などの関係を表す方式にて示される単位関係式である（括弧を用いて単位関係式を含んで複雑にする関係式もある）。このとき、フィールド名と定数値によって示される関係式のうちのフィールド名が暗号化に関連したフィールド名である場合、該関係式における定数値が暗号化に関連した定数値である。フィールド名が暗号化と関連がある否かの判断は、前述したように、名称マッピングテーブル４４０に上記フィールド名が存在するか否かによって判断する。
【００３８】
図６の例をみれば、ＷＨＥＲＥ節にｏｃ＿ｃｏｄｅ＝‘Ａ２３０'の関係式があるが、フィールド名であるｏｃ＿ｃｏｄｅが暗号化に関連したフィールド名であるため、定数値６１３である‘Ａ２３０'は暗号化に関連した定数値になるのである。また、暗号化に関連した定数値の暗号化は、該定数値が含まれた関係式のフィールド名のフィールド値を暗号化する暗号化方法と同じ方法にて暗号化する。前述した図６の例をみれば、フィールド名であるｏｃ＿ｃｏｄｅに該当するフィールド値を暗号化する方法にて定数値６１３‘Ａ２３０'を暗号化する。定数値を暗号化する方法は、フィールド値を暗号化する方法と同じ方法を用いればよく、前述した従来技術と同様に、１：１マッピングが可能な暗号化方法を用いる。
【００３９】
結論的に、変調されたクエリー６２０は、使用者クエリー６１０において暗号化に関連したフィールド名６１２と、テーブル名６１１、定数値６１３を暗号化されたテーブルに相応する暗号化されたテーブル名６２１、フィールド名６２２、定数値６２３に変換または暗号化したクエリーのことをいう。変調されたクエリー６２０は、暗号化に関連した使用者項目だけが変更されたため、一般のクエリーと同じ形態である。また、暗号化されたテーブルとフィールド名も、その名称が元の名称と異なるだけで、一般のテーブルやフィールド名と同じ形態である。すなわち、ＤＢＭＳに対し一般のクエリーを要請するようにクエリーの要請が可能であり、ＤＢＭＳにおいても一般のクエリーを処理するような形で処理する。したがって、従来の暗号化ＤＢＭＳにおいて暗号化に関連してその処理を主に担っていたビューを利用しなくても良い。
【００４０】
前述したパケット処理部４１０におけるクエリー内に暗号化に関連した項目が含まれているか否かの判断についてより詳しく説明することにする。クエリー内に暗号化されたカラムの暗号化前のフィールド名６１２があるか、または暗号化前のカラムを含むテーブル名６１１が含まれている場合が、クエリー内に暗号化に関連した項目が含まれている場合である。
【００４１】
再び図４を参照して、結果値変調部４３０について説明することにする。結果値変調部４３０は、変調されたクエリーによって生成された結果値から暗号化に関連した項目を変換または復号化して暗号化前のデータベースに相応する結果値に変調する。変調された結果値は、使用者１６０に送られて該結果を見ることができるようにする。
【００４２】
結果値の変調に関する詳細については、図７を参照して説明することにする。図７は、結果値を暗号化前のデータベースに対応する結果値に変調したことを示す例示図である。結果値７１０において暗号化に関連した項目は、テーブル名７１１と、フィールド名７１２と、フィールド値７１３とに分けられる。テーブル名７１１は、結果値がテーブル形態で返還され、該テーブル名称が上記名称マッピングテーブル４４０に存在すれば、暗号化に関連した項目となる。この場合には、上記マッピングテーブル４４０に組となる値に変換する。フィールド名７１２は、結果値がテーブル形態で返還され、該テーブルのフィールド名をすべて調査し、上記名称マッピングテーブル４４０に存在すれば、暗号化に関連した項目を探し出すことができる。この場合、テーブル名と同様に、上記マッピングテーブル４４０に組となる値に変換する。フィールド値７１３は、上記フィールド名７１２が暗号化と関連があれば、すなわち、上記マッピングテーブル４４０に存在すれば、該フィールド名に該当するすべてのフィールド値７１３がすべて暗号化と関連がある。したがって、すべてのフィールド値７１３に対して復号化を行い、その値に差し替える。クエリー変調と同様に、暗号化と関連のない項目は変調しない。上記のようにして作られたテーブルが暗号化前のデータベースに対応する結果値になる。
【００４３】
例えば、図７の例示を見れば、図２ｂに示す暗号化テーブル２２０に対して図６ｂに示す変調されたクエリー６２０をＤＢＭＳに要請すれば、図７ａに示すテーブル形態の結果値７１０を受け取るようになる。このとき、テーブル名７１１は、ｉｎｆｏ_ｅｎｃｒｙｐｔであるため、名称マッピングテーブル４４０に存在し、これと組をなすｉｎｆｏ７２１に変換される。そして、フィールド名７１２ａｇｅ_ｓｅｃが名称マッピングテーブル４４０に存在するため、これと組をなすａｇｅに変換される。そして、フィールド名ａｇｅに該当する‘ＡＳ２８'、‘ＡＳ２８'をそれぞれ６５、６５に復号化して差し替えることにより、暗号化前のデータベースに対応する結果値７２０に変調されるのである。
【００４４】
上記暗号化処理部４５０は、フィールド値に対し暗号化方法によって暗号化と復号化を行なう。暗号化方法は、前の従来技術で説明したように、１：１マッピング暗号化アルゴリズムを用いて、暗号化されたフィールド値を復号化して暗号化前のフィールド値を抽出することができる。暗号化処理部４５０は、クエリー変調部４２０の呼び出しによってフィールド値を暗号化し、結果値変調部４３０の呼び出しによって復号化する。また、クエリー変調部４２０は、すべての暗号化モジュールを一括して内部において管理する。したがって、従来、データベース管理システムの暗号化モジュールをシステムの内外において管理することにより生じていた煩わしさと速度低下を解消することができる。
【００４５】
本発明に係るクエリーの暗号化変調による使用者クエリー処理装置及び方法では、クエリーの変調により一般的なクエリーを要請するような形で従来のデータベース管理システム１００に対し要請をするが、従来のシステムのビュー４０３の機能を全く使用しないものではない。すなわち、暗号化テーブルを作成する過程でビューの機能が利用され、このとき、作成される暗号化関連名称テーブル１４０の値をもってきて名称マッピングテーブル４４０を作成する。
【００４６】
図５は、本発明に係るクエリー変調によるクエリー処理方法の好適な一実施の形態を示すフローチャートである。
【００４７】
本発明に係るクエリー変調によるクエリー処理方法は、名称マッピングテーブル４４０を作成するマッピングテーブル生成ステップＳ５１０と、使用者がＤＢＭＳに対し要請するクエリーをキャプチャーするパケットキャプチャーステップＳ５２０と、キャプチャーしたクエリーを変調するクエリー変調ステップＳ５３０と、変調されたクエリーにてＤＢＭＳに対しクエリーを要請し処理された結果値を受け取るクエリー要請ステップＳ５４０と、ＤＢＭＳ１００において変調されたクエリーで処理された結果値を変調する結果値変調ステップＳ５５０と、変調された結果値を使用者に見せる結果伝送ステップＳ５６０とで構成される。
【００４８】
上記マッピングテーブル生成ステップＳ５１０は、上記ＤＢＭＳ１００の暗号化関連名称テーブル１４０を参照して同じ内容を有する名称マッピングテーブル４４０を作成する。上記名称マッピングテーブル４４０は、ＤＢＭＳ１００から暗号化されたテーブル２２０に関連したテーブル名とフィールド名に対して暗号化前の名称と変換された名称とを組として格納する暗号化関連名称テーブル１４０を読み込んで同じ値を格納するテーブルである。一つの項目が上記名称マッピングテーブル４４０にその名称が存在するか否かによって暗号化と関連があるか否かが分かり、マッピングから対応する他方の名称が分かる。
【００４９】
パケットキャプチャーステップＳ５２０は、使用者がＤＢＭＳに対しクエリー要請をする時のクエリーをキャプチャーする。通常、使用者とＤＢＭＳとはネットワークを介して接続され、クエリーがパケット形態で伝送されるため、パケットをキャプチャーするが、他の形態で通信する場合には、その通信形態のクエリーをキャプチャーする形での適用が可能である。使用者がビューなどを介して暗号化前のデータベースに対応するテーブル構造を見てクエリーを作成する。したがって、使用者のクエリーは、暗号化前のデータベース構造に基盤したクエリーである。
【００５０】
上記パケットキャプチャーステップＳ５２０においてクエリー内に暗号化に関連した項目があるか否かを判断し、上記クエリー変調部４２０に対し選択的に呼び出してクエリー変調を行なうようにすることもできる。すなわち、上記パケットキャプチャーステップＳ５２０は、パケットをキャプチャーした後、キャプチャーしたクエリー内に暗号化に関連した項目があるか否かを判断するステップを更に含み、上記クエリー変調ステップＳ５３０は上記項目がある場合に遂行し、上記クエリー処理方法は、上記項目がない場合には、直ちにＤＢＭＳ１００に対しクエリーを要請し、その結果値を使用者に伝送するステップを更に含むことができる。クエリー内の項目としては、前述したように、クエリー命令語とテーブル名６１１、フィールド名６１２、定数値６１３の使用者項目がある。このとき、クエリー内のテーブル名６１１やフィールド名６１２が上記名称マッピングテーブル４４０に存在する場合が、暗号化に関連した項目が存在する場合にあたる。すなわち、これら項目は、暗号化されたデータベースには存在しない項目であるため、暗号化されたデータベースに対応する暗号化項目に変換しなければならないのである。
【００５１】
また、上記パケットキャプチャーステップＳ５２０におけるクエリー内の項目が暗号化に関連があるか否かの判断を省いて、パケットをクエリー変調するクエリー変調ステップＳ５３０に移行することもできる。暗号化に関連があるか否かを判断するためには、クエリー内の項目を順に読み込んで判断しなければならないが、この過程は、後述するクエリー変調ステップＳ５３０でも同様に処理される作業である。したがって、パケットキャプチャーステップＳ５２０における暗号化に関連があるか否かの判断は、不要な作業であるともいえる。
【００５２】
上記クエリー変調ステップＳ５３０は、クエリー内に暗号化に関連した項目が含まれている項目が存在する場合、その項目を変換または暗号化してクエリーを変調する。クエリー内の項目としては、前述したように、クエリー命令語とテーブル名６１１、フィールド名６１２、定数値６１３の使用者項目があり、クエリーの変調は、クエリー命令語はそのままにしておき、暗号化に関連した使用者項目のみを変調する。クエリー内の項目がテーブル名６１１やフィールド名６１２である場合には、上記名称マッピングテーブル４４０に存在するか否かによって判断する。すなわち、上記名称マッピングテーブル４４０に存在すれば、暗号化と関連があるとみなし、上記名称マッピングテーブル４４０に組をなしている名称が暗号化されたデータベースに対応する名称である。したがって、組をなす名称に変換してクエリーを変調する。また、クエリー内の項目が定数値６１３である場合をみてみる。暗号化に関連した定数値６１３とは、暗号化に関連したフィールド名に関係する式における定数値のことをいう。クエリー内の条件などは、フィールド名とフィールド名、フィールド名と定数値などの関係を表す方式にて示される単位関係式である。このとき、フィールド名と定数値によって示される関係式のうちのフィールド名が暗号化に関連したフィールド名である場合、該関係式における定数値が暗号化に関連した定数値である。フィールド名が暗号化と関連があるか否かの判断は、前述したように、名称マッピングテーブル４４０に上記フィールド名が存在するか否かによって判断する。
【００５３】
より詳しくは、上記クエリー変調ステップＳ５３０は、クエリー内の項目を順に読み込むステップＳ５３１と、読み込んだ項目がテーブル名６１１であるかフィールド名６１２である場合、上記項目が暗号化と関連があれば暗号化に対応する項目値に変換するステップＳ５３２と、読み込んだ項目が定数値６１３である場合、上記定数値６１３が含まれる関係式において変数がフィールド名６１２であり且つ上記フィールド名６１２が暗号化と関連があれば、上記定数値６１３を上記暗号化／復号化方法によって暗号化した値に差し替えるステップＳ５３４と、クエリー内に更に読み込むべき項目があるか否かを判断し、更にあると判断されれば、上記項目を読み込むステップＳ５３１を再び行い、ないと判断されれば、上記クエリー要請ステップＳ５４０に移行するステップと、を含むことができる。
【００５４】
クエリー要請ステップＳ５４０は、変調されたクエリーにてＤＢＭＳに対しクエリーを要請し処理された結果値を受け取る。変調されたクエリーは、既に暗号化されたテーブル名、フィールド名、フィールド値に対応する名称に変換されているか、または定数値に暗号化されているため、データベース管理システム（ＤＢＭＳ）は、一般的なクエリーの処理と同様にクエリーを処理することができる。すなわち、ＤＢＭＳは、暗号化と関連があるか否かに関係なく要請されたクエリーを一律的に処理する。
【００５５】
結果値変調ステップＳ５５０は、ＤＢＭＳ１００において変調されたクエリーで処理された結果値から暗号化に関連した項目を変換または復号化して暗号化前のデータベースに対応する結果値に変調する。結果値７１０において暗号化に関連した項目は、テーブル名７１１、フィールド名７１２、フィールド値７１３に分けられた。テーブル名７１１は、結果値がテーブル形態で返還され、該テーブル名称が上記名称マッピングテーブル４４０に存在すれば、暗号化に関連した項目になる。この場合には、上記マッピングテーブル４４０に対し組となる値に変換する。フィールド名７１２は、結果値がテーブル形態で返還され、該テーブルのフィールド名をすべて調査して上記名称マッピングテーブル４４０に存在すれば、暗号化に関連した項目を探し出すことができる。この場合、テーブル名と同様に上記マッピングテーブル４４０に対し組となる値に変換する。フィールド値７１３は、上記フィールド名７１２が暗号化と関連があれば、すなわち、上記マッピングテーブル４４０に存在すれば、該フィールド名に該当するすべてのフィールド値７１３がすべて暗号化と関連がある。したがって、すべてのフィールド値７１３に対して復号化してその値に差し替える。クエリー変調と同様に、暗号化と関連のない項目は変調しない。上記のようにして作られたテーブルが暗号化前のデータベースに対応する結果値になる。
【００５６】
より詳しくは、上記結果値変調ステップＳ５５０は、上記結果値として受け取ったテーブル名７１１が暗号化と関連があれば、暗号化に対応するテーブル名に変換するステップＳ５３２と、上記結果値として受け取ったテーブルのフィールド名７１２が暗号化と関連があるか否かを判断するステップＳ５５３と、上記フィールド名７１２が暗号化と関連があれば、暗号化に対応するフィールド名に変換するステップＳ５５４と、上記フィールド名に該当するすべてのフィールド値を復号化して差し替えるステップＳ５５５と、上記結果値として受け取ったテーブルのそれぞれのフィールド名７１２に対して暗号化と関連があるか否かを判断するステップＳ５５３を繰り返し行うステップと、を含む。
【００５７】
結果伝送ステップＳ５６０は、変調された結果値を使用者に見せるステップである。使用者は、暗号化前のテーブル構造に基づいてクエリーを要請し、該結果も暗号化前のテーブル構造に基づいて結果を受け取ることにより、全く暗号化過程を認知することができない。すなわち、互換性が提供される。
【００５８】
前述したように、上記パケットキャプチャーステップＳ５２０においてクエリー内の暗号化に関連した項目を判断し、選択的にクエリー変調を行う場合、上記クエリー変調ステップＳ５３０から結果値変調ステップＳ５５０まではクエリー内に暗号化に関した項目が含まれた場合のステップである。若し、クエリー内に暗号化に関連した項目がない場合には、このステップを実行しない。その代わりに、ＤＢＭＳに対しクエリーを要請し、その結果を受け取る。一般的なＤＢＭＳのクエリー要請手続きと同一である。ＤＢＭＳから受け取ったその結果を使用者に見せる（Ｓ５６０）。
【図面の簡単な説明】
【００５９】
【図１】一部カラムを暗号化することができる従来のデータベース管理システムＤＢＭＳの構成図である。
【図２ａ】ビューからデータベースのカラム暗号化を行なう時にテーブルを生成する過程を示す例示図である。
【図２ｂ】ビューからデータベースのカラム暗号化を行なう時にテーブルを生成する過程を示す例示図である。
【図３】従来の暗号化に関連したクエリーを処理する方法に関するフローチャートである。
【図４】本発明に係る使用者クエリー処理装置の好適な一実施の形態を示す構成図である。
【図５】クエリーの暗号化変調による使用者クエリー処理方法の好適な一実施の形態を示すフローチャートである。
【図６ａ】クエリー変調の一実施の形態を示す図である。
【図６ｂ】クエリー変調の一実施の形態を示す図である。
【図７ａ】結果テーブルの変調の一実施の形態を示す図である。
【図７ｂ】結果テーブルの変調の一実施の形態を示す図である。
【図８ａ】暗号化された３個のカラムに対して１００、１０００、１００００個のレコードを処理した場合における性能差を示す比較図である。
【図８ｂ】暗号化された１個のカラムに対して最大１０万個のレコードを処理した場合における性能差を示す比較図である。
【符号の説明】
【００６０】
１００：データベース
１２０：クエリー処理部
１３０：ビュー      
１４０：名称テーブル
４００：クエリー処理装置
４１０：パケット処理部
４２０：クエリー変調部
４３０：結果値変調部
４４０：名称マッピングテーブル
４５０：暗号化処理部
【図１】
0004972067.tif 000002
【図２ａ】
0004972067.tif 000003
【図２ｂ】
0004972067.tif 000004
【図３】
0004972067.tif 000005
【図４】
0004972067.tif 000006
【図５】
0004972067.tif 000007
【図６ａ】
0004972067.tif 000008
【図６ｂ】
0004972067.tif 000009
【図７ａ】
0004972067.tif 000010
【図７ｂ】
0004972067.tif 000011
【図８ａ】
0004972067.tif 000012
【図８ｂ】
0004972067.tif 000013