つい先日、パスワードポリシーのチェックやパスワードのリセット方法など、サービス提供者として認証システムの仕様を検討する機会がありました。普段多くの Webサービスのお世話になっているのですが、認証にかかわる部分はあまり気にしたことがありませんでした。そこで今回は、パスワードに関するガイドラインと、大手Webサービス10社の実際のパスワードポリシーのチェックとリセット方法を調べてみました。
パスワードのガイドライン
米国国立標準技術研究所(NIST)が発行している電子的認証のガイドライン(NIST SP800-63B 2017年6月発行)の「5.1.1.1 Memorized Secret Authenticators(要するにパスワードのことです)」を簡単に解釈すると次のようになります。
- 利用者が設定するパスワードは、8文字以上(全部数字でもOK)
- サービス提供者が設定するパスワードは、6文字以上(全部数字でもOK)
ただし、「5.1.1.2 Memorized Secret Verifiers」では、サービス提供者側で次のような危険なパスワードは、利用者に理由を提示した上で拒否しなければならないとも書いてあります。
- 以前に漏洩したことのあるパスワード
- 辞書の単語
- 繰り返しまたは連続した文字(例: aaaaaa、1234abcd)
- サービス名、ユーザー名などから推測できるパスワード
また、「パスワードが8文字以上であることを要求しなければならない」とされている一方で、「パスワードには数字と英文字を含める」ような、異なる文字種の混合を要求すべきではないともされています。
パスワードは、数字8文字でもOK!と言われると少し心配になりますが、そもそもこのガイドライン(NIST SP800-63B)では認証の強度を高める場合は、2要素認証(一般には「2段階認証」と呼ばれています)を使うことが前提になっています。もはやパスワードだけで情報の安全を確保するのは難しいのかもしれませんね。
実際のパスワードポリシーとリセット方法
実際に運営されている Webサービスのパスワードポリシーのチェックでは、「6文字以上(数字のみでもOK)」が多く、ほとんどのサービスで「危険なパスワードのチェック」も行われています。
面白いのは、例えばGoogleのパスワード入力画面では「半角英字、数字、記号を組み合わせて 8 文字以上で入力してください」と表示されているのですが、実際のチェックは8文字以上のみで全部数字でも通ります。NISTのガイドラインに配慮したのかもしれませんね。
パスワードのリセット方法は、リセットコード(数字6文字程度)をメールで送信か、リセットURLをメールで送信が半々でした。サービス提供者としてはどちらで実装するか悩みどころですが、Webセキュリティのバイブル「体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践」(P497)では、利用者にメールのURLをクリックさせる習慣は、フィッシング対策上よくないことから、リセットコードが推奨されています。
今回調べたWebサービス10社では、すべて2段階認証が利用できます。NISTのガイドラインでも認証の強度を高める場合は、2要素認証を使うことが要求されていることから、サービス提供者として2段階認証の実装はもはや必須かもしれません。
(調査日:2019年6月26日)
サービス名 | パスワードポリシーのチェック | 危険なパスワードチェック | パスワードリセット方法 | 2段階認証 |
---|---|---|---|---|
8文字以上 | あり | リセットコード(数字6桁)をSMSまたは電話で送信 | あり | |
Apple | 8文字以上、大文字、小文字、数字を含む | あり | リセットURLをメールで送信 | あり |
6文字以上 | あり | リセットコード(数字6桁)とリセットURLをメールで送信 | あり | |
Amazon | 6文字以上 | なし | リセットコード(数字6桁)をメールで送信 | あり |
Microsoft | 8文字以上、大文字、小文字、数字、記号のうち 2 種類以上を含む | あり | リセットコード(数字7桁)をメールで送信 | あり |
Yahoo! JAPAN | 6文字以上 | あり | リセットコード(数字6桁)をメールで送信 | あり |
6文字以上 | あり | リセットURLをメールで送信 | あり | |
6文字以上 | あり | リセットURLをメールで送信 | あり | |
Slack | 6文字以上 | あり | リセットURLをメールで送信 | あり |
GitHub | 15文字以上、または数字と小文字を含む8文字以上 | あり | リセットURLをメールで送信 | あり |
*危険なパスワードチェックは次の文字列で確認しました。(最悪のパスワード2018年版の1位〜10位)
123456
password
123456789
12345678
12345
111111
1234567
sunshine
qwerty
iloveyou
補足
・Google
パスワードのリセット方法は、質問への回答や、アカウント復元(審査が必要)のもある
・Apple
パスワードのリセット方法は、秘密の質問への回答もある
・Facebook
実際のパスワードポリシーのチェックは6文字以上のみですが、「6文字以上の英数字と記号(!や&など)の組み合わせを入力してください」と表示されています。
・Amazon
危険なパスワードチェックがないため、最悪なパスワード第1位の「123456」も設定可能です(^^;) 利用者側で気をつけましょう。
・Yahoo! JAPAN
パスワード無効設定を推奨、もはやパスワード認証は危険なものになりつつあるようです。
・Slack
ユーザー登録時にはパスワードを設定させないようです。マジックリンクという24時間ログイン可能になるURLを発行できます。(ワンタイムパスワードのようなものですね)
ビジネスモデルによるパスワードポリシーの違い
興味深いのは、今回調査した10社のうち、Apple と Microsoft は他の Webサービスに比べてパスワードポリシーが厳しいことです。これはビジネスモデルの違いによるものと考えられます。
Apple と Microsoft は、なにかしらの商品(iPhoneやオフィスソフト)を利用者に販売した上で、自社の Webサービスに登録させる(利用者は登録せざるおえない)のに対して、Webサービス自体をメインの商品としている他の8社は、とにかくサービスの利用者を増やすことがビジネスの生命線です。
そのため、Webサービスがメインの企業ではパスワードポリシーを緩めにして、利用登録をしやすくしているだと想像できます。(あくまで推測です)
おわりに
おそらくですが、パスワードのみの認証は少なくなっていくでしょう。サービス提供者としても利用者としても、今後は2段階認証が必須になりそうですね。
コメント