ハッシュ関数とは(全体像)
ハッシュ関数とは、どんな長さのデータを入れても、決まった長さの値(ハッシュ値)に変換してくれる関数のことだ。代表的なのがSHA-256で、入力が1文字でも巨大なファイルでも、決まった長さの値を出す。
大事な特性は3つ。
- 一方向性 … ハッシュ値から、元のデータには戻せない
- 衝突耐性 … 別のデータから、同じハッシュ値が出にくい
- 同じ入力 → 同じ出力 … 同じデータなら、必ず同じハッシュ値になる
ここで一番のポイント。ハッシュ関数は一方向で、元のデータに戻せない。「ハッシュ値から元のデータを復元できる」と思い込むと誤りで、戻せないのが特徴だ。
詳しく:暗号化との違いと、用途
ここが心臓部。ポイントを表で押さえよう。
ハッシュ関数のポイント
| 項目 | やさしい意味 |
|---|---|
| ハッシュ関数 | データを固定長の値に変換する一方向の関数 |
| 一方向性 | ハッシュ値から元データに戻せない |
| 暗号化との違い | 暗号化は戻せる、ハッシュは戻せない |
| 用途 | 改ざん検知・パスワード保存(SHA-256など) |
ここで、暗号化との違いを押さえよう。暗号化は、鍵を使えば元に戻せる(復号できる)。だが、ハッシュは戻せない。
ここで一番のポイント。ハッシュ関数と暗号化は別ものだ。「ハッシュ関数は暗号化と同じだ」と思い込むと誤りで、戻せるか(暗号化)、戻せないか(ハッシュ)が違う。なお、古いMD5やSHA-1は、同じハッシュ値を作れる弱点が見つかり、いまは推奨されない。
ハッシュは、改ざん検知(データが変わるとハッシュ値も変わる)や、パスワード保存(元に戻せないので、そのまま保存するより安全)などに使われる。
わかりやすく言い換えると
身近なたとえで整理しよう。
ハッシュ関数は、「どんな書類も、決まった桁数の『指紋』に変換する機械」のイメージ。指紋から元の書類は作れない。
暗号化との違いは、「暗号化は鍵で元に戻せる、ハッシュは戻せない」こと。つまり、戻せるかどうか。要するに、ハッシュは行きっぱなしだ。
改ざん検知への利用は、「データが少しでも変わると、指紋(ハッシュ値)も変わるので、改ざんに気づける」こと。
試験のツボ
🔴 一番出る:一方向性
①ハッシュ値から、元のデータには戻せない(一方向)
②暗号化は戻せる、ハッシュは戻せない(別もの)
🔴 次に出る:特性と用途
①同じ入力なら、必ず同じ出力になる
②改ざん検知・パスワード保存に使う(代表はSHA-256)
🟡 押さえると安定:古い方式
①MD5・SHA-1は弱点が見つかり、推奨されない
②衝突耐性(別データで同じ値が出にくい)が大事
よくある間違い
①「ハッシュ値から、元のデータを復元できる」→ ✗ ハッシュは一方向で、元のデータには戻せない。
②「ハッシュ関数は、暗号化とまったく同じだ」→ ✗ 暗号化は鍵で戻せる、ハッシュは戻せない。別もの。
③「MD5は、いまも安全な標準だ」→ ✗ MD5やSHA-1は弱点が見つかり、いまは推奨されない。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(ハッシュ関数の正体)
ハッシュ関数に関する次の記述のうち、最も適切なものはどれか。
- 社員の出退勤を記録して、毎月の給与を計算するためのしくみだ
- 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
- どんな長さのデータも固定長の値に変換する、一方向の関数である
- 完成したシステムを宣伝して、より多く売るための広告活動である
解答は 3 である。
ハッシュ関数は、どんなデータも固定長の値に変換する、一方向の関数じゃ。書類を指紋に変える機械と心得るがよい。
選択肢1は給与計算、選択肢2は請求書の事務、選択肢4は広告ゆえ、どれも違うのじゃ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のしくみではない |
| 2 | ✗ | 請求書の事務の話 |
| 3 | ✓ | 固定長の値に変換する一方向関数で正しい |
| 4 | ✗ | 広告活動ではない |
オリジナル問題2(暗号化との違い)
ハッシュ関数と暗号化の違いに関する次の記述のうち、最も適切なものはどれか。
- 暗号化は鍵で元に戻せるが、ハッシュは元には戻せないのである
- 社員の給与を計算するときだけ、違いが出るとされているものだ
- 取引先への請求書の枚数しだいで、決まるとされているのである
- ハッシュも暗号化も、まったく同じものだとされているのである
解答は 1 である。
暗号化は鍵で元に戻せるが、ハッシュは元に戻せないのじゃ。戻せるかどうかが違うと心得るがよい。
選択肢2の給与、選択肢3の請求書、選択肢4の「まったく同じ」は、いずれも違うのじゃ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 暗号化は戻せ・ハッシュは戻せないで正しい |
| 2 | ✗ | 給与計算で違いが出るのではない |
| 3 | ✗ | 請求書の枚数で決まるのではない |
| 4 | ✗ | 戻せるかどうかが違う |
オリジナル問題3(用途)
ハッシュ関数の用途に関する次の記述のうち、最も適切なものはどれか。
- 社員の給与を計算するときだけ、使われるとされているものだ
- 改ざんの検知や、パスワードの保存などに使われるものである
- 取引先への請求書を郵送するときだけ、使われるとされている
- システムの動きが、少しだけ速くなるとされているものである
解答は 2 である。
ハッシュは、改ざん検知やパスワード保存などに使うのじゃ。データが変わると値も変わるゆえ、改ざんに気づけると心得るがよい。
選択肢1の給与、選択肢3の請求書、選択肢4の「速くなる」は、いずれも違うのじゃ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 給与計算のときだけではない |
| 2 | ✓ | 改ざん検知・パスワード保存で正しい |
| 3 | ✗ | 請求書のときだけではない |
| 4 | ✗ | 速くなるものではない |
まとめ
押さえどころ
- 🔴 正体と一方向性 = データを固定長の値(ハッシュ値)に変換する一方向の関数。ハッシュ値から元データには戻せない。
- 🔴 暗号化との違い = 暗号化は鍵で戻せる、ハッシュは戻せない。同じ入力なら必ず同じ出力。
- 🟡 用途と古い方式 = 改ざん検知・パスワード保存に使う(代表はSHA-256)。MD5・SHA-1は弱点が見つかり推奨されない。
次に学ぶ
- デジタル署名 ── 本人確認と改ざん検知のしくみ。ハッシュ関数と公開鍵暗号を組み合わせる。
- 公開鍵暗号(RSA・ECC) ── ペアの鍵を使う方式。ハッシュとあわせて、署名などに使われる。
執筆: SikakuQuest編集部