プログラムの発行元はどの情報で確かめられるのか
ITパスポート試験 令和6年度 問77 / セキュリティ › 情報セキュリティ対策・実装技術
過去問にチャレンジ
出所が不明のプログラムファイルの使用を避けるために,その発行元を調べたい。このときに確認する情報として,適切なものはどれか。
- ア
そのプログラムファイルのアクセス権
- イ
そのプログラムファイルの所有者情報
- ウ
そのプログラムファイルのデジタル署名
- エ
そのプログラムファイルのハッシュ値
会話形式の解説
講師今回の問題では、プログラムの「発行元」、つまり誰が作って配布したのかを確かめる方法が問われています。選択肢がそれぞれ何を示す情報なのかを整理すると解きやすくなります。
受験者「所有者情報」が一番近そうに見えました。持ち主が分かれば、作った人も分かるような気がします。
講師そう考えやすいところです。ただ、所有者情報は、OSの上でそのファイルがどのユーザーやアカウントのものとして扱われているかを示すだけです。ダウンロードやコピーをすると、所有者はその操作をした利用者などに変わります。
受験者それなら、私がダウンロードしたファイルの所有者は私になってしまうのですね。発行元と同じとは限らないということですか。
講師そのとおりです。アクセス権も同じように考えます。アクセス権は、そのファイルを誰が読み書きしたり実行したりできるかを決める情報なので、利用を許す範囲を表しているだけです。
受験者では、ハッシュ値はどうでしょうか。改ざんのチェックに使うと習ったので、安全確認には関係がありそうです。
講師ハッシュ値は、ファイルの中身から計算する決まった長さの値です。中身が同じかどうかや、改ざんされていないかを確かめるのには使えます。ただ、値そのものには作った人の情報が入っていないので、ハッシュ値だけでは発行元を特定することも証明することもできません。
受験者残るのはデジタル署名ですね。これは発行元をどうやって示しているのですか。
講師発行元が、自分しか持っていない秘密鍵を使ってプログラムに署名を付けます。受け取った側は、証明書に入っている公開鍵で署名を検証します。検証に成功すれば、どの発行元が署名したのかが分かり、署名した後に改ざんされていないことも同時に確かめられます。プログラムに付けるこの署名はコード署名とも呼ばれます。
受験者整理すると、アクセス権は誰が使えるか、所有者情報はいま誰のものとして扱われているか、ハッシュ値は中身が同じか、デジタル署名は誰が作ったか、ということですね。発行元を調べるならデジタル署名を確認すればよいと分かりました。
講師よく整理できています。改ざんの検知だけを問われているならハッシュ値も候補になりますが、発行元や作成者を問われたらデジタル署名を選ぶ、と区別して覚えておきましょう。
受験者署名さえ付いていれば、そのプログラムは安全だと考えてよいのでしょうか。
講師それだけでは安全とは言えません。署名に使われた証明書が有効期限内か、失効していないか、信頼できる認証局が発行したものか、といった点もあわせて確認することが大切です。認証局は、証明書を発行してその公開鍵の持ち主を保証する機関です。
まとめ
出所が分からないプログラムの発行元を確かめるには、デジタル署名(コード署名)を確認します。発行元が秘密鍵で付けた署名を、証明書に入っている公開鍵で検証すると、誰が署名したのかと、署名後に改ざんされていないかを同時に確認できます。ハッシュ値は改ざんの確認には使えますが、作成者の情報は含みません。アクセス権や所有者情報はファイルを利用・管理するための情報で、出所を示すものではありません。署名があっても、証明書が有効期限内か、失効していないか、信頼できる認証局が発行したものかもあわせて確認することが大切です。
解答・解説
正解はウです
この問題のテーマ
プログラムファイルの出所(発行元)を確かめるときに、どの情報を確認すればよいかを問う問題です。デジタル署名(コード署名)の役割を理解しているかがポイントです。
解き方の考え方
「発行元=誰が作って配布したか」を、後から第三者が確かめられる情報はどれかを考えます。各選択肢が「誰が使えるか」「いま誰が持っているか」「中身が同じか」「誰が作ったか」のどれを示す情報なのかを整理すると、発行元を示せるのはデジタル署名だけだと分かります。ハッシュ値は改ざんの確認に使えますが、作成者は示さない点に注意してください。
選択肢ごとの解説
- ×ア そのプログラムファイルのアクセス権アのアクセス権は、そのファイルを誰が読み書き・実行できるかを定める情報です。利用の許可範囲を表すもので、ファイルを誰が作成・配布したかは分かりません。
- ×イ そのプログラムファイルの所有者情報イの所有者情報は、ファイルがどのユーザーやアカウントのものとしてOS上で扱われているかを示します。ダウンロードやコピーをすると所有者はその操作をした利用者などに変わるため、発行元と同じとは限りません。
- ○ウ そのプログラムファイルのデジタル署名ウのデジタル署名は、発行元が自分の秘密鍵を使ってプログラムに付ける署名です。証明書に含まれる公開鍵で検証に成功すれば、どの発行元が署名したかを確認でき、署名後に改ざんされていないことも同時に確かめられます。発行元を調べる目的に合う情報です。
- ×エ そのプログラムファイルのハッシュ値エのハッシュ値は、ファイルの内容から計算する固定長の値で、内容が同じかどうかや改ざんの有無を確かめるのに使います。しかし、値そのものには作成者の情報が含まれないため、ハッシュ値だけでは発行元を特定・証明できません。
補足
「改ざん検知」だけが問われていればハッシュ値も候補になりますが、「発行元」や「作成者」を問われたらデジタル署名を選ぶ、という区別がよく問われます。また、署名が付いていればそれだけで安全というわけではありません。署名に使われた証明書が有効期限内か、信頼できる認証局が発行したものかもあわせて確認することが大切です。
POINT
- プログラムの発行元を確かめるには、デジタル署名(コード署名)を確認します。
- デジタル署名は発行元の秘密鍵で付け、証明書の公開鍵で検証します。
- デジタル署名を検証すると、発行元の確認と改ざんの検知が同時にできます。
- ハッシュ値は改ざん(同一性)の確認には使えますが、作成者は分かりません。
- アクセス権や所有者情報は、ファイルを利用・管理するための情報で、出所を示すものではありません。
