この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ウ

解説

ハッシュ関数 SHA-256 で実現できるセキュリティ機能を問う問題です。状況を整理すると、利用者はファイル A と、ファイル A に SHA-256 を適用して算出した値 B を受信しており、値 B 自体は電話で直接確認済みのため改ざんされていないことが保証されています。ハッシュ関数には「同じ入力からは必ず同じ出力が得られる」「入力が1ビットでも変われば出力が大きく変わる」「出力から入力を逆算できない」という性質があります。したがって利用者は、受信したファイル A に自分で SHA-256 を適用して値を算出し、それを信頼できる値 B と比較することで、ファイル A が通信途中で改ざんされていないかどうか(完全性)を検証できます。ウが正解です。一方、ハッシュ値だけでは「誰が作成したか」という真正性は確認できません。作成者の確認にはディジタル署名(秘密鍵による署名)が必要です。ハッシュ=完全性の検証、署名=完全性+真正性、という機能の違いを区別できるかが本問の狙いです。

なぜ他の選択肢は違うのか

選択肢 ア
値 B に SHA-256 を適用してもディジタル署名は算出できません。ディジタル署名の作成には作成者の秘密鍵による暗号化処理が必要であり、ハッシュ関数だけでは署名は生成できないからです。また本問の構成にはそもそも鍵ペアが登場しないため、送信者が作成者本人かどうかという真正性の確認は実現できません。ハッシュと署名の機能の混同を誘う選択肢です。
選択肢 イ
選択肢アと同様に、ハッシュ関数の適用だけではディジタル署名を算出することはできず、署名の検証もできません。提供者が作成者本人かどうかを確認するには、作成者の秘密鍵で作られた署名を作成者の公開鍵で検証する公開鍵暗号の仕組みが必要です。本問の状況(ハッシュ値の比較のみ)で確認できるのは、ファイルが改ざんされていないことだけです。
選択肢 エ
ハッシュ値の比較で分かるのは「改ざんの有無」だけであり、「どの部分が改ざんされたか」を特定することはできません。ハッシュ関数は入力のわずかな違いでも出力全体が大きく変化する性質(雪崩効果)をもつため、値の差分から改ざん箇所を逆算することは不可能です。改ざん箇所の特定までできるとする記述はハッシュ関数の性質を超えた誤りです。

解くときのポイント

ハッシュ値の比較で分かるのは「改ざんの有無(完全性)」だけ。「誰が作ったか(真正性)」はディジタル署名が必要、「どこが変わったか」は分からない。機能の限界を問う出題が定番。