デジタル時代において、パスワードは依然として最も広く使用される認証手段の一つです。しかし、従来のパスワードポリシーの多くが、実は逆効果だったことをご存知でしょうか?
NIST(米国国立標準技術研究所)が発行するSP 800-63B-4は、パスワードセキュリティに関する最新の指針を提供しており、これまでの「常識」を覆す内容が含まれています。(専門家の間では長らく常識だったものなんですが…。)本記事では、企業内でパスワードを使ったユーザー認証システムを担当される方、およびこうしたポリシーを決める担当者や経営者に向けて、この重要な文書の核心をわかりやすく解説します。
パスワードの2つの分類
NIST SP 800-63B-4では、パスワードを以下の2種類に分類しています。
1. パスワード(Passwords) サーバー側で検証される秘密情報。ログイン時にサーバーに送信され、集中的に検証されます。
2. アクティベーション秘密(Activation Secrets) デバイス内でローカルに検証される秘密情報。例えばスマートフォンのロック解除PINなど、サーバーには送信されません。
従来の「常識」を覆す新要件
❌ やってはいけないこと
定期的なパスワード変更の強制禁止
- 90日ごとのパスワード変更を強制することは、もはや推奨されません
- 侵害の証拠がある場合のみ変更を要求すべきです
- 理由:頻繁な変更は、ユーザーが予測可能で弱いパスワードを選択する原因になります
NOTE: これはよくISMSとかで要求されているというコンサルの人なんかもいますが、それは「まちがい」です。ISO/IEC 27002 にもそんなことは書いてないない、どころか「Requiring frequent change of passwords can be problematic (頻繁なパスワードの変更を要求することは問題が多い)」と書いています。(そもそも、この辺のテキスト私が書いたし…。それこそ2013年頃だと思う。なお、逆に、変えなければいけないこともあることに注意。)
複雑性要件の押し付け禁止
- 「大文字、小文字、数字、記号を必ず含めること」といった要件は課してはならない(SHALL NOT)
- むしろ有害であると明記されています
- 理由:このような要件は、ユーザーが「Password1!」のような予測可能なパターンを使用する原因になります
パスワードヒントの禁止
- 「母親の旧姓は?」などのヒントやセキュリティ質問は使用禁止
- これらは攻撃者にとって貴重な情報源となります。というか、これっと複数の場所が知っている情報である確率が高く、したがって、こんなもので認証手段をリセットできたら目も当てられません。
✅ 推奨される要件
1. パスワードの長さ
- 単一要素認証:最低15文字
- 多要素認証の一部:最低8文字
- 最大長:64文字以上を許可すべき
長さこそが強度の鍵です。「P@ssw0rd」よりも「correct horse battery staple」の方が遥かに強力です。
NOTE: 現行のISO/IEC 27002 には辞書語の組み合わせを排除するようにと言うような記述が入っています(5.17 User responsibilities の C) 2))。これは私の見落としですね。次の版で排除しないと…。
2. 文字種の柔軟性
- すべての印字可能なASCII文字とスペースを受け入れる
- Unicode文字(日本語、絵文字など)もサポートすべき
NOTE: 正直これはちょっといただけないと思っている。Unicode正規化問題が持ち込まれてしまうので。 - これにより、ユーザーは覚えやすく強力なパスワードを作成できます
3. ブロックリストの実装
検証者は以下を含むブロックリストと照合する必要があります:
- 過去の侵害で漏洩したパスワード
- 辞書に載っている単語
- サービス名やユーザー名などの文脈固有の情報
- 「123456」や「password」などの一般的なパスワード
ブロックリストに該当する場合、拒否理由を説明して別のパスワードを選択させます。
4. パスワードマネージャーの積極的サポート
- パスワードマネージャーの使用を許可する(必須)
- オートフィル機能をサポートする
NOTE: パスワードマネージャーの利用に必要ですね。最近、これができないサイトが日本で増殖しているのはどうしたものか…。 - ペースト機能を有効にする
NOTE: 同上 - 理由:パスワードマネージャーを使えば、ユーザーは強力で一意なパスワードを各サービスで使用できます
NOTE: それだけでなく、多くのパスワードマネージャーは、投入先のURLを検証しています。これはフィッシング耐性という意味で重要です。
5. ユーザー体験の向上
- パスワード表示オプションの提供(入力中に見えるようにする)
- これにより入力ミスが減り、ユーザーのフラストレーションが軽減されます
NOTE: 主にスマホなどで重要ですね。
サーバー側の要件:安全な保管
パスワードの保管に関しても厳格な要件があります:
必須事項
- 適切なパスワードハッシュスキームの使用
- 最低32ビットのソルトを使用
- ソルト値とハッシュの両方を保管
- オフライン攻撃に耐性のある形式で保管
推奨事項
- 検証者のみが知る秘密鍵を使用した追加の暗号化操作
- この秘密鍵はハッシュ化されたパスワードとは別に保管
アクティベーション秘密(PIN)の要件
スマートフォンのロック解除PINなど、デバイス内で使用される秘密についても要件があります:
- 最低4文字(推奨は6文字以上)
- 完全に数字でも可
- 連続した失敗試行を10回以下に制限
- 一般的なPIN(123456など)のブロックリスト実装を推奨
- AAL3レベルでは、ハードウェア保護環境(セキュアエレメント、TPM、TEEなど)での検証が必須
実装への影響
これらの要件は、サービス提供者とユーザーの両方に影響を与えます:
サービス提供者にとって
- 既存のパスワードポリシーの見直しが必要
- ブロックリスト機能の実装
- パスワードマネージャーサポートの確保
- ユーザー教育の再構築
ユーザーにとって
- より記憶しやすいパスワードの選択が可能に
- パスワードマネージャーの使用が推奨される
- 不要な定期変更から解放される
- より良いユーザー体験
まとめ
NIST SP 800-63B-4は、セキュリティとユーザビリティのバランスを重視した、科学的根拠に基づくパスワードポリシーを提示しています。重要なポイントは以下の通りです:
- 長さが強度を決める – 複雑さよりも長さを優先
- 定期変更は不要 – 侵害の証拠がない限り変更を強制しない
- ブロックリストを活用 – 既知の弱いパスワードを積極的にブロック
- パスワードマネージャーを推奨 – 技術でユーザーを支援
- ユーザー体験を重視 – セキュリティとユーザビリティは両立できる
デジタルアイデンティティの管理において、パスワードは今後も重要な役割を果たし続けるでしょう。NIST SP 800-63B-4の指針に従うことで、より安全で使いやすいシステムを構築できます。
あなたの組織やサービスのパスワードポリシーは、これらの最新基準に沿っていますか?今こそ見直しの時期かもしれません。
(なお、もうちょい専門的に書いたものは別途Short でない YouTube動画で作ろうと思っています。乞うご期待)