UpLucid Inc.

新規事業の立ち上げ、特に仮想通貨・ブロックチェーン・xTech領域の支援を行います。

新規事業の立ち上げ、特に仮想通貨・ブロックチェーン・xTech領域の支援を行います。

Have I been pwnedのデータベースでより安全なサービス提供を

f:id:ku-suke:20180825222228p:plain

Have I been pwned という、いろいろなサイトのハッキングで漏えいしたパスワードを収集、公開しているサイトがあります。

haveibeenpwned.com

このサイトに自身のメールアドレスやパスワードを入力すると、すでに漏えい済みの場合以下のように表示されます。

 

f:id:ku-suke:20180825223124p:plain

 

実はこのサービスを自社サービスに組み込むことができ、登録したユーザに対し「このパスワードとメールの組み合わせは外部で漏えいしていますよ」と注意喚起することができます。

先月、Githubにもこの機能が導入されました。

New improvements and best practices for account security and recoverability | The GitHub Blog

一般的にデータベース内にはすでにハッシュ化されたパスワードしかないので、確かめることはできませんが、パスワード変更時や新規登録のタイミングで、このサービスに問い合わせることで漏えいを確認できます。

ダウンロードデータの利用

しかし、そもそもこのサイトは信用できるのでしょうか。確認のためとはいえ用意されているAPIに自社の顧客のパスワードを投げるのは気が引けます。

そこで、ダウンロードデータが提供されています。サイズは約10GBと気軽に扱えるサイズではありませんが、一度読み込んでしまえばシンプルなクエリなので特にチューニングもなく使えるでしょう。

このDBにはハッシュ化されたパスワードが回数別に保管されています。そのため、同じくSHA-1でハッシュ化し一致を調べると、そのパスワードの漏えい回数が取得できる仕組みです。

Have I Been Pwned: Pwned Passwords

安全なサービス提供のためにも、サービスが大きくなってくる前のタイミングでぜひ導入するとよいでしょう。なお、APIを利用する場合のより安全な方法をこちらのブログで解説されていたので合わせて紹介します。

Have I been pwned? にパスワードを入力するとどうなるか - 知らないけどきっとそう。