LAMPを使用したログインシステムの暗号化について
LAMPを使用したログインシステムの暗号化についてご教授ください。
アマゾンのような会員制ネットショップの開発を考えております。
DB(MYSQL5)へ会員情報を保存し、会員がログインできる仕様予定です。
要件
****************************
.MYSQLへ保存する会員情報は「会員番号以外」の全フィールドをBlowfish方式,salt使用で暗号化して保存したい
(安全であれば暗号化方式にはこだわりません。)
目的:万が一会員情報データが流出した場合の被害を軽減したい
・会員テーブルのフィールド構成は5列
「会員番号、ログインパスワード、クレジットカード番号、住所、電話番号」
質問
***************************
会員(仮に鈴木さん)は前月にログインパスワード「1234」で会員登録しました。
鈴木さんがログインパスワード「1234」を忘れた場合の手順は以下の手順で新パスワードに変更します。
(処理1)
システム側が仮パスワード「tmp0000」を作成し、会員テーブル内の鈴木さんのログインパスワードを「tmp0000」で上書きします。
(処理2)
鈴木さんへ仮パスワード「tmp0000」をメールで送信
(処理3)
鈴木さんが「tmp0000」でログインして会員テーブル内の鈴木さんのログインパスワードを新パスワード[new1111]で上書きします。
この場合、会員テーブル内の鈴木さんレコードのログインパスワード以外の列(クレジットカード番号、住所、電話番号)
は「1234」で暗号化されたままです。
【質問1】
処理1と処理3のタイミングでパスワード以外のフィールドは一旦復号化して再度暗号化、保存の手順が必要と思うのですが、元の復号キーが不明でも可能でしょうか?
復号しないと鈴木さんは住所、電話番号等の再入力が必要になってしまうと思いますので・・・
【質問2】
質問1の回答が可能な場合、どのような処理が必要でしょうか?
【質問3】
質問1の回答が不可能な場合、データが流出した場合の被害を軽減する代替え案は何かありますでしょうか?
住所、電話番号等は平文で保存すれば問題ないのかもしれませんが、リスキーなので躊躇します。
アマゾンや楽天等でパスワードを変更したときも住所等の再入力は必要なかったように記憶しています。
【質問4】
予想でも結構なのですがアマゾンや楽天等は住所などのフィールドは平文で保存しているのでしょうか?
【質問4】
ログインシステム開発時のDB暗号化の実装方法・概念等、のわかる
書籍やWEBページ等ありましたら教えてください。
また、この質問全体をとおして私に諸先輩方からアドバイス等あれば宜しくお願いします。