1

会員制サイトを作りたいので、パスワードはできるだけ安全なものにしたい。これを含むサイトを読むと、md5、sh1暗号化は深刻な問題であることがわかります。私は、bcript、scrypt、sha256、sha512、PBKDF2 のようなものを見てきました。これらを実装しているいくつかの php スクリプトを見つけましたが、実際にはデータベースに関係するものは何も見つかりませんでした。

塩を含む行を作成する必要がありますか?

パスワードを確認するには、hash(salt+password) = $hash のようなことをする必要がありますか?

私はパスワードの経験が豊富ではないため、ベストプラクティスについてはよくわかりません.パスワードをハッシュしてソルトするとどうなるか、パスワードがどのように取得されるか...

その背後にあるロジックを本当に理解していないので、どうすればいいのか少し混乱していると思います.

4

2 に答える 2

4

Bcrypt、Scrypt、または PBKDF2 を使用する場合、salt は取得するハッシュの一部であるため、個別に保存することを心配する必要はありません。それ以外の場合 (SHA-*)、はい —ただし、とにかくそれらを使用しないでください。Bcrypt、Scrypt、および PBKDF2 は、実際のパスワードハッシュ関数です。

にタグを付けたので、Bcrypt をお勧めします。ビルトインです。スクリプトはそうではありません。

于 2012-12-16T15:12:51.937 に答える
1

一般的なベストプラクティス(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モジュール

于 2012-12-16T15:18:41.777 に答える