ds security design
DS検定トップ
> ハッシュ関数とは?(コリジョン・ソルトとの違い)【DS検定】
まず結論
ハッシュ関数とは、任意のデータを一定の長さの値(ハッシュ値)に変換する不可逆な関数です。
DS検定では「復元できるのか?」「暗号と何が違うのか?」を判断させる問題がよく出ます。
直感的な説明
ハッシュ関数は「データの指紋」のようなものです。
- 入力:文章、ファイル、パスワードなど
- 出力:決まった長さの文字列(ハッシュ値)
同じデータなら同じハッシュ値になります。
でも、ハッシュ値から元のデータは戻せません。
実務では、
- パスワード保存
- ファイル改ざん検知
- データの同一性確認
などで使われます。
定義・仕組み
ハッシュ関数は次の特徴を持ちます。
- 入力の長さに関係なく、出力は固定長
- 同じ入力 → 同じハッシュ値
- 元データは復元できない(不可逆)
- 異なる入力でも同じ値になる可能性がある
最後の性質が重要です。
コリジョン(衝突)
異なるデータから同じハッシュ値が得られることをコリジョンといいます。
DS検定では
「コリジョンとは何か?」と定義を問われることがあります。
ソルト(salt)
パスワード保存時に、
同じパスワードでも異なるハッシュになるように追加するランダム値です。
目的は:
- レインボーテーブル攻撃の防止
- 同一パスワードの使い回し検知を防ぐこと
DS検定では
「ソルトは暗号化のために使われる」という誤った選択肢が出やすいです。
どんな場面で使う?
使う場面
- パスワードの安全な保存
- ファイル改ざんチェック
- データの一意識別
誤解しやすい場面
- データを復号したいとき
→ それは暗号化技術
ハッシュ関数は「復元」が目的ではありません。
整合性確認が目的です。
よくある誤解・混同
① ハッシュと暗号の混同
❌ ハッシュは元データを復元するための技術
⭕ ハッシュは復元できない
暗号は「復号できる」ことが前提です。
ここが最大の違いです。
② ソルトとストレッチングの混同
- ソルト → 横に混ぜる(ランダム値を追加)
- ストレッチング → 縦に繰り返す(計算を重くする)
DS検定では
「ソルトは計算を重くする技術」と書かれていたら誤りです。
③ MD5は安全という誤解
MD5は現在では安全とは言えません。
コリジョンが作れてしまうことが知られています。
まとめ(試験直前用)
- ハッシュ関数は不可逆
- コリジョン=異なる入力から同じ出力
- ソルト=同じパスワードでも別のハッシュにする仕組み
- 暗号は復号できるが、ハッシュはできない
- 「復元」と書いてあれば基本的に誤り
対応スキル項目(AI利活用スキルシート)
- AIを支えるデータと技術の理解
- セキュリティ・リスク理解
★ AI・データ活用に伴うセキュリティリスクを理解している
★ データの適切な管理・保護の重要性を理解している
🔗 関連記事
- アクセス制御リスト(ACL)とは?ファイル権限の基本を整理【DS検定】
- 中間層で使用される活性化関数とは?(ReLU・シグモイド・ソフトマックスの違い)【DS検定】
- アジャイル開発とは?ウォーターフォール開発との違いを整理【DS検定】
- 分析アプローチ設計とは?(分析プロジェクトを成功させる設計プロセス)【DS検定】
- 必要なデータ・分析手法・可視化を適切に選択する力とは?【DS検定】