電子署名は、そのデータが誰によるもので、途中で改ざんされていないかを数学的に確かめる仕組みです。 公開鍵暗号を使い、署名する側は秘密鍵で署名し、検証する側は公開鍵で確かめます。
手書き署名との決定的な違い
紙の署名は「誰が書いたか」しか示しませんが、電子署名は対象の内容と結びついています。
そのため、署名した後に本文を1文字でも変えると、署名の検証が失敗します。「本人性」と「非改ざん性」を同時に証明できるのがこの仕組みの本質です。
暗号化とは目的が違う
混同されやすいので整理します。
| 使う鍵 | 目的 | |
|---|---|---|
| 暗号化 | 相手の公開鍵で暗号化 | 本人以外に読ませない |
| 電子署名 | 自分の秘密鍵で署名 | 誰のものか証明する |
署名されたデータは暗号化されていません。誰でも読めます。 「署名したから安全」ではないので、秘匿が必要なら暗号化を別に行います。
どこで使われているか
意識していなくても、日常的に検証されています。
- TLS:サーバー証明書が認証局に署名されているかをブラウザが検証する
- ソフトウェア配布:パッケージやOSの更新が正規のものかを確認する
- JWT:トークンの中身が改ざんされていないかを検証する
- Webhook:送信元が本物かを共有シークレットで検証する
押さえておきたい注意点
検証が意味を持つのは、公開鍵が本物だと確認できている場合だけです。攻撃者の公開鍵で検証すれば、攻撃者の署名は「正しい」と判定されます。
だから公開鍵の正しさを保証する仕組み——認証局や、事前に配布された鍵——が必要になります。署名の検証は、鍵の信頼の上にしか成立しません。
実務で見るポイント
- 秘密鍵が漏れたら、それまでの署名の信頼が崩れる。鍵の保管が仕組み全体の急所
- 署名を検証していない実装は「署名がある」だけで守りにならない
- 実装の観点は署名検証を参照