【はっしゅかんすう】

ハッシュ関数 とは?

💡 データの「指紋」を作る関数
📌 このページのポイント
ハッシュ関数の仕組み 短い文 "Hello" 長い文章 "Lorem ipsum dolor sit amet..." ファイル image.png ハッシュ 関数 SHA-256 など 固定長ハッシュ値 185f8db32921bd46 固定長ハッシュ値 a94a8fe5ccb19ba6 固定長ハッシュ値 3d4f2bf07dc1be38 同じ入力→必ず同じ出力 | 入力が1文字違うだけで出力は全く異なる
どんなデータも固定長のハッシュ値に変換
ひよこ ひよこ

暗号化とハッシュ化の違いは?

ペンギン先生 ペンギン先生

暗号化は「鍵で元に戻せる」双方向の変換。ハッシュ化は「元に戻せない」一方向の変換。パスワードはハッシュ化して保存する。万が一DBが漏洩しても元のパスワードがわからない。メール本文は暗号化する(受信者が読めないと困る)。「戻す必要があるか」で使い分けるんだよ

ひよこ ひよこ

MD5はなぜダメなの?

ペンギン先生 ペンギン先生

MD5は衝突耐性が破られている。つまり異なる入力で同じハッシュ値を意図的に生成できる。偽の証明書やファイルを作ることが可能。SHA-1も2017年にGoogleが衝突を実証した。現在はSHA-256以上を使うのが標準。ファイルのチェックサムにMD5が使われていることもあるけど、セキュリティ用途には使わないでね

ひよこ ひよこ

パスワードのハッシュはSHA-256でいい?

ペンギン先生 ペンギン先生

ダメだよ。SHA-256は高速すぎて、GPUで毎秒数十億回のハッシュ計算ができる。ブルートフォース攻撃に弱い。パスワード用にはbcrypt、scrypt、Argon2のように「わざと遅くする」ハッシュ関数を使う。さらにソルト(ランダムな値)を付加してレインボーテーブル攻撃を防ぐんだよ

ひよこ ひよこ

ハッシュ関数の使用例は?

ペンギン先生 ペンギン先生

パスワード保存(bcrypt/Argon2)、②ファイル改ざん検知(SHA-256チェックサム)、③デジタル署名(メッセージのハッシュに秘密鍵で署名)、④ブロックチェーン(前ブロックのハッシュを含めて連鎖)、⑤ハッシュテーブルデータ構造)、⑥Git(コミットIDはSHA-1ハッシュ)。IT基盤の至る所で使われているよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ハッシュ関数」って出てきたら「データを固定長の値に一方向変換する関数」と思えればだいたいOK!
📖 おまけ:英語の意味
「Hash Function」 = ハッシュ(細切れにする)関数
💬 Hash(細切れにする)。データを細切れにして混ぜ合わせ、元に戻せなくする関数だよ
← 用語集にもどる