デジタル署名(digital signature)

分類
テクノロジ系 セキュリティ
出る試験
基本情報応用情報
重要度
★★★★★

送る人の秘密鍵で作る署名。本人が作ったことと、改ざんされていないことを示す。

もう少し詳しい説明

デジタル署名は、その文書を本人が作ったことと、途中で書き換えられていないことを、同時に示すための仕組みです。

紙の書類なら、印鑑やサインがこの役目を果たします。ただ紙と違うのは、デジタル署名は中身とひもづいているという点です。文書を1文字でも書き換えると署名が合わなくなるので、署名だけを切り取って別の文書に貼り付けることができません。

まず、公開鍵と秘密鍵の関係

このページは、鍵が2本1組になっていることを前提に進みます。先にそこを説明します。

公開鍵暗号方式では、鍵を2本1組で作ります。

片方でかけたものは、もう片方でしか開けられません。 鍵の正体は、金属の鍵ではなくとても長い数字です。暗号化(中身を他人には読めない形に変えること)も復号(もとの読める形に戻すこと)も、その数字を使った計算で行います。

仕組み:鍵を逆向きに使う

デジタル署名は、公開鍵暗号方式(鍵を2本組で使うやり方)の鍵の組を逆向きに使って実現します。

公開鍵暗号方式では、内容を秘密にするために「受け取る人の公開鍵でかけ、受け取る人の秘密鍵で開ける」のでした。署名はこれを逆にして、送る人の秘密鍵でかけ、送る人の公開鍵で開けます。

なぜこれで本人だと分かるのでしょうか。秘密鍵を持っているのは本人だけだからです。送る人の公開鍵で開けられたということは、対になる秘密鍵でかけられたということであり、それができるのは本人しかいません。

① 本文からハッシュ値を作る送り主の側② 送り主の秘密鍵で署名する本人しか作れない③ 送り主の公開鍵で確かめる受け取った側④ 本文のハッシュ値と比べる一致すれば改ざんなし
署名を作るのは送り主の秘密鍵、確かめるのは送り主の公開鍵です。暗号化のときと鍵の使い方が逆になります。ここが試験で最も問われます。

本文ではなくハッシュ値に署名する

ハッシュ関数は、もとのデータから、決まった長さの値を作る計算です。作られた値をハッシュ値と呼びます。1文字でも変えると、ハッシュ値はまったく違うものになります。そして、ハッシュ値からもとのデータに戻すことはできません。

図の①にあるとおり、署名は本文そのものではなく、このハッシュ値に対して作ります。

理由は2つあります。1つは、公開鍵暗号方式(鍵を2本組で使うやり方)の計算が重く、長い本文をそのまま処理すると時間がかかりすぎること。もう1つは、ハッシュ値なら長さが一定なので、本文がどれだけ長くても署名の処理時間が変わらないことです。

受け取った側は、届いた本文からもう一度ハッシュ値を計算し、署名から取り出した値と比べます。一致すれば、本文は書き換えられていないと分かります。

秘密にはならない

ここで大事な注意があります。デジタル署名をつけても、本文の中身は秘密になりません。

署名を確かめるのに使う公開鍵は誰でも持っているので、署名の中身も誰でも取り出せます。そもそも本文は暗号化(中身を他人には読めない形に変えること)されずにそのまま送られます。署名の目的は秘密の保持ではなく、本人の証明と改ざんの検知です。

封をしていない手紙に、印鑑だけ押してある状態だと考えてください。誰が書いたかは分かりますが、中身は誰にでも読めます。

内容も秘密にしたいなら、署名とは別に暗号化も行います。目的が違うので、両方必要なら両方やる、ということです。

やりたいこと使う鍵得られるもの
内容を秘密にする受け取る人の公開鍵でかける本人以外には読めない
本人が作ったと示す送る人の秘密鍵でかける本人の証明と改ざん検知

3つ目の効果:否認防止

