質問: openssl_decrypt($encrypted_string_for_db_save ,'aes-256-ecb',CRYPT_KEY); ``` ### 補足情報(言語/FW/ツール等のバージョンなど) 結局DBに情報が保存されてしまうので実現できてないのですが、各ユーザのハッシュ化されたログインパスワードを復号化キーにすべきかとも考えました。 PHP5.6.10
回答: 暗号化すると情報を隠せると考えられているかもしれませんが、鍵を秘密にしないと暗号化は意味がありません。 > > 利用ユーザしか復号化できない > > > 特定の個人のみ復号化できればよいのであれば、鍵を個人に持たせ、 > > 各ユーザのハッシュ化されたログインパスワードを復号化キーにすべきかとも考えました。 > > > というような方法で秘密にすることは可能です。似た方法はたくさんありますが、個人が鍵を管理するという意味では同じです。一般的には、個人の情報を安全に保管していてもアプリケーションとして動作するときにはそれを外部に持ち出す必要があり、あまりうまくいきません。 > > これだと、最悪の場合システム管理者(復号化キーを知る者)が悪意を持ってしまったら、DB > > からデータを抜き取って複合化出来てしまうと思いました。 > > > この問題に対しては、複数人の鍵が揃わないと復号化できないという仕組みを備えたものもあります。たとえば、5人に鍵を配布し、そのうち3人の鍵が揃わないとサーバを起動できないというように構成することが可能です。ただし、サーバを起動する毎に5人中3人を集めて鍵を入力してもらう必要があります。 参考:Introduction to Vault この Vault は鍵の保管庫であり、各サービスはここから鍵を読み出して動作します。このような仕組みを導入するというのも一つの手です。あらゆる管理者パスワード、暗号化鍵を Vault に入れて、サービスの起動時に動的にメモリに呼び出す仕組みであれば、ディスクには鍵が残りません。