暗号(戻せる)とは別に、元に戻せない変換がハッシュ。データの「指紋」を作る技術です。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
これは何?
どんな長さのデータも、決まった長さの値(指紋)に変換します。
- 一方向 — データ → 指紋 は作れるが、指紋 → データ には戻せない
- 同じ入力は同じ指紋 — 照合に使える
- 少しでも違えば全く違う指紋 — 改ざんが一目で分かる
代表は SHA-256 など。
アニメーション『ハッシュ=データの指紋』を開く
この部分をもっと深く(中級)
安全なハッシュは、次を満たします。
- 一方向 — データ → 指紋は作れるが、指紋 → データには戻せない
- 衝突困難 — 同じ指紋になる別のデータを、現実的に作れない
- 固定長 — どんな長さの入力も、決まった長さの指紋に
代表は SHA-2(SHA-256)。MD5・SHA-1 は衝突が見つかっており非推奨です。
何に使う?
- 改ざん検知 — 受け取ったデータの指紋を照合し、書き換えを見抜く
- パスワード保管 — パスワードそのものでなく、指紋を保存(漏れても元が分かりにくい)
- 重複検出・整合性 — ファイルが同じかを指紋で比較
暗号化と違い「戻す」用途ではなく、「同じか・変わっていないか」を確かめる道具です。
この部分をもっと深く(中級)
「同じか・変わっていないか」を確かめる道具として、用途が分かれます。
- 改ざん検知・整合性 — 受け取ったデータの指紋を照合。重複排除にも
- パスワード保管 — 高速ハッシュ(SHA-256単体)はNG。bcrypt/scrypt/argon2のような専用関数+ソルトを使う
- HMAC — 秘密鍵を組み合わせた鍵付きハッシュ。「本人が作った・改ざんなし」を確かめる(真正性)
アニメーション『雪崩効果とソルト(レインボーテーブル無効化)』を開く
⚠️ 気をつける
- 暗号化ではない — 秘密にするためではない(戻せない)
- パスワードはソルト付き — そのままハッシュだと使い回し攻撃に弱い。個別のソルトを足す
- 古い方式 — MD5・SHA-1は弱い(衝突が見つかった)。SHA-2以降を使う
この部分をもっと深く(中級)
- 暗号化ではない — 秘密にするためではない(戻せない)
- パスワードに高速ハッシュ+ソルト無し — 総当たり・レインボーテーブルに弱い
- 古い方式 — MD5・SHA-1は使わない(衝突が現実的)
- 切り詰め — 指紋を短く切ると衝突しやすくなる
関連する知識
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. ハッシュが暗号化と決定的に違う点は?
問2. ハッシュの性質として正しいのは?
問3. ハッシュが改ざん検知に使えるのはなぜ?
問4. 同じデータを2回ハッシュすると、その指紋はどうなる?
問5. パスワードを「そのまま」ではなく指紋(ハッシュ)で保存する利点は?
問6. 現在よく使われる代表的なハッシュはどれ?
問7. どんな長さのデータも決まった長さに変換した「指紋」を何と呼ぶ?
問8. パスワードをハッシュで保存するとき、使い回し攻撃対策として利用者ごとに足す値を何と呼ぶ?