ナウいパスワード要件

Share

2025年8月、米国国立標準技術研究所(NIST)は認証ガイドライン SP 800-63B Revision 4 を正式公開した。このガイドラインは米国連邦政府機関向けの技術要件だが、世界中のWebサービスやセキュリティ基準に広く影響を与えている。日本でも総務省やIPAがこのガイドラインを参照しており、一般ユーザーにとっても「正しいパスワードの作り方」を知る上で最も信頼性の高い情報源といえる。

本記事では、NIST SP 800-63B-4の原文に基づき、パスワードに関する要件を整理する。各セクション末尾の緑・黄色のボックスは、そこから導かれる一般ユーザー向けの実践ポイントである。

出典

本記事の内容は、以下の公式資料に基づく。

NISTガイドラインにおけるパスワード要件

NIST SP 800-63B-4では、要件の強度を SHALL(必須)、SHOULD(推奨)、SHALL NOT(禁止)の3段階で定義している。以下、原文のSection 3.1.1.2 Password Verifiers に基づいて整理する。

パスワードの長さ

パスワードのセキュリティにおいて、最も重要な要素は長さである。NISTの公式解説ページでは、小文字のみの8文字のパスワードでも約2000億通りの組み合わせがあるが、現代のノートPCは毎秒1000億回の推測が可能であり、8文字では十分に安全とはいえないと説明されている。

NIST SP 800-63B-4における具体的な要件は以下の通りである。

  • パスワードのみで認証する場合(単一要素認証)、最低15文字が必須(SHALL)
  • 多要素認証の一部として使う場合、最低8文字が必須(SHALL)
  • サービス側は最低でも64文字までのパスワードを受け付けるべき(SHOULD)
✅
パスワードは15文字以上を目安にしよう。複数の単語を組み合わせた「パスフレーズ」(例: watashi-no-coffee-wa-amai)なら覚えやすく、十分に長い。パスワードマネージャーで自動生成するなら、さらに長くランダムな文字列が理想的。

文字種の混合要件の禁止

「大文字・小文字・数字・記号を混ぜること」という従来のルールについて、NIST SP 800-63B-4は明確に禁止している。

Verifiers and CSPs SHALL NOT impose other composition rules (e.g., requiring mixtures of different character types) for passwords.
(サービス提供者は、パスワードに対して他の構成規則(異なる文字種の混合の要求など)を課してはならない。)

この判断の背景はAppendix A Strength of Passwords で解説されている。文字種の混合を強制すると、ユーザーは「P@ssw0rd!」のような予測可能なパターンに頼る傾向があり、結果としてパスワードの実効的な強度が下がることが研究で示されている。

NISTの推奨は、複雑さではなく長さによってセキュリティを確保することである。

✅
「大文字・小文字・数字・記号を混ぜなきゃ」と無理に複雑にする必要はない。それよりも長さを優先しよう。ただし、パスワードマネージャーで自動生成する場合は文字種を最大にしたランダムな文字列が最善。

定期的なパスワード変更の禁止

「90日ごとにパスワードを変更すること」のような定期変更ルールについても、NIST SP 800-63B-4は禁止している。

Verifiers and CSPs SHALL NOT require subscribers to change passwords periodically. However, verifiers SHALL force a change if there is evidence that the authenticator has been compromised.
(サービス提供者は、ユーザーにパスワードの定期的な変更を要求してはならない。ただし、認証情報が侵害された証拠がある場合は、変更を強制しなければならない。)

つまり、パスワードを変更すべきなのは漏洩が疑われるときに限られる。定期的な変更は、ユーザーが覚えやすい弱いパスワードを選んだり、末尾の数字を変えるだけの微修正に走る原因となる。

この方針は日本でも採用されている。総務省の「国民のためのサイバーセキュリティサイト」でも、「パスワードの定期的な変更は不要」と明記されている。

✅
「定期的にパスワードを変えましょう」はもう古い。変更が必要なのは漏洩が疑われるときだけ。不審なログイン通知を受けたり、利用サービスで情報漏洩が報告された場合にのみ変更すればよい。

秘密の質問の禁止

「母親の旧姓は?」「最初に飼ったペットの名前は?」といった秘密の質問(KBA: Knowledge-Based Authentication)も禁止されている。

Verifiers and CSPs SHALL NOT prompt subscribers to use knowledge-based authentication (KBA) (e.g., "What was the name of your first pet?") or security questions when choosing passwords.
(サービス提供者は、パスワード選択時に知識ベース認証(KBA)やセキュリティの質問の使用をユーザーに求めてはならない。)

SNSや公開情報から答えが推測可能であるため、認証手段として機能しないというのがNISTの判断である。

⚠️
サービスが秘密の質問を設定させてきた場合、本当の答えを入れるのは危険。ランダムな文字列を回答として設定し、パスワードマネージャーに保存しておくのが安全。

ブロックリストによる照合

NIST SP 800-63B-4は、パスワードの設定・変更時に、そのパスワードをブロックリストと照合することを必須としている。ブロックリストには以下が含まれる。

  • 過去の情報漏洩で流出したパスワード
  • 辞書に載っている単語
  • サービス名やユーザー名など、文脈から推測可能な文字列

該当するパスワードが選択された場合、サービス側はその理由を明示した上で、別のパスワードの選択を求めなければならない。

✅
「password123」や辞書に載っている単語をそのままパスワードにしてはいけない。過去に漏洩したパスワードも危険。自分のパスワードが漏洩していないか、Have I Been Pwned などで確認できる。

パスワードマネージャーの利用

NIST SP 800-63B-4は、パスワードマネージャーの利用を積極的に支持している。

