Techioz Blog

データベース データをユーザー パスワードで暗号化した状態に保つための最良の方法は何ですか?

概要

アプリケーションにユーザーに属する特定のデータがあり、所有者以外はそのデータを見ることができないと仮定します。 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

オンザフライで暗号化/復号化するとパフォーマンスの問題が発生すると思いますが、問題ありません。少なくともそれがうまくいくなら、私は大丈夫です。

これを行う方法はありますか?

解決策

私はそれを疑う。管理者がパスワードをリセットしたらどうなるでしょうか?ユーザーが自分のパスワードを覚えていて、そのパスワードを使用してデータを復号化することに依存するデータは保存しません。すべてのデータが失われますか?ユーザーがパスワードを変更したらどうしますか?もう一度言いますが、私はそれを疑います。すべてを復号化/暗号化しますか?

シークレットの保存に関する他のリンクを参照してください。ただし、ユーザーからの値を暗号化の一部として使用しないでください。