ログインに電話番号を使用したいので、データベースには電話番号をハッシュ化して保存しようと思っています。
通常、パスワードをデータベースにハッシュ化して保存する場合、PHPのpassword_hash()
関数で、個別にランダムなソルトを追加し、bcryptをコスト10以上で使用すれば、問題ないという認識でいます。
しかし、電話番号の場合、基本的には11桁の数値の固定長なので、bcryptでは十分ではなく、hash_hmac()
関数でHMAC-SHA256を使用した方が良いのでしょうか?
HMACでは、秘密鍵が漏れない限り、ハッシュ化された文字列からの復号は現実的な時間(電話番号一つあたりの解析時間が10年以上)で不可能だという認識でいます。
実現したい安全性は、万が一、データベース上から電話番号のハッシュがソルトと一緒に流出した場合に、現実的な時間で、特定のユーザの電話番号を解読されないというものです。
私は暗号について詳しくないので、間違っているところがあればご指摘お願いいたします。
[追記]
HMACを使用した方が良いと思ったのは、以下の記事を読んだからです。
回答2件
あなたの回答
tips
プレビュー