Verifiers SHALL allow the use of password managers and autofill functionality. Verifiers SHOULD permit claimants to use the "paste" function when entering a password to facilitate password manager use when password autofill APIs are unavailable.
(サービス提供者は、パスワードマネージャーとオートフィル機能の使用を許可しなければならない。オートフィルAPIが利用できない場合、パスワード入力時の「貼り付け」機能の使用を許可すべきである。)

サービス側がパスワードの貼り付けを禁止するのは、NISTの方針に反する。パスワードマネージャーは、ユーザーがより強力なパスワードを選択する可能性を高めることが研究で示されている。総務省も同様に、パスワード管理ツールの使用を推奨している。

✅
サービスごとに異なる長いパスワードを頭で覚えるのは無理。ブラウザ内蔵のパスワードマネージャーや専用アプリを使おう。「パスワードの貼り付けを禁止しているサイト」はNISTの方針に反しているが、残念ながらまだ存在する。

パスワードヒントの禁止

パスワードのヒント(パスワードの作り方を示す手がかり)を、未認証の状態でアクセスできる形で保存することは禁止されている。

Verifiers and CSPs SHALL NOT permit the subscriber to store a hint (e.g., a reminder of how the password was created) that is accessible to an unauthenticated claimant.
(サービス提供者は、未認証のユーザーがアクセスできるヒント(パスワードの作成方法に関するリマインダーなど)の保存を許可してはならない。)

受け入れるべき文字種

サービス側は、印刷可能なすべてのASCII文字、スペース、およびUnicode文字をパスワードに受け入れるべきとされている(SHOULD)。これにより、英語以外の言語を母語とするユーザーが、自分の言語でパスフレーズを作成できるようになる。

パスワード以外に実践すべきこと

ここまではNISTガイドラインにおけるパスワード自体の要件を整理した。しかし、パスワードだけでアカウントを守ろうとするのには限界がある。NISTガイドラインやIPA・総務省の推奨から導かれる、パスワード以外の重要な対策を補足する。

パスワードの使い回しをしない

1つのサービスからパスワードが漏洩した場合、同じパスワードを使っている他のすべてのサービスが危険にさらされる。漏洩したID・パスワードの組み合わせを片端から試す「クレデンシャルスタッフィング攻撃」は実際に多くの被害を出しており、IPAも総務省もパスワードの使い回しをしないことを強く推奨している。

パスワードマネージャーを使えば、サービスごとに一意のパスワードを管理する負担はほぼなくなる。

多要素認証(MFA)を有効にする

NIST SP 800-63B-4では、パスワードのみの認証(AAL1)よりも多要素認証(AAL2以上)が推奨されている。AAL2では、パスワードに加えて物理的な認証器(セキュリティキー、スマートフォンのOTPアプリなど)が必要となる。

特に FIDO2/パスキー のようなフィッシング耐性のある認証方式は、NISTが求める最も強力な保護を提供する。対応サービスでは積極的に有効化したい。

✅
どれほど強いパスワードを設定しても、パスワード単体ではフィッシング攻撃を防げない。多要素認証を有効にすることで、仮にパスワードが漏洩しても不正ログインを防止できる。対応しているサービスでは必ず有効にしよう。

まとめ

NIST SP 800-63B-4が示す方向性を一言でまとめると、「複雑さから長さへ」、「定期変更から漏洩時変更へ」、「人間の記憶力への依存からツール活用へ」 という転換である。

かつて常識とされていた「英大文字・小文字・数字・記号を混ぜた8文字以上のパスワードを90日ごとに変更する」というルールは、現在のNISTガイドラインでは明確に否定されている。

一般ユーザーとして最も効果的な対策をまとめると、以下の3点に集約される。

  1. パスワードマネージャーを導入する。 サービスごとに十分に長い一意のパスワードを生成・管理する。
  2. 多要素認証を有効にする。 対応するサービスではパスキーやOTPアプリを設定する。
  3. 漏洩時にのみパスワードを変更する。 定期的な変更は不要。利用サービスで情報漏洩が報告されたときに速やかに対応する。

Read more

Dependabotの対応が面倒なのでRenovateを導入する

Dependabotくんはある程度の依存関係の更新を通知してくれるが、山のようにprojectを抱えているとなんとも痒いところに手が届かない。 ということで、Renovateを使ってみる。 Build software better, togetherGitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.GitHub ここからGitHub Appを入れる。 あとは、指示に従ってポチポチするだけで、超かんたんだった。 感想 自動化最高。

By Sakashita Yasunobu

nodejsのバグを見つけたのでPRを投げてみた

概要 要するに、node --testで特定のバイナリを標準出力に書くと、テストランナーが固まったり、異常終了したりするバグです。 バグ自体は既知のものだったようで、修正がされていました。 test_runner: infinite loop in FileTest#drainRawBuffer when child stdout contains FF 0F followed by large size bytes · Issue #62693 · nodejs/nodeVersion v25.9.0 (also reproduced on v24.14.1 LTS, v22.21.0 LTS, v23.4.0) Platform Darwin 25.

By Sakashita Yasunobu
青空文庫のParser

青空文庫のParser

青空文庫のParserを作ってます。 GitHub - P4suta/aozora: Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks.Pure-functional Rust parser for 青空文庫記法 (Aozora Bunko notation): ルビ, 傍点, 縦中横, 外字, 返り点, indent containers, page breaks. - P4suta/aozoraGitHubP4suta Rustで作ってますが、配布物はcargoのほかにnpm/pypiでも入手できます Documentation * Playground — try it in

By Sakashita Yasunobu