無理しないでゆっくり休んでね!

パスワードを忘れた際、なぜ旧パスワードを教えてもらえないのか

多くの人が一度は考えたことがあるでしょう。パスワードを忘れた時に、なぜ新しいパスワードを設定しなければならないのか、古いパスワードを教えてくれないのはなぜなのかという疑問です。

なぜかというと、ウェブサイトにアカウントを作成し、パスワードを設定する際、ウェブサイトはユーザーのパスワードを直接保存しません

代わりに、「ハッシュ化」というプロセスを使用します。

ハッシュ化とは?

ハッシュ(Hash)とは、任意の入力(この場合はあなたのパスワード)を固定長のランダムに見える文字列に変換する一方向の暗号化プロセスです。重要な点は、このプロセスは不可逆であるということです。つまり、ハッシュ値から元のパスワードを「解読」することはできません。

その目的は、セキュリティを強化することにあります。データベースが不正アクセスされた場合でも、ユーザーのパスワードを直接取得できないようにするためです。ハッシュ値のみが保存されているため、不正アクセス者がパスワードを知ることはありません。ログイン時には、入力されたパスワードが再度ハッシュ化され、そのハッシュ値がデータベースに保存されているハッシュ値と比較されます。2つのハッシュ値が一致すれば、正しいパスワードが入力されたと認識され、ログインが許可されます。

ハッシュ化はなぜ不可逆なのでしょうか?

データの変換にはハッシュ関数と呼ばれるアルゴリズムが使われています。 同一のデータから変換されるハッシュ値は常に同一の結果となるため、変換後は元に戻せない性質(不可逆性)があることが特徴です。

ハッシュ化と暗号化はどう使い分けます?

暗号化と混同されやすいハッシュ化ですが、暗号化の主な違いは「不可逆性(元に戻せない性質)」にあります。

暗号化の場合は暗号化されたデータを鍵で復号し、内容を確認することができますが、ハッシュ化はデータの変換ができるのみで、データを元に戻す(復号)ことはできません。

ハッシュ化の例

ハッシュの一例として、よく使われる関数、SHA-256を取り上げます。

SHA-256は、入力されたデータに対して256ビット(32バイト)のハッシュ値を生成する暗号ハッシュ関数です。ハッシュ関数はどのような長さのデータでも固定長のハッシュ値を返すのが特徴です。

たとえば、「password」という文字列をSHA-256でハッシュ化すると、以下のようなハッシュ値が生成されます(実際の値はハッシュ関数の実装によって異なる場合があります)。

5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

同じ「password」という入力に対しては、毎回同じハッシュ値が返されます。しかし、入力がわずかに異なるだけで、生成されるハッシュ値は大きく変わります。例えば、「Password」という文字列(先頭が大文字)をハッシュ化すると、全く異なるハッシュ値が得られます。

8be3c943b1609fffbfc51aad666d0a04adf83c9d52aa5e7a2755d7db2a52b8b8

この性質により、ハッシュ関数はパスワードの安全な保存に適しています。たとえデータベースが侵害されたとしても、ハッシュ値から元のパスワードを推測することは非常に困難です。

コメント

タイトルとURLをコピーしました