暗号化で MySQL ビルドを使用することが問題の最善の解決策になるかどうかはわかりません。
PHP のM_CRYPTパッケージは非常に優れていると考えられており、ニーズに最適なアルゴリズムを柔軟に選択できます。
キーを他のサーバーに保存することには、1 つの大きな利点があります。それは、キーが暗号化されたデータと同じマシン上にないことです*)。そのため、攻撃者が侵害されたマシンを十分に制御できない限り、キーに到達することはできません。
攻撃者がデータが保存されているマシンを完全に制御できるようになると、Web サービスにキーを問い合わせることができる可能性が高くなります。
ただし、あるマシンから別のマシンにキーを送信すると、保護する必要があるまったく新しい領域が開かれます。おそらく、より多くのキーと暗号化レイヤーが含まれているため、間違いが発生する可能性が高くなります。
*)もう 1 つのオプションは、Web サーバーの起動時にパスワードを入力し、それをメモリにのみ保持することです。
考えられる解決策
Web アクセスを持つユーザーのファイルを暗号化するために次の方法を使用するソリューションが採用されている場合 (お使いの環境はわかりませんが、役立つかもしれません):
- ユーザーの作成時に、長いランダム キーが新しいユーザーに割り当てられます。
- このランダム キーは、ユーザー レコードの暗号化された列に格納されます。
(この列のみが暗号化され、残りのレコードのパフォーマンスに影響を与えません! )
- ランダム キー列の暗号化は、ファイルまたはメモリに保存された 1 つのマスター パスワードで行われます。
(より良いオプションは、Web サーバーを開始するときにパスワードを入力し、それをメモリにのみ保存することです。 )
(別のアプローチは、ユーザーにパスワードを入力させ、それを使用してランダム キー列を暗号化/復号化することですが、私はそれがセキュリティを向上させるか低下させるかはわかりません)
- 暗号化が必要なすべてのドキュメントは、そのユーザーのランダム キーで暗号化され、ディスクに保存されます。
- ドキュメントは、最小限の権限でファイル システムに保存されます。
このアプローチの利点は次のとおり
です。 1. ランダム キーはデータベースで暗号化されます。そのため、暗号化された列と組み合わせて、データベース サーバーのセキュリティを強化できます。2. ドキュメントはさまざまなキーで保存されます。攻撃者がキーを入手した場合、ドキュメントの一部のみが危険にさらされます。
ただし
、攻撃者がマスターパスワードを入手し、ユーザーテーブルへの読み取りアクセス権を取得した場合、システム全体が再び壊れます。