署名には、もう1つ効果があります。後から「自分は送っていない」と言えなくなることです。これを否認防止(あとになって「自分はやっていない」と言い逃れできないようにすること)と呼びます。

その署名を作れるのは秘密鍵を持つ本人だけなので、署名が正しく検証できる以上、本人が作ったと言い切れます。契約のやり取りなどで重視される性質です。

残る問題:その公開鍵は本人のものか

署名を確かめるには、送り主の公開鍵が要ります。では、その公開鍵が本当に送り主のものだとは、どうやって分かるのでしょうか。

攻撃者が自分の鍵の組を作り、「これがAさんの公開鍵です」と配ったとします。すると、攻撃者が自分の秘密鍵で作った署名が、Aさんの署名として通ってしまいます。確かめる側は、配られた公開鍵で開けられた、という事実しか見ていないからです。

これを防ぐのが認証局(CA)(公開鍵の持ち主がだれなのかを保証する、第三者の組織)です。認証局は「この公開鍵はAさんのものである」というデジタル証明書(公開鍵の持ち主を認証局が保証した電子の書類)を発行し、その証明書にも認証局自身の署名がついています。

なお、署名で分かるのは「誰が作ったか」と「書き換えられていないか」までで、いつ作られたかは分かりません。時刻まで示したい場合はタイムスタンプ(その時刻にそのデータが存在していたことを、第三者が証明する仕組み)という別の仕組みを使います。

試験ではこう出る

科目A(旧・午前)のセキュリティ分野で最頻出の1つです。

多いのは、署名の作成と検証にそれぞれ誰のどの鍵を使うかを選ばせる形です。デジタル署名で実現できること(本人の証明・改ざん検知・否認防止)と、できないこと(内容の秘密、作成時刻の証明)を切り分ける問題も定番です。応用情報では、認証局(公開鍵の持ち主を保証する組織)と証明書の役割や、署名を本文ではなくハッシュ値(もとのデータから作った、決まった長さの値)に対して行う理由まで踏み込みます。

取り違えが一番多いのは鍵の向きです。「秘密にするのは受け取る人の鍵、本人を示すのは送る人の鍵」と、目的から鍵の持ち主を先に決めると間違えません。さらに「作るのは本人だけ=秘密鍵、確かめるのは全員=公開鍵」と続ければ、4択のうち残るのは1つになります。

関連する用語

公開鍵暗号方式
暗号化と復号で別の鍵を使う方式。署名はその鍵を逆向きに使う応用
ハッシュ関数
データを決まった長さの値に変える関数。署名は本文ではなくこの値に対して作る
認証局(CA)
その公開鍵が本人のものだと証明する第三者。ここが無いとなりすましを防げない
デジタル証明書
認証局が発行する、公開鍵の持ち主を証明する電子の書類
否認防止
後から「自分は送っていない」と言わせないこと。署名が満たす性質の1つ
タイムスタンプ
その時刻に存在していたことを示す仕組み。署名では時刻までは保証できない

ミニクイズ

デジタル署名について、署名の作成と検証に使う鍵の組合せとして適切なものはどれか。

正解は 3番:作成には送信者の秘密鍵を使い、検証には送信者の公開鍵を使う

署名を作れるのは、その秘密鍵を持っている本人だけです。そのため作成には送信者の秘密鍵を使います。一方、確かめるのは受け取った人や第三者なので、誰でも手に入る送信者の公開鍵を使います。ここが暗号化のときと逆になる点で、最も多い取り違えです。受信者の鍵を使うのは内容を秘密にしたいときの組合せで、本人の証明にはなりません。共通鍵暗号方式(暗号化と復号に同じ鍵を1本使うやり方)では、同じ鍵を持つ相手も同じ署名を作れてしまうため、本人が作ったと示すことができず、後から否認されても反論できません。

間違えた用語の復習リストを見る →

この分野をまとめて解く → セキュリティのミニテスト(全47問)

最終更新:2026-09-15