サーバーとデータベースが侵害された場合でも、攻撃者が元のデータを読み取ることができないように、機密性の高いユーザー データをデータベースに保存する方法はありますか? 明らかにデータを暗号化できますが、復号化のためにサーバーがキーにアクセスできる必要があり、サーバーとともに危険にさらされます。
編集: Linode などの vps ホスティングを使用します。攻撃者がサーバー (データベースとソース コードもある) への root アクセスを 1 時間取得できると仮定します。
サーバーとデータベースが侵害された場合でも、攻撃者が元のデータを読み取ることができないように、機密性の高いユーザー データをデータベースに保存する方法はありますか? 明らかにデータを暗号化できますが、復号化のためにサーバーがキーにアクセスできる必要があり、サーバーとともに危険にさらされます。
編集: Linode などの vps ホスティングを使用します。攻撃者がサーバー (データベースとソース コードもある) への root アクセスを 1 時間取得できると仮定します。
管理者ユーザーからキーを取得する
サーバーのメモリにキーのみを保存します。メモリのみのコピーは、必要に応じてデータを復号化するために使用されます。サーバーが起動すると、管理者からキー情報を取得する必要があります。もちろん、これにはバリエーションがあります。管理者は、その瞬間だけ USB ドライブを差し込むことができます。管理者は、キーがデータベースなどにある別のマシンへの一時的なアクセスを提供するパスワードを提供できます。管理者は、コンソールのプロンプトに応答して、サーバー上にあるキーストア ファイルのパスワードを入力できます。管理者がログインして「キーを入力」オプションを選択するまで、Web サイトは機能しません。
これにより、攻撃者はデータを復号化する前にメモリ内のキーを見つける必要があります。
2 台目のマシンのキー
管理者に頼るよりも安全性は低くなりますが、それでも多少安全な 2 番目の方法が使用されます。ネットワーク上のどこかにある 2 台目のマシンにキーを配置します。サーバーと同じユーザー アカウントがないことを確認します。サーバーが起動すると、何らかの方法で他のマシンに接続してキーを取得し、キーをメモリにのみ保存する必要があります。繰り返しますが、管理者に頼って他のマシンのアカウントにパスワードを提供するか、Linux では保存されたキーで SCP を使用することができます。攻撃者がネットワークを通過する際に鍵を見ることができないように、通信を安全にすることが重要です。
この場合、攻撃者は 2 台のマシンを侵害して、1 台からデータを取得し、別のマシンからキーを取得する必要があります。そのため、同じマシンにキーを配置するよりも安全です。
その他のポイント
これらすべてを Web 上で見つけることができます。グーグルはあなたの友達です。
ただし、悪者にとってより困難にするために、いくつかの明らかなセキュリティ上の予防措置を覚えておいてください。