password_hash()
は、PHPでパスワードハッシュを生成するために推奨される関数です。標準の使用法はpassword_hash($password, PASSWORD_DEFAULT);
であり、PASSWORD_DEFAULTを使用したデフォルトのハッシュはbcryptです。利点はPHPの組み込みpassword_verify()
およびpassword_needs_rehash()
関数。
無塩ハッシュのSHA3-512であるhash("sha3-512", $password);
は、password_hashオプションよりも優れているか、劣っているのか、それとも優れているのかと思いました。
無塩SHA3は、パスワードハッシュにとってひどい選択です。代わりにbcryptを使用してください。
まず、ブルートフォースが遅くなるようにパスワードハッシュ関数を遅くしたいとします。 Bcryptは低速になるように設計されています。 SHA3は高速になるように設計されています。
第二に、あなたはいつも塩を使いたいです。ソルトは、攻撃者に一度にすべてではなく一度に1つのパスワードを攻撃させる。あなたはあれが欲しい。
パスワードの場合、bcryptはSHA-3よりもはるかに優れたオプションです。 SHA-3とbcryptは目的が異なります。 BCryptはキー導出関数であり、SHA-3は通常のハッシュです。 KDFは、標準の機能よりも意図的に計算集約的です。ハッシュ関数が遅いほど、解読に時間がかかります。これは、ハッシュが盗まれた場合のオフライン攻撃からの保護に役立ちます。
以下の記事は、防御しようとしている脅威に関する概要を示しています。
https://arstechnica.com/information-technology/2012/08/passwords-under-assault/