デジタル署名とは

でじたるしょめい

電子文書が誰によって作られ、その後改ざんされていないことを確かめるための技術。署名する人が文書のハッシュ値を自分の秘密鍵で処理して署名を作り、受け取った人は署名した人の公開鍵で検証する。否認防止にも使われる。

「デジタル署名」は、1分野の4問の練習問題に出てきます(情報セキュリティの基礎など)。

この用語の分野: 情報セキュリティの基礎

署名と検証の手順

署名する人は、まず文書のハッシュ値を計算し、それを自分の秘密鍵で処理して署名を作り、文書に付けます。検証する人は、受け取った文書から自分でハッシュ値を計算し、署名した人の公開鍵を使って、署名がそのハッシュ値と対応しているかを確かめます。文書が1ビットでも書き換えられていればハッシュ値が変わるので、検証は失敗します。秘密鍵を持たない人は、正しい署名を作れません。

確かめられることと確かめられないこと

検証に成功すれば、文書が秘密鍵の持ち主によって署名されたこと(真正性)と、署名の後に変更されていないこと(完全性)が分かり、署名した人は後から否定しにくくなります(否認防止)。一方、デジタル署名は文書を暗号化しないので、内容の秘密は守れません。また、公開鍵が本当にその人のものかは、認証局(CA)が発行する証明書で確かめる必要があります。

使われている場面

Webサイトのサーバ証明書(TLS)、ソフトウェアの配布やアップデートに付けるコード署名、機器が正しいソフトウェアだけを起動するセキュアブート、電子契約や電子申請、電子メールの署名(S/MIME)などで使われています。代表的な方式に、RSA署名、ECDSA、EdDSAがあります。

デジタル署名の練習問題に挑戦

AさんがBさんに送る文書にデジタル署名を付ける。署名の作成と検証に使う鍵と、デジタル署名によって確かめられることの組み合わせとして正しいものはどれか。

  1. AAさんの秘密鍵で署名を作り、BさんはAさんの公開鍵で検証する。文書がAさんの作ったものであり、途中で改ざんされていないことを確かめられる
  2. BBさんの公開鍵で署名を作り、Bさんは自分の秘密鍵で検証する。文書の内容が第三者に読まれないことを確かめられる
  3. CAさんの公開鍵で署名を作り、BさんはAさんの秘密鍵で検証する。文書の内容が正しい事実であることを確かめられる
答えと解説を見る

正解:A. Aさんの秘密鍵で署名を作り、BさんはAさんの公開鍵で検証する。文書がAさんの作ったものであり、途中で改ざんされていないことを確かめられる

デジタル署名では、署名する人(Aさん)が、文書のハッシュ値を自分の秘密鍵で処理して署名を作り、文書に付けて送ります。受け取ったBさんは、Aさんの公開鍵で署名を検証し、文書から計算したハッシュ値と対応しているかを確かめます。秘密鍵を持つのはAさんだけなので、検証に成功すれば、文書がAさんによって署名されたこと(真正性)と、署名の後に1ビットも書き換えられていないこと(完全性)が分かります。また、Aさんは後から「署名していない」と否定しにくくなります(否認防止)。ただし、その公開鍵が本当にAさんのものであることは別に確かめる必要があり、そのために証明書が使われます。一方、デジタル署名は文書を暗号化しないので、内容を秘密にはできません。秘密にしたい場合は、別に暗号化を組み合わせます。また、署名で分かるのは誰が署名したかであり、書かれた内容が事実として正しいかどうかは分かりません。

メッセージ認証コード(MAC)とデジタル署名を比べたときの説明として正しいものはどれか。

  1. AMACは公開鍵で誰でも検証できるので、否認防止の効果はデジタル署名より強い
  2. BMACは送り手と受け手が共有する共通鍵で作るので、改ざんの検出はできるが、受け手も同じMACを作れるため、第三者に対して送り手が作ったことを証明する否認防止には使えない
  3. CMACは鍵を使わずにハッシュ値を計算するだけなので、攻撃者がメッセージを書き換えたうえでMACを計算し直しても、受け手は気づくことができる
答えと解説を見る

正解:B. MACは送り手と受け手が共有する共通鍵で作るので、改ざんの検出はできるが、受け手も同じMACを作れるため、第三者に対して送り手が作ったことを証明する否認防止には使えない

メッセージ認証コード(MAC)は、メッセージと共通鍵から計算する短い値で、ハッシュ関数を使うHMACがよく使われます。受け手は同じ鍵で計算し直して比べ、一致すれば、鍵を知っている相手から送られ、途中で改ざんされていないことが分かります。鍵を知らない攻撃者は、書き換えたメッセージに合う正しいMACを作れません。ただし、同じ鍵を受け手も持っているので、受け手もMACを作れます。そのため、受け手が第三者に「これは送り手が作ったものだ」と証明することはできず、否認防止にはなりません。デジタル署名は送り手の秘密鍵でしか作れず、公開鍵で誰でも検証できるので、否認防止に使えます。一方、MACは計算が軽く、通信の1つ1つのパケットの改ざんの検出など、当事者どうしの確認に広く使われています。鍵を使わない単なるハッシュ値は、攻撃者がメッセージと一緒に計算し直せてしまうので、意図的な改ざんの検出には使えません。

よくある質問

デジタル署名では、どちらの鍵で署名しますか?

署名する人の秘密鍵で署名を作り、検証する人は署名した人の公開鍵で確かめます。暗号化して秘密を守るときとは、鍵の使い方が逆になります。

デジタル署名と電子署名は同じですか?

電子署名は、電子文書に付ける署名の総称で、法律などで広い意味に使われます。デジタル署名は、そのうち公開鍵暗号の技術を使って実現するものを指します。

解説の中の「デジタル署名」

「デジタル署名」が出てくる問題(4問)

  1. AさんがBさんに送る文書にデジタル署名を付ける。署名の作成と検証に使う鍵と、デジタル署名によって確かめられることの組み合わせとして正しいものはどれか。
  2. メッセージ認証コード(MAC)とデジタル署名を比べたときの説明として正しいものはどれか。
  3. 公開鍵暗号を使って、AさんがBさんだけに読めるようにメッセージを暗号化して送りたい。暗号化に使う鍵はどれか。
  4. 暗号で使われるハッシュ関数(暗号学的ハッシュ関数)の性質として正しいものはどれか。

情報セキュリティの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

ハッシュ関数 メッセージ認証コード 公開鍵暗号 SQLインジェクション 共通鍵暗号 クロスサイトスクリプティング(XSS) 最小権限の原則 ゼロデイ攻撃 ソーシャルエンジニアリング ソルト

用語集の一覧へ