ハッシュ関数とは?
ハッシュ関数とは、任意長のデータから固定長の値を求める一方向の関数。同じ入力からは必ず同じ値が出る一方、値から元データを復元できず、同じ値になる別のデータも見つけにくい。改ざん検出とディジタル署名の前処理に使われる。
エンベデッドシステムスペシャリスト試験の過去問では2回出題されています(2017年度〜2021年度)。
はっしゅかんすう
ハッシュ関数の意味
任意長のデータから固定長の値を求める一方向の関数。同じ入力からは必ず同じ値が出る一方、値から元データを復元できず、同じ値になる別のデータも見つけにくい。改ざん検出とディジタル署名の前処理に使われる。
ハッシュ関数の具体例
ファームウェアの更新イメージ全体のハッシュ値を求め、あらかじめ焼き込んだ公開鍵で検証した署名と突き合わせる。数百キロバイトのイメージでも比較対象は32バイトで済むため、起動時の検証時間とROM消費を抑えられる。
ハッシュ関数は試験でどう引っ掛けられる?
ハッシュだけでは「誰が作ったか」を保証できない。攻撃者はデータとハッシュを両方差し替えられるため、鍵を伴う署名や認証符号と組み合わせて初めて改ざん検出になる点が繰り返し問われる。
ハッシュ関数と関連する用語
ハッシュ関数が出た過去問
ハッシュ表の理論的な探索時間を示すグラフはどれか。ここで、複数のデータが同じハッシュ値になることはないものとする。
正解:データ1個当たりの探索時間が、表の中のデータの個数に関わらず一定(横一直線)のグラフ
要点:衝突なしのハッシュ表は件数によらず探索時間が一定
ハッシュ表は、キーをハッシュ関数で計算して格納位置を直接求める方式なので、格納されているデータの数を1件ずつ調べる必要がない。衝突が起きない前提であれば、1件を探すのに要する時間は表の中の件数に左右されず一定になる。すなわち計算量はO(1)で、グラフは横軸に対して水平になる。
出典:平成29年度 春期 エンベデッドシステムスペシャリスト試験 am2 問8(IPA)ハッシュ表の理論的な探索時間を示すグラフはどれか。ここで、複数のデータが同じハッシュ値になることはないものとする。
正解:横軸を表の中のデータの個数、縦軸をデータ1個当たりの探索時間としたとき、データの個数によらず探索時間が一定(水平)のグラフ
要点:衝突がなければハッシュ表の探索時間は件数によらず一定
ハッシュ表では、キーにハッシュ関数を適用して格納位置を直接計算するため、表を順に走査する必要がない。衝突が起きない前提なら、探索はハッシュ値の計算と1回のアクセスで完了するので、データ件数が増えても1件当たりの探索時間は変わらない。計算量でいえばO(1)であり、グラフは横軸に平行な直線になる。
出典:令和3年度 秋期 エンベデッドシステムスペシャリスト試験 am2 問10(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。