web-dev-qa-db-ja.com

データベースのセキュリティ-暗号化と検索

私は暗号化にまったく慣れていませんが、概念とアプリケーションに慣れるようにしています。暗号化が有益だと思うプロジェクトがあります。

プロジェクト情報:

DB = MySQL 5.6

エンジン= InnoDB

私のアプリケーションは、非常に小さなホワイトリストを持つネットワークファイアウォールの背後にあるイントラネットWebサーバーに常駐します。このアプリケーションのほとんどのユーザーは、データベースに値を追加したり、データベースから値を削除したりすることができます。より多くのユーザーがこれらの値を読み取ることができます。暗号化したい値は次のとおりです

  • メール
  • 口座番号
  • パス
  • 日付
  • 一意のID

最大のテーブルには最大15万のエントリがあり、合計セッション数は100未満のままになる可能性があります。

イントラネットサイトであるため、セキュリティに関する知識が限られているため、私の主要な脅威は悪意のあるユーザー、ハードウェアの盗難、内部または外部のソースからの永続的なXSSであると思います。私はこれらすべてを軽減するために最善を尽くしています。

データを暗号化して検索可能にする方法について調査を行うと、いくつかのオプションが残ります(間違った情報を修正してください)。

  • CipherSweet Blind Indexing:ライブラリが必要、やり過ぎかもしれない、誤検知の可能性あり
  • MySQL AES_ENCRYPT/DECRYPT:ログが侵​​害された場合、プレーンテキスト値も侵害されます
  • アプリケーション側:ランタイム「悪夢」、高負荷、実行中の複数のスレッドで問題を引き起こす可能性があります

質問

  1. 醜く貧弱な慣行ですがアプリケーション側の暗号化/復号化は私の環境に受け入れられるべきですか?
  2. CipherSweetでの誤検知の可能性は、私のデータセットでは無視できますか?
  3. 私の環境では、MySQLに暗号化/復号化の処理を許可する(ハードウェアの盗難やサーバーの侵害を無視)
  4. ボーナス-私の環境を考慮してexternal XSSについて心配する必要があります

私はこの質問を理解しています可能性がありますディスカッションのカテゴリに分類されます。その場合は、質問を絞り込むための詳細情報の入手先を教えてください。

[〜#〜]編集[〜#〜]

また、CryptDBまたはTDEを使​​用する可能性についても調査しています。

編集2

私はMySQL Community Editionを使用しているので、この機能のみを具体的に取得する方法がない限り、TDEを利用できないようです。他のオプションの調査を続けます。どんな情報でも大歓迎です。

編集私のOSでは、CryptDBをそのドキュメントにあるように使用できるとは思いません:

  • 要件:> Ubuntu 12.04、13.04;別のOSではテストされていません。
3
FamousAv8er

あなたが言及した脅威については、データベースの暗号化は本当に必要ではありません。

  1. 悪意のあるユーザーは、広すぎる定義です。どのような脅威が予想されますか?たとえば、ユーザーが自分で割り当てたよりも多くの権限をアプリケーションで取得する方法をユーザーが見つけた脅威、またはユーザーが他のユーザーとして偽装できる脅威を意味する場合、ユーザーはアプリケーションが提供するデータを取得しますつまり、暗号化されていないデータ。データ暗号化を備えたデータベースは何も変更しません。

  2. 永続的なXSS保護はデータベースの暗号化とは関係ありません。 [〜#〜] xss [〜#〜]保護が失敗した場合、アプリケーションは[〜#〜] xss [〜#〜]によってトリガーされる悪意のあるアクションを実行します=ユーザーの他のアクションと同じように。データベースが暗号化されているかどうかは関係ありません。

  3. ハードウェアの盗難はより複雑です。攻撃者がOSを起動でき、ファイルシステムが保護されていない場合、攻撃者は悪意のあるコードを挿入したり、アプリケーションコードをクラックしたり、アプリケーションを起動したり、アプリケーション経由で暗号化データにアクセスしたり、直接データにアクセスしたりすることができます。データベースAPI。代わりに暗号化されたファイルシステムを使用し、パスワードで起動(および復号化)を保護することをお勧めします。また、バックアップ(データベース、構成、場合によってはログ)を作成するときに、それらも暗号化します。次に、暗号化されたDBを使用してもセキュリティはそれほど向上しませんが、オーバーヘッドが大きくなります。これが、通常のデータベースを使用できる理由です。

2
mentallurg