ハッシュは一方向の方法です。ユーザーがパスワードを紛失した場合、サーバーからそのパスワードを取得することはできません。ハッシュの代わりに暗号化を使用してデータベースにパスワードを保存しないのはなぜですか。
ユーザーがデータベースからパスワードを取得できる場合、次のことができるためです。
これらのケースのいくつかでは、アクセスのしやすさは、システムが他のエクスプロイトに対して脆弱かどうかに依存しています。また、ユーザーのパスワードの衛生状態に応じて、損害が悪化または軽減される場合もあります。
ただし、すべてのケースは、ハッシュが完全ではないにしてもほとんどの場合、他の人のパスワードにアクセスしてはならない人をブロックするシナリオを表しています。暗号化はここでは役に立ちません。
また、ユーザーがWebサイトの意図する目的のために、システムから実際のログイン資格情報を取得する必要がないことも注目に値します。ユーザーがパスワードを忘れた場合、システムはそれを安全にリセットまたはnew、既知の値に変更できるメカニズムを提供する必要があります。
上記のすべてのシナリオで、パスワードハッシュに切り替えて、リセット(回復ではなく)プロセスを実装すると、攻撃者はユーザーのアカウントにアクセスできなくなりますか?いいえ。しかし、それは確かに基準を引き上げ、ユーザーへの損害がその1つのアカウントのみに隔離されることを保証します-ユーザーが同じパスワードを使用したすべてのアカウントではありません。
ユーザーがログインするとき、パスワードが正しいかどうかを知る必要があります。
パスワードをハッシュするということは、パスワードを知る必要はなく、ハッシュだけを知っているということです。ハッシュは一方向であるため、誰かがデータベースを漏らした場合、ハッシュはハッシュだけであり、パスワードを取得するためにすべてをブルートフォースで実行する必要があります。 salt、bcrypt、および多くのラウンドを使用すると、すべてのパスワードを解読することが非常に困難になります。
暗号化は元に戻すことができます。ユーザーがパスワードを送信し、サイトは保存された値を復号化して比較します。問題は、サイトに復号化キーがあることです。誰かがあなたのサイトをハッキングした場合、彼はキーを取得し、すべてのパスワードを簡単に解読します。よくない。
パスワードをクリアテキストにしておくのと同じくらい安全ではありません。
ハッシュと暗号化の主な利点: