私がよく知っているいくつかのデータベースには、暗号化のための関数またはモジュールが用意されています。例には、Oracleデータベースの場合は dbms_crypto が含まれ、MySQLの場合は組み込みの functions が含まれます。
一般的に使用されているプログラミング言語のほとんどには、暗号化ライブラリが用意されています。
セキュリティの観点から、どちらか一方を選択することにつながる問題はありますか?ある方法が他の方法よりも非常に望ましいですか?
暗号化を行う場合は、暗号化するデータと暗号化に使用するキーを、ジョブを実行するマシンに転送する必要があります。フロントエンドで暗号化を行う場合、データベースを「信頼する」必要はありませんが、複数のフロントエンドがある場合、これにより状況がさらに複雑になる可能性があります。データベースで暗号化を行うと、悪意のあるデータベースのハイジャックによって裸のままになります。例えば成功したSQLインジェクション攻撃はさらに壊滅的です。
一般的に言って、フロントエンドで暗号化を行うか、データベースで暗号化を行うかを区別する場合は、一方が侵害され、もう一方が侵害されるシナリオを想像する必要があります。逆に、両方のマシンが「同等に堅牢」であると考える場合、問題はパフォーマンスのみに関するものです。
提供されるアルゴリズムはほとんど同じです。どちらを選択するかは、ユースケースによって異なります。考慮すべき事項: