「パスワード」に関する簡単な話

パスワードを忘れた人のイラスト
ちょっと性質が違うけどこのまとめみて「パスワードがどうやって保存されているか」についてあんまり理解されてないよなあ、と思ったので簡単に書いてみます






読んだまとめはこれ

IEがサ終してEdgeに移行したことにより絶対に答えられない問い合わせが大量発生→ユーザーが本当に欲しいものは…

IEがサ終してEdgeに移行したことにより絶対に答えられない問い合わせが大量発生→ユーザーが本当に欲しいものは… – Togetter



パスワードはわかりません

ECサイトに関わっていると定期的に同じような問い合わせが来るんですよね。

パスワードを忘れてしまったので教えてください



それこそ「良くある質問」が用意されるくらいに。これとか。まあ読まれんけど。


パスワードを忘れたので教えてください

パスワードを忘れてしまった場合は、SHOEISHA iDでのパスワードの再設定が必要となります。

パスワードを忘れたので教えてください | SEshop.com | 翔泳社の通販


パスワードはデータベースに保存されていないので、パスワードを聞かれても誰にもわかりません。保存されていないのになぜログイン出来るのか?それはこういう理屈です。



ログインの仕組み

  1. 登録時に入力されたパスワードを ハッシュ化して データベースに保存
  2. ログイン時に入力されたパスワードをハッシュ化して、データベースに保存されているものと同じか照合


データベースに保存されているものはパスワードそのものではなくて、パスワードが「ハッシュ化」されたものです。ハッシュ化とは元のデータをルール(アルゴリズム)に従って特定の文字列に不可逆変換することです(註1)。

例えば次のような単純な変換であれば、変換後の文字列から元のパスワードが推測可能かも知れません。

password → sswordpa

でも実際にはこんな感じになります(SHA256の場合)

password → 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

「不可逆変換」と書いたとおり、この文字列を元の「password」に戻す方法はありません(註2)。


そう、誰にも元には戻せない んです。



誰にも戻せないので聞かれてもわからない

というわけで、確かにデータベースにはお客様のパスワードを元に生成された文字列が保存されてはいます。でもそこから元のパスワードを取り出すことは出来ません。

これはシステムの欠陥ではなくて安全上の措置です。もしデータベースを誰かに見られてしまったとしても、ハッシュ化した文字列が保存されていれば、パスワード自体が漏洩することはありません。もし「パスワードを教えて欲しい」というリクエストに対して元のパスワードを教えてくれるECサイトがあったら、そんなサイトは怖いので利用してはいけません。



パスワードは自分で適切に保管しましょう

「付箋に書き出してパソコンに貼り出す」という対策が笑われることは良くありますが、不特定多数の人が行き来する場所であればともかく自宅などではそれで十分ではないかと個人的には思います。忘れて困るよりマシですしね。


パスワードは自分で適切に保管しましょう。



註1:暗号化とハッシュ化の違い

こちらの記事がわかりやすいので参考にしてください。


暗号化とハッシュ化の違い

・暗号化 : 復号化できる(元に戻せる)
・ハッシュ化 : 不可逆変換(元に戻せない)

暗号化とハッシュ化の違い – Qiita



註2:高性能PCなら戻せるんですよね?

「パソコンの性能が高性能になるとハッシュ値からパスワードを取り出せるようになる」という言われ方をすることがありますが、実際に行われているのは「パスワードを推測してたくさんハッシュ化して付き合わせる」という総当たり式のパスワード解析であって元に戻しているわけではありません。パスワードを知りたいだけならそれで十分です。


実行結果は以下の通りです。各リクエストが同時に動いていることを示すために、Google ChromeのTimelineを示します。実行時間は250msec程度ですね。

徳丸浩の雑記帳: 数字6桁パスワードのハッシュ値の総当たり、PHPなら約0.25秒で終わるよ


推測しやすい単語をパスワードとして設定してはいけない理由は、そういう単語のハッシュ値は広く知られているからです。



合わせて読みたい

「ハッシュ化とは?」今さら聞けない!基本の『キ』 | マーケット | VR Digest plus データでイマを読み解く
パスワードを安全に保管する方法 | 暗号化とハッシュ化の違い – ITを分かりやすく解説



追記:パスワードを不適切に扱うとこうなります

記事自体は6/23に書いたものだったのですが、その後、音楽小売り大手のディスクユニオンが個人情報70万件を流出させた上にその中にパスワード(平文、ハッシュ化されていないもの)が含まれていたことで、大規模な不正ログインが起きているというニュースが報じられました。


【今日のニュースから】ディスクユニオン、会員個人情報70万件漏洩、DBに生パスワードを保存していた模様



パスワードをそのまま保存するとこういうことになります。

「私のパスワードを教えてください」と問い合わせてパスワードを教えてくれるショップサイトでは、万が一流出事故があった場合パスワードがそのまま流出するということです。そんなセキュリティ意識の低いサイトで買いものをしてはいけません。万が一する必要がある場合は、そのサイトだけのパスワードを設定するようにしましょう。