パスワードとデータベースのセキュリティについては、ユーザーがデータベースにアクセスできるかどうかを尋ねる唯一の方法はユーザーにアクセスできることを念頭に置いて、ユーザーパスワードは必要なく、データベース自体を変更できます。
暗号化については、php のマニュアルで、フグが最も指摘されていることを見つけましたが、Google での最初の結果検索でオンラインの復号化ツールを見つけました。さらに、ハッカーは、すでにデータベースを取得していることを気にして、パスワードを復号化する方法をおそらく知っているでしょう。パスワードそのもの。
それについてどう思いますか?パスワード暗号化は本当に必要で、安全ですか? 前もって感謝します。s passwords is if he somehow acess the database itself (probably he got the db password), so does it really makes diference if the user password is hashed or encrypted?
I
4 に答える
暗号化については、php マニュアルでフグが最も指摘されていることを見つけましたが、Google での最初の結果検索でオンライン復号化ツールを見つけました
最善の解決策は、パスワードを暗号化するのではなく、ハッシュすることです。多くの人が、暗号化とハッシュ (およびその逆) を混同するという間違いを犯しています。暗号化されたテキストは復号化できますが、ハッシュは一方通行です。つまり、何かをハッシュすると、それを「デハッシュ」することはできません。探しているのはBcryptです。これは、Blowfish暗号に基づくハッシュ アルゴリズムです。
攻撃者がパスワード ハッシュにアクセスする場合:
レインボー テーブル攻撃から保護するためにソルトを組み込むことに加えて、bcrypt は適応機能です。時間が経つにつれて、反復回数を増やして速度を低下させることができるため、計算能力が向上してもブルート フォース検索攻撃に対する耐性が維持されます。
Bcrypt の優れた点は、遅いことです。つまり、Bcrypt ハッシュを試してクラックするには、比較的コストがかかります (反復とソルトのランダム性によって異なります)。
すでに与えられた良い答えにいくつか追加したいと思います。
まず、あなたが言及したフグは確かに暗号化アルゴリズムであり、復号化できます。ただし、 Blowfishと、Blowfish に基づくハッシュ アルゴリズムであるBCryptを混同しないでください。
次に、データベースを読み取れる攻撃者のパスワードをハッシュします。読み取りアクセスの取得は、書き込みアクセスよりもはるかに簡単です。よく使用される手法は、SQL インジェクションです。このデモで自分で試すことができます。→ 矢印をクリックして、準備された入力を入力します。
- したがって、攻撃者はデータベースを読み取ることができるかもしれませんが、これは、攻撃者がデータベースに書き込むことができるという意味ではありません。彼はパスワードのハッシュしか知らないため、ログイン フォームに元のパスワードを入力することはできません。
- 攻撃者が書き込みアクセス権も持っている場合、攻撃者があなたのアカウントを使用するのを防ぐことはできませんが、攻撃者は元のパスワードを知らないため、他の Web サイトでそれを試すことはできません。