Mayo に同意しますが、DB 内の暗号化により、システム全体のメンテナンスが簡素化される可能性があります。
アプリケーション レベルへの暗号化では、キー、キーの認証および承認フェーズ、およびデータの視覚化を管理する必要があります (Mayo の記述による)。
アプリケーション暗号化を選択した場合、開発段階だけでなく保守段階でもアルゴリズムの正確性について心配する必要があります。非回帰の単体テストを実装する必要があります。別のより優れたアルゴリズムが必要な場合があるため、暗号化アルゴリズムの変更を管理する必要があります。
また、暗号化されたデータが常に復号化されることを確認する必要があります。ソフトウェアにはバグなどがあるので、それは明らかなことではありません。失われたデータはクリアデータよりも悪いです;-)
もちろん、よく知られている暗号化ライブラリを使用することもできますが、残りのすべての作業は膨大な作業になります。
DB への暗号化は DB 内でのみ保護しますが、DB との何らかの SSL 通信の使用を検討できます。私は(確信はありませんが)TDE はこの種の安全な通信を実装していると思います。
アプリケーションは、信頼されていないエンティティであるユーザーから使用されます。アプリケーション内のデータが失われることを考慮する必要があります。なんで?アプリケーション レベルまたは DB レベルでデータの暗号化を実装しているシステムからデータを盗みたい場合は、カメラを使用してデータを取得するだけで十分です。とても簡単です!
システムのセキュリティだけでなく、機能も考慮する必要があります。多くはセキュリティであり、機能性はそれほど重要ではありません。私の考察がお役に立てば幸いです。