SHA-256で確認できるのは「作成者」ではなく「改ざんの有無」
今回は、情報セキュリティ分野でよく出る SHA-256 の問題です。
初学者がつまずきやすいポイントは、次の違いです。
SHA-256でできること
→ ファイルの内容が変わっていないかを確認する
SHA-256だけではできないこと
→ 誰が作ったファイルかを確認する
この違いが分かると、問題11-21はかなり解きやすくなります。
問題
ファイルの提供者は、ファイルの作成者が作成したファイルAを受け取り、ファイルAと、ファイルAにSHA-256を適用して算出した値Bとを利用者に送信する。
そのとき、利用者が情報セキュリティ上実現できることはどれか。
ここで、利用者が受信した値Bは、ファイルの提供者から事前に電話で直接伝えられた値と同じであり、改ざんされていないことが確認できているものとする。
選択肢
ア
値BにSHA-256を適用して値Bからデジタル署名を算出し、そのデジタル署名を検証することによって、ファイルAの作成者を確認できる。
イ
値BにSHA-256を適用して値Bからデジタル署名を算出し、そのデジタル署名を検証することによって、ファイルAの提供者がファイルAの作成者であるかどうかを確認できる。
ウ
ファイルAにSHA-256を適用して値を算出し、その値と値Bを比較することによって、ファイルAの内容が改ざんされていないかどうかを検証できる。
エ
ファイルAの内容が改ざんされていても、ファイルAにSHA-256を適用して値を算出し、その値と値Bの差分を確認することによって、ファイルAの内容のうち改ざんされている部分を修復できる。
正解
正解は ウ です。

ファイルAにSHA-256を適用して値を算出し、
その値と値Bを比較することによって、
ファイルAの内容が改ざんされていないかどうかを検証できる。
まず登場人物を整理しよう
この問題には、次の3者が出てきます。
作成者
→ ファイルAを作った人
提供者
→ ファイルAと値Bを利用者へ送る人
利用者
→ ファイルAを受け取って確認する人
そして、もう1つ大事なものがあります。
値B
→ ファイルAにSHA-256を適用して作った値
値Bは、いわば ファイルAの指紋 のようなものです。
SHA-256とは何か
SHA-256は、データから ハッシュ値 を作る仕組みです。
ハッシュ値とは、ファイルの内容をもとに作られる短い値です。
ファイルA
↓
SHA-256
↓
値B
同じファイルにSHA-256をかけると、同じ値になります。
同じファイルA
↓
SHA-256
↓
同じ値B
しかし、ファイルの中身が少しでも変わると、SHA-256で求められる値も変わります。
元のファイルA
↓
SHA-256
↓
値B
改ざんされたファイルA
↓
SHA-256
↓
別の値
そのため、SHA-256は 改ざん検知 に使えます。
この問題で利用者がやること
利用者は、ファイルAと値Bを受け取っています。
ただし、この問題では重要な条件があります。
値Bは、事前に電話で直接伝えられている
そして、受け取った値Bと同じである
つまり、利用者はこう考えることができます。
この値Bは信頼できる値だ
そこで、利用者は次の手順で確認します。
1. 受け取ったファイルAにSHA-256を適用する
2. 自分でハッシュ値を計算する
3. その値と、事前に確認済みの値Bを比較する
4. 同じなら、ファイルAは改ざんされていないと判断できる
図にすると、こうです。
受け取ったファイルA
↓
SHA-256
↓
自分で計算した値
自分で計算した値 = 事前に確認した値B
↓
ファイルAは改ざんされていない
これが、選択肢 ウ の内容です。
なぜ作成者の確認はできないのか
ここが一番大事です。
SHA-256で分かるのは、
ファイルの内容が同じかどうか
です。
しかし、SHA-256だけでは、
誰が作ったファイルなのか
までは分かりません。
例えば、Aさんが作ったファイルでも、Bさんが同じ内容のファイルを作った場合、SHA-256の値は同じになります。
Aさんが作ったファイル
↓
SHA-256
↓
1234 abcd ...
Bさんが作った同じ内容のファイル
↓
SHA-256
↓
1234 abcd ...
つまり、SHA-256は 内容の同一性 は確認できますが、作成者の本人確認 はできません。
作成者や送信者を確認したい場合は、通常は次のような仕組みが必要です。
デジタル署名
電子証明書
PKI
選択肢アが誤りの理由
アは、次のような内容です。
値BにSHA-256を適用して、
値Bからデジタル署名を算出する
これは誤りです。
SHA-256は、デジタル署名を作る仕組みではありません。
SHA-256
→ ハッシュ値を作る仕組み
デジタル署名
→ 秘密鍵などを使って本人性や改ざんを確認する仕組み
したがって、SHA-256だけでファイルAの作成者を確認することはできません。
選択肢イが誤りの理由
イも、アと同じく、
値BにSHA-256を適用してデジタル署名を算出する
という内容です。
これも誤りです。
さらに、イでは、
提供者が作成者であるかどうかを確認できる
とあります。
しかし、SHA-256で確認できるのは、あくまでファイルの内容です。
確認できる
→ ファイルAの内容が変わっていないか
確認できない
→ 提供者が作成者かどうか
そのため、イも誤りです。
選択肢エが誤りの理由
エは、改ざんされた部分を修復できるという内容です。
これも誤りです。
SHA-256で分かるのは、
同じか
違うか
だけです。
値が違った場合、
ファイルAが改ざんされている可能性が高い
とは分かります。
しかし、
どこが改ざんされたのか
どう直せばよいのか
までは分かりません。
SHA-256は、改ざんの検出には使えますが、改ざん箇所の特定や修復はできません。
この問題のひっかけポイント
この問題のひっかけは、SHA-256 と デジタル署名 を混同させようとしている点です。
整理すると、次のようになります。
SHA-256
→ ハッシュ値を作る
→ 内容が変わっていないかを確認する
→ 作成者までは分からない
デジタル署名
→ 署名者の確認に使う
→ 改ざん検知にも使える
→ 否認防止にも関係する
電子証明書・PKI
→ 公開鍵が本物かを確認する仕組み
今回の問題では、デジタル署名は使っていません。
使っているのは、
ファイルA
SHA-256
値B
値の比較
です。
だから、答えは 改ざん検知 になります。
試験での覚え方
この問題は、次のように覚えると分かりやすいです。
SHA-256は、ファイルの指紋を作る
指紋を比べれば、
同じファイルかどうか
は確認できます。
しかし、
誰が作ったか
どこが壊れたか
どう修復するか
までは分かりません。
まとめ
問題11-21では、SHA-256を使って何ができるかが問われています。
結論は次のとおりです。
SHA-256でできること
→ ファイルAの内容が改ざんされていないかを確認すること
SHA-256だけではできないこと
→ ファイルAの作成者を確認すること
→ 改ざん箇所を特定すること
→ 改ざん箇所を修復すること
したがって、正解は ウ です。
ファイルAにSHA-256を適用して値を算出し、
その値と値Bを比較することによって、
ファイルAの内容が改ざんされていないかどうかを検証できる。











ディスカッション
コメント一覧
まだ、コメントがありません