(57)【要約】  機密データを保護するための技術は、データベース内で暗号化の使用を含む。その技術によるシステムまたは方法は、ターゲットデータベース内のデータを再暗号化するための新たな暗号キーを自動的に選択することを含み得る。新たな初期化ベクトルが、再暗号化のために選択されたデータの各列を再暗号化するのに特定され得る。新たな初期化ベクトルは、再暗号化のために選択されたターゲットデータベース内のデータベーステーブルに係るデータの１以上の行に関して特定され得る。その技術によるシステムまたは方法は、リレーショナルデータベースを、変換中にリレーショナルデータベースのリソース上での影響がほとんどないかまたは全くなくして、リレーショナルデータベースのセキュアリレーショナルデータベースへの変換を自動化するためのメカニズムを提供することを含み得る。【選択図】図１
2009510616.tif 000002
【特許請求の範囲】
【請求項１】
データベース内のデータにセキュリティを提供するためのコンピュータ実行方法であって、少なくとも１つの事前に暗号化された列を選択することをユーザに許容するためのメカニズムを提供すること、および、前記少なくとも１つの事前に暗号化されて選択された列内のデータの再暗号化のための新たなキーを特定することを前記ユーザに許容するための前記メカニズムに関係する自動化ツールを提供することを含むコンピュータ実行方法。
【請求項２】
前記少なくとも１つの事前に暗号化されて選択された列の前記再暗号化のための新たな初期化ベクトルを特定することを前記ユーザに許容することをさらに含む請求項１に記載のコンピュータ実行方法。
【請求項３】
前記少なくとも１つの事前に暗号化されて選択された列の前記再暗号化のために、１以上の行のための新たな初期化ベクトルが生成されることを要求することを前記ユーザに許容することをさらに含む請求項１に記載のコンピュータ実行方法。
【請求項４】
前記再暗号化のためのバッチサイズを特定することを前記ユーザに許容することをさらに含む請求項１に記載のコンピュータ実行方法。
【請求項５】
前記再暗号化を実行することをさらに含む請求項１に記載のコンピュータ実行方法。
【請求項６】
前記再暗号化のために前記ユーザによって選択された各列に関係する暗号キーの用法のヒストリを記録することをさらに含む請求項１に記載のコンピュータ実行方法。
【請求項７】
前記自動化ツールを使用するためのグラフィカルユーザインターフェースを伴う管理コンソールを提供することをさらに含む請求項１に記載のコンピュータ実行方法。
【請求項８】
前記インターフェースがウェブベースのものである請求項７に記載のコンピュータ実行方法。
【請求項９】
データベース内のデータを暗号化するための暗号化システムであって、
再暗号化のために少なくとも１つの事前に暗号化された列を選択することをユーザに許容するための手段、および、前記少なくとも１つの事前に暗号化されて選択された列内のデータの前記再暗号化のための新たなキーを特定することを前記ユーザに許容するための手段を含む暗号化システム。
【請求項１０】
前記少なくとも１つの事前に暗号化されて選択された列の前記再暗号化のための新たな初期化ベクトルを特定することを前記ユーザに許容するための手段をさらに含む請求項９に記載の暗号化システム。
【請求項１１】
前記少なくとも１つの事前に暗号化されて選択された列の前記再暗号化のための１以上の行についての新たな初期化ベクトルを特定することを前記ユーザに許容するための手段をさらに含む請求項９に記載の暗号化システム。
【請求項１２】
前記再暗号化のためのバッチサイズを特定することを前記ユーザに許容するための手段をさらに含む請求項９に記載の暗号化システム。
【請求項１３】
前記再暗号化を実行するための手段をさらに含む請求項９に記載の暗号化システム。
【請求項１４】
前記再暗号化ために前記ユーザによって選択される各列に関係する暗号キーの用法のヒストリを記録するための手段をさらに含む請求項９に記載の暗号化システム。
【請求項１５】
データベース内のデータを暗号化するための装置であって、
１以上のプロセッサ、
暗号キーのためのストレージ、
前記データベースにアクセスすることを望むユーザを認証するための認証メカニズム、
前記データベースへのインターフェース接続のためのデータベースインターフェース、
前記データベース内の前記データを管理することを前記ユーザに許容するための管理コンソール、
前記１以上のプロセッサによって実行されたときに、
少なくとも１つの事前に暗号化された列を選択することを前記ユーザに許容するためのメカニズムを提供し、
そして、前記少なくとも１つの事前に暗号化されて選択された列内のデータの再暗号化のための新たなキーを特定することを前記ユーザに許容するための前記メカニズムと関係する自動化ツールを提供する、ステップを前記１以上のプロセッサに実行させる１以上の命令の１以上の列を運ぶストレージ媒体、
を含む装置。
【請求項１６】
前記少なくとも１つの事前に暗号化されて選択された列の前記再暗号化のための新たな初期化ベクトルを特定することを前記ユーザに許容することをさらに含む請求項１５に記載の装置。
【請求項１７】
前記少なくとも１つの事前に暗号化されて選択された列の前記再暗号化のための１以上の行のための新たな初期化ベクトルを特定することを前記ユーザに許容することをさらに含む請求項１５に記載の装置。
【請求項１８】
前記再暗号化のためのバッチサイズを特定することを前記ユーザに許容することをさらに含む請求項１５に記載の装置。
【請求項１９】
前記再暗号化を実行することをさらに含む請求項１５に記載の装置。
【請求項２０】
前記再暗号化のために前記ユーザによって選択された各列に関係する暗号キーの用法のヒストリを記録することをさらに含む請求項１５に記載の装置。
【請求項２１】
前記自動化ツールを使用するためのグラフィカルユーザインターフェースを伴う管理コンソールを提供することをさらに含む請求項１５に記載の装置。
【請求項２２】
前記インターフェースがウェブベースのものである請求項２１に記載の装置。
【請求項２３】
データベースからのデータを暗号化するためのコンピュータ実行方法であって、
暗号化オペレーションを実行するための前記データベースのリソースから分離された計算リソースを有するメカニズムを提供すること、
暗号化のためのターゲットデータを選択し、
前記ターゲットデータのための暗号化方法を選択し、
前記選択された暗号化方法のための１以上の特性を特定し、そして、
前記ターゲットが暗号化された後で、前記ターゲットデータに適合するための方式中に前記ターゲットデータが存在する各データベース列のための一致するスキーマを修正する、ための前記メカニズムと関係する自動化ツールを提供すること、
を含むコンピュータ実行方法。
【請求項２４】
前記各データベース列をそのオリジナルのサイズおよびデータタイプに復元するための機能性を提供することをさらに含む請求項２３に記載のコンピュータ実行方法。
【請求項２５】
前記データベース内のどのデータが、前記データベースへのユーザのアクセス権に基づいて、ユーザによって修正され得るのかを決定することをさらに含む請求項２３に記載のコンピュータ実行方法。
【請求項２６】
前記データベース内のどのデータベーステーブルが、前記ユーザによって修正され得るのかを証明することをさらに含む請求項２５に記載のコンピュータ実行方法。
【請求項２７】
前記証明されたデータベース内のどの列が、前記ユーザによって修正され得るのかを決定することさらに含む請求項２６に記載のコンピュータ実行方法。
【請求項２８】
前記選択された暗号化方法を使用して前記ターゲットデータを暗号化することをさらに含む請求項２３に記載のコンピュータ実行方法。
【請求項２９】
ターゲットデータが暗号化された後で、前記ターゲットデータをそのオリジナルの暗号化されていないフォームに復元することをさらに含む請求項２３に記載のコンピュータ実行方法。
【請求項３０】
前記自動化ツールを使用するためのグラフィカルユーザインターフェースを伴う管理コンソールを提供することをさらに含む請求項２３に記載のコンピュータ実行方法。
【請求項３１】
前記インターフェースがウェブベースのものである請求項３０に記載のコンピュータ実行方法。
【請求項３２】
前記選択された暗号化方法のための前記１以上の特性が、暗号化アルゴリズムタイプ、モードタイプ、パディングおよび初期化ベクトルを含む請求項２３に記載のコンピュータ実行方法。
【請求項３３】
前記暗号化アルゴリズムタイプが、ＤＥＳ、ＤＥＳｅｄｅ、ＡＥＳ、ＲＣ４、ＨＭＡＣ、ＲＳＡを含む請求項３２に記載のコンピュータ実行方法。
【請求項３４】
前記モードタイプがＣＢＣモードおよびＥＢＣモードを含む請求項３２に記載のコンピュータ実行方法。
【請求項３５】
データベース内のデータを暗号化するための暗号化システムであって、
暗号化のためのターゲットデータを選択するための手段、
前記ターゲットデータのための暗号化方法を選択するための手段、
前記選択された暗号化方法のための１以上の特性を特定するための手段、および、
前記ターゲットが暗号化された後で、前記ターゲットデータが、前記ターゲットデータと適合するための方式で存在する各データベース列のための一致するスキーマを修正するための手段、
を含む暗号化システム。
【請求項３６】
前記各データベース列を、そのオリジナルのサイズおよびデータタイプに復元するための機能性を提供するための手段をさらに含む請求項３５に記載の暗号化システム。
【請求項３７】
前記データベース内のどのデータが、前記データベースへの前記ユーザのアクセス権に基づいて、ユーザによって修正され得るのかを決定するための手段をさらに含む請求項３５に記載の暗号化システム。
【請求項３８】
前記データベース内のどのデータベーステーブルが、前記ユーザによって修正され得るのかを証明するための手段をさらに含む請求項３７に記載の暗号化システム。
【請求項３９】
前記証明されたデータテーブル内のどの列が、前記ユーザによって修正され得るのかを決定するための手段をさらに含む請求項３８に記載の暗号化システム。
【請求項４０】
前記選択された暗号化方法を使用して前記ターゲットデータを暗号化するための手段をさらに含む請求項３５に記載の暗号化システム。
【請求項４１】
前記ターゲットデータが暗号化された後で、前記ターゲットデータをそのオリジナルの暗号化されていないフォームに復元するための手段をさらに含む請求項３５に記載の暗号化システム。
【請求項４２】
データベース内のデータを暗号化するための装置であって、
１以上のプロセッサ、
暗号キーのためのストレージ、
前記データベースへのアクセスを望むユーザを認証するための認証メカニズム、
前記データベースを交信するためのデータベースインターフェース、
管理者に、前記データベース内の前記データを管理することを許容するための管理コンソール、
前記１以上のプロセッサによって実行されたときに、
暗号化のためのターゲットデータを選択し、
前記ターゲットデータのための暗号化方法を選択し、
前記選択された暗号化方法のための１以上の特性を特定し、そして、
前記ターゲットが暗号化された後で、前記ターゲットデータに適合する方式で前記ターゲットデータが存在する各データベース列について一致するスキーマを修正する、ステップを前記１以上のプロセッサに実行させる１以上の命令の１以上の配列を運ぶストレージ媒体
を含む装置。
【請求項４３】
前記各データベース列を、そのオリジナルのサイズおよびデータタイプに復元するための第１のメカニズムをさらに含む請求項４２に記載の装置。
【請求項４４】
前記データベース内のどのデータが、前記データベースへの前記ユーザのアクセス権に基づいて、ユーザによって修正され得るのかを決定するための第２のメカニズムをさらに含む請求項４２に記載の装置。
【請求項４５】
前記データベース内のどのデータベーステーブルが、前記ユーザによって修正され得るのかを証明するための第３のメカニズムをさらに含む請求項４４に記載の装置。
【請求項４６】
前記証明されたデータベーステーブル内のどの列が、前記ユーザによって修正され得るのかを決定する第４のメカニズムをさらに含む請求項４５に記載の装置。
【請求項４７】
前記選択された暗号化方法を使用して前記ターゲットデータを暗号化するための第５のメカニズムをさらに含む請求項４２に記載の装置。
【請求項４８】
前記ターゲットデータが暗号化された後で、前記ターゲットデータをそのオリジナルの暗号化されていないフォームに復元するための第６のメカニズムをさらに含む請求項４２に記載の装置。
【請求項４９】
アプリケーションプログラムおよびデータベースに対して透過的な形式でデータベース内の機密データにアクセスすることをアプリケーションプログラムに許容するコンピュータ実行方法であって、
アプリケーションプログラムが前記機密データにアクセスするよう試みたときに、ビューをインスタンス生成し、前記ビューがデータベース内のソーステーブルに一致し、前記ソーステーブルは、前記機密データが暗号化データとして存在し、
前記アプリケーションプログラムが認証された場合に前記機密データに一致する復号化データを伴う前記ビューを取り込み、
前記ビューを前記認証されたアプリケーションプログラムに公開すること、
を含むコンピュータ実行方法。
【請求項５０】
前記暗号化されたデータを形成するための前記ソーステーブル内の前記機密データを暗号化することをさらに含む請求項４９に記載のコンピュータ実行方法。
【請求項５１】
前記ビューをインスタンス生成する前に、前記ソーステーブルを改名することをさらに含む請求項５０に記載のコンピュータ実行方法。
【請求項５２】
前記ソーステーブルのオリジナルの名前とともに前記インスタンス生成されたビューの名前を付けることをさらに含む請求項５１に記載のコンピュータ実行方法。
【請求項５３】
テンポラリテーブルを生成すること、および前記機密データを前記ソーステーブルから前記テンポラリテーブルにエクスポートすること、および、その後、前記暗号化データを形成するために、前記テンポラリテーブル内の前記機密データを暗号化することをさらに含む請求項５０に記載のコンピュータ実行方法。
【請求項５４】
前記暗号化されたデータを前記テンポラリテーブルから前記ソーステーブルに戻すことをさらに含む請求項５３に記載のコンピュータ実行方法。
【請求項５５】
前記ビューを自動的にインスタンス生成するための１以上のメタデータテーブルを使用することをさらに含む請求項４９に記載のコンピュータ実行方法。
【請求項５６】
前記アプリケーションが、前記データベース内に保存された前記機密データにアクセスするように試みたときに、前記アプリケーションプログラムを認証することをさらに含む請求項４９に記載のコンピュータ実行方法。
【請求項５７】
データを挿入するための挿入ステートメントをトラップすることをさらに含み、前記挿入ステートメントが前記アプリケーションプログラムによって前記ビュー上で実行され、前記トラップされた挿入ステートメントに応じて、前記データを前記ソーステーブルに挿入するための新たな一致する挿入ステートメントを生成することを含む請求項４９に記載のコンピュータ実行方法。
【請求項５８】
前記機密データをアップデートするためのアップデートステートメントをトラップすることをさらに含み、前記アップデートステートメントが前記アプリケーションプログラムによって前記ビュー上で実行され、前記トラップされたアップデートステートメントに応じて、前記ソーステーブル内で前記機密データをアップデートするための新たな一致するアップデートステートメントを生成することを含む請求項４９に記載のコンピュータ実行方法。
【請求項５９】
前記挿入ステートメントをトラップするため、および前記新たに一致する挿入ステートメントを生成するための１以上のトリガを使用することをさらに含む請求項５７に記載のコンピュータ実行方法。
【請求項６０】
１以上のメタデータテーブルに基づいて前記１以上のトリガを自動的に生成することをさらに含み、前記１以上のメタデータテーブルが、暗号化のターゲットとされるデータベーステーブルおよび列を定義するために設定可能とされる請求項５９に記載のコンピュータ実行方法。
【請求項６１】
前記アップデートステートメントをトラップするため、および新たに一致するアップデートステートメントを生成するための１以上のトリガを使用することをさらに含む請求項５７に記載のコンピュータ実行方法。
【請求項６２】
前記ビューを取り込むための前記機密データを復号化するために適合されるネットワーク接続暗号化・復号化（ＮＡＥ）メカニズムを使用することをさらに含む請求項４９に記載のコンピュータ実行方法。
【請求項６３】
前記ソーステーブル内のストレージのための前記機密データを暗号化するために適合されるネットワーク接続暗号化・復号化（ＮＡＥ）メカニズムを使用することをさらに含む請求項４９に記載のコンピュータ実行方法。
【請求項６４】
データベース内のデータを暗号化するための透過的な暗号化システムであって、
前記データベースを前記透過的な暗号化システムに結合するために前記データベース内からの要求に応じてデータを暗号化および復号化するための手段、
１以上のプレーンテキストデータベーステーブル列から、一致する１以上の暗号化されたデータベーステーブル列にデータを移動させるための手段、
前記透過的な暗号化システムに、データベースを結合した後に、データベース上で、自動的に次の暗号化および復号化オペレーションを自動化するための手段、
前記結合されたデータベース内の暗号化データにユーザだけがアクセスすることができるように、ユーザを認証するための手段、
を含む透過的な暗号化システム。
【請求項６５】
データベース内のデータを暗号化するための透過的な暗号化システムであって、
アプリケーションプログラムが機密データにアクセスすることを試みたときに、ビューをインスタンス生成するための手段を含み、前記ビューはデータベース内のソーステーブルに一致し、前記ソーステーブルは、機密データが暗号化データとして存在するものであり、
前記アプリケーションプログラムが認証されたときに、前記機密データと一致する復号化されたデータとともに前記ビューを取り込むための手段、および
前記ビューを前記認証されたアプリケーションプログラムに公開するための手段、
を含む透過的な暗号化システム。
【請求項６６】
前記アプリケーションが前記データベース内に保存された前記機密データにアクセスしようと試みたときに、前記アプリケーションプログラムを認証するための手段をさらに含む請求項６５に記載の透過的な暗号化システム。
【請求項６７】
データを挿入するための挿入ステートメントをトラップするための手段をさらに含み、前記挿入ステートメントが、前記アプリケーションプログラムによって前記ビュー上で実行され、前記トラップされた挿入ステートメントに応じて、前記データを前記ソーステーブルに挿入するための一致する新たな挿入ステートメントを生成することを含む請求項６５に記載の透過的な暗号化システム。
【請求項６８】
前記機密データをアップデートするためのアップデートステートメントをトラップするための手段をさらに含み、前記アプリケーションプログラム、およびトラップされた前記アップデートステートメントに応じて、前記ソーステーブル内で前記機密データをアップデートするための新たな一致するアップデートステートメントを生成することにより、アップデートステートメントが前記ビュー上で実行されてなる請求項６５に記載の透過的な暗号化システム。
【請求項６９】
前記ビューに取り込むための前記機密データを復号化するための手段をさらに含む請求項６５に記載の透過的な暗号化システム。
【請求項７０】
前記ソーステーブル内のストレージのための前記機密データを暗号化するための手段をさらに含む請求項６５に記載の透過的な暗号化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データセキュリティを対象とし、そして、より具体的には、データベース内に存在する機密データを保護することを対象とする。
【背景技術】
【０００２】
クレジットカード番号、ソーシャルセキュリティ番号、患者記録、保険データ等のような機密情報が保護される必要があることは否定できない。企業は、そのような機密データが通過するときに、そのような機密データを保護するための手順を制定したのであるが、しばしば、そのようなデータは、暗号化されないフォーマット（「クリアテキスト」または「プレーンテキスト」）に保存される。例えば、データはしばしばデータベース内にクリアテキストとして保存される。クリアテキストは、データを危険にさらし、及び／又はデータを違法に使用できる攻撃者や不満を抱く従業員の目に見えるものである。さらに、データセキュリティが顧客から高く望まれる特徴であるだけでなく、特定のデータセキュリティの規則に従うことが必要とされる。データを適切に保護するために、組織は、データが保存中であるとき、データが通過中であるとき、データが使用されているときを含んでいつもデータを保護するための手順を制定することを必要とする。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
一旦、ターゲットデータベース内のデータが暗号化されると、データのセキュリティは、データベース内においてデータを定期的に再暗号化することにより、さらに強められる。ターゲットデータベースの管理者および／またはターゲットデータベースにアクセスするアプリケーションにほとんど影響がないように、再暗号化のプロセスが自動化されることが望ましい。
【０００４】
しかしながら、存在するデータベースをセキュアシステムに変換するために、大量のデータが変換されることが必要とされる理由から、莫大な計算リソースが要求される。ターゲットリレーショナルデータベースの計算および記憶リソースを使い果たさないように、変換をなすことが望ましい。また、ターゲットデータベースの管理者に対して可能な限り透過的および便利な変換をなすことが望ましい。
【０００５】
また、与えられたデータベースの特定のデータベーステーブルおよび／または全てのデータベーステーブルの全ての列を暗号化するよりもむしろデータベースの特定の列を選択的に暗号化する能力を備えることが望ましい。しかしながら、データベーステーブルについての列レベルのような、粒度の細かいレベルで暗号化を提供することは、与えられたデータベース内の暗号化されたデータにアクセスすることを望むアプリケーションプログラムに対して大規模な変化を要求する。そのようなアプローチは、その解決を実装するためにかなりの時間と努力を要求するであろう。
【０００６】
これらの、そして他の問題が、ここで記載される技術を使用することで、取り組まれ、解決され、および／または改善される。
【課題を解決するための手段】
【０００７】
いくつかの実施例に従い、リレーショナルデータベースのリソースへの最小限の影響を伴う暗号化されたフォーマットに、リレーショナルデータベース内に存在する既存のデータを変換するためのメカニズムを提供することによって、安全でないリレーショナルデータベースシステムは、最初にセキュアシステムに変換される。いくつかの実施例に従い、リレーショナルデータベースがセキュアシステムに変換された後、そのようなリレーショナルデータベースのセキュリティは、新たな暗号キーを使用して、データベース内のデータを定期的に再暗号化することにより、さらに強化される。新たな暗号キーを使用するデータベース内のデータの定期的な再暗号化は、ここでは、キーローテーションとして参照される。
【０００８】
いくつかの実施例に従い、メカニズムは、ターゲットデータベース内のデータを再暗号化するための新たな暗号キーを自動的に選択するために提供される。いくつかの実施例に従い、新たな初期化ベクトルが、再暗号化のために選択されたデータのそれぞれの列を再暗号化するために特定されてもよい。いくつかの実施例に従い、新たな初期化ベクトルは、再暗号化のために選択されたデータベーステーブル内のデータの１以上の行のために特定されてもよい。
【０００９】
いくつかの実施例に従い、ターゲットデータベース内のデータを自動的に再暗号化するために使用されるメカニズムは、以下の機能性を含む。１）再暗号化のための事前に暗号化された１以上の列を選択することをユーザに許容する、２）再暗号化のためにユーザによって選択された列についての列レベルでの新たな初期化ベクトルを特定することをユーザに許容する、３）再暗号化のためにユーザによって選択されたそれぞれの行についての行レベルでの新たな初期化ベクトルの生成について要求することをユーザに許容する、４）ユーザによって選択された列または行データの再暗号化における使用のための新たな暗号キーを特定することをユーザに許容する、５）ユーザによって選択されたデータの再暗号化のためのバッチサイズを特定することをユーザに許容する、６）ユーザによって特定された再暗号化を実行する、７）もし望まれれば、後にリレーショナルデータベースのバックアップデータのデータ復号化を助けるための暗号キーの用法のヒストリを記録する、および８）もし望まれれば、異なる暗号化モードを特定することをユーザに許容する。
【００１０】
いくつかの実施例に従い、メカニズムは、リレーショナルデータベースの計算および保存リソースを使い果たさないようにリレーショナルデータベースから分けられる装置上で、ユーザ選択データの再暗号化が起こることを許容するために提供される。そのようなメカニズムは、ターゲットリレーショナルデータベースからユーザによって特定されたデータの再暗号化を管理する管理コンソールを含み得る。
【００１１】
いくつかの実施例に従い、再暗号化のために選択されたデータベースデータの再暗号化は、セキュアシステムへの変換のためにターゲットとされたリレーショナルデータベースからの大量のデータにおけるデータ暗号化を高速に実行するように設計された専門の一部のハードウェア上で実行される。さらに、そのような専門のハードウェアは、ターゲットリレーショナルデータベースとつながるデータベースサーバをオフロードするために、独自のＣＰＵと処理電源を装備する。いくつかの実施例に従い、ユーザ選択データの再暗号化は、ターゲットデータベースサーバまたはターゲットデータベースに関係する他のいくつかのメカニズムによって実行される。
【００１２】
いくつかの実施例に従い、ターゲットデータベースから暗号化のためのターゲットデータを移動することについて使用されるメカニズムは、以下の機能性を含む。１）ユーザが修正することを承認されたテーブルがどれであるかを確認する、２）確認されたテーブル内において、ユーザが暗号化することを承認された列がどれであるかを決定する、３）望まれた暗号化の特性を特定するための入力パラメータを受け取る、４）暗号化のターゲットとされたそれぞれの列内について要求される、列長やデータタイプを修正または生成する、５）暗号化のターゲットとされたそれぞれの列内で表されるクリアテキストデータを暗号化する、および６）暗号化されていないフォームにターゲットデータを戻すのと同様に、暗号化された列を、元のサイズおよびデータタイプに戻すための「アンドゥ」機能性を提供する。
【００１３】
いくつかの実施例に従い、メカニズムは、ターゲットデータの暗号化が、リレーショナルデータベースの計算および保存リソースを使い果たさないように、リレーショナルデータベースから分けられた装置上で起こることを許容するために提供される。そのようなメカニズムは、ターゲットデータベースから処理用の暗号化サーバへのデータの移動を管理する管理コンソールを含み得る。
【００１４】
いくつかの実施例に従い、暗号化のターゲットとされたデータベースのデータは、セキュアシステムへの変換のターゲットとされたリレーショナルデータベースからの大量のデータ上のデータ暗号化を高速に実行するよう設計された専門の一部のハードウェア上で実行される。さらに、そのような専門の一部のハードウェアは、ターゲットリレーショナルデータベースにつながるデータベースサーバをオフロードするために、独自のＣＰＵおよび処理電源を装備する。
【００１５】
いくつかの実施例に従い、リレーショナルデータベースから分けられ、かつターゲットデータを暗号化するために使用されるメカニズムが、非認証処理にアクセスできないようするために、暗号キーを高いセキュア形式内に保存する。
【００１６】
いくつかの実施例に従い、ターゲットリレーショナルデータベースから分けられたメカニズムが、ターゲットリレーショナルデータベースからターゲットデータを取り出すための選択ステートメントを出す。そのようなメカニズムは、その後、ターゲットデータ上の、マルチスレッドのハードウェアレベルの暗号化を実行する。ターゲットデータが暗号化された後、メカニズムは、ターゲットリレーショナルデータベースに暗号化データをコピーして戻すためのアップデートステートメントを出す。
【００１７】
いくつかの実施例に従い、リレーショナルデータベース内に存在する既存のデータを暗号化フォーマットに変換するためのメカニズムを提供することにより、安全でないデータベースシステムは、セキュアシステムに変換される。さらに、いくつかの実施例に従い、データベース内の機密データの粒度の細かい保護を許容するためのメカニズムが提供される。言い換えれば、データベース内のいくつかのテーブルは、暗号化のために選択され得る。もし望まれれば、全てのデータベーステーブルを暗号化するよりはむしろ、与えられたデータベーステーブル内のいくつかの列が暗号化のために選択され得る。そのよう粒度の細かい保護は、データベースおよびデータベース内のデータにアクセスするアプリケーションプログラムに対して最小限の影響を伴って実装される。認証されたアプリケーションプログラムは、ほとんどないか、または全くないアプリケーションプログラムへの変化を伴って暗号化データに途切れなくアクセスできる。
【００１８】
いくつかの実施例に従い、リレーショナルデータベースの外部のアプリケーションプログラムに、途切れのない方式におけるデータベース内の機密データにアクセスすること許容するためのメカニズムが提供される。説明のために、アプリケーションプログラムは、リレーショナルデータベース内の暗号化データにアクセスするためのステートメントを修正しなければならないということなしに、暗号化されていないデータにアクセスするために通常使用される既存のクエリステートメントを使用するために許容されるべきである。言い換えれば、アプリケーションプログラムは、機密データが暗号化される前に、データベース内の機密データにアクセスするために使用される同じクエリステートメントを使用できる。
【００１９】
いくつかの実施例に従い、リレーショナルデータベースと１以上のメカニズムとの間の途切れのない相互のやり取りの管理を許容するためのメカニズムが、以下のために提供される。１）リレーショナルデータベースの内部からの求めに応じて、データを暗号化および復号化する、２）プレーンテキスト列から暗号化された列へデータを移動する、３）その後の暗号および復号オペレーションを自動化する、４）認可されたユーザのみが機密データにアクセスできるよう、ユーザを認証する。
【００２０】
いくつかの実施例に従い、認可されたアプリケーションプログラムが与えられたソースデータベーステーブル内で既に暗号化された機密データにアクセスする要求を出したとき、メタデータテーブルを使ってソーステーブルのビューがインタンス生成される。さらに、要求された機密データが復号化され、そのようなビューが復号化されたデータを伴って取り込まれる。ビュー上で要求しているアプリケーションプログラムが実行される任意の動作が補足される。補足された動作に応じて、あたかも要求しているアプリケーションが一致するソーステーブルで動作しているかのように、新たな動作が一致するソーステーブル上で自動的に実行される。
【発明を実施するための最良の形態】
【００２１】
図１は、いくつかの実施例に従い、透過的な暗号化のためのシステムアーキテクチャを示す高レベルブロック図である。アーキテクチャ１００内において、クライアントコンピュータ１０２は、ウェブサーバ１０４を通じて、アプリケーションサーバ１０６にアクセスできる。アプリケーションサーバ１０６は、リレーショナルデータベース１０８と通信できる。リレーショナルデータベース１０８は、データベースプロバイダ１１０と暗号化プロバイダ１１２を含む。データベースプロバイダ１１０と暗号化プロバイダ１１２は、暗号化サーバ１１４と通信できるようになっている。暗号化サーバ１１４はまた、ネットワーク接続暗号化サーバ（ＮＡＥサーバ）として参照される。
【００２２】
いくつかの実施例に従い、データベースプロバイダ１１０のようなデータベースプロバイダは、与えられたリレーショナルデータベースに対して与えられた暗号化プロバイダの特徴を露出するためのいくつかの機能を構成するＰＬ／ＳＱＬ（手続き型言語／構造化照会言語）レイヤである。そのような機能は、限定されない以下のことを含む。１）暗号化クライアント証明書キーストアおよびパスワードの場所をセットするような、暗号化プロバイダが必要とし得るプロバイダシステム特性をセットする機能、２）暗号化サーバユーザネームおよびリレーショナルデータベースの特定のユーザのためのパスワードをセットする機能、３）文字列を暗号化し、および文字列でエンコードされたBase64のようなデータを戻すための付随的な機能、４）文字列でエンコードされたBase64を復号化し、および暗号化されていないオリジナルの文字列を戻すための付随的な機能、５）数を暗号化し、そして、文字列でエンコードされたBase64のようなデータを戻すための付随的な機能、６）文字列でエンコードされたBase64を復号化し、そして、暗号化されていない数を戻すための付随的な機能、７）文字列を暗号化し、生の２値のようなデータを戻すための付随的な機能、８）生の２値を復号化し、そして、暗号化されていないオリジナルの文字列を戻すための機能、９）数を暗号化し、そして、生の２値のようなデータを戻すための機能、１０）生の２値を復号化し、そして、暗号化されていない数を戻すための機能、１１）文字列を暗号化し、ビットデータのようなデータを戻すための機能、１２）ビットデータを復号化し、そして、暗号化されていないオリジナルの文字列に戻すための機能、１３）数を暗号化し、そして、ビットデータのようなデータを戻すための機能、１４）ビットデータを復号化し、そして、暗号化されていないオリジナルの数に戻すための機能。
【００２３】
いくつかの実施例に従い、ＮＡＥサーバのような暗号化サーバは、クライアント接続を聞き、そして、暗号化オペレーションや暗号キー管理オペレーションを管理する。暗号化サーバは、ユーザや暗号化サーバクライアントに、暗号キー、認証、データの暗号化および復号化、デジタル署名の生成、メッセージ認証コード（ＭＡＣ）の証明と関係するオペレーションを含む暗号化オペレーションを実行することを許容する。
【００２４】
暗号化サーバは、暗号化サーバクライアントが暗号化プロバイダを通して暗号化オペレーションを実行することを許容する。いくつかの実施例に従い、暗号化プロバイダは暗号化サーバに対するAPIである。暗号化サービスについて要求するために、暗号化サーバと通信するのは暗号化プロバイダである。
【００２５】
図２は、いくつかの実施例に従い、リレーショナルデータベース内のクリアテキストフォーマット内に保存された機密データを、リレーショナルデータベースにアクセスするアプリケーションプログラムに、アプリケーションプログラムに対して透過的となる方式で暗号化オペレーションを実行するための暗号化サーバと交信することを許容するような方式で、暗号化されたフォーマットに変換するといったことが実行されるいくつかのステップを示すフローチャートである。ブロック２０２では、機密データが確認され、そのような機密データが存在するデータベーステーブルが確認される。そのような機密データが存在すると確認されたデータベーステーブルは、ここではソーステーブルとして参照される。図２を参照した説明の目的のために、ここで表１として示すように、「CUSTOMER」と呼ばれるデータベーステーブルCC#NUMと呼ばれる列に、機密データ(クレジットカード番号)を含むものと仮定する。
【表１】
2009510616.tif 000003
【００２６】
ブロック２０４では、ソーステーブル「CUSTOMER」は、同じ名前「CUSTOMER」を伴って、後にビューが生成され得るように、改名される。ここで、ソーステーブル「CUSTOMER」は、表２に示されるように、「CUSTOMER#ENC」に改名されると仮定する。しかしながら、表２に示される改名されたソーステーブル「CUSTOMER#ENC」中の列CC#NUMの中のデータは、まだ変わっていないが、ブロック２１０で記述される方式に変更される。
【表２】
2009510616.tif 000004
【００２７】
ブロック２０６では、テンポラリテーブルが生成され、改名されたソーステーブルCUSTOMER#ENCからの列CC#NUMからの機密データがテンポラリテーブルにエクスポートされる。ブロック２０６で記述されるようなテンポラリテーブルへの機密データのエクスポートの後で、ブロック２０８では、後のステップでデータタイプの変更のときに起こるいかなるデータ変換を避けるために、CUSTOMER#ENC内の列CC#NUMのデータが零にセットされる。ここで、テンポラリテーブルの例が、CUSTOMER#TEMPとして表３に示される。
【表３】
2009510616.tif 000005
【００２８】
ブロック２１０では、データタイプと列CC＿NUMの列サイズが、暗号化データがクリアテキストデータよりも予想通りに大きいために、適応する暗号化データに修正される。限定されない例として、暗号化データは、フォーマットがエンコードされたBase64に保存され、またはバイナリデータとして保存される。データタイプおよび列CC＿NUMの列サイズが修正された後で、かつ、テンポラリテーブルCUSTOMER＿TEMPからの機密データがCUSTOMER＿ENCにインポートされる前に、ブロック２１２で、暗号化プロバイダは、機密データを、テンポラリテーブルから、データが暗号化される暗号化サーバに送る。
【００２９】
ブロック２１４では、暗号化サーバは機密データを暗号化プロバイダに戻す。暗号化プロバイダは、暗号化された機密データを改名されたソーステーブルCUSTOMER＿ENCの列CC＿Numに挿入する。ここで、暗号化データを含むソーステーブルは、表４に示されるように現れる。
【表４】
2009510616.tif 000006
【００３０】
図３は、いくつかの実施例に従い、暗号化データにアクセスするためのアプリケーションによって送られたクエリステートメントに対する修正なしで、アプリケーションプログラムにデータベースから暗号化されたデータにアクセスすることを許容するために実行されるいくつかのステップを示すフローチャートである。説明のため、リレーショナルデータベース内で暗号化されたフォーマット内に保存される機密データにユーザがアクセスしたいと望むことを仮定する。ユーザがアクセスすることを要求するデータは、以下「要求された機密データ」として参照される。ここで、図３は、図１を参照して記述される。図１の参照において、ユーザは、ウェブサーバ１０４を経由してアプリケーションサーバ１０６にアクセスするクライアントコンピュータ１０２を使用できる。アプリケーションサーバ１０６は、リレーショナルデータベース１０８からデータにアクセスするための少なくとも１つのアプリケーションプログラム（図１に示されていない）を管理する。リレーショナルデータベース１０８内に保存された機密データの暗号化されたフォーマットについて、アプリケーションサーバ１０６および少なくとも１つのアプリケーションプログラムは、不可知論者であると仮定する。要求された機密データは暗号化されるのであるが、アプリケーションサーバ１０６および関係するアプリケーションプログラムは、まるで機密データがクリアテキストフォーマット内にあるかのようにオペレートする。
【００３１】
図３のブロック３０２では、アプリケーションサーバは、リレーショナルデータベースの呼び出しをつくり、そして、ユーザの代わりにデータベース内のデータへのアクセスを要求するためにクエリを送る。ブロック３０４では、要求されたデータが機密データかどうかについての決定がなされる。もし、要求されたデータが機密データでないと決定された場合、その後、ブロック３０６で、クエリは、ユーザに、非機密データにアクセスすることを許容することによって満足される。
【００３２】
しかしながら、もし、要求されたデータが機密データであると決定された場合、その後、ブロック３０８で、ユーザは暗号化プロバイダを通じて暗号化サーバに認証される。限定されない認証の例において、ユーザは、有効なユーザネームおよびパスワードを求められる。もう１つの限定されない認証の例において、有効なユーザネームおよびパスワードを求められることに加えて、ユーザは、クライアント証明書を求められ得る。もう１つの限定されない例において、ユーザの証明書は、リレーショナルデータベースに保存され、そして、それ故、データベースから取り出される。
【００３３】
ブロック３１０では、ユーザがうまく認証されたかどうかが決定される。もし、ユーザがうまく認証されていないと決定された場合、その後、ブロック３１２で、データにアクセスするというユーザの要求は拒否される。
【００３４】
しかしながら、ユーザがうまく認証されたと決定された場合には、その後、ブロック３１４で、データベースプロバイダは、要求された機密データを含むデータベーステーブルのビューを自動的にインスタンス生成し、そして、要求された機密データの復号化されたフォームを伴った、インスタンス生成されたビューを取り込む。いくつかの実施例に従い、そのようなビューは、メタデータテーブルの使用のためにインスタンス生成される。ユーザは、その後、現れたビューに交信することができる。ここで、図２に関して記述された例に戻り、取り込まれたデータは表５に示される。
【表５】
2009510616.tif 000007
【００３５】
図４は、いくつかの実施例に従い、要求された機密データを含む、インスタンス生成されて取り込まれたビューにおいて、ユーザによって発行された挿入クエリステートメントを実行するためのいくつかのステップを示すフローチャートである。
【００３６】
図４のブロック４０２では、認証されたユーザは、リレーショナルデータベース内で与えられたデータベーステーブルに、機密データを挿入するために、取り込まれたインスタンス生成ビュー上でクエリ挿入ステートメントを実行する。取り込まれたインスタンス生成ビューは、オリジナルソースデータベーステーブルと一致するような同じ名前を有しているので、暗号化された列または暗号化されたデータを参照するクエリステートメントは、修正なしで規則的に機能する。
【００３７】
ブロック４０４では、ビュー上で挿入ステートメントを実行するという、認証されたユーザの試みに応じて、１以上のトリガが、ユーザの挿入ステートメントをトラップさせられるようにする。ブロック４０６では、トラップされた挿入ステートメントの挿入値に基づいて、新たな挿入ステートメントが生成されるように、暗号化のためのＮＡＥサーバに実行されるような要求がつくられる。言い換えれば、ＮＡＥサーバは、挿入値上で暗号化を実行する。ブロック４０８では、新たな挿入ステートメントが、取り込まれたインスタンス生成ビューと一致するソースデータベーステーブルに一致して実行される。
【００３８】
図５は、いくつかの実施例に従い、要求された機密データを含む取り込まれたインスタンス生成ビュー上でユーザによって発行されたアップデートクエリステートメントを実行するためのいくつかのステップを示すフローチャートである。
【００３９】
図５のブロック５０２では、認証されたユーザは、リレーショナルデータベース内で与えられたデータベーステーブルに、新たな機密データをアップデートするために、取り込まれたインスタンス生成ビュー上でクエリアップデートステートメントを実行する。取り込まれたインスタンス生成ビューは、オリジナルソースデータベーステーブルと一致するような同じ名前を有しているので、暗号化された列または暗号化されたデータを参照するクエリステートメントは、修正なしで規則的に機能し得る。
【００４０】
ブロック５０４では、ビュー上でアップデートステートメントを実行するための認証されたユーザの試みに応じて、１以上のトリガが、ユーザのアップデートステートメントがトラップされるようにする。ブロック５０６では、トラップされたアップデートステートメントのアップデート値に基づいて、新たなアップデートステートメントが生成される。ブロック４０８では、取り込まれたインスタンス生成ビューと一致するオリジナルデータベーステーブル上で、アップデートステートメントが実行される。
【００４１】
図６は、いくつかの実施例に従い、データベースから分けられた暗号化メカニズムを使用するデータベース内で事前に暗号化されたデータの再暗号化のためのシステムアーキテクチャを示す高レベルブロック図である。アーキテクチャ６００内において、クライアントコンピュータ６０２は、暗号化サーバ６１４と通信することができる。暗号化サーバは、リレーショナルデータベース６０８と通信する。暗号化サーバは、他のコンポーネントの間に、ＣＰＵ、処理電源を含む。暗号化サーバは、データベース結合上の限定されない情報および暗号化されたデータについてのアクセス特権を含む情報を保存するために使用され得る。
【００４２】
暗号化サーバ６１４はまた、ネットワーク接続暗号化サーバ（ＮＡＥサーバ）として参照される。リレーショナルデータベース６０８は、他のコンポーネントの間で、テーブル６１０のような複数のデータテーブル、およびメタデータテーブル６１２のような複数のメタデータテーブルを含む。リレーショナルデータベース内のメタデータテーブル６１２のようなメタデータテーブルは、限定されるものでない、１）データベーステーブル及びリレーショナルデータベースによって管理される列に関係するそれぞれの認証されたユーザのアクセス権、および、２）テータベーステーブルおよび列スキーマ、３）暗号化方法上の情報、および４）テーブルとターゲットデータベースから暗号化のために選択される列の特性上の情報、を含む情報を保存するために使用され得る。暗号化サーバは、再暗号化のためにターゲットリレーショナルデータベースからユーザによって選択されたターゲットデータを取り出す。暗号化サーバは、その後、暗号キーおよび／またはユーザによって選択された新たな初期化ベクトルを使用するユーザ選択データ上で再暗号化を実行する。
【００４３】
セキュリティ管理者、データベース管理者のようなユーザは、暗号化サーバに関係するデータ管理コンソールにアクセスすることにより、リレーショナルデータベース内のデータの再暗号化処理を管理するためにクライアントコンピュータを使用し得る。いくつかの実施例に従い、データ管理コンソールは、そのユーザに望まれるデータベースサーバにログインすること、および、再暗号化のためのデータを選択すること、を許容する。いくつかの他の実施例において、望まれるリレーショナルデータベースは、データベースプロバイダおよび暗号化プロバイダを含み得る。いくつかの実施例に従い、データベースプロバイダは、データベースサーバ上に存在し、ＮＡＥサーバに通信するコンピュータ実行機能性の一部である。 暗号化プロバイダは、暗号化サービスを要求するための暗号化サーバと通信する。いくつかの実施例に従い、暗号化プロバイダは、暗号化サーバに対するＡＰＩである。
【００４４】
いくつかの実施例に従い、ＮＡＥサーバのような暗号化サーバは、暗号化オペレーションおよび暗号キー管理オペレーションを管理する。暗号化サーバは、データの暗号化および復号化、暗号キー、認証、デジタル署名の生成、メッセージ認証コード（ＭＡＣ）と関係するオペレーションを含む暗号化オペレーションを実行することをユーザまたは暗号化サーバクライアントに許容する。
【００４５】
いくつかの実施例に従い、暗号化サーバは、以下の機能性を含むキーローテーションツールを含む。１）１以上の事前に暗号化された再暗号化のための列を選択することをユーザに許容する、２）再暗号化のためにユーザによって選択された列についての列レベルでの新たな初期化ベクトルを特定することをユーザに許容する、３）再暗号化のためにユーザによって選択された各行についての行レベルでの新たな初期化ベクトルの生成を要求することをユーザに許容する、４）ユーザによって選択された列または行データの再暗号化における使用のための新たな暗号キーを特定することをユーザに許容する、５）ユーザによって選択されたデータの再暗号化のためのバッチサイズを特定することをユーザに許容する、６）ユーザによって特定されるような再暗号化を実行する、７）望まれた場合に、しばらく経ってリレーショナルデータベースのバックアップデータのデータ復号化を手助けする暗号キーの使用法のヒストリを記録する、および８）望まれた場合に、異なる暗号化モードを特定することをユーザに許容する。
【００４６】
図７は、ターゲットリレーショナルデータベースに最小の影響を有する方式で再暗号化のためにユーザによって選択されたターゲットデータベース内の列または行内のデータの再暗号化のために実行されるいくつかのステップを示すフローチャートである。
【００４７】
図７のブロック７０２では、セキュリティ管理者またはデータベース管理者のようなユーザは、再暗号化の目的のために、ターゲットリレーショナルデータベースから選択された列または行データ（同様にターゲットデータとして参照される）のデータ再暗号化処理を始める。いくつかの実施例に従い、ユーザは、図６の暗号化サーバ６０４のような暗号化サーバにアクセスすることにより、データ再暗号化処理を始めることができる。いくつかの実施例に従い、暗号化サーバは、フロントエンドユーザインターフェースを伴う暗号キーローテーションツールを含み得る。そのようなキーローテーションツールのフロントエンドユーザインターフェースは、ここでは、データ管理コンソールとして同様に参照される。データ管理コンソールは、ターゲットデータベースにログインすることが要求されるデータの特定のセットに、ユーザが入ることを許容する。ログインすることが要求されるデータの特定のセットは、データベースベンダに基づいて変わり得る。それ故、いくつかの実施例に従い、管理コンソールは、ターゲットデータベースのデータベースタイプを特定することをユーザに許容する。データベースタイプに基づいて、管理コンソールは、その後、ターゲットデータベースにログインするためのログインデータフィールドを示すことができる。
【００４８】
ユーザのログイン情報が提示されたとき、ターゲットデータベースサーバに接続するという試みが初期化される。いくつかの実施例に従い、もし、接続の試みがうまくいった場合、データベース接続情報が暗号化サーバ上に保存される。そのようなデータベース接続情報は、将来のログインの試みの間に、ユーザが選択されたターゲットデータベースについての最小量のデータエントリを要求するログインスクリーンをユーザがもらうことができるように、それぞれのタイプのデータベースに関して集められ、そして保存され得る。
【００４９】
ターゲットデータベースに接続するという接続の試みが失敗となった場合、その後、ユーザは、エラーメッセージを受け取り、ログイン情報を再入力することが許される。
【００５０】
図７のブロック７０４では、いくつかの実施例に従い、ユーザが選ぶターゲットデータベースに一度接続されると、管理コンソールは、その後、再暗号化のためにユーザに利用可能な事前に暗号化されたデータベーステーブルのリストを示すことができる。いくつかの実施例に従い、メタデータテーブル６１２のようなデータベースメタデータテーブルは、ユーザのユーザＩＤに基づいて検索される。データベースメタデータテーブルは、ユーザによって事前に暗号化されたデータベーステーブルのリストを決定するために、ユーザＩＤに基づいて検索される。ユーザが事前に暗号化したデータベーステーブルのリストは、ここでは、データベーステーブルのターゲットリストとして参照される。データベーステーブルのターゲットリストは、ユーザに示すための管理コンソールに戻される。
【００５１】
図７のブロック７０６では、ユーザは、再暗号化についてのデータベーステーブルのターゲットリストからデータベーステーブルを選択できる。ユーザによって選択されたデータベーステーブルは、ここでは、ベーステーブルとして参照される。選択されたデータベーステーブルは、ここではしばしばベーステーブルとして参照される。図７のブロック７０８では、列のリストがユーザに示される。いくつかの実施例に従い、データベースメタデータテーブルは、選択されたデータベーステーブル内でユーザによって事前に暗号化された列のリストを決定するために、ユーザのユーザＩＤに基づいて検索される。ユーザが事前に暗号化した、選択されたデータベーステーブル内の列のリストは、ここでは、列のターゲットリストとして参照される。列のターゲットリストは、ユーザに示すための管理コンソールに戻される。
【００５２】
図７のブロック７１０では、列のターゲットリストから再暗号化のための列を特定することが、ユーザに許される。ブロック７１２では、ユーザには、１以上の選択された列のそれぞれについての新たな暗号キーを特定することが許される。付随的に、新たな暗号キーを選択することに加え、ユーザには、異なる暗号化モードを選択することが許される。ユーザにはまた、１以上の選択された列のそれぞれについての新たな初期化ベクトルを選択することが許される。もし、ユーザが行レベルで初期化ベクトルを選択した場合、その後、選択されたデータベーステーブル内の全ての列は、選択されたデータベーステーブル内の与えられた列がキーローテーションのために選択されるか否かにかかわらず、新たな初期化ベクトルおよび新たに選択されたキーローテーションを用いて暗号化される。いくつかの実施例に従い、ユーザの選択は、将来の参照のために暗号化サーバ内に保存され得る。
【００５３】
ブロック７１４では、関係する前に処理された多くの行を制御するためのバッチサイズを特定することが、ユーザに許される。図７のブロック７１６では、再暗号化のためのもう１つのテーブルを選択することがユーザに許され、そして上記の処理が繰り返される。ブロック７１８では、ユーザが、彼または彼女の再暗号化のためのテーブルおよび列の選択を完了した後、ターゲットデータベースから再暗号化および他に必要な修正のための暗号化サーバへのユーザの選択されたテーブルおよび列のキーローテーションを自動的に実行するために、スクリプトが生成される。例えば、選択されたデータのバルクロードの復号化と再暗号化を自動化することに関する保存された手続きが使用され得る。いくつかの実施例に従い、保存された手続きは、データベースサーバから呼ばれ得る。
【００５４】
図８は、いくつかの実施例に従い、データベースから分けられた暗号化メカニズムを使用するデータベース内のデータの暗号化のためのシステムアーキテクチャを示す高レベルのブロック図である。アーキテクチャ８００内において、クライアントコンピュータ８０２は、暗号化サーバ８１４に通信可能である。暗号化サーバは、リレーショナルデータベース８０８と通信を行う。暗号化サーバは、他のコンポーネントの間で、ＣＰＵおよび処理電源を含む。暗号化サーバは、データベース接続および暗号化データへのアクセス特権上の限定されない情報を含む情報を保存するために使用され得る。暗号化サーバ８１４はまた、ネットワーク接続暗号化サーバ（ＮＡＥサーバ）として参照される。
【００５５】
リレーショナルデータベース８０８は、他のコンポーネントの間で、テーブル８１０のような複数のデータテーブル、およびメタデータテーブル８１２のような複数のメタデータテーブルを含む。リレーショナルデータベース内のメタデータテーブルは、限定されることのない、１）リレーショナルデータベースによって管理されるデータベーステーブルおよび列に関するそれぞれ認証されたユーザのアクセス権、および２）データベーステーブルおよび列スキーマ、３）暗号化方法上の情報、４）ターゲットリレーショナルデータベースから暗号化のために選択されたテーブルや列の特性における情報、を含む情報を保存するために使用され得る。暗号化サーバは、選択されたターゲットリレーショナルデータベースからターゲットデータを取り出す。暗号化サーバは、その後、ターゲットデータ上で暗号化を実行する。いくつかの実施例に従い、暗号化サーバは、その後、ターゲットデータ上で、マルチスレッドの、ハードウェアレベルの暗号化を実行する。
【００５６】
セキュリティ管理者またはデータベース管理者のようなユーザは、暗号化サーバに関係するデータ管理コンソールにアクセスすることにより、リレーショナルデータベース中のデータの暗号化処理を管理するために、クライアントコンピュータを使用できる。いくつかの実施例に従い、データ管理コンソールは、望まれるデータベースサーバにログインし、データベースと通信することをユーザに許容する。いくつかの他の実施例に従い、望まれるリレーショナルデータベースは、データベースプロバイダや暗号化プロバイダを含み得る。いくつかの実施例に従い、データベースプロバイダは、リレーショナルデータベースサーバのコンピュータ実行機能性であり、暗号化プロバイダと通信することができる。暗号化プロバイダは、暗号化サービスを要求するために暗号化サーバと通信する。いくつかの実施例に従い、暗号化プロバイダは、暗号化サーバへのＡＰＩである。
【００５７】
いくつかの実施例に従い、ＮＡＥサーバのような暗号化サーバは、暗号化オペレーション、および暗号キー管理オペレーションを管理する。暗号化サーバは、データの暗号化および復号化に関係するオペレーション、暗号キー、認証、デジタル署名の生成、メッセージ認証コード（ＭＡＣ）の生成と証明、を含む暗号化オペレーションを実行することを、ユーザまたは暗号化サーバクライアントに許容する。
【００５８】
いくつかの実施例に従い、暗号化サーバは、以下の機能性を含むデータ移動ツールを含む。１）ユーザが修正するために認証されるテーブルがどれであるかを証明する、２）証明されたテーブル内において、ユーザが修正するために認証される列がどれであるかを決定する、３）望まれる暗号化の特性を特定するための入力パラメータを受け取る、４）暗号化のターゲットとされたそれぞれの列について要求される列長やデータタイプを修正または生成する、５）暗号化のターゲットとされるそれぞれの列に存在するクリアテキストデータを暗号化する、６）非暗号化形式にターゲットデータを回復するのと同様に、暗号化された列をそのオリジナルのサイズやデータタイプに回復させるための「アンドゥ」機能性を提供する。
【００５９】
図９は、ターゲットリレーショナルデータベース内のクリアテキストフォーマット内に保存された機密データを、ターゲットリレーショナルデータベースのリソース上で最小限の影響を有する方式で暗号化フォーマットに変換するための実行されるいくつかのステップを示すフローチャートである。
【００６０】
図９のブロック９０２において、セキュリティ管理者のようなユーザは、暗号化のターゲットためにリレーショナルデータベースから選択された機密データ（同様にターゲットデータとして参照される）のデータ移動を始める。いくつかの実施例に従い、ユーザは、図８の暗号化サーバ８０４のような暗号化サーバにアクセスすることによりデータ移動を始めることができる。いくつかの実施例に従い、暗号化サーバは、フロントエンドユーザインターフェースと伴うデータ移動ツールを含み得る。そのようなデータ移動ツールのフロントエンドユーザインターフェース、ここではまた、データ管理コンソールとして参照される。データ管理コンソールは、ターゲットデータベースにログインすることが要求されるデータの特定のセットを入力することをユーザに許容する。ログインすることが要求されるデータの特定のセットは、データベースベンダに基づいて変わり得る。それ故、いくつかの実施例に従い、管理コンソールは、ターゲットデータベースのデータベースタイプを特定することをユーザに許容する。データベースタイプに基づいて、管理コンソールは、その後、ターゲットデータベースにログインするためのログインデータフィールドを示し得る。
【００６１】
ユーザのログイン情報が提示されたとき、ターゲットデータベースサーバに接続するという試みは、初期化される。いくつかの実施例に従い、もし、接続の試みがうまくいった場合、データベース接続情報は、暗号化サーバ上に保存される。そのようなデータベース接続情報は、将来のログインの試みの間に、選択されたターゲットデータベースのための最小量のデータエントリを要求するログインスクリーンをユーザが受け取ることができるように、データベースのそれぞれのタイプのために、集められ、保存され得る。
【００６２】
もし、ターゲットデータベースへの接続の試みがうまくいかなかった場合、その後、ユーザは、エラーメッセージを受け取り、ログイン情報を再入力することが許容される。
【００６３】
図９のブロック９０４では、いくつかの実施例に従い、ターゲットデータベースに一度接続されると、管理コンソールは、その後、修正のためにユーザに利用可能なデータベーステーブルのリストを示すことができる。いくつかの実施例に従い、メタデータテーブル６１２のようなデータベースメタデータテーブルが、ユーザのユーザＩＤに基づいて検索される。そのようなメタデータテーブルは、ターゲットデータベース内に存在するデータテーブル上に情報を保存する。データベースメタデータテーブルは、ユーザがアクセスまたは修正するために認証されたデータベーステーブルのリストを決定するために、ユーザＩＤに基づいて検索される。アクセスまたは修正するためにユーザが認証されたデータベーステーブルのリストは、ここでは、データベーステーブルのアクセス可能なリストとして参照される。データベーステーブルのアクセス可能なリストは、ユーザに示すための管理コンソールに戻される。
【００６４】
図９のブロック９０６では、ユーザは、移動およびその後の修正のためにデータベーステーブルのアクセス可能なリストからデータベーステーブルを選択できる。ユーザに選択されたデータベーステーブルは、ここでは、選択されたデータベーステーブルとして参照される。選択されたデータベーステーブルは、ときどき、ベーステーブルとしてここに参照される。図９のブロック９０８では、列のリストがユーザに示される。いくつかの実施例に従い、データベースメタデータテーブルは、選択されたデータベーステーブル内で修正のためにユーザに利用可能な列のリストを決定するために、ユーザのユーザＩＤに基づいて検索される。アクセスおよび修正するためにユーザに認証された、選択されたデータベーステーブル内の列のリストは、ここでは、列のアクセス可能なリストとして参照される。
【００６５】
列のアクセス可能なリストは、ユーザに提示するための管理コンソールに戻される。いくつかの実施例に従い、列のアクセス可能なリストを決定することに加え、データベースメタデータテーブルおよび暗号化サーバに保存された暗号化情報は、ユーザに有用となり得る列上のいくつかの情報を決定するために検索される。ユーザに有用な列上の情報は、ここでは、列情報として参照される。列情報は、暗号化のための候補のような列をユーザが承認するか拒絶するかを決定するのに役立ち得る。
【００６６】
列情報は、ユーザに提示するための管理コンソールに戻される。そのような列情報は、実装により異なる。いくつかの限定されない列情報の例は、１）列がサポートされたデータタイプを有するかどうか（ユーザが、暗号化の候補としてのサポートされていないデータタイプを伴う列を拒絶するようにアドバイスされる）、２）列が基本キーとして使用されたかどうか（列が、明示的か、黙示的かのいずれかで外部キーとして参照されていない場合に、基本キー列が暗号化され得ることをユーザが知らされる）、３）列が外部キーとして使用されたかどうか（ユーザは、暗号化の候補である外部キーとして使用された列を拒絶するようにアドバイスされる）、４）列がインデックス内で使用されたかどうか（ユーザは、暗号化データのソート順序がクリアテキストデータのソート順序と一致していないことをアドバイスされる）、５）列がそれに割り当てられたデフォルト値を有しているかどうか（ユーザは、暗号化の候補であるそれらに割り当てられたデフォルト値を有する列を拒絶するようアドバイスされる）、６）列が検査制約を有しているかどうか（ユーザは、暗号化の候補である検査制約を有する列を拒絶するようアドバイスされる）、７）列が、この列が存在するデータベーステーブル上でいくつかのトリガにおいて参照されるかどうか（ユーザは、トリガが期待通りに機能するかどうかを見るためにトリガを再検討するようアドバイスされる）、および８）列が暗号化フォーマット内にあるかどうか（ユーザは、暗号化の候補として既に暗号化された列を拒絶するようアドバイスされる）、に関係する。上記の１以上の限定されない列情報の例は、いくつかの実施例に従い、手動のチェックを含み得る。
【００６７】
図９のブロック９１０では、ターゲットデータベース（ベーステーブル）から暗号化のための列を選択することがユーザに許される。ブロック９１２では、選択された列についての暗号化方法および関係する暗号化特性を選択することがユーザに許される。例えば、暗号化アルゴリズム、モード、初期化ベクトル、およびパディングを選択することがユーザに許され得る。いくつかの実施例に従い、ユーザの選択は、将来の参照のために暗号化サーバ内に保存され得る。
【００６８】
図９のブロック９１４では、暗号化のためのもう１つのテーブルを選択することがユーザに許され、そして、上記の処理が繰り返される。ブロック９１６では、ユーザが彼または彼女の暗号化のためのテーブルおよび列の選択が完了した後で、ユーザの選択されたテーブルおよび列並びに他に必要な修正のデータ移動を自動的に実行するために、スクリプトが生成され得る。スクリプトの一機能の一例は、ターゲットデータが暗号化された後に、ターゲットに適合するように、選択された暗号化アルゴリズムおよび選択された暗号化特性に基づいた列サイズの修正である。スクリプトのセットは、リレーショナルデータベースのそれぞれの列について変わり得る。データベース管理システムの各タイプは、変更機能性をサポートし得る。それ故、データ移動についての工程は、データベース管理システム（ＤＢＭＳ）の各タイプに合わせて調整される。
【００６９】
図１０は、ＳＱＬサーバタイプＤＢＭＳについてのデータ移動スクリプトの限定されない高レベルの例である。ブロック１００２では、アイデンティティ列がすでに存在しない場合に、列が暗号化のために選択されるベーステーブルに、アイデンティティ列が加えられる。
【００７０】
ブロック１００４では、ブロック１００２内で参照されるベーステーブルから暗号化のために選択された列からのデータが、ブロック１００２で参照されるアイデンティティおよびインクリメントされた行カウンタとともに、テンポラリテーブルに配置される。いくつかの実施例に従い、インクリメントされた行カウンタは、処理のためのユーザ指定のバッチサイズをサポートするために使用され得る。テンポラリテーブル内に配置されたデータは、その後、適用可能であれば、選択された暗号化方法、モード、初期化ベクトルおよびバディングを使用することで暗号化サーバによって暗号化される。
【００７１】
ブロック１００６では、ブロック１００２で参照されるベーステーブル内で暗号化のために選択された列に一致するデータ値が、零にセットされる。データ値は、一致する列サイズおよびデータタイプを修正するために、零にセットされる。
【００７２】
ブロック１００８では、暗号化のために選択された列サイズおよび列のデータタイプは、選択された暗号化アルゴリズムおよびパディングをサポートするために修正される。
【００７３】
ブロック１０１０では、ブロック１００２で参照されるベーステーブルは、ＴＳＱＬ暗号化処理を呼び出すことにより、ブロック１００４内で参照されるテンポラリテーブルからのデータの暗号化されたバージョンとともにアップデートされる。
【００７４】
ブロック１０１２では、ブロック１０１４で参照されるテンポラリテーブルは、データ暗号化処理が完了され、有効とされた後に、ドロップされる。ブロック１０１４では、反転が実際に望まれる場合に、ベーステーブルまたはいくつかの特定された列をそのオリジナルの暗号化されていないフォームに戻すようために、図１０を参照して記載されるように、暗号化処理を反転させるために「アンドゥ」機能性が提供される。
【００７５】
図１１は、ＤＢ２サーバタイプＤＢＭＳのためのデータ移動スクリプトの限定されない高レベルの例である。ブロック１１０２では、暗号化のために選択されたデータのそれぞれの列について、暗号化のために列が選択されたベーステーブルに、新たな列が加えられる。ブロック１１０４では、選択された列データが暗号化サーバによって暗号化され、そして、ブロック１１０２で参照される新たな列が、列データの暗号化されたバージョンとともにアップデートされる。
【００７６】
ブロック１１０６では、暗号化されていないオリジナルのデータの列の値が零にセットされる。ブロック１１０８では、ブロック１１０２内で参照されるベーステーブルが、同じオリジナルネームを伴うベーステーブルのビューを生成するために、改名される。ブロック１１１０では、ベーステーブルの名前が改名される前に、ブロック１１０８内を参照するベーステーブル上において、ベーステーブルと同じ名前でビューが生成される。ブロック１１１２では、反転が実際に望まれたときに、ベーステーブルまたはいくつかの特定の列を、そのオリジナルの暗号化されていない形式に戻すために、図１１を参照して記述されるように、暗号化処理を反転させるために「アンドゥ」機能性が提供される。
【００７７】
前述の明細書において、発明の実施例は、実装によって異なる多くの多数の具体的な細目を参照して記載されたものである。明細書および図面は、適宜に、限定的な意味よりもむしろ例としてみなされる。
【図面の簡単な説明】
【００７８】
【図１】図１は、いくつかの実施例に従い、透過的な暗号化のためのシステムアーキテクチャを示す高レベルのブロック図である。
【図２】図２は、いくつかの実施例に従い、リレーショナルデータベースにアクセスするアプリケーションプログラムに、アプリケーションプログラムに対して透過的である、いわば暗号化オペレーションを実行するための暗号化サーバと情報のやり取りをすること許容するように、リレーショナルデータベース内のクリアテキストフォーマットに保存される機密データを、暗号化フォーマットの形式に変換するために実行されるいくつかのステップを示すフローチャートである。
【図３】図３は、いくつかの実施例に従い、暗号化データにアクセスするためのアプリケーションプログラムによって送られるステートメントを検索するために、アプリケーションプログラムがデータベース内で暗号化されたデータに修正なしでアクセスすることを許容するために実行されるいくつかのステップを示すフローチャートである。
【図４】図４は、いくつかの実施例に従い、要求された機密データを含むインスタント生成されて取り込まれたビューにおいて、ユーザによって出された挿入クエリーステートメントを実行するためのいくつかのステップを示すフローチャートである。
【図５】図５は、いくつかの実施例に従い、要求された機密データを含むインスタント生成されて取り込まれたビューにおいて、ユーザによって出されたアップデートクエリーステートメントを実行するためのいくつかのステップを示すフローチャートである。
【図６】図６は、いくつかの実施例に従い、データベースから分けられた暗号化メカニズムを使用するデータベース内のデータの暗号化のためのシステムアーキテクチャを示す高レベルブロック図である。
【図７】図７は、ターゲットリレーショナルデータベース内のクリアテキストフォーマット内に保存される機密データを、ターゲットリレーショナルデータベースのリソースにおいて最小限の影響を有する暗号化フォーマットの形式に変換するために実行されるいくつかのステップを示すフローチャートである。
【図８】図８は、いくつかの実施例に従い、データベースから分けられた暗号化メカニズムを使用するデータベース内のデータの暗号化のためのシステムアーキテクチャを示す高レベルブロック図である。
【図９】図９は、ターゲットリレーショナルデータベース内のクリアテキストフォーマット内に保存される機密データを、ターゲットリレーショナルデータベースのリソースにおいて最小限の影響を有する暗号化フォーマットの形式に変換するために実行されるいくつかのステップを示すフローチャートである。
【図１０】図１０は、ＤＢＭＳタイプのＳＱＬサーバのためのデータ移動スクリプトの限定されない高レベルの例である。
【図１１】図１１は、ＤＢＭＳタイプのＤＢ２サーバのためのデータ移動スクリプトの限定されない高レベルの例である。
【図１】
2009510616.tif 000008
【図２】
2009510616.tif 000009
【図３】
2009510616.tif 000010
【図４】
2009510616.tif 000011
【図５】
2009510616.tif 000012
【図６】
2009510616.tif 000013
【図７】
2009510616.tif 000014
【図８】
2009510616.tif 000015
【図９】
2009510616.tif 000016
【図１０】
2009510616.tif 000017
【図１１】
2009510616.tif 000018
【国際調査報告】
2009510616.tif 000019