DIGITAL SIGNATURES · HOW IT WORKS
電子署名とは?
見積書の「書いた人」と「書き換え」を確かめる仕組み
取引先から届いた見積書。「100万円」と書かれていますが、途中で金額が変わっていないでしょうか。本当に担当者が作ったのでしょうか。その2つの疑問を解くのが電子署名です。
作成者
秘密鍵で署名
本人だけが保管
受信者
公開鍵で検証
文書の整合性を判定
1. 見積書の金額が変わったら
たとえば取引先から「ノートPC10台・合計100万円」という電子見積書が届いたとします。途中の誰かが「900万円」に書き換えても、単なるPDFやメール本文だけでは、受け取った側はすぐには判断できません。
担当者が作った文書
合計 100万円
正しい金額
途中で書き換えられた文書
合計 900万円
変更を検出したい
電子署名は、「文書が署名時から変わっていないか」を検証できます。そして、署名に使った秘密鍵に対応する公開鍵を持つ人なら、原則として署名を検証できます。
2. 2つの鍵を使うのはなぜ?
電子署名は、1本の共通鍵ではなく秘密鍵と公開鍵のペアを使います。秘密鍵は署名する人が厳重に保管し、公開鍵は確認したい相手に配布できます。
🔐
秘密鍵=書類に署名する道具
持ち主の管理下に置く。外部に流出すると、なりすまし署名の危険が生じます。
🔎
公開鍵=署名を確認する道具
共有できる鍵。この公開鍵で「対応する秘密鍵で作られた署名か」を検証します。
3. 署名して、受信者が確かめるまで
① 署名する
作成者が文書を確定し、自分の秘密鍵で電子署名を作ります。
② 一緒に送る
文書と電子署名を受信者へ渡します。公開鍵を届ける経路も用意します。
③ 検証する
受信者は対象の公開鍵と文書・署名を使い、署名が正しいか確認します。
④ 判断する
成功なら対応する秘密鍵で作られ、署名対象が変わっていないと判断できます。失敗なら処理を止めます。
4. 長い文書は、まず短い要約にする
100ページの契約書に署名するとき、文書全体のデータをそのまま扱う代わりに、一般に暗号学的ハッシュ関数で短い値(ダイジェスト)を求めます。同じ内容なら同じ要約になり、1文字違っても通常は大きく変わります。
# 概念図(実際の暗号アルゴリズムを省略) 文書 ──SHA-256等──> ダイジェスト 秘密鍵 + ダイジェスト ──署名処理──> 電子署名 文書 + 電子署名 + 公開鍵 ──検証──> 成功/失敗
ただし、ハッシュ値だけを添付しても十分ではありません。改ざん者は文書とハッシュ値を両方作り直せるからです。署名の強さは、秘密鍵による署名処理と公開鍵での検証にあります。
5. 実験:100万円を900万円に変えてみる
ラボで文書を書き換えると検証に失敗します。公開鍵を変えた場合も同様です。
INTERACTIVE LAB
見積書の署名を確かめる
署名する → 受信データを変える → 検証する。送信者と受信者が別々の役目を担当することがポイントです。
① 作成者:書類に署名
秘密鍵:本人だけが安全に保管(実値は表示しません)
② 受信者:内容を検証
署名した文書の要約(デモ)
3d33a195送られた署名(デモ)
07341ad7受信文書の要約(デモ)
3d33a195一致:署名の検証に成功
送信後の改ざんが検出されず、選んだ公開鍵に対応する秘密鍵で署名されたと確認できました。ただし『その鍵が本当に取引先のものか』は別の確認です。
教育用モデルです。画面の短いチェック値は暗号学的な署名ではありません。RSA-PSS・ECDSA・EdDSAなどの実署名処理や証明書の検証をブラウザで行っているわけではありません。
6. 『検証成功』だけでは本人とは言い切れない
署名が正しくても、使った公開鍵が「本物の取引先の鍵」かを確かめなければ、攻撃者の鍵を渡されてだまされる可能性があります。鍵と相手を結び付ける手段の一つが電子証明書です。
また、秘密鍵が漏えい・共有されていたら「本人だけが署名した」という前提は崩れます。技術的な署名検証と、現実世界での本人性・法的効力は区別して考えます。
7. MAC(メッセージ認証符号)と何が違う?
| 比べる点 | MAC | 電子署名 |
|---|---|---|
| 鍵の使い方 | 双方が同じ秘密の共通鍵を使う | 作成者は秘密鍵・検証者は公開鍵 |
| 検証できる人 | 共通鍵を知る人 | 正しい公開鍵を得た人 |
| 改ざん検知 | できる | できる |
| 第三者への証明 | 共通鍵の持ち主同士では区別しにくい | 前提条件が満たされれば証拠となり得る |
| 文章の暗号化 | しない | しない |
MACは「同じ秘密を持つ者同士で確認する仕組み」、電子署名は「公開鍵を使って広く検証できる仕組み」。用途が違うため、片方をそのまま置き換えるものではありません。
8. 電子署名は『暗号化』ではない
電子署名を付けても、通常は文書本文を読めなくするわけではありません。秘密にしたいなら暗号化を別途行います。たとえば取引先に見積書を安全に送る際には、TLSなどで通信を保護しつつ、必要に応じて文書自体にも署名を付けます。
暗号化
中身を見せない
機密性
電子署名
変更と署名鍵の整合性を確かめる
完全性・署名者認証
電子証明書
公開鍵の持ち主を確かめる手掛かり
鍵の身元確認
9. 実務で気をつけたい4つのこと
可能なら適切な鍵管理サービスやHSMなどを使い、漏えい・共有を防ぐ。
見た目だけでなく、何のバイト列・どの項目を署名するかを決める。
検証に失敗した見積書・更新ファイルを通常処理へ進めない。
証明書、信頼済み配布経路、鍵の指紋などを適切に確認する。
公開鍵の身元確認をもう少し詳しく理解したい場合は、続く「認証局(CA)と電子証明書」の記事が対応します。