送信者Aが文書ファイルと、その文書ファイルのディジタル署名を受信者Bに送信したとき、受信者Bができることはどれか。ここで、受信者Bは送信者Aの署名検証鍵Xを保有しており、受信者Bと第三者は送信者Aの署名生成鍵Yを知らないものとする。
ア ディジタル署名、文書ファイル及び署名検証鍵Xを比較することによって、文書ファイルに改ざんがあった場合、その部分を判別できる。
イ 文書ファイルがウィルスに感染していないことを認証局に問い合わせて確認できる。
ウ 文書ファイルが改ざんされていないこと、及びディジタル署名が署名生成鍵Yによって生成されたことを確認できる。
エ 文書ファイルとディジタル署名のどちらかが改ざんされた場合、どちらが改ざんされたかを判別できる。
ディジタル署名の性質に関する問題。問題分がやや長く、文字が四つ出てくるためその関係を整理しなければならない分、やや難しい。
「ぜんぜんわからん!」「ディジタル署名って何?」という方は、以前に当ブログで解説したもっと基本的な問題を先にやって、解説を読んでからこちらの問題に臨むとよいだろう。
なお、「受信者Bと第三者は送信者Aの署名生成鍵Yを知らないものとする」という条件はディジタル署名の技術を活用する上で重要である。この条件がなければ、送信者A以外の人物でも署名を作ることができるので、なりすましの検知は不可能になる。
状況の整理
問題分がやや複雑なので、まずは図で整理しよう。次のような感じである。
- Aさんが署名生成鍵Yを持っている
- Bさんが署名検証鍵Xを持っている
を整理できていればよい。
アの解説
ア ディジタル署名、文書ファイル及び署名検証鍵Xを比較することによって、文書ファイルに改ざんがあった場合、その部分を判別できる。
前半部分の「ディジタル署名、文書ファイル及び署名検証鍵Xを比較することによって」と、後半部分の「文書ファイルに改ざんがあった場合、その部分を判別できる」の両方が間違っている。したがってアは×。
前半部分について、署名の検証時に比較するのは「ディジタル署名を署名検証鍵Xで復号化したもの」と「文書ファイル」である。
後半部分に関してはディジタル署名によって「改ざんの有無」を検証することができるが、「どこが改ざんされているか」まではわからない。
イの解説
イ 文書ファイルがウィルスに感染していないことを認証局に問い合わせて確認できる。
ウィルスに感染しているかどうかについてはデジタル署名ではわからない。したがってイは×。
認証局とは、署名を検証する際に使用する公開鍵(署名検証鍵)が本物であることを証明してくれる機関のことである。そもそも鍵が悪意のある者によってニセモノにすり替えられていたら、まともな署名検証を行えないので、「この署名検証鍵は本物だよ」ということを第三者である認証局によって証明してもらう仕組みが存在する。こういった仕組みのことを公開鍵基板(PKI)という。ここら辺の知識が問われる問題もあるので確認しておきましょう。
ウの解説
ウ 文書ファイルが改ざんされていないこと、及びディジタル署名が署名生成鍵Yによって生成されたことを確認できる。
正解である。
この問題の場合、ディジタル署名を復号化すると文書に戻る。間違った署名から正しい文書に戻ることも、正しい署名から別の文書になることも、両方間違っているのにたまたま一致することもまずありえない。したがって、復号化したディジタル署名と文書が一致した場合は改ざんされていないことがわかる。
また、署名検証鍵Xでは署名生成鍵Yで生成された署名以外について正しく検証することができない。ちゃんと検証できた場合には、その署名は署名生成鍵Yによって生成されたことがわかり、署名の作成者が送信者Aであることを証明できる。
エの解説
エ 文書ファイルとディジタル署名のどちらかが改ざんされた場合、どちらが改ざんされたかを判別できる。
文書と復号化した署名が一致しなければ、文書ファイルか署名のいずれか、もしくは両方が改ざんされたとわかる。「一致しない」という事しかわからず、「どちらの値がおかしいか」まではわからないからだ。
したがってエは×。
関連問題
こちらはハッシュ関数の知識を組み合わせた問題。
今回の問題では、文章をそのまま暗号化してディジタル署名を作成していたが、実際は高速化のためにハッシュ関数を用いる。上位の試験の問題だけあって、より現実的な問題となっている。