デジタル署名の仕組みと役割をやさしく解説

秘密鍵で署名し公開鍵で検証。完全性・認証・否認防止を保証するデジタル署名の原理を図解的に学ぶ。

編集・検証: 情報セキュリティマネジメントスタディ編集部 公式情報: IPA 情報セキュリティマネジメント試験公式ページ 制作・検証方針

この回では、なりすましや改ざんを防ぐ「デジタル署名」の仕組みと役割を学ぶわ。公開鍵暗号を「逆向き」に使うのがポイントよ。

紺野 アキ(普段) 紺野 アキ

先生、デジタル署名ってハンコみたいなものだよね?

銀城 ナディア 先生(笑顔) 銀城 ナディア 先生

イメージは近いわね。
でもデジタル署名は、書いた人が本人だと確認できる(認証)だけでなく、内容が改ざんされていないこと(完全性)も同時に保証できるのよ。

灰原 さや(普段) 灰原 さや

公開鍵暗号を使うんですよね。
暗号化とは鍵の使い方が逆になると習いました。

銀城 ナディア 先生(普段) 銀城 ナディア 先生

そのとおり。
暗号化では受信者の公開鍵で暗号化するけれど、署名では署名者の秘密鍵で署名を作り、受信者は署名者の公開鍵で検証するの。
秘密鍵は本人しか持っていないから、正しく検証できれば本人が作った証拠になるわ。

薔薇崎 ねむ(普段) 薔薇崎 ねむ

でも文書全体を秘密鍵で暗号化するんですかぁ? 遅そうですぅ…

銀城 ナディア 先生(笑顔) 銀城 ナディア 先生

いい着眼点ね。
実際は文書全体ではなく、ハッシュ関数で作ったメッセージダイジェスト(ハッシュ値)を秘密鍵で暗号化するの。
これが署名の本体よ。

紺野 アキ(びっくり) 紺野 アキ

ハッシュ値ってなんだっけ?

灰原 さや(普段) 灰原 さや

元データから作る固定長の要約値ですね。
少しでも元データが変わると値が大きく変わるので、改ざん検知に使えます。

銀城 ナディア 先生(普段) 銀城 ナディア 先生

検証側は、受け取った文書から同じハッシュ関数でハッシュ値を計算し、署名を公開鍵で復号して得たハッシュ値と照合するの。
一致すれば「本人が作り、かつ改ざんされていない」と分かるわ。

薔薇崎 ねむ(普段) 薔薇崎 ねむ

もし途中で内容を書き換えられたら…ハッシュ値が変わって一致しなくなるんですねぇ。

銀城 ナディア 先生(笑顔) 銀城 ナディア 先生

そう。
だから改ざんが検知できる。
さらに、秘密鍵は本人しか持たないので「自分は署名していない」と後から否定できない、否認防止の効果もあるのよ。

紺野 アキ(普段) 紺野 アキ

じゃあ盗聴は防げるの? 中身は誰でも読めちゃう?

銀城 ナディア 先生(普段) 銀城 ナディア 先生

鋭いわね。
デジタル署名は機密性(秘匿)は保証しないの。
中身を隠したいなら別途暗号化が必要よ。
署名が守るのは完全性・認証・否認防止の3つ、と覚えてね。

灰原 さや(普段) 灰原 さや

RSAだけでなく、楕円曲線を使うECDSAなどの署名方式もありますね。

銀城 ナディア 先生(笑顔) 銀城 ナディア 先生

ええ。
方式は複数あるけれど、『秘密鍵で署名・公開鍵で検証』という原則は共通よ。

確認クイズ

デジタル署名に関する記述のうち、適切なものはどれか。

  1. 送信者は受信者の公開鍵で署名を生成し、受信者は自分の秘密鍵で検証する。
  2. 送信者は自分の秘密鍵で署名を生成し、受信者は送信者の公開鍵で検証する。
  3. デジタル署名を用いると、通信内容の盗聴(機密性の侵害)を防ぐことができる。
  4. デジタル署名は文書全体を秘密鍵で暗号化して作成するため、処理が高速である。
こたえを見る

正解: 2. 送信者は自分の秘密鍵で署名を生成し、受信者は送信者の公開鍵で検証する。

署名は送信者(署名者)の秘密鍵で生成し、送信者の公開鍵で検証するのが正しく、イが正解。アは鍵の対応が逆。ウはデジタル署名が保証するのは完全性・認証・否認防止で、機密性(秘匿)は保証しないため誤り。エは実際には文書全体ではなくハッシュ値(メッセージダイジェスト)に署名するため誤り。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。