デジタル署名は秘密鍵と公開鍵をどう使い分けるのか
情報セキュリティマネジメント試験 2022年 サンプル問題 問22 / セキュリティ › 情報セキュリティ
過去問にチャレンジ
デジタル署名に用いる鍵の組みのうち,適切なものはどれか。

- ア
作成に用いる鍵:共通鍵/検証に用いる鍵:秘密鍵
- イ
作成に用いる鍵:公開鍵/検証に用いる鍵:秘密鍵
- ウ
作成に用いる鍵:秘密鍵/検証に用いる鍵:共通鍵
- エ
作成に用いる鍵:秘密鍵/検証に用いる鍵:公開鍵
会話形式の解説
講師今回は、デジタル署名を作るときと確かめるときに、それぞれどの鍵を使うかを問う問題です。表の各行は、作成用と検証用の鍵の組み合わせになっています。注目してほしいのは、デジタル署名がそもそも何を証明するための仕組みなのか、という点です。
受験者私は秘密鍵と公開鍵のどちらを先に使うのか、いつも迷います。公開鍵で暗号化して秘密鍵で戻すと覚えていたので、作成が公開鍵、検証が秘密鍵の組みが正しいように見えてしまいました。
講師その覚え方は、公開鍵暗号で暗号化して通信する場合のものです。その場合は受信者の公開鍵で暗号化し、受信者の秘密鍵で復号します。デジタル署名は鍵の使い方がその逆なので、混同すると作成が公開鍵、検証が秘密鍵の組みを選んでしまいやすいのです。
受験者逆になるのはなぜですか。理由が分からないと、また取り違えそうです。
講師デジタル署名の役割は、本人が作ったことと、改ざんされていないことを確かめることです。署名を作れるのが本人だけでなければ意味がありません。公開鍵は誰でも手に入れられるので、公開鍵で作った署名では本人が作ったことを証明できないのです。
受験者なるほど、本人しか持っていない秘密鍵で作るから、本人の署名だと言えるのですね。そうすると、検証は誰でもできる必要があるので、公開されている鍵を使うということですか。
講師そのとおりです。受信者は、署名者の公開鍵で検証します。秘密鍵で作った署名は、それと対になる署名者の公開鍵で確かめられます。検証に成功すれば、本人の署名であり、データが改ざんされていないことも確認できます。
受験者作成に秘密鍵を使い、検証に共通鍵を使う組みは、前半は合っているように見えます。これはどこが違うのでしょうか。
講師作成に秘密鍵を使う点は正しいのですが、検証に共通鍵を使う点が誤りです。デジタル署名は公開鍵暗号方式の鍵ペアを使う仕組みで、共通鍵は使いません。同じ理由で、作成に共通鍵、検証に秘密鍵を使う組みも誤りです。検証に使うのは秘密鍵ではなく署名者の公開鍵だからです。
受験者整理すると、署名者の秘密鍵で作成して、署名者の公開鍵で検証する組みが正解ですね。共通鍵が入っている組みは、その時点で外せると分かりました。
講師はい、それで合っています。補足すると、実際の署名では、送信データのハッシュ値、つまりデータから計算した要約の値に、秘密鍵で署名してデータに付けます。受信者は、受け取ったデータのハッシュ値と署名者の公開鍵を使って署名を検証します。また、秘密鍵を本人以外と共有しないことが、本人が署名したという証明の前提になっている点も押さえておきましょう。
まとめ
デジタル署名は、本人が作ったことと、データが改ざんされていないことを確かめる仕組みです。署名を作れるのが本人だけであるためには、本人しか持たない署名者の秘密鍵で作成する必要があります。検証は誰でもできる必要があるため、公開されている署名者の公開鍵を使います。デジタル署名は公開鍵暗号方式の鍵ペアを使う仕組みで、共通鍵は使いません。暗号化通信では受信者の公開鍵で暗号化して受信者の秘密鍵で復号するので、署名とは鍵の使い方が逆になる点に注意が必要です。
解答・解説
正解はエです
この問題のテーマ
デジタル署名で、署名を作るときと確かめるときにそれぞれどの鍵を使うかを問う問題です。公開鍵暗号方式の鍵ペアの役割を正しく理解しているかが試されます。
解き方の考え方
デジタル署名の役割は「本人が作ったこと」と「改ざんされていないこと」を確かめることです。署名を作れるのが本人だけであるためには、本人しか持たない秘密鍵で作成する必要があります。一方、受け取った誰もが検証できるように、検証には公開されている署名者の公開鍵を使います。この二つの条件で表の各行を見ると、作成が秘密鍵、検証が公開鍵の組みは一つしかありません。
選択肢ごとの解説
- ×ア 作成に用いる鍵:共通鍵/検証に用いる鍵:秘密鍵作成に共通鍵、検証に秘密鍵を使う組みは誤りです。デジタル署名は公開鍵暗号方式の鍵ペアを使う仕組みで、署名の作成に共通鍵は使いません。また、検証に使うのは秘密鍵ではなく署名者の公開鍵です。
- ×イ 作成に用いる鍵:公開鍵/検証に用いる鍵:秘密鍵作成に公開鍵、検証に秘密鍵を使う組みは、正しい使い方と逆になっています。公開鍵は誰でも入手できるので、公開鍵で作った署名では本人が作ったことを証明できません。
- ×ウ 作成に用いる鍵:秘密鍵/検証に用いる鍵:共通鍵作成に秘密鍵を使う点は正しいですが、検証に共通鍵を使う点が誤りです。秘密鍵で作った署名は、それと対になる署名者の公開鍵で検証します。
- ○エ 作成に用いる鍵:秘密鍵/検証に用いる鍵:公開鍵署名者が自分の秘密鍵で署名を作成し、受信者が署名者の公開鍵で検証するのが、デジタル署名の正しい鍵の組みです。秘密鍵は本人しか持っていないので、検証に成功すれば本人の署名であり、データが改ざんされていないことも確認できます。
補足
公開鍵暗号で暗号化して通信する場合は、受信者の公開鍵で暗号化し、受信者の秘密鍵で復号します。署名とは鍵の使い方が逆なので、イのような組みを選ばせる引っかけに注意してください。実際の署名では、送信データのハッシュ値に秘密鍵で署名してデータに付けます。受信者は、受け取ったデータのハッシュ値と署名者の公開鍵を使って署名を検証します。
POINT
- デジタル署名は、署名者の秘密鍵で作成し、署名者の公開鍵で検証します。
- デジタル署名を検証すると、送信者が本人であることと、データが改ざんされていないことを確認できます。
- デジタル署名で使うのは公開鍵暗号方式の鍵ペアで、共通鍵は使いません。
- 秘密鍵を本人以外と共有しないことが、本人が署名したという証明の前提になっています。
