3

ログインシステムを作成するための投稿を読んでいたところ、読んでいるときにパスワードハッシュについて見ました。

常に 64 文字を含む文字列である sha256 ハッシュを保存します。

この記事は、sha256ハッシュ関数を使用する方法を教えています。これを読んだ後、私は止まらず、安全なログイン システムの作成についてさらに検索を開始し、wikiHowのこの記事にたどり着きました。この記事では、sha512ハッシュ関数を使用しています。これは、次のログイン システムにどの関数を使用するかを本当に混乱させました。私はまだGoogleでより良い記事を検索し、この記事をcrackstationで見つけました。筆者は、sha256 と sha512 の両方を推奨しています。

パスワードハッシュの実装には、暗号化ハッシュ関数のみを使用できます。SHA256、SHA512、RipeMD、WHIRLPOOL などのハッシュ関数は、暗号化ハッシュ関数です。

sha256検索は終わったので、使用またはsha512機能できると思いましたが、さらに検索すると、このSO Questionが見つかりました。Robert Kによって受け入れられた回答は、私にとって新しいものでした。bcryptscryptについて、これまで聞いたことのないものです。

この記事はすべて2〜4年前に書かれたものです。

質問

最近 PHP で使用されているパスワード ハッシュ アルゴリズムで最も優れているのはどれですか?

4

1 に答える 1

9

ここで重要なことは、遅いハッシュを選択することです。これらのハッシュに対する実行可能な唯一の攻撃ベクトルは、ブルート フォーシングです。つまり、攻撃者は考えられるすべてのパスワードを次々に試し、同じアルゴリズムを使用してそれらをハッシュし、ハッシュと比較することしかできません。1 つのパスワードにかかる時間が長ければ長いほど、一致するものを見つけることが難しくなります。

SHA ファミリーのアルゴリズムは高速になるように設計されています。これは、この目的で使用するようには設計されていないためです。そのため、それら自体はパスワードのハッシュにはやや不向きです。ただし、 PBKDF2などの適切なアルゴリズムの一部として使用することはできます(つまり、ハッシュを何千回も繰り返してストレッチします)。

bcrypt と scrypt は、明示的に低速になるように設計されているため、パスワード ハッシュに適しています。bcrypt は CPU パワーの点で非常に高価になるように設計されていますが、scrypt はメモリ消費の点で非常に高価になるように設計されています。現在のハードウェアを使用すると、メモリよりも CPU パワーの方がスケーラビリティに優れているため、現時点では scrypt を使用するのが最適と見なされています。現時点では非常に最先端であり、使用可能なコードに関してはほとんどサポートされていません。一方、bcrypt はpassword_hash直接使用する PHP でサポートされています。

于 2013-08-31T12:28:00.360 に答える