1. ホーム
  2. security

[解決済み] パスワードのハッシュ化と暗号化の違いについて

2022-04-25 20:54:05

質問

現在の上位投票先 この質問 の状態です。

もうひとつは、セキュリティに関連することではありますが、セキュリティ問題というほどでもない、完全で忌々しい失敗です。 パスワードのハッシュ化と暗号化の違いを理解する。 . プログラマが安全でない "Remind me of my password" 機能を提供しようとしているコードで最もよく見受けられます。

この違いはいったい何なのでしょうか?ハッシュは暗号の一種というイメージがあるのですが。投稿者の言う安全でない機能とは何でしょうか?

解決方法は?

ハッシュ化は一方通行の関数(まあ、マッピング)です。不可逆的で、安全なハッシュアルゴリズムを適用しても、元の文字列を取り戻すことはできない。せいぜいできるのは、同じハッシュを提供する別の文字列を見つけるという、いわゆる「コリジョン(衝突)」を発生させることくらいです。暗号的に安全なハッシュアルゴリズムは、衝突の発生を防ぐように設計されています。安全なハッシュを攻撃する方法として レインボーテーブル を適用することで、対抗することができます。 ソルト を保存する前にハッシュを追加します。

暗号化は、ちゃんとした(双方向の)機能です。鍵があれば、暗号化された文字列を復号して元の文字列を得ることができる。

安全でない機能とは、パスワードを暗号化すると、アプリケーションがキーをどこかに保存してしまい、データベース(および/またはコード)にアクセスした攻撃者が、キーと暗号化されたテキストの両方を取得することで元のパスワードを取得できてしまうというものです。

通常、クラッカーがデータベースやコードを所有すれば、パスワードは必要ない、だからこの違いは無意味だ、と言われます。なぜなら、ユーザーの多くは同じパスワードを何度も使っており、パスワードが漏れることでより大きなリスクにさらされるからです。