質問: 昨今のセキュリティの脅威を受けて、多くのサービスが顧客情報を暗号化、ハッシュ化していると思います。 パスワードは勿論、住所、氏名、年齢等も暗号化してDBに保存してあることもあると思います。 暗号化、ハッシュ化にはBASE64や、Bcrypt、SHA256など様々な方法があると思いますが、疑問があります。 例えばBASE64で暗号化された文字列等は簡単に復号することもできると思います。 しかし復号できるとなると正直、暗号化している意味があまりない気がすると思うのですが、何のためにBase64で暗号化する必要性があるのでしょうか。 勿論Base64でデータベースに保存されている内容を復号化して表示するといったことをアプリケーション側でしやすい等の利点はあると思うのですが。。。 流出した場合、全くセーフティーではない気がします。 また原則、復号不可能なSHA256等のハッシュ化を顧客情報に対して行いデータベースに保存していたとします。 万が一、顧客情報が流出した際もセーフティーであるとは思うのですが、そうすると実質、顧客情報を管理者側が見れないに等しい状態になったり、管理が猥雑になる気がします。 質問をまとめると、パスワードのような重大な顧客情報に対してはハッシュ化を用いるとしても、名前や住所のような(重大ではありますが)情報はどのようにしてDBに保存するのが一般的であるのかということです。 宜しくお願い致します。
回答: 暗号化は色々なレイヤーで可能です。 また、ロールによってコントロールが必須な場合、該当するロールにのみ開示できるような仕組みが必要なので、セキュリティ設計が重要になります。 似た観点での質問を以前したことがありますが、興味深い回答をいただきました。 ご参考まで。 暗号化すべき情報とは?