最終更新日:2026年5月29日
sg sg-security-measures access_control crypto_auth it_security_operations
まず結論
パスワードのハッシュ保存とは、パスワードそのものを保存せず、パスワードから作ったハッシュ値を保存する方法です。
認証時には、利用者が入力したパスワードを同じハッシュ関数で変換し、保存済みのハッシュ値と比較します。
SG試験では、次のように判断します。
- 保存するもの → パスワードそのものではなく、パスワードのハッシュ値
- 認証時に変換するもの → 入力されたパスワード
- 比較するもの → 保存済みハッシュ値と、入力パスワードから作ったハッシュ値
- 比較してはいけないもの → 利用者IDのハッシュ値とパスワードのハッシュ値
直感的な説明
パスワードをそのまま保存するのは、金庫の暗証番号を紙に書いて金庫の横に貼っておくようなものです。
もしデータベースが漏えいすると、攻撃者にログイン用のパスワードそのものを知られてしまいます。
そこで、システムはパスワードそのものではなく、パスワードから作った「照合用の値」を保存します。
利用者がログインするときは、入力されたパスワードから同じ方法で照合用の値を作り、保存済みの値と一致するかを確認します。
つまり、認証する側は、パスワードそのものを保存していなくても、入力されたパスワードが正しいかを確認できるということです。
定義・仕組み
パスワードのハッシュ保存では、次の流れで認証します。
| 段階 | 処理 |
|---|---|
| 登録時 | パスワードをハッシュ関数で変換し、ハッシュ値を保存する |
| 認証時 | 入力されたパスワードを同じ方法でハッシュ化する |
| 比較時 | 保存済みハッシュ値と、入力値から作ったハッシュ値を比較する |
ここで大切なのは、比較対象です。
比較するのは、パスワードのハッシュ値同士です。
利用者IDは、利用者を識別するための情報です。
パスワードは、本人であることを確認するための秘密情報です。
そのため、利用者IDをハッシュ化してパスワードのハッシュ値と比較しても、認証として意味がありません。
情報セキュリティマネジメント試験では、認証やアクセス管理、暗号・ハッシュなども出題範囲に含まれます。公式の出題内容は、IPAの情報セキュリティマネジメント試験 出題範囲で確認できます。
どんな場面で使う?
パスワードのハッシュ保存は、ログイン機能を持つシステムで使われます。
たとえば、次のような場面です。
- 社内システムのログイン
- Webサービスのログイン
- 管理画面の認証
- 会員サイトの認証
- 業務アプリケーションの利用者認証
平文パスワードを保存していると、データベースが漏えいしたときに、利用者のパスワードそのものが流出します。
一方、ハッシュ値として保存していれば、少なくとも保存データから直接パスワードを読むことはできません。
ただし、単純にハッシュ化するだけでは不十分な場合があります。
実務では、ソルトやストレッチングなどを組み合わせて、パスワード解析を難しくします。
よくある誤解・混同
誤解1:パスワードではなく利用者IDをハッシュ化して比較する
これは誤りです。
利用者IDは「誰か」を識別するための情報です。
パスワードは「本人だけが知っている秘密」として確認する情報です。
認証時に確認したいのは、入力されたパスワードが登録時のパスワードと一致するかです。
そのため、認証時にハッシュ化する対象は、利用者IDではなく入力されたパスワードです。
誤解2:平文パスワードを保存して、入力値と直接比較すればよい
平文パスワードを保存すると、データベース漏えい時の被害が大きくなります。
SG試験では、平文パスワード保存は安全な管理とは考えません。
比較のために必要なのは、平文パスワードそのものではなく、ハッシュ値です。
誤解3:ハッシュ化は暗号化と同じである
ハッシュ化は、元に戻すことを前提にしない一方向の変換です。
暗号化は、鍵を使って元のデータに戻せるようにする仕組みです。
| 用語 | 見るポイント |
|---|---|
| ハッシュ化 | 元に戻さず、同じ入力かを照合する |
| 暗号化 | 鍵を使って復号できるようにする |
パスワード認証では、元のパスワードを取り出す必要はありません。
入力されたパスワードから作ったハッシュ値が一致するかを見ればよいからです。
誤解4:ソルトは認証時の比較を不要にする
ソルトは、パスワードハッシュを解析されにくくするために加えるランダムな値です。
ソルトを使っても、認証時には同じ条件でハッシュ値を計算し、保存済みの値と比較します。
- ハッシュ保存:平文パスワードを保存しないための基本
- ソルト:同じパスワードでもハッシュ値を変え、解析を難しくする補強策
SG試験では、ハッシュ保存とソルトを別の役割として整理しておくと、選択肢を切りやすくなります。
確認問題(SG試験対策)
あるWebサービスでは、利用者登録時にパスワードを安全に保存し、ログイン時に本人確認を行いたい。パスワードを用いた認証方法として、最も適切なものはどれか。
- ア. 登録時にパスワードからハッシュ値を作って保存し、ログイン時には入力されたパスワードから同じ方法でハッシュ値を作って照合する。
- イ. 登録時に利用者IDからハッシュ値を作って保存し、ログイン時には入力されたパスワードとその値を照合する。
- ウ. 登録時にパスワードを平文のまま保存し、ログイン時には入力されたパスワードと直接照合する。
- エ. 登録時にパスワードの長さだけを保存し、ログイン時には入力されたパスワードの長さが一致するかを確認する。
▶ クリックして答えと解説を見る(ここを開く)
正解:ア
解説
- ア:適切。保存済みのパスワードハッシュと、入力パスワードから作ったハッシュ値を比較します。
- イ:不適切。利用者IDは識別情報であり、パスワードの正しさを確認する比較対象ではありません。
- ウ:不適切。平文パスワードを保存すると、漏えい時にパスワードそのものが知られてしまいます。
- エ:不適切。長さだけでは本人確認にならず、同じ長さの別の文字列でも通ってしまいます。
👉 判断ポイント
パスワード認証では、保存済みのパスワードハッシュ値と、入力パスワードから作ったハッシュ値を比較します。
まとめ(試験直前用)
- パスワードは、平文ではなくハッシュ値として保存します。
- 認証時には、入力されたパスワードを同じ方法でハッシュ化します。
- 比較するのは、保存済みハッシュ値と入力パスワードから作ったハッシュ値です。
- 利用者IDのハッシュ値とパスワードのハッシュ値を比較しても意味がありません。
- ソルトは、パスワードハッシュの解析を難しくする補強策です。