パスワード
パスワード とは何ですか?
パスワード利用者がシステムに対して身元を証明するために提示する秘密の文字列。伝統的に単一要素認証の主流。
パスワードは最も古くからあり、現在でも広く使われている認証方式です。利用者が知っている秘密を入力すると、サーバーはそれ(適切な実装では塩付きハッシュ)を保存値と照合します。魅力は単純さにありますが、入力できる共有秘密は、フィッシング・推測・使い回し・漏えいの対象にもなり得ます。
平文保存が致命的である理由
サーバーは生のパスワードを決して保存してはなりません。RockYou の漏えい(2009 年)では約 3200 万件のパスワードが平文で流出し、そのリストは今日でもパスワード推測辞書の元になっています。正しい方法は、低速でメモリを多く消費する関数——bcrypt、scrypt、Argon2id——を用いてユーザーごとに塩付きハッシュを保存することです。これによりデータベースが盗まれても安価には復元できず、同じパスワードでも同一のハッシュにはなりません。別の秘密値「ペッパー(pepper)」や適応的なワークファクターは、Hashcat などのツールによるオフライン解読のコストを引き上げます。
攻撃手法
代表的な攻撃には、クレデンシャルスタッフィング(他の漏えい由来のユーザー名/パスワード組を再利用)、パスワードスプレー(ロックアウトを避けるため少数の一般的なパスワードを多数のアカウントに試行)、総当たり、キーロギングがあります。秘密が再利用可能なため、一度のフィッシングで永続的なアクセスを許すことがあります。
NIST の最新の推奨
NIST SP 800-63B(第 4 版、2024〜2025 年)は最低 8 文字——パスワードが唯一の要素の場合は 15 文字——を定め、最大 64 文字を許容し、送信されたパスワードを漏えいリストおよび一般的な単語のブロックリストと照合することを求めています。組織は、恣意的な構成規則(記号や大小文字の強制)や、侵害の証拠がないままの定期的な変更を課してはならないと明記されています。恒久的な解決策は、レート制限、MFA、そしてフィッシング耐性のある passkey(FIDO2/WebAuthn)への移行です。
flowchart TD
A[利用者がユーザー名+パスワードを入力] --> B[サーバーが保存レコードを取得<br/>ソルト+ハッシュ]
B --> C["Argon2id / bcrypt を計算<br/>hash(パスワード+ソルト)"]
C --> D{保存値と<br/>一致するか?}
D -->|不一致| E[拒否しレート制限<br/>カウンタを加算]
D -->|一致| F{MFA / passkey<br/>が必要か?}
F -->|必要| G[第 2 要素を検証]
F -->|不要| H[セッションを付与]
G --> H
B --> I[設定/変更時に漏えい<br/>ブロックリストと照合]● 例
- 01
メールアカウントにユーザー名とパスワードを入力してサインインする。
- 02
Web アプリがユーザーごとのソルト付き bcrypt ハッシュとしてパスワードを保存する。
● よくある質問
パスワード とは何ですか?
利用者がシステムに対して身元を証明するために提示する秘密の文字列。伝統的に単一要素認証の主流。 サイバーセキュリティの ID とアクセス カテゴリに属します。
パスワード とはどういう意味ですか?
利用者がシステムに対して身元を証明するために提示する秘密の文字列。伝統的に単一要素認証の主流。
パスワード からどのように防御しますか?
パスワード に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
パスワード の別名は何ですか?
一般的な別名: パスワード認証, 共有秘密。