Googleの危険パスワードチェック: ユーザーのプライバシーを侵さず、セキュリティリスクに対応する技術とは

写真拡大 (全6枚)

◎Password Checkupが統合されたChrome79
Googleが2019年2月からChromeの拡張機能としてリリースしていた「Password Checkup」が12月からChrome79に正式に搭載された。

Google Chromeユーザーであれば、さまざまなウェブサービスのアカウント情報(ユーザーIDとパスワード)をChromeに保存している人が多い。Password Checkupは、そこで保存したパスワードが安全かどうかをチェックする機能だ。ちなみに、保存されている場所は、ほかのデバイスとの同期がオンになっている場合はGoogleアカウントに紐付けされGoogle内に保存される。デバイスと非同期の場合、自分のパソコン内に保存される。

何も知らずにいつものようにChromeでサービスにログインしようとして、この警告のポップアップが出ると、パニックになってしまうかもしれない。しかし、その場合でも落ち着いて各サービスのパスワードを変えるようにしたい。


不正利用されたパスワードを使っているとの警告が表示された画面例


有名な「Have I been pwned?」など、認証情報が漏洩しているかどうか確認できるサイトやサービスはいくつかある。
Firefoxも「Have I been pwned?」のデータベースを参照元にした「Firefox Monitor」を提供しており、Firefox70(2019年10月リリース)にその機能を統合している。ブラウザが外部サービスのログイン情報を保存し自動ログインするという機能を持つようになった流れから、当然といえば当然なのかもしれないが、パスワードの不正利用についてもブラウザ側が逐一確認するという方向に進んでいる。

ChromeのPassword Checkupの仕組みはこうだ。
過去に流出したアカウント情報を収集し、ユーザーIDとパスワードを暗号化したデータと、ユーザーIDとパスワードから生成したハッシュ値をデータベースに保存し、暗号化を解く鍵はGoogleのみが持つ。そして、Googleアカウントに保存されたユーザーIDとパスワードから同じように暗号化しハッシュ値を生成し、Googleに送信する。
アカウントの詳細情報なしに両者をマッチングし、漏洩した情報かどうかを判断する。
参照元の流出アカウントデータは独自に収集したもので40億以上とされる。


Password Checkupの仕組み



◎パスワードの管理とプライバシー
実は、ブラウザがこうした機能を持つにあたって必要だったのが「ユーザーのプライバシーにどう配慮するか」だったと言える。
前述のように、データの漏洩をチェックするサイトはかなり前から存在する。そうしたサイトでは、(そのサイトを信用していいのかは問題になるが)ユーザーが「漏洩がないか」「不正に利用されていないか」を調べたいと自らの意思でメールアドレスやパスワードを入力する。

しかし、「ブラウザ」という第三者が保存されている情報を元に調べに行くというのは、これは「いかがなものか」となる。

希望したとしても、その情報自体がGoogleに渡ることに躊躇する人も当然いるからだ。
そもそもブラウザのパスワード管理にパスワードを預ける(保存する)ことへの危険性も以前から言われ続けている(これは利便性と危険のどちらを取るかといった論調だが)。

危険は避けたい。では危険を避けるための機能を提供してくれるところにどこまで自分の情報を預けるか? これはなかなか難しい問題だ。しかし、暗号化されたデータをマッチングするだけで、生のデータはGoogleを含む誰も見ない、保存もされないのであれば、その心理的な敷居は低くなる。

Googleも、今回このようにユーザーのプライバシーを保護した上で、拡張機能として提供した形で効果が見えたことから、ブラウザのデフォルトの機能として統合されたということだろう。一連の結果をレポート(https://research.google/pubs/pub48399/)として公開している。このレポートにはPassword Checkupのリリースから1ヶ月(2019/2/5-2019/3/4)の統計情報も出ており、
(1) ユーザーの47.3%が警告を受け取った
(2) 警告したパスワードの26.1%がリセットされた
(3) リセットされたパスワードのうち94%が同等以上の強さに変更された

ことが示されている。
警告の25.7%は無視された結果だが、その理由として以下の3つが可能性として上げられるとしている。
(1) ユーザーが新しいパスワードに変えるだけの価値がないアカウントだと評価した
(2) ユーザーがアカウントを完全に制御できない(共有アカウントなど)
(3) 拡張機能ではパスワードのリセットプロセスが自動化されないため

また重要な点としては、オリジナルのパスワードでは3%に過ぎないのに対し、新しいパスワードの39%が最高の強度スコアを達成していることを上げている。なお、ログイン数でグルーピングすると、人気のあるサイトはパスワードリスト攻撃など不正なアクセスによる脅威にあまり直面しない傾向があり、いわゆるロングテールのサイトはリスクにさらされていると言う。


「Protecting accounts from credential stuffing with password breach alerting」より



「Protecting accounts from credential stuffing with password breach alerting」より



「Protecting accounts from credential stuffing with password breach alerting」より



◎Private Join and Computeとは
Googleは、Password Checkup に使われている一連の技術を「Private Join and Compute」として、GitHubでオープンソースとして公開している。少しだけPrivate Join and Computeについて紹介しておこう。

Private Join and Computeはスタンフォード大学の暗号分野の研究者らとの共同開発によるもので、Private Set Intersection(PSI)と呼ばれる暗号化プロトコル、および準同型暗号によって機能する。Private Join and Computeに使われている技術をMPC(Multi Party Computation:複数のサーバー間でデータを暗号化したままの状態で処理する技術)と呼ぶ。
たとえば、漏洩アラートサービスにおいて、クライアントはサーバーの通信は次のようなモデルで示される。


ユーザー名とパスワードの計算に基づいてリクエストを生成し送信し、サーバー側は、クライアントが「アカウント情報を漏洩しているかどうか判定する」ための応答を返すという形(「Protecting accounts from credential stuffing with password breach alerting」より)


ここで、クライアントはユーザー名とパスワードのタプルにアクセスできる。サーバーは「安全ではない認証情報のデータベースを格納し、定期的に更新している。

クライアントはユーザー名とパスワードの組(u、p)から、Create Request(u、p)を介してローカル状態「LS」を生成し、サーバー側にReqを要求する。サーバーは要求を受信すると、Create Response(S、Req)を実行して、結果の応答Respをクライアントに送信する。
クライアントは、Verdict(Resp、LS)を計算することにより、漏洩された情報にマッチするかどうか判定する。時間の経過とともに新たな漏洩が発生するため、データベースは定期的に更新されており、クライアントはこのプロセスを定期的に繰り返すことになる。

ユーザーIDおよびパスワードはこのプロセスの中でいずれも直接的に照会されない。これにより、プライバシーを侵害することなく、セキュリティ対策ができるということになる。Googleは、Private Join and Computeを、ユーザーのプライバシー、オーバーヘッド、正確性、信頼性のバランスを取ったアプローチだとする。

MPC技術は以前から研究されてきた分野だが、個人にまつわるデータを扱う企業、組織にとって、この先、必須になる技術だと言える。AIや電子マネーの普及で、さまざまな分野、業態の企業が個人データを取り扱うことになるからだ。

いま現在、ChromeがPassword Checkupを統合したばかりだが、Private Join and Computeは、これからより広く、多くのユーザーに使われることになるだろう。それによってブラッシュアップ、微調整されていくという技術でもあるのだが、今後、どのような応用がされていくのか大いに期待したい。


執筆 大内孝子