Skip to the content.

DS検定トップ > ハッシュ関数とは?(コリジョン・ソルトとの違い)【DS検定】

まず結論

ハッシュ関数とは、任意のデータを一定の長さの値(ハッシュ値)に変換する不可逆な関数です。
DS検定では「復元できるのか?」「暗号と何が違うのか?」を判断させる問題がよく出ます。

直感的な説明

ハッシュ関数は「データの指紋」のようなものです。

  • 入力:文章、ファイル、パスワードなど
  • 出力:決まった長さの文字列(ハッシュ値)

同じデータなら同じハッシュ値になります。
でも、ハッシュ値から元のデータは戻せません。

実務では、

  • パスワード保存
  • ファイル改ざん検知
  • データの同一性確認

などで使われます。

定義・仕組み

ハッシュ関数は次の特徴を持ちます。

  • 入力の長さに関係なく、出力は固定長
  • 同じ入力 → 同じハッシュ値
  • 元データは復元できない(不可逆)
  • 異なる入力でも同じ値になる可能性がある

最後の性質が重要です。

コリジョン(衝突)

異なるデータから同じハッシュ値が得られることをコリジョンといいます。

DS検定では
「コリジョンとは何か?」と定義を問われることがあります。

ソルト(salt)

パスワード保存時に、
同じパスワードでも異なるハッシュになるように追加するランダム値です。

目的は:

  • レインボーテーブル攻撃の防止
  • 同一パスワードの使い回し検知を防ぐこと

DS検定では
「ソルトは暗号化のために使われる」という誤った選択肢が出やすいです。

どんな場面で使う?

使う場面

  • パスワードの安全な保存
  • ファイル改ざんチェック
  • データの一意識別

誤解しやすい場面

  • データを復号したいとき
    → それは暗号化技術

ハッシュ関数は「復元」が目的ではありません。
整合性確認が目的です。

よくある誤解・混同

① ハッシュと暗号の混同

❌ ハッシュは元データを復元するための技術
⭕ ハッシュは復元できない

暗号は「復号できる」ことが前提です。
ここが最大の違いです。

② ソルトとストレッチングの混同

  • ソルト → 横に混ぜる(ランダム値を追加)
  • ストレッチング → 縦に繰り返す(計算を重くする)

DS検定では
「ソルトは計算を重くする技術」と書かれていたら誤りです。

③ MD5は安全という誤解

MD5は現在では安全とは言えません。
コリジョンが作れてしまうことが知られています。

まとめ(試験直前用)

  • ハッシュ関数は不可逆
  • コリジョン=異なる入力から同じ出力
  • ソルト=同じパスワードでも別のハッシュにする仕組み
  • 暗号は復号できるが、ハッシュはできない
  • 「復元」と書いてあれば基本的に誤り

対応スキル項目(AI利活用スキルシート)

  • AIを支えるデータと技術の理解
  • セキュリティ・リスク理解
    ★ AI・データ活用に伴うセキュリティリスクを理解している
    ★ データの適切な管理・保護の重要性を理解している

🔗 関連記事


🏠 DS検定トップに戻る