デジタル署名の仕組み
投稿日: 更新日:
デジタル署名とは
「改ざん検出」「なりすまし検出」「否認防止」が可能になる技術です。メッセージ認証コードと異なる点は否認防止ができることです。
メッセージ認証コードでは署名の作成・検証で共通の鍵を利用していましたが、デジタル署名では公開鍵暗号を利用して署名の作成と検証で別々の鍵を利用します。
デジタル署名の仕組み
メッセージのハッシュ値に署名をします。
署名をすると言ってもハッシュ値を暗号化しているだけです。
- 送るメッセージのハッシュ値を求める。
- プライベート鍵でハッシュ値を暗号化。(これが署名です!)
- メッセージと(2)の値を送信。
- 受信者は送られてきたメッセージのハッシュ値を求める。
- 公開鍵で署名を復号化し計算したハッシュ値と一致するか検証。
公開鍵暗号では秘密鍵で復号化、公開鍵で暗号化していましたが、デジタル署名では秘密鍵で暗号化、公開鍵で復号化してます。このように、役割が真逆になっています。
なぜ否認防止になるのか
署名を作成できる秘密鍵は送信者しか知りません。つまり、「その署名を作成したのは他人だ!」と言えません。したがって、否認防止となります。
なぜ改ざん検出が可能なのか
送信経路の途中で攻撃者がメッセージを書き換えたとします。そうすると署名のハッシュ値とメッセージのハッシュ値が一致しなくなり改ざんを検出できます。
メッセージと署名両方書き換えれば良いのでは?
それはできません。攻撃者は正しい署名の作成に必要な秘密鍵を知らないため、署名の書き換えに失敗します。
参考文献
結城浩(2015)暗号技術入門 第3版