コード署名の目的
ソフトウェアの配布に用いられるコード署名の目的として,適切なものはどれか。
- アソフトウェアを暗号化し,正規の利用者以外が実行できないようにする。
- イソフトウェアを隔離された環境で実行してその挙動を監視し,不正な動作を検知する。
- ウソフトウェアの発行元を確認し,配布後に改ざんされていないことを検証できるようにする。
- エソフトウェアに脆弱性が含まれていないことを,第三者機関が検査して保証する。
正解と解説を見る
正解 ウ
この問題の基礎知識
- デジタル署名は,送信者が自らの秘密鍵でデータのハッシュ値に署名し,受信者が送信者の公開鍵で検証することで,データの完全性と発信元を確認する仕組みである。
- 署名の検証に使う公開鍵が確かに発行元のものであることは,認証局(CA)が発行する証明書によって保証される。
- デジタル署名は,内容を秘匿する機密性や,署名されたソフトウェアが安全である(脆弱性や悪意のあるコードを含まない)ことは保証しない。
- サンドボックスは,隔離された環境でプログラムを実行し,その挙動を観察したり影響を閉じ込めたりする仕組みである。
アソフトウェアを暗号化し,正規の利用者以外が実行できないようにする。
ソフトウェアを暗号化して実行を制限するのは,機密性の確保やコピー防止の仕組みである。コード署名はソフトウェアを暗号化せず,署名を付与して検証できるようにするものである。
イソフトウェアを隔離された環境で実行してその挙動を監視し,不正な動作を検知する。
隔離された環境で実行して挙動を監視するのは,サンドボックスによる動的解析である。コード署名は実行時の挙動を監視しない。
ウソフトウェアの発行元を確認し,配布後に改ざんされていないことを検証できるようにする。正解
コード署名では,発行元が自らの秘密鍵でソフトウェアのハッシュ値に署名し,コード署名用の証明書とともに配布する。利用者は署名を検証して,発行元の確認と改ざんの有無の検知ができる。
エソフトウェアに脆弱性が含まれていないことを,第三者機関が検査して保証する。
コード署名が保証するのは発行元と完全性であり,ソフトウェアに脆弱性や悪意のあるコードが含まれていないことは保証しない。正規の署名が付いたマルウェアの事例もある。
検証用の出典出典照合済み
NIST Cybersecurity White Paper, Security Considerations for Code Signing (2018)照合の根拠(2 件)
- ウ(正解): コード署名は改ざんされていないこと(完全性)と発行元(出所の認証)を確認させる。暗号化(ア)や挙動監視(イ)はこの目的に含まれない
Digitally signing code provides both data integrity to prove that the code was not modified, and source authentication to identify who was in control of the code at the time it was signed.
NIST Cybersecurity White Paper, Security Considerations for Code Signing (2018) · Section 1(新しいタブで開きます) - エ(誤り): 署名されていても悪意のあるコードでないことは保証されない
Similarly, intrusions into development systems or the code signing infrastructure itself, could result in malicious code being signed.
NIST Cybersecurity White Paper, Security Considerations for Code Signing (2018) · Section 4(新しいタブで開きます)