ユーザーが私のウェブサイトに接続できるようにするために、BCryptを使用してパスワードを暗号化します。これは、暗号化が最も遅いアルゴリズムの1つであるためです(侵害されたデータベースの復号化に時間がかかります)。
しかし、それで十分かどうか、またはそれをsha256/512のようなハッシュアルゴリズムと組み合わせる方が良いかどうか疑問に思っていました。
実際、これは次のことを意味します。
clear password -> sha256 -> bcrypt -> stored in database.
Sha256を追加すると、これらを解読するのが本当に難しくなるのですか、それともBCryptの速度は十分ですか?
短い答えは、SHA256ではなくbcryptを使用することです。 Bcryptはすでにパスワードをハッシュ化しているため、bcryptを使用している場合は、bcrypt + SHA256の両方を使用しても意味がありません。それはもっと強くなることはありません。 Bcryptだけで十分です。
このトピックに関して、このサイトにはたくさんのアドバイスがあります。 「パスワードハッシュ」を検索すると、それが見つかります。
例: パスワードを安全にハッシュする方法 、 どのパスワードハッシュ方式を使用する必要がありますか? 、 最も安全なパスワードハッシュアルゴリズム? 、 パスワードの保存にbcryptを推奨するセキュリティ専門家はいますか? 。
データベースが危険にさらされた場合に、ユーザーのパスワードに対するオフラインの辞書攻撃を防ぐために、できる限り遅いパスワードハッシュアルゴリズムを使用したいと考えています。
もちろん、それだけでは十分ではありません。パスワードをできるだけ安全に使用するには、さまざまな手順を実行する必要があります。ここにいくつかあります:
サイト全体のSSL/TLSを使用します。 HTTP経由でサイトにアクセスしようとすると、すぐにHTTPSにリダイレクトされます。
サイトで [〜#〜] hsts [〜#〜] を有効にします。これにより、ブラウザはHTTPS経由でのみ接続するようになります。 Paypalが使用します。最近のバージョンのFirefoxとChromeでサポートされています。
サイトを検索すると、さらに多くのことがわかります。