問RSA方式のデジタル署名で使う「検証鍵」はどれか

広告

今回は、基本情報技術者試験でよく出る デジタル署名 の問題です。

暗号分野では、

公開鍵
秘密鍵
暗号化
復号
デジタル署名
検証

といった言葉がまとめて出てくるため、初学者は混乱しやすいです。

特に今回の問題では、

署名を作るときに使う鍵
署名を確認するときに使う鍵

を正しく区別できるかがポイントです。

問題

メッセージにRSA方式のデジタル署名を付与して2者間で送受信する。
そのときのデジタル署名の検証鍵と使用方法はどれか。

ア.受信者の公開鍵であり、送信者がメッセージダイジェストからデジタル署名を作成する際に使用する。

イ.受信者の秘密鍵であり、受信者がデジタル署名からメッセージダイジェストを算出する際に使用する。

ウ.送信者の公開鍵であり、受信者がデジタル署名からメッセージダイジェストを算出する際に使用する。

エ.送信者の秘密鍵であり、送信者がメッセージダイジェストからデジタル署名を作成する際に使用する。

正解

送信者の公開鍵であり、
受信者がデジタル署名からメッセージダイジェストを算出する際に使用する。

デジタル署名は「暗号化」と目的が違う

まず大事なのは、デジタル署名は単なる暗号化ではないということです。

暗号化の主な目的は、

第三者に内容を読まれないようにすること

です。

一方、デジタル署名の主な目的は、

送信者が本当に本人か
メッセージが途中で改ざんされていないか

を確認することです。

つまり、デジタル署名は「秘密にするため」ではなく、主に本人確認改ざん検知のために使われます。

デジタル署名の全体像

デジタル署名の流れは、次のように考えると分かりやすいです。

送信者側

メッセージ
   ↓
ハッシュ関数
   ↓
メッセージダイジェスト
   ↓
送信者の秘密鍵で署名
   ↓
デジタル署名

送信者は、まずメッセージからハッシュ値を作ります。

このハッシュ値を、試験ではよく

メッセージダイジェスト

と呼びます。

そして、そのメッセージダイジェストに対して、送信者の秘密鍵でデジタル署名を作成します。

受信者側で行うこと

受信者は、送られてきたメッセージとデジタル署名を受け取ります。

そして、次の2つを行います。

1. デジタル署名を送信者の公開鍵で確認する
2. 受信したメッセージから自分でもメッセージダイジェストを作る

図にすると、次のようになります。

受信者側

デジタル署名
   ↓
送信者の公開鍵
   ↓
署名から取り出したメッセージダイジェスト

さらに、受信したメッセージ本体からもハッシュ値を計算します。

受信したメッセージ
   ↓
ハッシュ関数
   ↓
受信者が計算したメッセージダイジェスト

最後に、この2つを比較します。

署名から取り出したメッセージダイジェスト
        と
受信者が計算したメッセージダイジェスト

この2つが一致すれば、

メッセージは改ざんされていない
送信者の秘密鍵で作られた署名である

と判断できます。

鍵の使い方を整理する

ここが最重要です。

デジタル署名では、鍵の使い方は次のようになります。

署名を作る鍵 :送信者の秘密鍵
署名を検証する鍵:送信者の公開鍵

つまり、

送信者の秘密鍵で署名する
送信者の公開鍵で検証する

です。

今回の問題で問われているのは、検証鍵です。

したがって、答えは

送信者の公開鍵

になります。

なぜ受信者の鍵ではないのか

ここで間違えやすいのが、

受信者が確認するのだから、受信者の鍵を使うのでは?

という考え方です。

しかし、デジタル署名で確認したいのは、

この署名は、本当に送信者が作ったものか

です。

そのため、受信者の鍵ではなく、送信者の鍵が関係します。

受信者は、送信者の公開鍵を使って、

この署名は、送信者の秘密鍵で作られたものか

を確認します。

選択肢を確認する

アは誤りです。

受信者の公開鍵

となっている点が違います。

また、デジタル署名を作成するのに使うのは公開鍵ではなく、送信者の秘密鍵です。

イも誤りです。

受信者の秘密鍵

となっている点が違います。

デジタル署名の検証では、受信者の秘密鍵は使いません。

ウは正しいです。

送信者の公開鍵

を使って、受信者がデジタル署名を検証します。

エは少し迷いやすい選択肢です。

送信者の秘密鍵

という部分は、署名を作成するときの鍵としては正しいです。

しかし、問題で聞かれているのは検証鍵です。

検証に使うのは送信者の公開鍵なので、エではありません。

暗号化との違いに注意する

公開鍵暗号方式では、暗号化の問題とデジタル署名の問題で、鍵の使い方が変わります。

暗号化では、受信者だけが読めるようにしたいので、

受信者の公開鍵で暗号化
受信者の秘密鍵で復号

となります。

一方、デジタル署名では、送信者本人が作ったことを確認したいので、

送信者の秘密鍵で署名
送信者の公開鍵で検証

となります。

ここを混同しないようにしましょう。

試験用の覚え方

試験では、次のように覚えると楽です。

暗号化:受信者の鍵に注目
署名 :送信者の鍵に注目

さらに、デジタル署名だけに絞るなら、次の1行で覚えます。

デジタル署名は、送信者の秘密鍵で作り、送信者の公開鍵で検証する。

この1行を覚えておけば、今回のような問題はかなり解きやすくなります。

まとめ

デジタル署名は、メッセージの改ざん検知と送信者確認のために使われます。

署名を作るときは、

送信者の秘密鍵

を使います。

署名を検証するときは、

送信者の公開鍵

を使います。

今回の問題は「検証鍵」を問う問題なので、正解は

です。

訪問数 1 回, 今日の訪問数 3回

広告