0

OracleとJavaの両方のソリューションがこの問題に受け入れられるため、この問題にOracleとJavaの両方のタグを付けました。

私はOracleのセキュリティに不慣れであり、解決すべき以下の問題が提示されています。私はインターネットでいくつかの調査をしましたが、今のところ運がありません。Oracle TDE最初は、自分の問題に役立つかもしれないと思いましたが、ここでは、 Oracle TDEはDBAからデータを保護できますか?TDEデータを保護していないようで、DBAこれは許容されない問題です。

ここに問題があります:

何百万ものレコードを含むテーブルがあります。テーブルの主キー列であるテーブルの列に対して、等式または範囲の基準を使用してこのテーブルをクエリするJavaアプリケーションがあります。主キー列には機密データが含まれているため、すでに暗号化されています。その結果、アプリケーションから通常の(つまり復号化された)値を使用してデータをクエリすると、主キーの一意のインデックスアクセスパスを使用できなくなります。アプリケーションコードを変更せずにクエリのパフォーマンスを向上させる必要があります(アプリケーション構成は必要に応じて変更できますが、コードは変更できません)。その列が暗号化されている限り、データベース側で必要な変更を行ってもかまいません。

オラクルの人々はお願いします:この問題に対してどのような解決策を提案しますか?復号化された列の値にインデックスを作成し、どういうわけかOracleにこのインデックスを使用させるにはどうすればよいですか?ハッシュパーティションなどのパーティションをどのように使用できますか?ビューはどうですか?任意、任意の解決策?

Javaの人々にお願いします:私自身、この非常に漠然とした考えを持っています。それは、アプリケーションからクエリを受け取り、復号化された値を暗号化された値に置き換えるプロキシとして機能する、その間に(つまり、データベースとアプリケーションの間で)別のアプリケーションを作成することです。データベースに送信し、応答を受信して​​、結果をアプリケーションに返します。プロキシはデータベースのように動作する必要があります。これにより、アプリケーションは、構成ファイルの接続文字列のみを変更することでプロキシに接続できるようになります。これは機能しますか?どのように?

よろしくお願いします!

4

2 に答える 2

0

復号化された列の値にインデックスを作成し、どういうわけかOracleにこのインデックスを使用させるにはどうすればよいですか?復号化された値にインデックスを付ける関数ベースのインデックスを作成できるかもしれません。

create index ix1 on tablename (decryptfunction(pk1));
于 2012-11-19T12:51:22.203 に答える
0

これは、テーブルの主キー列であるテーブルの列に対して、等式または範囲の基準を使用してこのテーブルをクエリします

特定の値を見つけるのは簡単です。データを好きなように暗号化して保存できますが、ハッシュとしても、インデックスを使用して特定の値を取得できます。しかし、他の場所での私のコメントによると、次のいずれかがないと範囲クエリを実行できません。

  • テーブル内のすべての行を復号化する

また

  • 数秒で解読できるアルゴリズムを使用します。

固有の順序付けのアルゴリズムの代わりにリンクリスト(または関連テーブル)を使用して順序を定義すると、はるかに大きな値のセットに対してブルートフォースチェックが強制されますが、適切に暗号化された値ほど安全ではありません。

Oracle、Java、鉛筆と紙のどれを使用するかは関係ありません。量子コンピューティングを使用して可能かもしれませんが、アプリケーションのセキュリティを確保する余裕がない場合、または専門の暗号研究者からの適切なアドバイスにお金を払う余裕がない場合は、確かにそれを行う余裕はありません。

于 2012-11-19T21:42:01.447 に答える