はじめに
「このファイル、ちゃんと本人が作ったものなの?」
「途中で内容が改ざんされていないって、どうやって証明するの?」
こうした課題に対する仕組みがデジタル署名です。
しかし、仕組みを理解しようとすると「公開鍵」「ハッシュ関数」「暗号化」など、専門用語が次々と出てきて、はじめはつまずきやすいと思います。
この記事では、デジタル署名を理解するために必要な5つの要素を中心に、図を交えながらわかりやすく解説します。
押さえておくべきポイント
デジタル署名を理解するには、以下の5つの要素を押さえておくことが重要です。
- 公開鍵暗号方式
- ハッシュ関数とハッシュ値
- デジタル署名の目的と役割
- デジタル署名の生成手順
- デジタル署名の検証手順
これらの要素について1つ1つ見ていきましょう。
1. 公開鍵暗号方式
2つの鍵(公開鍵・秘密鍵)を使う暗号方式
ここでのポイントは、以下です。
- 公開鍵と秘密鍵はペアで機能する
- 秘密鍵は本人だけが保持し、公開鍵は誰でも入手できる
- 「署名の用途」では、送信者が自分の秘密鍵で署名し、誰でも公開鍵で検証できる
- 「暗号化の用途」では、受信者の公開鍵で暗号化し、受信者だけが秘密鍵で復号する
これにより、データ送信者は第三者にデータが盗まれても、秘密鍵を持っていないため、データを復号することができないため、セキュリティを担保できます。
2. ハッシュ関数とハッシュ値
特徴① どんなデータも一定の長さに要約される(固定長のハッシュ値に変換)
特徴② 同じデータを入力すると、必ず同じハッシュ値が得られる
※ https://www.agent-grow.com/self20percent/2018/11/19/what-is-hash/ より画像引用
同じ内容の文書からは常に同じハッシュ値が得られるため、改ざんの有無を正確に検出できます。
特徴③ 少しの変更でも全く異なるハッシュ値が出る(結果が異なる)
特徴④ 元に戻せない(不可逆)
※ https://gaiax-blockchain.com/hash より画像引用
ハッシュ関数のアルゴリズムとして、SHA-1やSHA-256、SHA-3などの種類があります。
※ 現在ではSHA-1は安全性の問題から非推奨とされており、SHA-256やSHA-3がよく使われています。
3. デジタル署名の目的と役割
-
改ざん防止
内容が少しでも変われば、ハッシュ値が一致しなくなる -
本人確認(なりすまし防止)
秘密鍵を持つ本人だけが署名できる -
否認防止
一度署名したら「してない」とは言えない(否認できない)
4. デジタル署名の生成手順
4-1. 元データをハッシュ関数に通す
上記の図でいう「電子文書」をハッシュ関数に渡し、ハッシュ値を得ます。
4-2. 得られたハッシュ値を、秘密鍵で暗号化
これがデジタル署名です。
※ 元データそのものではなく、ハッシュ値に署名するのがポイント
5. デジタル署名の検証手順
※ https://www.jipdec.or.jp/project/research/why-e-signature/PKI-crypto-mechanism.html より画像引用
5-1. 受け取った元データを自分でもハッシュ関数に通す
上記の図における「電子文書」がデータのことで、これをハッシュ関数に渡し、ハッシュ値を生成します。
5-2. デジタル署名を公開鍵で復号
署名者が送付した公開鍵を使って、デジタル署名を復号します。
5-3. 両者を比較
自分が計算して求めたハッシュ値とデジタル署名作成者が計算して求めたハッシュ値が一致するかどうかを確かめます。
5-3-1. ハッシュ値が一致していた場合、以下のことがわかります
ハッシュ値が一致していた場合、以下のことがわかります。
-
データが改ざんされていない
→ 受け取ったデータのハッシュ値と、署名から復号されたハッシュ値が一致している
→ つまり、送信者が署名した時と同じ内容のデータである -
署名が本物である
→ 公開鍵で復号できたということは、対応する秘密鍵で署名された証拠
→ 秘密鍵を持っているのは基本的に本人だけなので、その人が署名したことの証明になる -
否認防止
→ ハッシュ値は不可逆なので、誰かが偶然同じ署名を作ることは不可能
→ あとから「自分は署名していない」と言い逃れることができない
これにより、検証者は安心して使用することができます。
5-3-2. ハッシュ値が不一致だった場合、以下の可能性があります
考えられる原因
- データが改ざんされた可能性がある
- 署名が偽造されている可能性がある
- 誤送信や通信エラーなど、技術的な原因による破損
対応方法
- 受信したデータや署名を信頼してはならない
- データの再送を依頼する
- 送信者本人に確認を取る
まとめ
この記事では、デジタル署名を理解するうえで重要な以下の5つの要素を紹介しました。
- 公開鍵暗号方式(秘密鍵で署名し、公開鍵で検証)
- ハッシュ関数とハッシュ値(改ざん検出の要)
- 署名の作成手順(ハッシュ値に署名する)
- 署名の検証手順(自前計算と比較する)
- デジタル署名の目的(改ざん防止・本人確認・否認防止)
デジタル署名は、単なる「暗号化」ではなく、信頼を担保するための仕組みです。
仕組みを理解しておくことで、日常で使われる技術にも安心してチャレンジできるでしょう。
最後までお読みいただき、ありがとうございました。
参考・画像引用元URL