web-dev-qa-db-ja.com

暗号化されたデータベースはすべての攻撃に対して安全ですか?

Dbms_cryptoのようなOracleのデータベース暗号化パッケージを使用する場合、これは攻撃に対して脆弱ですか? 3DES、AESなどのアルゴリズムを使用していることは知っています。これらはすべて、このパッケージの使用中に使用できる脆弱性であり、3DESおよびAESに対する攻撃がありますが、比較的安全です。システムが危険にさらされており、システムにキーが保存されていること、および悪意のあるデータベース管理者以外に、パッケージを使用して暗号化されているDBに対して脆弱な攻撃は他にありますか?

3
Brooney

暗号化されたデータベースは、ファイルシステムまたはストレージへの攻撃からデータベースを保護します。誰かがサーバーでシェルを取得したり、SANストレージへの資格情報を取得したりすると、データベースのコピーを作成してそのデータで実行することはできません。

一方、アプリケーションはデータベースにアクセスする必要があるため、アプリケーションには資格情報と暗号化キーが必要です。アプリケーションがデータにアクセスできる場合、攻撃者もデータにアクセスできます。

アプリケーションがSQLインジェクションに対して脆弱である場合、データベース自体が暗号化されていても、攻撃者はデータベースからデータを抽出できます。

3
ThoriumBR

さまざまな攻撃が可能です。たとえば、インデックスを介した特権昇格に関連するさまざまな攻撃があります。 TNSリスナーを介した攻撃。 Webインターフェイス経由の攻撃isqlplus。 DoS攻撃(複雑なクエリの実行、共有テーブルスペースへの書き込み)。等。

データを暗号化するときは、暗号化するだけです。誰かがデータベースファイルにアクセスしたときにこの1つの場合のみを保護します。他のすべての可能な攻撃は暗号化に依存しません。 正しくないデータベースがそれ以外の場合は安全であると期待するのはそのためです。

2
mentallurg

いいえ、特にマルチユーザーの場合、攻撃に対して安全ではありません。

たとえば、MITのCryptDBはさまざまな方法で攻撃可能であることが示されています

推論攻撃と頻度攻撃は、等価クエリに対して ECB操作モード を使用する場合、暗号化されたDBに引き続き適用されます。

本当の問題は暗号化キーの保護です。データベースを暗号化し、暗号化されたデータに対してクエリを実行すると、すべてのアプリケーションサーバーにキーが必要になります。したがって、1つのキー(Oracleの未加工の暗号化)の保護を、クエリを実行するためにキーを必要とする20〜25のアプリケーションサーバーがあるような複数の場所のキーの保護に分散します。

1つの解決策は、HSMモジュールを使用してキーを格納し、暗号化Oracleとしてそれらを使用して暗号化を実行することです。機能が制限されている場合があり、気付かれない障害が発生する可能性があります。

結論:暗号化は不可欠ですが、新しい高度な攻撃を検討する必要があります。

  • NSA:「攻撃は常に良くなり、悪化することはありません。
1
kelalaka