一般的なベストプラクティス(Linux passwdなどを参照)は、パスワードハッシュを次のように保存することです。
$<algorithm>$<salt>$<hash>
たとえば、次の文字列:
$6$Lxgyf7h6DtkrqwT$0w/BoB6neYjEtdQdUEs3ftnnNguBNTug8.g/9UeMmZ9bN/cDJCE0dj8.4D/8HPN5bMqFPJ4ECnGl5M2iqBmmv/
ソルトされたSHA-512(アルゴリズムID 6
)パスワードハッシュLxgyf7h6DtkrqwT
であり、ほとんどのサーバーですぐに理解できるはずです。
これの利点は、実際に同時に異なるアルゴリズムをサポートできることです。そのため、一部のユーザーはまだSHA-256パスワードを持っている可能性がありますが、パスワードを変更するユーザーは、より安全なアルゴリズムに切り替えます。
モジュラーハッシュスキームについて読むための良い出発点です。ウィキペディアの暗号化(Unix)関数に関するこの記事を読んでください。周りの誇大宣伝bcrypt
(およびDESハッシュと同等の誤った情報crypt
)は、パスワードセキュリティに関するPHP開発者の特定の素朴さを示しています。bcryptは悪くありません(まあ、それはより強力なアルゴリズムAFAIKの代わりに計算の複雑さに依存していますが、それは確かにMD5を打ち負かすようです)。ただし、A)ポータブルで、B)拡張可能なこのスキームのようなものを使用することをお勧めします。これにより、いつでもより強力なパスワードハッシュにスムーズに移行できます。
プログラミング言語(PHPを含む)の99%では、この機能は、適切なソルト文字crypt
で始まり$6$
、適切な長さのソルト文字を選択することにより、関数を介してすぐに使用できます。
そして、bcryptの支持者によって体系的に広められた誤った情報の一部をクリーンアップするために:これはsha-512の1ラウンドだけを使用しているのではなく、明らかにデフォルトです( http://www.akkadia.org/drepper/sha-crypt.htmlを参照)SHA-512の5000ラウンドです。そして、あなたは数を増やすことを選ぶことができます。したがって、私の理解では、「bcryptは必要に応じてスケールアップできます」という主張はcrypt-SHA512にも当てはまります。bcryptとは対照的に、これはglibc2.7以降を使用するすべてのLinuxシステムで使用できるはずです。bcryptは、一部のディストリビューションまたは一部の拡張機能でのみ使用可能な拡張機能です。DebianとおそらくUbuntuでは、明らかに拡張機能をインストールする必要があります
libpam-unix2-Blowfish対応のPAMモジュール