パスワードのソルト
利用者のパスワードをハッシュ値で保存する際に,ソルトを付加する目的として,適切なものはどれか。
- ア同じパスワードでも利用者ごとに異なるハッシュ値となるようにし,事前計算した対応表を用いた解析を困難にする。
- イハッシュ値から元のパスワードを復元できるようにし,パスワードを忘れた利用者に再通知できるようにする。
- ウハッシュ値の計算を高速化し,ログイン時の認証処理の負荷を軽減する。
- エ通信経路上でパスワードを暗号化し,ログイン時の盗聴を防止する。
正解と解説を見る
正解 ア
この問題の基礎知識
- ハッシュ関数は一方向性をもち,ハッシュ値から元のデータを求めることは困難である。パスワードをハッシュ値で保存するのは,漏えい時に平文が直接知られないようにするためである。
- レインボーテーブルは,多数のパスワード候補とハッシュ値の対応を事前に計算しておき,ハッシュ値から元のパスワードを効率よく探す手法である。
- ソルトは利用者ごとに異なるランダムな値であり,ストレッチングはハッシュ計算を多数回繰り返して 1 回の照合にかかる時間を増やす手法である。
- 通信経路上の盗聴への対策は TLS などによる通信の暗号化であり,保存するパスワードの保護とは別の対策である。
ア同じパスワードでも利用者ごとに異なるハッシュ値となるようにし,事前計算した対応表を用いた解析を困難にする。正解
利用者ごとに異なるランダムなソルトを付加してからハッシュ化すると,同じパスワードでもハッシュ値が異なる。そのため,レインボーテーブルなどの事前計算による解析が困難になる。
イハッシュ値から元のパスワードを復元できるようにし,パスワードを忘れた利用者に再通知できるようにする。
ハッシュ関数は一方向性をもつので,ソルトを付加しても元のパスワードは復元できない。パスワードを忘れた利用者には再設定の手続を提供するのが適切である。
ウハッシュ値の計算を高速化し,ログイン時の認証処理の負荷を軽減する。
ソルトは計算の高速化を目的としない。むしろ,総当たりによる解析を遅らせるためにハッシュ計算を繰り返すストレッチングと併用することが推奨される。
エ通信経路上でパスワードを暗号化し,ログイン時の盗聴を防止する。
通信経路上の盗聴防止は TLS などによる通信の暗号化の役割である。ソルトはサーバに保存するハッシュ値の解析を困難にするためのものである。
検証用の出典出典照合済み
NIST SP 800-63B-4 Digital Identity Guidelines: Authentication and Authenticator Management / OWASP Password Storage Cheat Sheet照合の根拠(4 件)
- ア(正解): 同じパスワードでもソルトが異なればハッシュ値が異なり,レインボーテーブル等の事前計算による解析を防ぐ
Salting also protects against an attacker's pre-computing hashes using rainbow tables or database-based lookups. Finally, salting means that it is impossible to determine whether two users have the same password without cracking the hashes, as the different salts will result in different hashes even if the passwords are the same.
OWASP Password Storage Cheat Sheet · Salting(新しいタブで開きます) - イ: ハッシュは一方向関数なので元のパスワードは復元できない
Because hashing is a one-way function (i.e., it is impossible to "decrypt" a hash and obtain the original plaintext value), it is the most appropriate approach for password validation.
OWASP Password Storage Cheat Sheet · Background (Hashing vs Encryption)(新しいタブで開きます) - ウ: ソルトとコストファクタを用いるパスワードハッシュは推測を高コストにするためのもので,高速化が目的ではない
Password hashing schemes take a password, a salt, and a cost factor as inputs and generate a password hash. Their purpose is to make each password guess more expensive for an attacker who has obtained a hashed password file,
NIST SP 800-63B-4 · Section 3.1.1.2(新しいタブで開きます) - エ: 通信経路上の保護は暗号化された認証済みの保護チャネルの役割であり,ソルトの目的ではない
Verifiers and CSPs SHALL use approved encryption and an authenticated protected channel when requesting passwords.
NIST SP 800-63B-4 · Section 3.1.1.2(新しいタブで開きます)