対象試験と出題頻度
デジタル署名(電子署名)は、ITパスポート試験、情報セキュリティマネジメント試験、基本情報技術者試験、応用情報技術者試験のすべてで出題される最重要テーマです。
頻出度は「S(超重要)」で、「どの鍵で署名し、どの鍵で検証するか」を問う問題が毎回のように登場します。暗号化通信との鍵の使い方の違いを確実に押さえておきましょう。
詳細をクリックして確認
ITパスポート
情報セキュリティマネジメント
基本情報技術者
応用情報技術者
★★★★★
ランクS(超重要)
用語の定義
デジタル署名(Digital Signature)とは、一言で言うと「公開鍵暗号とハッシュ関数を組み合わせて、送信者の本人確認(認証)とデータの改ざん検知を実現する技術」のことです。「電子署名」とも呼ばれます。
イメージとしては、「印鑑と封筒の封印を電子的に実現したもの」です。
紙の契約書に押す印鑑が「この書類は確かに本人が作成した」ことを証明するように、デジタル署名は「このデータは確かに送信者が作成し、途中で改ざんされていない」ことを証明します。
📊 デジタル署名で実現できること
| 機能 | 説明 |
|---|---|
| 本人確認(認証) | 署名者が本人であることを証明できる |
| 改ざん検知 | データが途中で変更されていないことを確認できる |
| 否認防止 | 署名者が「自分は署名していない」と否定できなくなる |
解説
情報処理試験を勉強していると、「デジタル署名って、暗号化通信と何が違うの?鍵の使い方がよくわからない…」と混乱しがちです。結論から言うと、暗号化通信とデジタル署名では、鍵の使い方が逆になります。
ここは試験で最も出題されるポイントなので、確実に理解しておきましょう。
暗号化通信とデジタル署名の鍵の使い方
公開鍵暗号方式では、公開鍵と秘密鍵のペアを使いますが、用途によって使い方が異なります。
暗号化通信の目的は「機密性の確保」(第三者に内容を見られないようにする)です。受信者の公開鍵で暗号化し、受信者の秘密鍵で復号します。「受け取る人の公開鍵で暗号化」と覚えましょう。
デジタル署名の目的は「認証と改ざん検知」(送信者の証明と内容の確認)です。送信者の秘密鍵で署名し、送信者の公開鍵で検証します。「送る人の秘密鍵で署名」と覚えましょう。
📊 暗号化通信とデジタル署名の比較(試験最頻出)
| 項目 | 暗号化通信 | デジタル署名 |
|---|---|---|
| 目的 | 機密性の確保 | 認証・改ざん検知・否認防止 |
| 鍵ペアの作成者 | 受信者 | 送信者(署名者) |
| 処理1で使う鍵 | 受信者の公開鍵で暗号化 | 送信者の秘密鍵で署名 |
| 処理2で使う鍵 | 受信者の秘密鍵で復号 | 送信者の公開鍵で検証 |
💡 なぜ秘密鍵で署名するのか?
秘密鍵は「本人だけが持っている」ものです。だから、秘密鍵で作られた署名は「本人が作成した証拠」になります。もし公開鍵で署名したら、誰でも署名できてしまうので本人確認になりません。
「秘密鍵=印鑑」と考えると理解しやすいでしょう。印鑑を持っているのは本人だけなので、印鑑が押された書類は本人が作成したと判断できます。
デジタル署名の仕組み(手順)
デジタル署名は、公開鍵暗号とハッシュ関数を組み合わせて実現されます。具体的な手順を見てみましょう。
署名の作成(送信者側)では、まず元のメッセージのハッシュ値(メッセージダイジェスト)を計算します。次に、そのハッシュ値を送信者の秘密鍵で暗号化します。この暗号化されたハッシュ値が「デジタル署名」です。送信者は、元のメッセージとデジタル署名を一緒に送信します。
署名の検証(受信者側)では、受け取った署名を送信者の公開鍵で復号し、ハッシュ値を取り出します。また、受け取ったメッセージから同じハッシュ関数でハッシュ値を計算します。この2つのハッシュ値が一致すれば、「送信者本人が署名した」「メッセージは改ざんされていない」ことが確認できます。
📊 デジタル署名の流れ
| 手順 | 送信者(署名) | 受信者(検証) |
|---|---|---|
| ① | メッセージのハッシュ値を計算 | - |
| ② | 秘密鍵でハッシュ値を暗号化(署名) | - |
| ③ | メッセージ+署名を送信 | メッセージ+署名を受信 |
| ④ | - | 公開鍵で署名を復号→ハッシュ値A |
| ⑤ | - | メッセージのハッシュ値を計算→ハッシュ値B |
| ⑥ | - | AとBが一致すれば検証成功 |
なぜメッセージ全体ではなくハッシュ値に署名するのか
「なぜメッセージ全体を秘密鍵で暗号化しないの?」と疑問に思うかもしれません。理由は2つあります。
1つ目は処理速度です。公開鍵暗号方式は処理が遅いため、大きなメッセージを直接暗号化すると時間がかかります。ハッシュ値は固定長(SHA-256なら256ビット)なので、署名処理が高速になります。
2つ目は署名データのサイズです。メッセージ全体を暗号化すると、署名データが巨大になります。ハッシュ値に対して署名すれば、署名データは常に一定サイズに収まります。
⚠️ 試験での注意点
デジタル署名で最も出題されるのは「どの鍵で署名し、どの鍵で検証するか」です。「送信者の秘密鍵で署名」「送信者の公開鍵で検証」と覚えてください。
暗号化通信の「受信者の公開鍵で暗号化」と混同しないよう注意しましょう。また、デジタル署名は「機密性」を提供しません。メッセージ自体は暗号化されないので、内容を秘密にしたい場合は別途暗号化が必要です。
試験ではこう出る!
デジタル署名は全試験区分で超頻出です。「鍵の使い方」「実現できる機能(認証・改ざん検知・否認防止)」を押さえておけば、ほとんどの問題に対応できます。
ハッシュ関数の具体的な計算方法までは問われません。試験ではここまででOKです。
【重要キーワード】
- デジタル署名(電子署名)
- 送信者の秘密鍵で署名、送信者の公開鍵で検証
- ハッシュ関数との組み合わせ
- 本人確認(認証)、改ざん検知、否認防止
- 機密性は提供しない
試験問題で「送信者の秘密鍵で署名する」「本人確認と改ざん検知を実現」「否認防止」という記述があれば、それは「デジタル署名」に関する説明です。
📝 IPA試験での出題ポイント
デジタル署名の問題は、「XさんがYさんにデジタル署名付きメッセージを送る場合、署名に使う鍵は?」という形式が定番です。答えは「Xさん(送信者)の秘密鍵」です。
また、「デジタル署名で実現できること」を問われたら、「認証」「改ざん検知」「否認防止」が正解で、「機密性の確保」は誤りです。
【確認テスト】理解度チェック
ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。
Q. デジタル署名に関する説明として、最も適切なものはどれでしょうか?
- A. 受信者の公開鍵でメッセージを暗号化し、受信者の秘密鍵で復号することで機密性を確保する
- B. 送信者の秘密鍵でメッセージのハッシュ値に署名し、送信者の公開鍵で検証することで、本人確認と改ざん検知を実現する
- C. 共通鍵でメッセージを暗号化し、同じ共通鍵で復号することで、高速に機密性を確保する
正解と解説を見る
正解:B
解説:
デジタル署名は、送信者の秘密鍵でメッセージのハッシュ値を暗号化(署名)し、送信者の公開鍵で復号(検証)する技術です。これにより、「送信者本人が署名した」(認証)、「メッセージが改ざんされていない」(改ざん検知)、「送信者が後から否定できない」(否認防止)ことを実現できます。暗号化通信とは鍵の使い方が逆になる点に注意してください。
選択肢Aは「暗号化通信」の説明です。選択肢Cは「共通鍵暗号方式」の説明であり、いずれもデジタル署名とは異なる概念です。