データベース データをユーザー パスワードで暗号化した状態に保つための最良の方法は何ですか?
概要
アプリケーションにユーザーに属する特定のデータがあり、所有者以外はそのデータを見ることができないと仮定します。 MySQL データベースと DataMapper ORM マッパーを使用しています。アプリケーションは Ruby on Sinatra で書かれています。
アプリケーションの動作:
基本的に、モデルのプロパティの自動暗号化を探しています。このようなもの:
class Transaction
include DataMapper::Resource
property :id, Serial
property :value, String, :length => 1024, :encrypted => true
... etc ...
belongs_to :user
end
オンザフライで暗号化/復号化するとパフォーマンスの問題が発生すると思いますが、問題ありません。少なくともそれがうまくいくなら、私は大丈夫です。
これを行う方法はありますか?
解決策
私はそれを疑う。管理者がパスワードをリセットしたらどうなるでしょうか?ユーザーが自分のパスワードを覚えていて、そのパスワードを使用してデータを復号化することに依存するデータは保存しません。すべてのデータが失われますか?ユーザーがパスワードを変更したらどうしますか?もう一度言いますが、私はそれを疑います。すべてを復号化/暗号化しますか?
シークレットの保存に関する他のリンクを参照してください。ただし、ユーザーからの値を暗号化の一部として使用しないでください。