1

名前や住所などの機密性の高いユーザーデータを mysql データベースに保存したいと考えています。

私の主な質問は、暗号化されたデータを含むデータベースを検索する方法です。

誰かがコンピューターを盗んだ場合、データがプレーンテキストで保存されている場合は良くないので、phpファイルに保存されているキーで暗号化したい. PHPファイルはioncubeでエンコードされているため、PHPコード内のキーは(かなり)安全です。

一方で、ユーザー名とアドレスについて、Web フロントエンドからアプリケーションにクエリを実行できるようにしたいと考えています。

私の最初のアイデアは、データを保存する前にデータを暗号化することでした。検索ページでは、ユーザーデータベース全体を読み取って完全に復号化する必要があるため、php で結果を検索できます。

しかし、大規模なユーザーデータベースの場合、これは非常にメモリを消費します。


追加情報:

すでにパスワードを暗号化しているため、その解決策は必要ありません。

サーバー構成 (ディスク暗号化など) を変更できないため、php と mysql での解決策が必要です。サーバーは古い ubuntu 9 インストールであり、非常に安全ではありませんが、ここでは説明しない理由で変更できません。

4

2 に答える 2

2

You can encrypt each sensitive field of the database row but you need to keep the key secure. If you're worried about the whole server being stolen then you cannot store the decryption key on the filesystem as that would be stolen along with the machine.

You could use a per-user encryption with a key generated from the user's password. As you (I assume) are storing only the hash of the key (use Bcrypt) it will be difficult for an attacker to retrieve the user's password. However, this means only the user can view his data; admin accounts will not be able to decrypt other user's sensitive data. This may well be a deal-breaker for you.

If data needs to be accessible to others beside the user then you must use the same encryption key globally across your app. Without having this key in a config file your only option would be to attempt to store the key in memory (so that you would have to initialise the system before it was usable). This would not be enough to guarantee the key was not written to disk (think swap files, etc) but would go closer to protecting the data after a cold boot.

于 2012-09-24T11:53:25.750 に答える
0

シンプルで、サーバーを鍵と鍵(または生体認証)の背後に保管します。

そして、パスワードをハッシュします。

オプション2は、暗号化されたファイルシステムを使用します。

于 2012-09-24T11:14:51.103 に答える