安全でないパスワードについて
Gehirn ID Center で使用できない「安全でないパスワード」とはなにか。
また、どのようにして検出しているのか。
回答 ¶
Gehirn ID Center ではパスワードリスト攻撃の脅威を低減するため、安全でないパスワードの使用を制限しております。
安全でないパスワードを検出するため、 Gehirn ID Center では Have I Been Pwned (HIBP) を利用しています。 HIBP では過去のセキュリティ事故によって流出したデータを収集し、被害を受けたユーザーが実際に使用していたパスワードのリスト( SHA-1 ハッシュ)を公開しています。
Gehirn ID Center ではこのリストに一致するパスワードの使用を制限することで、パスワードリスト攻撃やパスワードの使いまわしによる不正アクセスの脅威を低減しております。
検出のタイミング ¶
パスワード設定時
安全でないパスワードの検出は、まず Gehirn ID サインアップ時ならびにパスワード変更時に実施します。新しいパスワードを HIBP のリストと照合し、検出された場合にはそのパスワードを登録せず、別のパスワードを登録するようお客さまにお願いしています。
パスワード認証時
次に、パスワードによるサインイン時にも定期的にリストと照合しています。現在のパスワードを HIBP のリストと照合し、検出された場合には別のパスワードに変更するようお客さまにお願いしています。
これは、パスワード設定時には HIBP のリストに掲載されていなかったパスワードが、その後発生したセキュリティ事故や過去の事故の被害が新たに明らかになることにより掲載されることがあるためです。
検出の仕組み ¶
HIBP が提供する安全でないパスワードのリストには、パスワードそのものの平文ではなく、その SHA-1 ハッシュが掲載されています。このためリストの照合にはお客さまのパスワードの SHA-1 ハッシュが必要となりますが、 Gehirn ID Center はお客さまのパスワードの平文ならびに SHA-1 ハッシュは保存していません。
お客さまのパスワードは より安全な PBKDF2 、 bcrypt または Argon2 ハッシュ関数により保存されています。なお、どのハッシュ関数が使われているかは最後にパスワード認証を実施した日時によって異なります。
安全でないパスワードの検出はお客さまがパスワードを平文でサーバーに送信する、サインインおよびパスワード登録・変更(サインアップを含む)のタイミングで行います。お客さまが送信した平文のパスワードをどこにも保存せずにサーバーのメモリ内で SHA-1 ハッシュに変換します。
変換した SHA-1 ハッシュ 20バイトのうち先頭の2.5バイトのみを HIBP が提供する API に送信します。 HIBP はこの先頭部分に一致する SHA-1 ハッシュのリスト(およそ 800 件)を応答するので、ゲヒルンのサーバー内でこの部分一致リストと照合して安全でないパスワードを検出します。
SHA-1 ハッシュ全体ではなく先頭部分のみを HIBP に送信することで、 HIBP であっても SHA-1 ハッシュの全体を知ることはできません。 HIBP には先頭部分が一致する SHA-1 ハッシュがおよそ 800 件存在すること、ハッシュから元のパスワードを復元することが困難である SHA-1 の暗号学的性質によりお客さまのパスワードの安全が保たれます。
また、お客さまの Web ブラウザから直接リストを取得するのではなくゲヒルンのサーバーを経由することで、お客さまの IP アドレスや User-Agent
リクエストヘッダフィールドといった、お客さまのユーザー名やメールアドレスなどのサインインに必要なほかの情報の特定につながるおそれのある情報を取り去ります。
参考資料 ¶
- Have I Been Pwned
- HIBP ウェブサイト
Gehirn ID Center が利用する開発社向け API のほか、個人のメールアドレスにより過去のセキュリティ事故の被害を検索したり、新たに被害が判明したときに通知される機能も提供されています。 - Have I Been Pwned: Pwned websites
- HIBP が収集したセキュリティ事故の一覧
- Have I Been Pwned: API v3
- Gehirn ID Center が利用する API の解説
お問い合わせ
問題が解決しない場合やほかにお気づきの点がございましたら、お気軽にお問い合わせください。