最終更新日:2026年8月24日
fe fe-security authentication hash
まず結論
パスワード認証では、パスワードそのものを保存せず、ハッシュ値に変換して保存するのが基本です。
認証時には、入力されたパスワードを同じ方法でハッシュ化し、保存済みのハッシュ値と比較します。
登録時
パスワード
↓ ハッシュ関数
ハッシュ値を保存
認証時
入力パスワード
↓ 同じ方法でハッシュ化
ハッシュ値を作る
↓
保存済みハッシュ値と比較
科目Aでは、まず次の一文で判断します。
保存するのはパスワードそのものではなく、パスワードのハッシュ値。
直感的な説明
パスワードをそのまま保存すると、パスワードファイルやデータベースを不正に見られたときに、利用者のパスワードそのものが知られてしまいます。
そこで、パスワードから「照合用の値」を作って保存します。
元のパスワード
↓
ハッシュ化
↓
照合用の値
ログインするときも同じです。
入力されたパスワードから照合用の値を作り、保存してある値と一致するかを確認します。
保存済み
ハッシュ値 A
入力されたパスワード
↓ ハッシュ化
ハッシュ値 A
一致
→ 認証成功
つまり、システムは元のパスワードを保存していなくても、入力されたパスワードが正しいかを確認できます。
定義・仕組み
登録時
利用者がパスワードを設定すると、その値をハッシュ関数で変換します。
password
↓ ハッシュ関数
ハッシュ値
保存するのは、このハッシュ値です。
認証時
利用者が入力したパスワードを、登録時と同じ方法でハッシュ化します。
その結果と保存済みのハッシュ値を比較します。
| 段階 | 処理 |
|---|---|
| 登録時 | パスワードをハッシュ化して保存 |
| 認証時 | 入力パスワードを同じ方法でハッシュ化 |
| 比較時 | ハッシュ値同士を比較 |
ここで大切なのは、比較する対象はパスワードのハッシュ値同士ということです。
利用者IDは「誰か」を識別する情報であり、パスワードは「本人か」を確認する秘密情報です。
利用者ID
→ 誰かを識別する
パスワード
→ 本人かを確認する
そのため、利用者IDをハッシュ化してパスワードと比較しても、正しい認証にはなりません。
ハッシュ関数そのものの性質は、ハッシュ関数とは?改ざん検知に使う一方向の要約値で整理しています。
科目Aでどう出る?
科目Aでは、パスワードファイルへの不正アクセスを想定し、どの保存方法が適切かを選ばせる問題が出ます。
判断表
| 選択肢の考え方 | 判断 |
|---|---|
| パスワードをハッシュ値で保存し、入力側もハッシュして比較 | 適切 |
| 利用者IDをハッシュ化して比較 | 不適切 |
| パスワードを平文で保存 | 不適切 |
| 平文パスワードを保存して、比較時だけハッシュ化 | 不適切 |
| パスワードを圧縮して保存し、認証時に復元 | 不適切 |
試験中の判断手順
① 保存ファイルに平文パスワードが残るか?
↓
残るなら危険
② 認証時にハッシュ化する対象は何か?
↓
入力されたパスワード
③ 何と何を比較するか?
↓
ハッシュ値同士
この3点で多くの選択肢を切れます。
どんな場面で使う?
パスワードを使うログイン機能で使います。
- Webサービス
- 社内システム
- 会員サイト
- 管理画面
- 業務アプリケーション
重要なのは、認証のために元のパスワードを取り出す必要はないことです。
元のパスワードを知りたい
→ 目的ではない
入力された値が正しいか確認したい
→ ハッシュ値の比較でよい
よくある誤解・混同
平文で保存して、認証時に両方ハッシュすれば安全?
安全ではありません。
認証時にハッシュ化していても、保存ファイルに平文パスワードが残っていれば、不正アクセスされたときにパスワードそのものが知られてしまいます。
保存時に平文
→ NG
比較方法だけでなく、保存時点で平文を残さないことが重要です。
圧縮すれば安全?
圧縮は、データサイズを小さくするための処理です。
認証時に復元できるので、元のパスワードも取り出せてしまいます。
圧縮
→ 小さくする
→ 復元できる
ハッシュ
→ 照合用の値を作る
→ 元に戻すことを前提にしない
したがって、圧縮はパスワード保護の代わりにはなりません。
ハッシュ化と暗号化は同じ?
同じではありません。
| 用語 | 目的 | 元に戻す? |
|---|---|---|
| ハッシュ化 | 照合・改ざん確認など | 基本的に戻さない |
| 暗号化 | 内容を秘密にする | 鍵を使って復号する |
パスワード認証では、元のパスワードを復元する必要がありません。
そのため、ハッシュ値を使って照合します。
ハッシュ化すれば絶対安全?
そこまで単純ではありません。
実際のシステムでは、単純なハッシュ化だけでなく、ソルトやパスワード向けのハッシュ方式を使って、解析を難しくします。
ただし、FE科目Aで今回のような基本問題を解くときは、まず次の対応を押さえます。
平文保存
→ 危険
パスワードのハッシュ値を保存
→ 適切な方向
まとめ(試験直前用)
- パスワードは平文のまま保存しない
- 登録時にパスワードをハッシュ化し、そのハッシュ値を保存する
- 認証時は入力パスワードを同じ方法でハッシュ化する
- 比較するのは、保存済みハッシュ値と入力パスワードから作ったハッシュ値
- 利用者IDをハッシュ化しても、パスワード認証にはならない
- 圧縮は復元できるので、パスワード保護の代わりにはならない
- ハッシュは元に戻すためではなく、照合するために使う
保存
→ パスワードのハッシュ値
認証
→ 入力パスワードをハッシュ化
比較
→ ハッシュ値同士