インターネットの各種サービスで、パスワードを忘れてしまった場合、まともなサービスではそのパスワード自体を知ることが出来ません。
サーバー自体にそのパスワードの生データが保存されていないので、サーバーの管理者であってもユーザーが忘れてしまったパスワード教えることが出来ないのです。
それでは、パスワードが分からないのに、パスワードを入力するとログイン出来るのでしょうか。
ユーザーのアカウントと、パスワードを照合するためのデータ自体はサーバーに保存されています。
このデータはある法則に基づいてランダムな文字に変換されています。
例えば、パスワードが「password」だった場合、「W6ph5Mm5Pz8GgiULbPgzG37mj9g=」として記録されます。
仮に、生のパスワード「password」を記録しているファイルが流出してしまうと、そのままパスワードも流出しますが、「W6ph5Mm5Pz8GgiULbPgzG37mj9g=」となっていれば、仮に流出してしまってもそれが「password」であると逆に計算するには膨大な時間がかかり、実質パスワードを解析するのは不可能です。
逆に「password」から「W6ph5Mm5Pz8GgiULbPgzG37mj9g=」にするのは一瞬なので、ユーザーが入力した「password」を「W6ph5Mm5Pz8GgiULbPgzG37mj9g=」に変換して、サーバーに記録されているデータと一致しているかどうかをみてログインを許可します。
仮に「password」を「pasword」と入力すると「c0ThhVeapwrIAEZIDks1Sd4NBj0=」と全く異なる物になることから分かるように、完全にランダムな文字列になる法則が使われています。
このランダムな文字列に変換することをハッシュ化といいます。このハッシュ化にはハッシュ関数と言う物が使われ、ランダムな文字列にしています。
ハッシュ関数にはいくつもの種類があり、2015年現在一般的なのはSHA-256(SHA-2)です。
コメント
[…] パスワードを聞いても誰にも分からない理由 ハッシュ化しているから […]