Webアプリケーションのうち、ユーザー登録機能を持つアプリケーションの設計において、非常に重要な事項としてあげられるのがパスワードポリシーだ。
今回はパスワードポリシーの妥当性についてまとめてみようと思う。
パスワードポリシーとは?
パスワードポリシーとは、ユーザー登録の際に設定するパスワードに使用できる文字種や、最低桁数など、アプリケーション側であらかじめ決めておくルールのこと。
パスワードポリシーをあらゆる制約で縛り厳格化することで、セキュリティ強度は高まるが、一方でユーザーの利便性を損ない、使いづらいアプリケーションとなってしまう。
代表的なパスワードポリシーの候補
パスワードに対する攻撃に備えて、アプリケーションがパスワードをチェックするためのパスワードポリシー候補として、主に以下のようなものが挙げられる。
- 桁数(例:12桁以上)
- 文字種(例:英数記号それぞれ1字以上は入れる)
- ユーザーIDと同じパスワードの禁止
- ありがちな単語の禁止(例:passwordなど)
- パスワードの定期変更を促す
パスワードポリシーは、上記の候補を組み合わせて設計していくことになるのだが、先述のとおり厳しくやり過ぎるのも良くないとされている。
それでは妥当なラインはどのあたりだろうか?
妥当なパスワードポリシー
米国標準技術研究所(NIST)のガイドラインでは、2017年に以下の内容に改訂がなされている。
異なる文字種を組み合わせる規則や定期変更の強制は推奨しない
つまり、先に挙げた5つのポリシーのうち以下2つは推奨しない、とされているということだ。
- 文字種(例:英数記号それぞれ1字以上は入れる)
- パスワードの定期変更を促す
「英数記号それぞれ1字以上」は昔からよくある伝統的なポリシーだが、確かに有名SNSなどでも採用されていない。
英字のみのパスワードであっても桁数が十分に長く、極端に単純な文字列でもなければ推測は困難だろう。
まとめると、パスワードポリシーは次の3つを必須とし、あとはアプリケーションが保持する情報などのレベルに合わせて調整するのが妥当なところだろう。
- 桁数
- ユーザーIDと同じパスワードの禁止
- ありがちな単語の禁止