対象試験と出題頻度
ハッシュ関数は、情報セキュリティマネジメント試験、基本情報技術者試験、応用情報技術者試験で出題される最重要テーマです。
頻出度は「S(超重要)」で、デジタル署名やパスワード保存の仕組みと絡めて毎回のように問われます。暗号化との違いを明確にしておきましょう。
詳細をクリックして確認
情報セキュリティマネジメント
基本情報技術者
応用情報技術者
★★★★★
ランクS(超重要)
用語の定義
ハッシュ関数(Hash Function)とは、一言で言うと「任意の長さのデータを入力すると、固定長の値(ハッシュ値)を出力する一方向関数」のことです。出力されるハッシュ値は「メッセージダイジェスト」とも呼ばれます。
イメージとしては、「データの指紋」を作る機能だと考えてください。人間の指紋が一人ひとり違うように、データごとに固有のハッシュ値が生成されます。元のデータが1ビットでも変われば、ハッシュ値は全く異なる値になります。
📊 ハッシュ関数の基本情報
| 項目 | 内容 |
|---|---|
| 入力 | 任意の長さのデータ(1バイトでも1GBでも可) |
| 出力 | 固定長のハッシュ値(メッセージダイジェスト) |
| 最大の特徴 | 一方向性(ハッシュ値から元データを復元できない) |
| 代表的なアルゴリズム | SHA-256、SHA-3、MD5(非推奨) |
| 主な用途 | 改ざん検知、デジタル署名、パスワード保存 |
解説
情報処理試験を勉強していると、「ハッシュ関数って暗号化と何が違うの?」と混乱しがちです。結論から言うと、暗号化は「元に戻せる」、ハッシュ関数は「元に戻せない」という決定的な違いがあります。
この違いは試験で頻出なので、しっかり理解しておきましょう。
ハッシュ関数の3つの重要な性質
ハッシュ関数には、セキュリティ上重要な3つの性質があります。試験ではこれらの性質を問う問題が出ることがあります。
一方向性(原像計算困難性)とは、ハッシュ値から元のデータを求めることが計算上不可能であるという性質です。パスワードをハッシュ化して保存する際、この性質により、ハッシュ値が漏洩しても元のパスワードは復元できません。
衝突耐性(強衝突耐性)とは、同じハッシュ値を持つ2つの異なるデータを見つけることが計算上不可能であるという性質です。この性質により、デジタル署名の安全性が保たれます。
第二原像計算困難性(弱衝突耐性)とは、あるデータが与えられたとき、同じハッシュ値を持つ別のデータを見つけることが計算上不可能であるという性質です。改ざん検知の信頼性を担保します。
📊 暗号化とハッシュ関数の違い(試験最頻出)
| 項目 | 暗号化 | ハッシュ関数 |
|---|---|---|
| 元に戻せるか | 可能(復号できる) | 不可能(一方向) |
| 鍵の使用 | 必要 | 不要 |
| 出力サイズ | 入力に応じて変化 | 常に固定長 |
| 主な目的 | 機密性の確保 | 完全性の確認(改ざん検知) |
| 代表例 | AES、RSA | SHA-256、SHA-3 |
💡 ハッシュ関数の具体例
「Hello」という文字列をSHA-256でハッシュ化すると、「185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969」という64桁の16進数(256ビット)になります。「Hello!」(!を追加)のハッシュ値は「33…」で始まる全く別の値になります。入力が1文字変わるだけで、出力は完全に変わります。これを「雪崩効果」と呼びます。
代表的なハッシュアルゴリズム
SHA-256は、現在最も広く使われているハッシュアルゴリズムです。SHA-2ファミリーの一つで、256ビット(64桁の16進数)のハッシュ値を出力します。SSL/TLS証明書、ビットコインのマイニング、ファイルの整合性検証など、幅広い分野で使用されています。
SHA-3は、SHA-2の後継として2015年に標準化された最新のアルゴリズムです。SHA-2とは異なる設計(Keccak)を採用しており、SHA-2に脆弱性が見つかった場合の代替として用意されています。
MD5は、かつて広く使われていたアルゴリズムですが、現在は衝突攻撃が可能であることが判明しており、セキュリティ用途では非推奨です。ファイルのチェックサム(破損検知)など、セキュリティが問題にならない場面では今でも使われることがあります。
📊 代表的なハッシュアルゴリズム(試験対策)
| アルゴリズム | 出力長 | 現在の評価 |
|---|---|---|
| SHA-256 | 256ビット | ◎ 現在の標準、推奨 |
| SHA-3 | 可変(224/256/384/512) | ◎ 最新、SHA-2の代替 |
| SHA-1 | 160ビット | × 脆弱、非推奨 |
| MD5 | 128ビット | × 脆弱、セキュリティ用途は非推奨 |
ハッシュ関数の用途
デジタル署名では、文書全体ではなくハッシュ値に対して署名を行います。これにより、署名処理が高速になり、署名データも小さくなります。受信者は同じハッシュ関数で文書のハッシュ値を計算し、署名を検証します。
パスワードの保存では、パスワードそのものではなくハッシュ値を保存します。ログイン時は入力されたパスワードをハッシュ化し、保存されているハッシュ値と比較します。データベースが漏洩しても、一方向性により元のパスワードは復元できません。
改ざん検知では、ファイルやメッセージのハッシュ値を事前に計算しておき、後で同じハッシュ値になるか確認します。1ビットでも改ざんされていれば、ハッシュ値は全く異なる値になるため、改ざんを検知できます。
⚠️ 試験での注意点
ハッシュ関数は「暗号化」ではありません。「ハッシュ関数でデータを暗号化する」という選択肢は誤りです。また、ハッシュ関数は「鍵を使わない」点も重要です。
同じデータを同じハッシュ関数で処理すれば、誰がやっても同じハッシュ値になります。「ハッシュ関数で機密性を確保する」という選択肢も誤りです。
試験ではこう出る!
ハッシュ関数は全試験区分で超頻出です。「暗号化との違い」「一方向性」「改ざん検知やデジタル署名との関係」を押さえておけば、ほとんどの問題に対応できます。試験ではここまででOKです。
【重要キーワード】
- ハッシュ関数 / メッセージダイジェスト
- 一方向性(元に戻せない)
- 固定長の出力
- 衝突耐性
- SHA-256(現在の標準)、MD5(非推奨)
- 改ざん検知、デジタル署名、パスワード保存
試験問題で「任意の長さのデータから固定長の値を生成」「元のデータを復元できない一方向関数」「改ざん検知に使用」という記述があれば、それは「ハッシュ関数」です。
📝 IPA試験での出題ポイント
ハッシュ関数の問題は、「暗号化との違い」「デジタル署名での使い方」「パスワード保存での使い方」の3パターンが定番です。最も重要なのは「一方向性(元に戻せない)」という特徴です。
また、デジタル署名では「メッセージのハッシュ値に対して署名する」という点を覚えておきましょう。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. ハッシュ関数に関する説明として、最も適切なものはどれでしょうか?
- A. 鍵を使ってデータを暗号化し、同じ鍵で復号できる双方向の関数
- B. 任意の長さのデータから固定長のハッシュ値を生成する一方向関数で、改ざん検知やデジタル署名に使用される
- C. 公開鍵と秘密鍵のペアを使って、データの機密性を確保する暗号方式
正解と解説を見る
正解:B
解説:
ハッシュ関数は、任意の長さのデータを入力すると、固定長のハッシュ値(メッセージダイジェスト)を出力する一方向関数です。「一方向」とは、ハッシュ値から元のデータを復元できないという意味です。この性質を利用して、改ざん検知、デジタル署名、パスワードの安全な保存などに使用されます。代表的なアルゴリズムにはSHA-256、SHA-3があります。
選択肢Aは「共通鍵暗号方式」の説明です。選択肢Cは「公開鍵暗号方式」の説明であり、どちらもハッシュ関数とは異なります。ハッシュ関数は鍵を使わず、また復号もできません。