私は現在サービスを引き継いでいますが、DBを調べていると、DBの関数で暗号化キーがハードコードされているDBの関数を使用してデータの一部を暗号化していることに気付きました。
私の知る限り、これは良い習慣ではなく、DBデータの暗号化の目的は、DBが不正な関係者に漏洩した場合にデータを保護することであるため、暗号化はかなり冗長になります。しかし、この場合、DBが危険にさらされると、暗号化キーも危険になり、暗号化は無意味になります。
ここで修正しますか、それとも何か不足していますか?
また、それが間違った方法である場合、サーバーアプリレベルで発生するように暗号化/復号化プロセスを変更する必要がありますか?
経験則では、暗号化されたデータと暗号化キーを可能な限り「離して」おく必要があります。つまり、データが漏洩した場合に、キーも漏洩する可能性を最小限に抑えます。
この素晴らしい答え は、暗号化キーを格納する場所について、1(最高)から7(最低)までのランキングがあります。そして、ご想像のとおり、7番目は「データベース内」にあります。
7。キーをデータベースに保存します。これで試行錯誤することはありません。それでも、憂鬱なほど人気のあるオプション。
したがって、そこにリストされている他の代替案を検討することをお勧めします。つまり、次の条件に当てはまる場合は、関数にハードコーディングして格納する方が、テーブルに格納するよりも優れています。
暗号化キーがDBソースコードではなくアプリのソースコードにハードコードされている場合、暗号化をアプリレイヤーに移動しても、必ずしもそれがはるかに良くなるわけではありません。