(57)【要約】  この発明の１つの実施例は、データベースのカラム内部にあるデータの暗号化を容易にするシステムを与える。システムは最初に、データベースオペレーションを実行するコマンドを受取ることによって作動する。次に、システムはコマンドをパーズして、解析木を作成する。システムはその後、解析木を調べて、解析木の中で参照されるカラムが暗号化されたカラムであるかどうかを判断する。解析木の中で参照されるカラムが暗号化されたカラムであれば、システムは、データベースオペレーションを実行する間に、暗号化されたカラムにアクセスすることを容易にするために１つ以上の暗号コマンドを含むように自動的にコマンドを変換する。
2007500912.tif 000002
【特許請求の範囲】
【請求項１】
データベースのカラム内部にあるデータの暗号化を容易にするための方法であって、
データベースオペレーションを実行するコマンドを受取ることと、
前記コマンドをパーズして、解析木を作成することと、
前記解析木を調べて、前記解析木の中で参照されるカラムが暗号化されたカラムであるかどうかを判断することと、
もし、そうであれば、前記データベースオペレーションを実行する間に、前記暗号化されたカラムにアクセスすることを容易にするために１つ以上の暗号コマンドを含むように自動的に前記コマンドを変換することとを含む方法。
【請求項２】
前記データベースオペレーションが、前記暗号化されたカラムからの参照オペレーションを含む場合、前記方法は、さらに、前記参照オペレーションの間に、前記データベースオペレーションを変換して、前記暗号化されたカラムから検索されるデータを復号化することを含む、請求項１に記載の方法。
【請求項３】
前記コマンドが前記暗号化されたカラムへの更新オペレーションを含む場合、前記方法は、さらに、前記更新オペレーションの間に、前記更新オペレーションを変換して、前記暗号化されたカラムの中で更新されるデータを暗号化することを含む、請求項１に記載の方法。
【請求項４】
カラムが暗号化される場合、前記方法は、さらに、前記カラムのための暗号鍵を識別することを含む、請求項１に記載の方法。
【請求項５】
前記解析木を調べることは、さらに、
前記コマンドが前記データベースの中の前記カラムを暗号化する明示的なコマンドを含むかどうかを判断することと、
もし、そうである場合、前記カラムを暗号化することとを含む、請求項１に記載の方法。
【請求項６】
前記解析木を調べることは、さらに、
前記コマンドが前記カラムのための暗号化鍵を変更するオペレーションを含むかどうかを判断することと、
もし、そうである場合、現在の暗号化鍵を用いて前記カラムを復号化することと、新しい暗号化鍵を用いて前記カラムを暗号化することとを含む、請求項１に記載の方法。
【請求項７】
前記解析木を調べることは、さらに、
前記コマンドが前記データベースの中の前記カラムを復号化する明示的なコマンドを含むかどうかを判断することと、
もし、そうである場合、前記カラムを復号化することとを含む、請求項１に記載の方法。
【請求項８】
前記解析木を調べることは、さらに、
前記コマンドが前記カラムのための暗号化アルゴリズムを変更する明示的なコマンドを含むかどうかを判断することと、
もし、そうである場合、先の暗号化アルゴリズムを使用して前記カラムを復号化することと、新しい暗号化アルゴリズムを使用して前記カラムを暗号化することとを含む、請求項１に記載の方法。
【請求項９】
コンピュータによって実行されると、データベースのカラム内部にあるデータの暗号化
を容易にするための方法をコンピュータに実行させる命令を記憶する、コンピュータが読込可能な記憶媒体であって、前記方法は、
データベースオペレーションを実行するコマンドを受取ることと、
前記コマンドをパーズして、解析木を作成することと、
前記解析木を調べて、前記解析木の中で参照されるカラムが暗号化されたカラムであるかどうかを判断することと、
もし、そうである場合、前記データベースオペレーションを実行する間に、前記暗号化されたカラムにアクセスすることを容易にするために１つ以上の暗号コマンドを含むように自動的に前記コマンドを変換することとを含む方法。
【請求項１０】
前記データベースオペレーションが、前記暗号化されたカラムからの参照オペレーションを含む場合、前記方法は、さらに、前記参照オペレーションの間に、前記データベースオペレーションを変換して、前記暗号化されたカラムから検索されるデータを復号化することを含む、請求項９に記載のコンピュータが読込可能な記憶媒体。
【請求項１１】
前記コマンドが前記暗号化されたカラムへの更新オペレーションを含む場合、前記方法は、さらに、前記更新オペレーションの間に、前記更新オペレーションを変換して、前記暗号化されたカラムの中で更新されるデータを暗号化することを含む、請求項９に記載のコンピュータが読込可能な記憶媒体。
【請求項１２】
カラムが暗号化される場合、前記方法は、さらに、前記カラムのための暗号鍵を識別することを含む、請求項９に記載のコンピュータが読込可能な記憶媒体。
【請求項１３】
前記解析木を調べることは、さらに、
前記コマンドが前記データベースの中の前記カラムを暗号化するオペレーションを含むかどうかを判断することと、
もし、そうである場合、前記カラムを暗号化することとを含む、請求項９に記載のコンピュータが読込可能な記憶媒体。
【請求項１４】
前記解析木を調べることは、さらに、
前記コマンドが前記カラムのための暗号化鍵を変更する明示的なコマンドを含むかどうかを判断することと、
もし、そうである場合、現在の暗号化鍵を用いて前記カラムを復号化することと、新しい暗号化鍵を用いて前記カラムを暗号化することとを含む、請求項９に記載のコンピュータが読込可能な記憶媒体。
【請求項１５】
前記解析木を調べることは、さらに、
前記コマンドが前記データベースの中の前記カラムを復号化する明示的なコマンドを含むかどうかを判断することと、
もし、そうである場合、前記カラムを復号化することとを含む、請求項９に記載のコンピュータが読込可能な記憶媒体。
【請求項１６】
前記解析木を調べることは、さらに、
前記コマンドが前記カラムのための暗号化アルゴリズムを変更する明示的なコマンドを含むかどうかを判断することと、
もし、そうである場合、先の暗号化アルゴリズムを使用して前記カラムを復号化することと、新しい暗号化アルゴリズムを使用して前記カラムを暗号化することとを含む、請求項９に記載のコンピュータが読込可能な記憶媒体。
【請求項１７】
データベースのカラム内部にあるデータの暗号化を容易にするための装置であって、
データベースオペレーションを実行するコマンドを受取るように構成される受取機構と、
前記コマンドをパーズして、解析木を作成するように構成されるパージング機構と、
前記解析木を調べて、前記解析木の中で参照されるカラムが暗号化されたカラムであるかどうかを判断するように構成される調査機構と、
前記データベースオペレーションを実行する間に、前記暗号化されたカラムにアクセスすることを容易にするために１つ以上の暗号コマンドを含むように自動的に前記コマンドを変換するように構成される変換機構とを含む装置。
【請求項１８】
前記変換機構は、さらに、前記データベースオペレーションが前記暗号化されたカラムからの参照オペレーションを含む場合、前記参照オペレーションの間に、前記データベースオペレーションを変換して、前記暗号化されたカラムから検索されるデータを復号化するように構成される、請求項１７に記載の装置。
【請求項１９】
前記変換機構は、さらに、前記データベースオペレーションが前記暗号化されたカラムへの更新オペレーションを含む場合、前記更新オペレーションの間に、前記データベースオペレーションを変換して、前記暗号化されたカラムの中で更新されるデータを暗号化するように構成される、請求項１７に記載の装置。
【請求項２０】
カラムが暗号化される場合、前記カラムのための暗号鍵を識別するように構成される識別機構をさらに含む、請求項１７に記載の装置。
【請求項２１】
前記コマンドが前記データベースの中の前記カラムを暗号化する明示的なコマンドを含むかどうかを判断するように構成される判断機構と、
前記コマンドが前記データベースの中の前記カラムを暗号化する前記明示的なコマンドを含む場合、前記カラムを暗号化するように構成される暗号化機構とをさらに含む、請求項１７に記載の装置。
【請求項２２】
前記コマンドが前記カラムのための暗号化鍵を変更するオペレーションを含むかどうかを判断するように構成される判断機構と、
現在の暗号化鍵を用いて前記カラムを復号化するように構成される復号化機構と、
新しい暗号化鍵を用いて前記カラムを暗号化するように構成される暗号化機構とをさらに含む、請求項１７に記載の装置。
【請求項２３】
前記コマンドが前記データベースの中の前記カラムを復号化する明示的なコマンドを含むかどうかを判断するように構成される判断機構と、
前記コマンドが前記データベースの中の前記カラムを復号化する前記明示的なコマンドを含む場合、前記カラムを復号化するように構成される復号化機構とをさらに含む、請求項１７に記載の装置。
【請求項２４】
前記コマンドが前記カラムのための暗号化アルゴリズムを変更するオペレーションを含むかどうかを判断するように構成される判断機構と、
現在の暗号化アルゴリズムを用いて前記カラムを復号化するように構成される復号化機構と、
新しい暗号化アルゴリズムを用いて前記カラムを暗号化するように構成される暗号化機構とをさらに含む、請求項１７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
発明の分野
この発明はデータベースのセキュリティに関する。より具体的には、この発明は、データベース内部のデータをカラム単位で透過的に暗号化および復号化するための方法および装置に関する。
【背景技術】
【０００２】
関連技術
データベースのセキュリティは、多くのデータベースシステムにおいて重要な機能である。データベースシステムでは、セキュリティはデータベースシステム内部のデータを暗号化することによって達成されることが多い。現在、データベースシステムの中に記憶されるデータを暗号化するための２つの主要なアプローチがある。第１のアプローチは「一括暗号化」として特徴付けられることができ、データベースファイル全体で暗号オペレーションを実行する。第２のアプローチは、暗号オペレーションをデータベース内部の特定の機密事項を扱うカラムに選択的に適用する。
【０００３】
機密事項を扱うデータは特定のテーブルの中に記憶されるだけではないので、一括暗号化は典型的にデータベース全体の暗号化を必要とする。機密事項を扱うデータは他のデータベースオブジェクトの中にも現われるであろう。たとえば、機密事項を扱うデータはインデックス、アンドゥーおよびリドゥーログの修正用レコード、ならびに一時的な分類領域の中に現われるであろう。これらのデータベースオブジェクトはデータベースシステム全体によって共用されるように設計されるので、暗号化されるデータもあれば、暗号化されないデータもあるというように、これらのデータベースオブジェクト内部のデータを分けることは実用的ではない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一括暗号化は実施が比較的容易であり、データベースにアクセスするアプリケーションに透過的であるが、その一方で重大な欠点がある。これらの欠点の中で主なものはシステムの性能劣化である。データベースファイル全体を暗号化または復号化するには長い時間を要する。このようなシステムでは、再入力オペレーションがデータベースファイル全体を復号化し、その後再暗号化することを含み得る。これらのオペレーションは多くの時間を要する可能性があり、そのためにこの解決法は大規模なオンライントランザクション処理の配置に適さない。また、データレコードがファイルから復号化された後に、データベースレコードがプレーンテキストとして共用記憶域の中で露出されるので、システムのセキュリティは損なわれ得る。
【０００５】
第２のアプローチはデータベース内部の機密事項を扱うそれらのカラムのみに暗号化を限定するものであり、理論的には暗号オペレーションを実行することに関わるオーバーヘッドを低減し得る。しかしながら、このアプローチを使用する、現在使用可能なシステムには、いくつかの大きな欠点がある。暗号化および復号化オペレーションは、暗号化されたカラムのいずれの参照にも明示的に適用されなければならない。たとえば、社会保障番号が「１２３４５６７８９」である顧客のクレジットカード番号を検索するコマンドの発行を要望するアプリケーションは以下のコマンドを発行するであろう。
【０００６】
【数１】
2007500912.tif 000003
【０００７】
しかしながら、これらのカラムの両方が暗号化されると、クエリーはたとえば以下のような復号化コマンドを含むように修正されなければならない。
【０００８】
【数２】
2007500912.tif 000004
【０００９】
暗号化および復号化機能が暗号アルゴリズムを選択するためのインターフェイスも与えなければならず、アプリケーションが鍵管理を与えなければならないということに注目されたい。
【００１０】
したがって、データベースシステムメーカーが要求するのは透過的な暗号化および復号化オペレーションであるにもかかわらず、この第２のアプローチでは、暗号化および復号化オペレーションはアプリケーション開発者に透過的ではない。機密事項を扱うカラムがアクセスされると、暗号化または復号化機能はカラムデータに明示的に適用されなければならない。このようなランタイム機能の実行をユーザに透過的で、かつ安全にするために、アプリケーションスキーマオブジェクトは大きく変更されなければならない。たとえば、機密事項を扱うカラムを有するテーブルは、暗号機能を隠すために、ビューにされなければならない。これは、ビューおよびテーブルが同じ名前空間の中に存在し、名前を共用できないために、ベースオブジェクトの名前が変更されなければならないことも意味する。ビューの挿入または更新によってベーステーブルの中のデータが暗黙的に暗号化されるように、トリガが作成される必要がある。さらに、辞書式順序を失っている暗号化されたデータを用いることによってのみ、サーバがインデックスを構築し得るので、インデックスサポートは制限される。これは、暗号化および復号化オペレーションがインデックス処理層と統合されることができないためである。
【００１１】
したがって、必要とされるのは、データベースシステム内部のデータをカラム単位で透過的に暗号化および復号化するための方法および装置である。
【課題を解決するための手段】
【００１２】
概要
この発明の１つの実施例は、データベースのカラム内部にあるデータの暗号化を容易にするシステムを与える。システムは最初に、データベースオペレーションを実行するコマンドを受取ることによって作動する。次に、システムはコマンドをパーズして、解析木を作成する。システムはその後、解析木を調べて、解析木の中で参照されるカラムが暗号化されたカラムであるかどうかを判断する。解析木の中で参照されるカラムが暗号化されたカラムであれば、システムは、データベースオペレーションを実行する間に、暗号化されたカラムにアクセスすることを容易にするために１つ以上の暗号オペレーションを含むように暗黙のうちに解析木を変換する。
【００１３】
この実施例の変形例では、データベースオペレーションが暗号化されたカラムからの参照オペレーションを含む場合、平文を与えるために、参照オペレーションの間にシステムは解析木を変換して、暗号化されたカラムから検索されるデータを復号化する。
【００１４】
さらに他の変形例では、コマンドが暗号化されたカラムへの更新オペレーションを含む場合、暗号化されたデータをデータベースの中に与えるために、更新オペレーションの間にシステムは解析木を変換して、暗号化されたカラムの中で更新されるデータを暗号化する。
【００１５】
さらに他の変形例では、解析木の中で参照されるカラムが暗号化される場合、システムはカラムのための暗号鍵を識別する。鍵は、各々のコマンドに対して、カラムへのすべてのアクセスに対して一度だけ回復される。
【００１６】
さらに他の変形例では、解析木を調べることは、ユーザコマンドがデータベースの中で現在暗号化されていないカラムを暗号化する明示的な要求であるかどうかを判断することを含む。ユーザコマンドがデータベースの中で現在暗号化されていないカラムを暗号化する明示的な要求であれば、システムはカラムを暗号化する。
【００１７】
さらに他の変形例では、解析木を調べることは、ユーザコマンドがカラムのための暗号化鍵を変更する明示的な要求であるかどうかを判断することを含む。ユーザコマンドがカラムのための暗号化鍵を変更する明示的な要求であれば、システムは現在の暗号化鍵を用いてカラムを復号化し、新しい暗号化鍵を用いてカラムを暗号化する。
【００１８】
さらに他の変形例では、解析木を調べることは、ユーザコマンドがデータベースの中の暗号化されたカラムを復号化する明示的な要求であるかどうかを判断することを含む。ユーザコマンドがデータベースの中の暗号化されたカラムを復号化する明示的な要求であれば、システムはカラムを復号化する。
【００１９】
さらに他の変形例では、解析木を調べることは、ユーザコマンドがカラムのための暗号化アルゴリズムを変更する明示的な要求であるかどうかを判断することを含む。ユーザコマンドがカラムのための暗号化アルゴリズムを変更する明示的な要求であれば、システムは現在の暗号化アルゴリズムを用いてカラムを復号化し、新しい暗号化アルゴリズムを用いてカラムを暗号化する。
【発明を実施するための最良の形態】
【００２０】
詳細な説明
以下の記載は任意の当業者がこの発明をなし、使用することができるように提示され、特定の適用例およびその要件との関連で与えられる。開示される実施例に対するさまざまな修正が当業者に容易に明らかであり、ここに規定される一般的な原理は、この発明の精神および範囲を逸脱することなく、他の実施例および適用例に適用されるであろう。したがって、この発明は示される実施例に限定されるように意図されるのではなく、ここに開示される原理および特性と一致する、最も広い範囲を与えられるように意図される。
【００２１】
この詳細な説明に記載されるデータ構造およびデータコードは典型的には、コンピュータシステムによって使用されるコードおよび／またはデータを記憶し得る任意の装置または媒体であろう、コンピュータが読込可能な記憶媒体上に記憶される。これは、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）およびＤＶＤ（デジタル多用途ディスクまたはデジタルビデオディスク）などの磁気および光学記憶装置、ならびに伝送媒体に含まれるコンピュータの命令信号（それらの信号がその上で変調される搬送波を伴うか、または伴わない）を含むが、これらに限定されるものではない。たとえば、伝送媒体はインターネットなどの通信ネットワークを含んでもよい。
【００２２】
データベースシステム
図１は、この発明の実施例に従うデータベースシステムを図示する。データベースシス
テムはクライアント１０２、サーバ１０４、およびデータベース１０６を含む。クライアント１０２は概して、ネットワーク上に計算機能を含む任意のノードを含むことができ、ネットワーク全域で通信を行なうための機構を含んでもよい。
【００２３】
サーバ１０４は概して、クライアントからの計算および／またはデータ記憶リソースの要求を処理するための機構を含む任意の計算ノードを含み得る。サーバ１０４は１つ以上のクライアントと通信し、各々のクライアントにサービスを与える。この通信は典型的には、インターネットまたは企業のイントラネットなどのネットワーク（図示せず）全域での通信である。サーバ１０４は、計算およびデータベースサービスを提供するように一斉に働くサーバのクラスタとして実現されてもよい。
【００２４】
データベース１０６は、不揮発性記憶装置の中にデータを記憶するための任意のタイプのシステムを含み得る。これは、磁気記憶装置、光学記憶装置、および磁気光学記憶装置に基づくシステム、ならびにフラッシュメモリおよび／またはバッテリバックアップメモリに基づく記憶装置を含むが、これらに限定されるものではない。データベース１０６はサーバ１０４に直接に結合されるか、または企業のイントラネットもしくはインターネットなどのネットワーク全域でアクセスされ得る。
【００２５】
動作中に、クライアント１０２はデータベースコマンドをサーバ１０４に送る。これらのコマンドは典型的には構造化照会言語（ＳＱＬ）などのデータベース言語の状態であり、データベース１０６上での参照および更新オペレーションを含み得る。これらの参照または更新オペレーションのいずれかが暗号化されたカラム上でのオペレーションを含む場合、オペレーションは図２−図５とともに以下に記載されるように処理される。
【００２６】
サーバ
図２は、この発明の実施例に従うサーバ１０４を図示する。サーバ１０４はクライアントインターフェイス２０２、コマンドパーサ２０４、コマンド変換器２０６、暗号ユニット２０８、およびデータベースインターフェイス２１０を含む。クライアントインターフェイス２０２はクライアント１０２と通信して、クライアント１０２からのコマンドを受取り、クライアント１０２からのコマンドに応答する。これらのコマンドは、データベース１０６上で機能する、サーバ１０４のためのＳＱＬコマンドを含み得る。
【００２７】
コマンドパーサ２０４は、コマンドを、そのコマンドを含む個々の要素（オペランド、演算子など）にパーズする。コマンドパージングは当該技術に周知であり、この記載の中でさらに論じられることはない。
【００２８】
コマンド変換器２０６はコマンドのパーズされる要素を調べて、データベース１０６内部の暗号化されたカラムに関連する任意の参照または更新オペレーションを突きとめる。暗号化されたカラムに関連する参照または更新オペレーションを突きとめるのと同時に、コマンド変換器２０６は暗号化されたカラムにアクセスするために必要な暗号オペレーションを含むようにオペレーションを変換する。これらの変換するオペレーションは、図４Ａおよび図４Ｂとともに以下に詳細に記載される。
【００２９】
暗号ユニット２０８は鍵管理、暗号化、および復号化などの暗号オペレーションを実行する。多くの標準的な鍵管理システムのうちのいずれかがこのシステムとともに使用され得る。暗号化および復号化は、データ暗号化規格（ＤＥＳ）、トリプルＤＥＳ、または先進暗号化規格（ＡＥＳ）などの任意の受入可能なアルゴリズムを使用して実行され得る。さらに、これらの暗号化アルゴリズムは、セキュアハッシュアルゴリズム１（ＳＨＡ−１）またはメッセージダイジェスト５（ＭＤ５）などの統合技術と組合せられ得る。
【００３０】
データベースインターフェイス２１０は、データベース１０６にアクセスするための機構を含む。これらのアクセスするオペレーションは、データベース１０６からデータを検索し、データベース１０６内部のデータを記憶または更新することを含み得る。コマンドの変換およびコマンドの実行は同じ事象シーケンスの中で起こらないかもしれないということに注目されたい。コマンドの実行はコマンドの変換よりも後に起こってもよい。
【００３１】
データベースオペレーションを変換すること
図３は、この発明の実施例に従って、暗号オペレーションを含むようにデータベースオペレーションを変換するプロセスを図示するフローチャートを提示する。システムは、データベースオペレーションを実行するコマンドが受取られると、始動する（ステップ３０２）。次に、システムはコマンドをパーズして、解析木を作成する（ステップ３０４）。システムはその後、この解析木を調べて、参照されるカラムまたは暗号化されたデータに関連付けられる式を突きとめる（ステップ３０６）。
【００３２】
参照されるカラムを突きとめた後、システムはカラムが暗号化されているかどうかを判断する（ステップ３０８）。カラムが暗号化されていれば、システムは暗号オペレーションを含むように、この暗号化されたカラム上でのオペレーションを変換する（ステップ３１０）。この変換するプロセスはユーザに透過的であることに注目されたい。
【００３３】
ステップ３０８でカラムが暗号化されていない場合、またはステップ３１０で暗号オペレーションを含むようにコマンドを変換した後、システムはコマンドの中で指定されるオペレーションを実行し、それによってコマンドを完了する（ステップ３１２）。コマンドの変換およびコマンドの実行は同じ事象シーケンスの中で起こらないかもしれないということに注目されたい。コマンドの実行はコマンドの変換よりも後に起こってもよい。
【００３４】
解析木
図４Ａは、この発明の実施例に従う、変換されない解析木を提示する。システムは、解析木を作成する、入力されるコマンドをパーズする。たとえば、図４Ａに提示される解析木は、以下のコマンドがどのようにパーズされるかを図示する。
【００３５】
【数３】
2007500912.tif 000005
【００３６】
演算子「＊」は左のサブツリー（１．０１）と右のサブツリー（ｓａｌ）とを乗算し、その結果を「ｓａｌ」カラムの中のデータベースに戻す。この解析木は、「ｓａｌ」カラムが暗号化されていないと仮定する。
【００３７】
図４Ｂは、この発明の実施例に従う、変換される解析木を提示する。この解析木は、カラム「ｓａｌ」が暗号化されていると仮定する。再び、演算子「＊」はその左のサブツリーとその右のサブツリーとを乗算する。しかしながら、右のサブツリーは復号化演算子「ＤＯ」を含むように変換されている。ＤＯ演算子は与えられるパラメータを使用して、左のサブツリー（この例では、ｓａｌ）のカラムを復号化する。ＤＯに与えられるパラメータは、アルゴリズム識別子「ａｌｇ_ｉｄ」および「ＧＫ」演算子の結果である。「ＧＫ」演算子は、与えられるパラメータを使用してカラム暗号化鍵を検索するゲット鍵（get key）演算子である。「ＧＫ」演算子への入力パラメータは、鍵管理タイプ、マスタ鍵識別子、およびカラム鍵識別子である。
【００３８】
ＤＯが「ｓａｌ」カラムを復号化し、結果が「＊」演算子によって１．０１を乗算され
た後、暗号化演算子「ＥＯ」は結果を暗号化し、「ｓａｌ」カラムでの記憶のためにデータベースに戻すように結果を渡す。ＥＯ演算子への入力は、「＊」演算子の結果、アルゴリズム識別子「ａｌｇ_ｉｄ」、および「ＧＫ」演算子の結果である。鍵は変化していないので、復号化のための「ＧＫ」演算子の結果は暗号化のためのＥＯと共用されることに注目されたい。事実、「ＧＫ」演算子は、「ｓａｌ」カラム全体を更新するために、一度だけ呼出される。
【００３９】
参照されるカラムのための暗号手法を含むコマンド
図５は、この発明の実施例に従って、カラムのための暗号手法を含むコマンドを実行するプロセスを図示するフローチャートを提示する。システムは、データベースオペレーションを実行するコマンドが受取られると、始動する（ステップ５０２）。次に、システムはコマンドをパーズして、解析木を作成する（ステップ５０４）。システムはその後、この解析木を調べて、参照されるカラムのための暗号手法をコマンドが含むかどうかを判断する（ステップ５０６）。参照されるカラムのための暗号手法をコマンドが含む場合、システムは参照されるカラム上で暗号オペレーションを実行する（ステップ５０８）。
【００４０】
例として、コマンドが以下のような暗号化鍵を変更するコマンドであれば、システムは最初にカラムのためのメタデータを更新する。
【００４１】
【数４】
2007500912.tif 000006
【００４２】
システムは次に、実行のために以下のＵＰＤＡＴＥステートメントに変換される更新ステートメントを暗黙的に発行する。
【００４３】
【数５】
2007500912.tif 000007
【００４４】
概観
この発明は、カラムまたはカラムの属性の細かさで、データの暗号化を与える（オブジェクトデータベースの場合）。この暗号化は、データベース内部の暗号化されたカラムにアクセスするアプリケーションに透過的である。
【００４５】
カラムの守秘性は、内蔵の、またはユーザ定義の暗号化および復号化機能に依存することなく、カラムの特性の一部としてサポートされる。制約またはデータタイプなどの任意の他のカラムの特性と同様に、カラムの暗号特性はデータ記述言語（ＤＤＬ）コマンドを使用して、いつでも定義および変更され得る。以下は、暗号化されたカラムの特性を定義および変更する典型的な管理タスクの例である。
【００４６】
機密事項を扱うデータは、以下のようなステートメントを使用して、異なる暗号化アルゴリズムで再暗号化され得る。
【００４７】
【数６】
2007500912.tif 000008
【００４８】
システムは最初にカラムのためのメタデータを更新する。システムは次に、実行のための以下のＵＰＤＡＴＥステートメントに変換される更新ステートメントを暗黙的に発行する。
【００４９】
【数７】
2007500912.tif 000009
【００５０】
セキュリティ要件は、暗号化鍵が定期的に変更されることを必要とするかもしれない。暗号化鍵を変更することは、パラグラフ［００４０］に記載されるように達成され得る。
【００５１】
その代わりに、暗号化されたデータをプレーンテキストの中で使用可能にするように判断がなされると、以下のコマンドが使用され得る。
【００５２】
【数８】
2007500912.tif 000010
【００５３】
システムは最初にカラムのためのメタデータを更新する。システムは次に、実行のための以下のＵＰＤＡＴＥステートメントに変換される更新ステートメントを暗黙的に発行する。
【００５４】
【数９】
2007500912.tif 000011
【００５５】
テーブルが作成されるときに、カラムは暗号化されるカラムとして宣言されることも可能である。以下のＤＤＬコマンドは、従業員テーブルの作成中に従業員テーブルのＳＳＮおよび給料フィールドを暗号化する例を与える。
【００５６】
【数１０】
2007500912.tif 000012
【００５７】
カラムが暗号化されるカラムとして指定されると、そのカラムの中のデータはすべてカラム暗号化鍵を用いて暗号化される。この鍵は、サーバのメタデータテーブルの中に記憶される前に、１つ以上のマスタ鍵によってラップされる。マスタ鍵の検索は、選択される鍵管理スキームおよびマスタ鍵の記憶位置に依存する。これは、任意のカラムの暗号オペレーションのために、サーバが最初にマスタ鍵を見つけ、暗号化されたカラム暗号化鍵を復号化するためにマスタ鍵を使用しなければならないということを意味する。
【００５８】
透過的な暗号オペレーションのランタイムサポートは、サーバ上に３つの内部演算子を導入することに基づく。３つの内部演算子とは、（１）カラム暗号化鍵検索、（２）データの暗号化、および（３）データの復号化である。
【００５９】
鍵検索演算子は、カラム暗号化鍵の識別、マスタ鍵の識別、および鍵管理タイプを受入れるために、引数を有する。この演算子はプレーンテキストの状態でカラム暗号化鍵を戻す。
【００６０】
暗号化および復号化演算子は、暗号化されたカラムデータ、カラム暗号化鍵、および暗号化アルゴリズムの識別を識別するための引数を有する。鍵検索演算子がステートメントの実行ごとに一度だけ評価されることが望ましいので、鍵検索演算子は暗号化／復号化演算子から分けられる。
【００６１】
ステートメントのパーズの際に、復号化演算子は、暗号化されたデータをサーバから受取ることになるカラムの属性のまわりに暗黙的に追加され得る。変換の後、式の中のカラムのみを典型的に参照することは、あたかも復号化機能が明示的に適用されるかのように以下と等価である。
【００６２】
【数１１】
2007500912.tif 000013
【００６３】
挿入値または更新値としてデータベースの中に与えられることになる式の値のために、暗号化演算子は以下のように追加される。
【００６４】
【数１２】
2007500912.tif 000014
【００６５】
ＤＥＣＲＹＰＴおよびＥＮＣＲＹＰＴコマンドへの引数の値が、暗号化されたカラムに影響を与えるＤＤＬコマンド時に維持されるメタデータの中に含まれるので、これらのコマンドへの引数は、暗号化されたカラムデータを除き、パーズ時に既知であることに注目されたい。これらの引数は共用記憶域におけるステートメントコンテキストの一部である。しかしながら、これらの引数は機密事項を扱う情報を明かすことはない。暗号化鍵自体は実行時に一度だけ検索され、ユーザセッションの実行ごとの記憶域の中にのみ現われることになる。鍵の暗号化のためのアルゴリズムは情報管理用の設定可能なパラメータであり得るか、またはオプションの引数がＧＥＴ_ＫＥＹコマンドに追加され得る。
【００６６】
実行時に、上記に記載されるようにステートメントコンテキスト上で暗黙的に変換が行われるために、暗号化されたデータは式の評価の前に復号化される。挿入値および更新値のための式の評価が永続的な記憶に入った後、プレーンテキストは暗号化される。これはまた、暗号化および復号化の間、カラムのネイティブなデータタイプ形式が保存されることを保証する。したがって、式の評価のための既存の実現化例は影響を受けない。
【００６７】
たとえば、従業員テーブルの中の給料カラム「ｓａｌ」が暗号化されると仮定されたい。昇給のための以下の更新ステートメント
【００６８】
【数１３】
2007500912.tif 000015
【００６９】
は、実際には以下のように実行されることになる。
【００７０】
【数１４】
2007500912.tif 000016
【００７１】
鍵検索演算子は、どのマスタ鍵またはカラム暗号化鍵も普遍的に固有の鍵自体の識別を有する、複数の鍵管理スキームをサポートすることが可能である。特定のカラムを保護するカラム暗号化鍵が複数のコピーを有することができ、各々のコピーが異なるマスタ鍵によってラップされることに注目されたい。
【００７２】
以下は、システムの柔軟性を示す例である。システムは変数「ＳＥＲＶＥＲ_ＨＥＬＤ」によって識別される鍵管理タイプを有すると仮定されたい。このスキームでは、カラム暗号化鍵のすべてはサーバのワレットの中に保存される単一のマスタ鍵によってラップされる。管理者は、任意の数のマスタ鍵を生成するためにワレットマネージャを使用してもよい。しかしながら、以下のようなＳＱＬコマンドが発行されると、サーバはデータベースのために１つのマスタ鍵のみを選択することになる。
【００７３】
【数１５】
2007500912.tif 000017
【００７４】
したがって、ｍｙ_ｄｂ_ｍｓ_ｋｅｙは鍵の外部名である。サーバはまた、鍵に関連付けられる普遍的に固有の識別を作成する。サーバは現在のマスタ鍵の識別のみを記憶し、一方で鍵自体はワレットの中に残る。ワレットマネージャはデータベースの一部ではないため、データベース作成時にマスタ鍵の採用も行なわれるであろう。上記のコマンドもまた、データベースにおけるすべてのカラム暗号化鍵の再入力を必要とすることに注目されたい。しかしながら、暗号化されたカラムデータは影響を受けない。
【００７５】
サーバが新しいカラム暗号化鍵を生成するか、または暗号化されたカラムを管理するＤＤＬのうちの１つの結果として古いカラム暗号化鍵を置換えると、カラム暗号化鍵はサーバのマスタ鍵によってラップされる。カラム暗号化鍵ＩＤ、マスタ鍵ＩＤ、および暗号化されたカラムの鍵情報は、上記に記載されるように、鍵検索演算子ＧＥＴ_ＫＥＹのためのパラメータとして使用される。「ＳＥＲＶＥＲ_ＨＥＬＤ」鍵管理タイプに基づいて、演算子はワレットアプリケーションプログラムインターフェイス（ＡＰＩ）を介してワレットの中にサーバのマスタ鍵を見つけることができ、それによって暗号化および復号化オペレーションの両方のために使用されるプレーンテキストのカラム暗号化鍵を回復することができる。
【００７６】
明らかに、鍵検索演算子のロジックは鍵管理タイプによって駆動される。鍵検索は常に、カラム暗号化鍵の識別およびマスタ鍵の識別を見る。新しい鍵管理スキームは、平文と暗号文との間の透過的なデータ変換の実施に影響を与えることなく、容易にシステムに接続され得る。これらの普遍的に固有の識別によって、演算子がランタイム時に鍵を見つけ得る限り、鍵はどこにでも記憶され得る。異なる鍵管理タイプをサポートするために、ＤＤＬコマンドを強化するか、または新しいＤＤＬコマンドを加算する必要があるかもしれない。
【００７７】
この発明の実施例の前述の記載は、例示および説明の目的でのみ提示されてきた。前述の記載は網羅的であるように、または開示される形態にこの発明を限定するように意図されるものではない。したがって、多くの修正および変更が当業者に明らかとなる。さらに、上記の開示はこの発明を限定するように意図されるものではない。この発明の範囲は特許請求の範囲によって規定される。
【図面の簡単な説明】
【００７８】
【図１】この発明の実施例に従うデータベースシステムを図示する。
【図２】この発明の実施例に従うサーバを図示する。
【図３】この発明の実施例に従う、暗号オペレーションを含むようにデータベースクエリーを変換するプロセスを図示するフローチャートを提示する。
【図４Ａ】この発明の実施例に従う変換されない解析木を提示する。
【図４Ｂ】この発明の実施例に従う変換される解析木を提示する。
【図５】この発明の実施例に従う、カラムのための暗号手法を含むコマンドを実行するプロセスを図示するフローチャートを提示する。
【図１】
2007500912.tif 000018
【図２】
2007500912.tif 000019
【図３】
2007500912.tif 000020
【図４Ａ】
2007500912.tif 000021
【図４Ｂ】
2007500912.tif 000022
【図５】
2007500912.tif 000023
【国際調査報告】
2007500912.tif 000024
2007500912.tif 000025
2007500912.tif 000026