ハッシュ関数(SHA-2・SHA-3)とは?3つの性質と代表

公開: 更新: カテゴリ: セキュリティ系

30秒で結論

ハッシュ関数とは(全体像)

ハッシュ関数は、入れたデータを決まった長さの短い値に変換するしくみ。この出てきた値をハッシュ値といい、データの「指紋」のようなものだと考えるとわかりやすい。

ポイントは、同じデータからは必ず同じ指紋ができ、少しでも中身が変わると指紋がまるごと変わること。だから「データが書き換えられていないか」のチェックに使える。

暗号と似ているが、決定的に違うのは元に戻せない(一方向)という点。暗号は鍵で元に戻すが、ハッシュは戻せない。


詳しく:3つの性質と代表を押さえる

ここが心臓部。ハッシュ関数の大事な性質は3つ。

ハッシュ関数の3つの性質

性質意味
一方向性指紋(ハッシュ値)から、元のデータは復元できない
衝突耐性違うデータが、たまたま同じ指紋になることが起きにくい
雪崩効果入力を1ビット変えるだけで、指紋がまるごと変わる

代表的なハッシュ関数と、その立ち位置は次のとおり。

おもなハッシュ関数

名前立ち位置
SHA-2(SHA-256など)いまの主流・推奨。SSL証明書やビットコインで使用
SHA-3SHA-2の後継候補(2015年に標準化)
MD5・SHA-1同じ指紋を作る抜け道が見つかり廃止

言葉を噛み砕いておく。

わかりやすく言い換えると

つまり、ハッシュ関数は書類の「指紋」を作る機械にたとえるとスッと入る。

どんなに分厚い書類でも、機械に通すと決まった長さの指紋が出てくる。同じ書類なら指紋も同じ。でも、1文字でも書き換えると指紋がガラッと変わる(雪崩効果)ので、改ざんがすぐ見つかる。

指紋から元の書類は作れない(一方向)し、違う書類が同じ指紋になることもまず起きない(衝突耐性)。MD5やSHA-1は、この「指紋がかぶる抜け道」が見つかってしまったので引退した、というわけだ。


試験のツボ

🔴 一番出る:ハッシュ関数の3つの性質

①一方向性=指紋から元データは戻せない

②衝突耐性=違うデータが同じ指紋になりにくい/雪崩効果=1ビットで全変化

🔴 次に出る:主流と廃止

①主流はSHA-2(SHA-256)・後継候補にSHA-3

②MD5・SHA-1は衝突が見つかり廃止

🟡 押さえると安定:パスワードは指紋で保存し、bcryptやArgon2(ソルト+ストレッチング)を使う


よくある間違い

「ハッシュ値から元のデータを復元できる」→ ✗  ハッシュは一方向で、元には戻せない。鍵で戻せる暗号とはここが違う。

「MD5やSHA-1はいまも安全な主流」→ ✗  どちらも衝突が見つかり廃止。いまの主流はSHA-2(SHA-256)。

「パスワードはそのまま保存すればよい」→ ✗  そのままではなく指紋で保存し、bcryptやArgon2を使うのが基本。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(ハッシュ関数の性質)

📝 オリジナル問題 1 ハッシュ関数の性質

ハッシュ関数に関する次の記述のうち、正しいものはどれか。

  1. ハッシュ関数は一方向で、指紋(ハッシュ値)から元のデータを復元することはまずできないしくみである
  2. ハッシュ関数は鍵さえあれば指紋から元のデータをたやすく完全に復元できる、暗号と同じしくみとされる
  3. ハッシュ関数は入力を1ビット変えても指紋はまったく変わらず、つねに同じ値を返すしくみとされている
  4. ハッシュ関数は入力のデータが大きいほど指紋も長くなり、長さがそのつど変わってしまうしくみとされる
ピーエムロボ
ピーエムロボ 解答・解説

解答は 1 である。

ハッシュ関数は一方向で、指紋(ハッシュ値)から元のデータは復元できない。シュレッダーにかけた紙を戻せないのと同じイメージだ。

選択肢2は「鍵で復元できる」が誤りで、それは暗号の話。選択肢3は雪崩効果(1ビットで全変化)に反する誤り。選択肢4は「指紋の長さが変わる」が誤りで、ハッシュ値は決まった長さになる。

選択肢判定理由
1一方向で元に戻せないで正しい
2鍵で戻せるのは暗号
31ビット変えると指紋は全変化する
4指紋は決まった長さになる

オリジナル問題2(主流と廃止)

📝 オリジナル問題 2 主流と廃止されたハッシュ

ハッシュ関数の種類に関する次の記述のうち、正しいものはどれか。

  1. MD5とSHA-1はいまも最も安全なハッシュ関数であり、SSL証明書の標準として広く推奨されているとされる
  2. ハッシュ関数はSHA-256ただ一種類しか存在せず、SHA-3やSHA-1といった別の方式は定められていないとされる
  3. いまの主流はSHA-2(SHA-256など)で、MD5やSHA-1は衝突が見つかったため廃止された使い方とされている
  4. ハッシュ関数はどれを選んでも安全性は完全に同じで、古い方式と新しい方式に違いはまったくないとされている
ピーエムロボ
ピーエムロボ 解答・解説

解答は 3 だ。

いまの主流はSHA-2(SHA-256など)で、後継候補にSHA-3がある。MD5やSHA-1は、違うデータが同じ指紋になる衝突が見つかったため廃止された。

選択肢1は「MD5・SHA-1が最も安全」が誤り。選択肢2は「SHA-256だけ」が誤りで、複数ある。選択肢4は「どれも同じで違いがない」が誤りだ。

選択肢判定理由
1MD5・SHA-1は衝突が見つかり廃止
2SHA-3など複数の方式がある
3主流はSHA-2・MD5/SHA-1は廃止で正しい
4古い方式と新しい方式で安全性が違う

オリジナル問題3(パスワードの保存)

📝 オリジナル問題 3 パスワードの保存

パスワードの保存に関する次の記述のうち、正しいものはどれか。

  1. パスワードは入力されたそのままの文字を保存するのが最も安全で、変換などはいっさい不要とされている
  2. パスワードは指紋(ハッシュ値)で保存し、ソルトやストレッチングを使うbcryptやArgon2が用いられる
  3. パスワードの保存にはECBモードの暗号を使うのが現代の標準で、ハッシュ関数はまったく使われないとされているのだ
  4. パスワードは保存せずに毎回口頭で本人へ伝える運用が世界標準で、システムに記録してはならないとされる
ピーエムロボ
ピーエムロボ 解答・解説

解答は 2 だ。

パスワードは、そのままではなく指紋(ハッシュ値)で保存する。さらにソルト(各人ごとの隠し味)とストレッチング(繰り返して時間をかける)を組み合わせるbcryptやArgon2が使われる。

選択肢1の「そのまま保存」は危険で誤り。選択肢3のECBはAESのモードの話で、パスワード保存の標準ではない。選択肢4の「口頭で伝える運用が世界標準」も誤りだ。

選択肢判定理由
1そのまま保存は危険
2指紋で保存・bcrypt/Argon2で正しい
3ECBはAESのモードで別の話
4口頭運用が標準という事実はない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る