デジタル署名は、署名者の確認とデータの改ざん検知に利用する技術です。署名者の秘密鍵で署名を生成し、対応する公開鍵で検証します。文書の内容を隠す暗号化とは、目的を分けて考えます。
署名の生成と検証

| 段階 | 処理 |
|---|---|
| 生成 | 典型的にはデータのハッシュ値を求め、署名者の秘密鍵を使って署名を生成 |
| 送付 | 対象データと署名を相手へ渡す |
| 検証 | 相手が署名者の公開鍵で、データに対する署名の正当性を確認 |
RSA系やECDSAなどの署名方式があります。方式を問わず「秘密鍵で文書を暗号化し、公開鍵で復号する」と説明するのは正確ではありません。署名は生成・検証という操作として覚えましょう。
ハッシュ値と改ざん検知
ハッシュ関数は、入力から固定長の値を求めます。同じ入力なら同じ値になります。暗号学的ハッシュは、同じ値を持つ別の入力を見つけることなどが困難になるように設計されています。「文書ごとに絶対に一意の値」とは限りません。データに対応する正しい署名を検証することで、不正な変更を検出します。
暗号化・署名・証明書の役割を区別する
| 目的 | 処理する側の鍵 | 相手側の鍵 |
|---|---|---|
| 共通鍵暗号による保護 | 共有した共通鍵で暗号化 | 同じ共通鍵で復号 |
| 公開鍵暗号による機密性確保 | 受信者の公開鍵で暗号化 | 受信者の秘密鍵で復号 |
| デジタル署名 | 署名者の秘密鍵で生成 | 署名者の公開鍵で検証 |
署名だけでは内容の盗み見を防げません。機密性も必要なら暗号化を組み合わせます。また、公開鍵が誰のものかを確認するために電子証明書などを利用します。秘密鍵が漏えいした場合は署名者の確認に関わるため、鍵の管理も重要です。
ソフトウェア配布などでの利用
配布するソフトウェアや電子文書に署名を付け、利用者が発行元と改ざんの有無を確認する用途があります。署名を付けるだけで、あらゆる文書の安全性や契約の法的効力が自動的に保証されるわけではありません。技術上は、対象データと信頼できる公開鍵で正しく検証することが中心です。
理解を確かめる確認問題
署名者の公開鍵は、署名の生成と検証のどちらに使いますか?また、署名だけで内容を隠せますか?
解答・解説を見る
公開鍵は検証に使います。生成には署名者の秘密鍵を使います。署名だけで内容は隠せないため、機密性が必要なら暗号化も利用します。
電子署名制度の参考:デジタル庁:電子署名

コメント