各ユーザーの機密データ*を保存するには、アプリケーションが必要です。アプリケーションサーバーで暗号化された暗号文を格納する追加の列がデータベースに追加されます。選択するアルゴリズムは対称(AES)と単一の鍵です(この鍵は正しく格納され、アプリケーションサーバーに配布されていると想定しています)。
このデザインに対する私の最初の反応は、行ごとに異なるAESキーを使用し、各キーを非対称テキストで暗号化して暗号文の横に保存することです。
私の最初の反応は正しいですか?各データベース行を「セッション」として扱う方が安全でしょうか?
*おばあちゃんのクッキーレシピレベルではありません。会社レベルのものの終わり。理想的には、このシステムは、社内または社外の誰かによる情報開示から保護されているか、少なくとも制限されている必要があります。
リスクは、キーの数やタイプに関するものではありません。
リスクは、これらのキーをどこに保存するかです。アプリケーションがデータベースにアクセスする必要があると仮定すると、それらのキーのコピーが必要になります。これらのキーがアプリケーションサーバーのどこかに置かれていると、盗まれる可能性があります。
鍵の保存場所を教えてくれるまで、あなたの考えは単により複雑なものを作成することです。あいまいさによるセキュリティです。
リスクは、複数のサーバーに1つのキーがあることです(私が理解しているところから)。それが暗号化されておらず、それを持っているべきではない誰かがそれを持っているなら、あなたは問題を抱えています。とはいえ、ランダム化されたIVと併用した場合、AESは非常に安全です。