パスワードの流出を警告するChrome拡張Password Checkup
つい先日(2019年2月5日)、Googleから、パスワードの流出確認ができるChrome向け拡張機能「Password Checkup」が公開されました。
Password Checkupとは
ChromeブラウザでいずれかのWebサイトにログインする際、Googleが保持しているパスワード流出リストと照合し、「あ、そのIDとパスワードの組み合わせ、流出してまっせ」と警告してくれる拡張機能です。
https://chrome.google.com/webstore/detail/password-checkup/pncabnpcffmalkkjpajodfhijclecjno
複雑なパスワードを使ってもサイト側の管理次第で流出する
通常、ログイン機能のあるWebサイトでは、ユーザーから入力されたパスワードは暗号化(という名のハッシュ化※後述)されて保存されるため、Webサイトの管理者ですらパスワードを把握することは出来ません。
つまり、ハッキングを受けてデータが流出したとしてもハッカーにパスワードが知られる心配はないんですね。………本来なら。
ところが、これはあくまでデファクトスタンダードなやり方というだけで、全てのWebサイトが絶対にパスワードをハッシュ化している、とは限らないわけです。先日大きな話題になった「宅ふぁいる便」の情報漏えい問題が記憶に新しいところ。
Q16. パスワードは暗号化されていなかったのか?
A. 流出したログインパスワードは、暗号化されておりませんでした。
なりすましによる被害が想定されますので、「宅ふぁいる便」と同一のユーザーID(メールアドレス)、ログインパスワードを用いて他のウェブサービスをご利用されているお客さまにおかれましては、誠にご面倒ではございますが、他のウェブサービスのログインパスワードを変更いただきますよう重ねてお願いいたします。
暗号化とハッシュ化は似ているようで違う
ハッシュ化と言われてもIT技術者でないとピンとこないと思われるため、通常は「暗号化」と説明されることが多いですが、本来ハッシュ化と暗号化は決定的に異なるものです。
暗号化とは
一定のルールを決めて変換し、そのルールに則れば復号化(元に戻すことが)できる仕組みのことです。
例えばパスワードの「1文字を+1して保存する」というルールであれば、下記のようになります。
元のパスワード | 1234 |
---|---|
保存パスワード | 2345 |
ここでいう元のパスワードとは「ユーザーが入力したパスワード」のことで、保存パスワードとは「ユーザーが入力したパスワードを一定のルールで変換し、Webサイト内に保存するパスワード」のことです。
この場合だと保存パスワードの「2345」を1文字ずつ切り出して-1すれば元の「1234」を復元できますよね。もちろん本来の暗号化はもっとずっと複雑で予測しづらいものですが、どれだけ複雑であろうとも「復元できる」ことには変わりありません。
ハッシュ化とは
ところがハッシュ化では特定のアルゴリズム(md5とかsha1が有名)を用いて不可逆(元に戻せない)変換を行います。
ハッシュ化の例)
元のパスワード | 1234 |
---|---|
保存パスワード | 7110eda4d09e062aa5e4a390b0a572ac0d2c0220 |
そのため、保存パスワードである「7110eda4d09e062aa5e4a390b0a572ac0d2c0220」が流出しても、元のパスワードはわからないのです。
上記の例では「1234」をsha1アルゴリズムで変換した値ですが、これは何度やってもこの値「7110eda4d09e062aa5e4a390b0a572ac0d2c0220」になります。
ですから、Webサイト側はユーザーが入力した値をsha1で変換して、保存パスワードと照合することでログインの可否を判定したりするわけですね。
はじめてこの仕組みを知ったときは「ほえー…かしこい人がいるもんだなぁ」と感心したものです。これを使えば元のパスワードを保存する必要がなく、データが流出しても元のパスワードを盗まれることもないわけですからねー。
ハッシュ化も万能ではない
でも、ですよ。
sha1のアルゴリズムでは「1234」が必ず「7110eda4d09e062aa5e4a390b0a572ac0d2c0220」となる、と誰しもわかっているわけです。
じゃあさ、「7110eda4d09e062aa5e4a390b0a572ac0d2c0220」が「1234」だともわかるわけですよ。
つまりね、英英辞典あたりを思い浮かべてみてください。そこにはよく使うもので3万種類くらいの単語、あまり使わないものを含めて100万語くらいの単語があります。これをですね、全部ハッシュ化したらどうなるでしょう?
ハッシュ化された辞書と、流出したデータを突き合わせて調べていけば、元のパスワードを復元できそうな気がしませんか。
もちろん、パスワードに意味のある単語を使っていた場合に限る話なのですが、これが意外と有効で、英単語として意味のあるパスワードを使っている人たちが相当数いることがわかっているのです。こうしたハッシュ化した辞書を使ったハッキングを辞書攻撃(Dictionary Attack)と言い、ぼくたちの知らないところで日夜アタックが行われているのが実情です。
辞書攻撃に対する防衛は単純で、
- パスワードには意味のある単語を入れない
- 過去に流出した可能性のあるパスワードを使わない
ということです。
そう、辞書の単語だけじゃないのです。過去に流出したパスワードというものは色々なところに出回っており、それらをハッシュ化した辞書も裏サイト的なもので売買されていると言われています。
はい、そこで最初の話「Password Checkup」に戻るわけです。
Password Checkupの使い方は簡単
下記WebサイトをChromeで開き、[Chromeに追加]ボタンを押すだけでインストールは完了です。
https://chrome.google.com/webstore/detail/password-checkup/pncabnpcffmalkkjpajodfhijclecjno
インストールが完了したらアドレスバーの右側にあるPassword Checkupのアイコンをクリックします。
幸いなことにぼくの環境では流出が確認できなかったため、まだ見たことはないのですが、流出が確認されると赤いダイアログで警告が出るようです。Chromeで各Webサイトへログインするたびに自動的にチェックされるようなので、このPassword Checkupは有効にしたままブラウザを使い続けるのが良いでしょう。
まとめ
- 2019年02月05日にGoogle謹製のパスワード流出確認ツールが出来た
- Chromeの拡張機能として公開されているためChomeを使っている方はぜひ入れよう
パスワードの管理に関して興味のある方は、前回の記事「記憶できる程度のパスワードを付けるのはもうやめよう」も併せてどうぞ。