データを保護する方法は、保護したい攻撃の種類によって異なります。もちろん、不正なシステム管理者など、特に保護しようとしている特定の脅威モデルがない限り、攻撃者がどのようにしてシステムを侵害する可能性が最も高いかはおそらくわかりません。
攻撃者は、Web サーバーが実行されている OS にアクセスできる可能性があります。この場合、ファイルシステム レベルの暗号化はおそらく役に立ちません。実際、ファイル システム レベルの暗号化はおそらく、誰かが物理サーバーを持ち去ってしまうことに対する有効な保護にすぎません (これは完全に有効な脅威モデルです)。ただし、ファイルがデータベースに格納されたキーで暗号化されている場合、Web サーバー OS にはアクセスできるがデータベースにはアクセスできない攻撃者は阻止されます。
対照的に、攻撃者はアプリケーションの穴を介して、OS ではなくデータベースへのアクセスを取得する可能性があります。最新のオペレーティング システムは、十分に研究された巨大な攻撃面を提示するため、この可能性は低いと予想されます。
サーバーへのフル アクセスを持つ攻撃者からユーザーのデータを保護することは非常に困難です。サーバーにないキーでデータを暗号化する必要があります。これは、ユーザー Cookie に保存されているパスワードまたはキーのようなものである可能性があります。これらすべてのスキームの問題点は、ユーザーがこのような重要なデータを保持することを信頼できないことです。ユーザーはパスワードを忘れた場合にパスワードをリセットする方法を常に望んでいます。ほとんどの場合、OS とデータベースに完全にアクセスできる攻撃者からデータを保護することは現実的ではありません。
だから私はあなたが守ろうとしているものを選びます。個人的には、OS が侵入する可能性が最も高いと予想しているため、何らかの方法で特別に保護されたデータベースの一部に格納されているキーを使用してファイルを暗号化します。ここでの課題はsettings.py
、Web アプリが機能するために、OS がデータベースのログイン資格情報を ( に) 保存する必要があることです。そのため、OS 内でこれらのファイルをできるだけ制限するようにしてください。つまりchmod 600
、他のことをできるだけ行わないユーザー アカウントで行います。