###前提・実現したいこと
PHP(CakePHP2.x)でログインを必要とするWebアプリケーションを作成しています。
MySqlにデータを保存する際、暗号化して保存→取り出す時は文字列を複合化して表示させるようにしたのですが、
これだと、最悪の場合システム管理者(復号化キーを知る者)が悪意を持ってしまったら、DB
からデータを抜き取って複合化出来てしまうと思いました。
DBを抜き取られてもアプリケーションの管理側すら復号化できない様にすることなどは可能なのでしょうか。
恥ずかしながら方法論がなかなか見つけ出せません。
ご存知の方いらっしゃいますでしょうか。
###試したこと
・crypt系の関数を使い、復号化キーを持たせて、DBに保存してある暗号化文字列を復号化
・復号化キーはアプリケーション全体で一つを定数化している
PHP
1// 復号化のために必要なキー 2define('CRYPT_KEY' ,'hogehoge'); 3 4$text = '保存したい情報'; 5 6// 暗号化(DBへの保存時) 7$encrypted_string_for_db_save = openssl_encrypt($text,'aes-256-ecb',CRYPT_KEY); 8 9// 復号化(DBからデータを取り出したとき) 10$decrypted_string = openssl_decrypt($encrypted_string_for_db_save ,'aes-256-ecb',CRYPT_KEY); 11
###補足情報(言語/FW/ツール等のバージョンなど)
結局DBに情報が保存されてしまうので実現できてないのですが、各ユーザのハッシュ化されたログインパスワードを復号化キーにすべきかとも考えました。
PHP5.6.10
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/28 05:42