まず結論

ハッシュ関数は任意の長さのデータから固定長の「ダイジェスト(ハッシュ値)」を生成する一方向関数です。逆算不可能・わずかな変更で大きく変わるという性質を利用して、パスワード保護・改ざん検知・デジタル署名に使います。

ハッシュ関数の仕組み

「Hello」
SHA-256
185f8db32921bd...(64文字)
「Hello!」(!追加)
SHA-256
334d016f755cd6...(全く違う)
「100MBの動画ファイル」
SHA-256
同じく64文字
入力がどんな長さでも出力は固定長、1文字違うだけでハッシュ値が大きく変わる

ハッシュ関数の4大性質

① 一方向性

ハッシュ値から元のデータを復元できない。パスワードを平文で保存せずにすむ。

② 衝突困難性

同じハッシュ値を持つ2つの異なる入力を見つけることが計算上困難。

③ 雪崩効果

入力が1ビット変わるだけでハッシュ値が大きく変化する。改ざん検知に有効。

④ 固定長出力

SHA-256は常に256ビット(64文字16進数)。MD5は128ビット(32文字)。

ハッシュの用途

用途仕組み
パスワード保存パスワードをハッシュ化してDBに保存。ログイン時に入力をハッシュ化して比較。平文流出を防ぐ。
ファイル改ざん検知配布前のハッシュ値を公開。ダウンロード後にハッシュ値を比較して一致するか確認。
デジタル署名データのハッシュ値を秘密鍵で暗号化。受信者は公開鍵で復号してハッシュ値を照合。
ブロックチェーン前ブロックのハッシュ値を含めることでチェーンの改ざんを検知。
MD5・SHA-1は脆弱:MD5とSHA-1は衝突が発見済みで安全でない。現在はSHA-256以上を使用することが推奨。

🎯 試験での出方

⚠️ よくある間違い

✍️ 確認クイズ

Q1. ハッシュ関数の「一方向性」が意味することはどれか。
✅ 正解は②。一方向性とは、ハッシュ値(出力)から元のデータ(入力)を逆算することが現実的な計算能力では不可能な性質。パスワード保護に活用される。
Q2. ダウンロードしたファイルの改ざんを確認するために使われる技術はどれか。
✅ 正解は②。配布元が公開したハッシュ値とダウンロード後のファイルのハッシュ値を比較。一致すれば改ざんなし。1バイトでも違えばハッシュ値が大きく変わる(雪崩効果)。
Q3. 現在も安全に使用できるハッシュアルゴリズムはどれか。
✅ 正解は③。MD5とSHA-1は衝突が発見されており現在は使用非推奨。SHA-256(SHA-2ファミリー)以上が推奨されています。
Q4. パスワードのハッシュ保存に「ソルト(salt)」を付加する目的として正しいものはどれか。
✅ 正解は②。ソルトはパスワードをハッシュ化する前にランダムな文字列(ソルト)を付加する手法。同じパスワード「password123」でも、ソルトが異なれば別のハッシュ値になります。これにより、よく使われるパスワードのハッシュ値一覧(レインボーテーブル)による攻撃を無効化できます。
Q5. ハッシュ関数の「衝突(コリジョン)」とは何か。
✅ 正解は③。衝突(コリジョン)とは、異なる入力データA≠BでもHash(A)=Hash(B)になること。任意長の入力を固定長に圧縮するため理論上は必ず存在しますが、安全なハッシュ関数は現実的な計算能力で衝突を見つけることが「衝突困難」であるよう設計されています。MD5は実際に衝突が発見されたため危険とされています。

Sponsor Link