簡単に言えば、データベースにいくつかの情報を暗号化されたデータとして保存するWebアプリケーションを考えてみましょう。私は意図的にこれをいくつかの一般的なものにしようとしていますが、いくつかの仮定があります:
質問:
これはかなり基本的なセキュリティの質問であることを知っているので、おそらく私が見逃しているリソースがあれば、それも非常に役立ちます。 Webアプリのセキュリティに関する情報(OWASP、PCI DSSなど)に基づいてこの情報を把握するために(何年にもわたって)多くの時間を費やしてきましたが、この情報は非常に一般的です(例:「データを保護する」 "、"データを暗号化する ")または非常に具体的(" AESで何かを暗号化するには、これを行う... ")。
*これは完全なセキュリティソリューションではないことを理解しています。この情報を取得してデコードする方法がいくつかあることを理解しています。私はこれがその観点から悪い質問かもしれないことを認めます:)
この質問への仮定に関する詳細情報を追加するために編集されました
暗号化に使用する鍵はどこに/どのように保存しますか?
SQLやOracleデータベースなどの組み込みの暗号化を使用している場合の標準的なアプローチでは、データベースが暗号化キーを生成し、これを別のキー保護キーまたはマスターキーで暗号化します。これは、パスフレーズか、たとえば、 .pemファイル。
これは通常、root/Administratorとデータベースサービスアカウントのみがアクセスできる制限されたディレクトリに保存されます。データベースの起動時に、キーが読み取られてメモリにロードされます。次に、これを使用して暗号化キーを復号化します。
まず、Webサーバーとデータベースサーバーが同じシステムで、キーをどのように管理しますか?
キーはサーバー上のディレクトリに保存されます。更新または取り消しは通常、データベースプログラムを介して行われます。
2番目に、WebサーバーとDBサーバーが分離しているシステムでは、キーをどのように管理しますか?
キーはデータベースサーバー上にローカルに保存されます。より安全なオプションは、どちらのシナリオでもハードウェアセキュリティモジュール(HSM)を使用することです。これは、サーバーに接続され、サーバー上の制限されたフォルダーではなくキーを格納するために使用されるハードウェアデバイスです。
キーはアクセス許可が制限されたファイルですか?別のツール/ソフトウェアに保存されていますか?暗号化キーも暗号化されることがありますが、どこで役立つかは明確ではありません。
管理者アクセスを管理し、不正なログイン、サービスアカウントとしてのログイン、フォルダへのアクセス権が追加された新しいアカウントまたはグループなどを監視している限り、フォルダの制限は許容されます。上記のように、HSMは、保護しているデータと直面している脅威がそれを必要とする場合、より安全なオプションです。
通常、データベースはインスタンスキーまたはテーブルキーを作成し、これをマスターキーで暗号化します。マスターキーをさらに暗号化しても、メリットは最小限です。
以前の回答ではいくつかの優れた情報が提供されていましたが、重大な設計上の欠陥があり、実際には気づかれていませんが、質問の暗黙の仮定の一部に起因しています。
次のような違いはありません。
設計は以下から開始する必要があります。
または、実際にはさらに正しい:
これは次のようになります。
これらの質問に基づいてのみ、適切に設計された暗号システムを設計できます。 (そして、@ D.W。が言及した暗号の妖精のほこりを防ぎます)。
したがって、いくつかのシナリオ例:
簡単にするために、暗号化はサーバー側で行う必要があり、責任はサーバーにあり、エンドユーザー(および管理者)は暗号化に影響を与えないと仮定しましょう。
では、主な問題は、アプリケーションサーバーとデータベースサーバーのどちらで暗号化が行われるのでしょうか。 (実際にはそれほど単純ではなく、他のオプションがあります...)
これは、ほとんどのセキュリティ問題と同様に、トレードオフに戻ります。
等々。 (上記の質問の一部は無関係であり、サーバーの暗号化では解決できないことに注意してください)。
ここで、上記に基づいて、アプリサーバーの暗号化とデータベースの暗号化の間で決定を下したと仮定します。
ウェブサーバーとデータベースが同じサーバー上にあるかどうかに関係なく、ここではほとんど効果がないことに注意してください。アプリが暗号化されている場合、「特別な」データをデータベースに送信するだけで、それ以外の場合は問題ありません。ただし、これは上記の脅威の議論に影響を及ぼします-一部の問題は設計によって廃止され、一部は強化されています...