デジタル署名
暗号技術を用いて電子データに付ける署名。署名者の秘密鍵で作成し、対応する公開鍵で検証することで、データの改ざんの検出や署名者の確認に用いる。
イマシルちゃんの解説
デジタル署名は、暗号技術を使って電子データに付ける署名だよ。
署名する人は、自分だけが保管する秘密鍵でデータに対応した署名を作るんだ。
受け取った人は、ほかの人に渡せる公開鍵でその署名を確かめるよ。
データが書き換えられていると元の署名では検証に失敗するから、途中の変更を見つけられるんだ。
ただし、確かめる鍵が本当に署名した人のものかも重要だよ。
鍵と持ち主の結び付きを確かめておくことで、本人の署名かどうかも判断できるんだ。
この解説はわかりやすかったですか?
より深い解説
定義
デジタル署名は、公開鍵暗号の仕組みを使って、データに付ける署名である。署名には作成者の秘密鍵を使い、検証には作成者の公開鍵を使う。暗号化(受信者の公開鍵で暗号化し、受信者の秘密鍵で復号する)とは、鍵の使い方が逆になる。
署名と検証の手順
| 手順 | 送信者(署名する側) | 受信者(検証する側) |
|---|---|---|
| 1 | データのハッシュ値を計算する | 受け取ったデータのハッシュ値を計算する |
| 2 | ハッシュ値を自分の秘密鍵で処理し、署名を作る | 署名を送信者の公開鍵で検証する |
| 3 | データと署名を送る | 1のハッシュ値と、署名から得られる値が一致すれば、検証に成功 |
データそのものではなくハッシュ値に署名するのは、データが大きくても署名の計算を短く済ませるためである。
デジタル署名でわかること
| わかること | 理由 |
|---|---|
| 改ざんされていないこと(完全性) | データが1ビットでも変わると、ハッシュ値が変わって検証に失敗する |
| 作成者が本人であること(認証) | 対応する秘密鍵を持つ本人にしか、正しい署名は作れない |
| 作成者が後で否定できないこと(否認防止) | 秘密鍵は本人しか持たないので、「自分は署名していない」と言い逃れできない |
一方、デジタル署名だけでは、データの中身を秘密にする(機密性)ことはできない。中身を隠すには、別に暗号化を行う。
公開鍵が本物であることの確認
検証に使う公開鍵が、確かに作成者のものでなければ意味がない。そのため、公開鍵が本人のものであることを、認証局がデジタル証明書で保証する。
主な方式と利用場面
方式には、RSA署名、ECDSA(楕円曲線を使う方式)、EdDSAなどがある。