デジタル署名(Digital Signature)(電子署名)の仕組みについて解説します。
電子署名とデジタル署名の違い
Wikipediaより引用
■電子署名
電子署名(でんししょめい)とは、電磁的記録(電子文書)に付与する、電子的な徴証であり、紙文書における印章やサイン(署名)に相当する役割をはたすものである。主に本人確認や、改竄検出符号と組み合わせて偽造・改竄(かいざん)の防止のために用いられる。
電子署名を実現する仕組みとしては、公開鍵暗号方式に基づくデジタル署名が有力である。
■デジタル署名
デジタル署名(デジタルしょめい)とは、書面上の手書き署名のセキュリティ特性を模倣するために用いられる公開鍵暗号技術の一種である。
簡単にまとめると以下のようになりますでしょうか。
- 電子署名 ← 電子的に署名がされたもの
- デジタル署名 ← 電子署名を実現する方法の 1 つ
用語の使い方としては「電子署名」=「デジタル署名」でいいと思います。
仮に電子署名を実現する方法として「デジタル署名」の他に複数あり、電子署名だけではどの方法を使っているのか混乱する場合は分ける必要があると思いますが、現状では「電子署名」=「デジタル署名」で共通の認識が出来ていると思います。
デジタル署名(電子署名)の目的
- 平文が改ざんされていないこと
- 本人性が確認できること(否認防止)
デジタル署名の仕組み
■デジタル署名の仕組み
鍵は「公開鍵」と「暗号鍵」の非対称鍵です。
「H」はハッシュ関数を表わしています。
矢印の流れはデータフローです。
図では山ちゃんがタマちゃんにメールを送信しています。
そのため、平文は右から左に流れることになります。
左側の受信者タマちゃんでは受信した平文のを山ちゃんと同じハッシュ関数へ入力し、山ちゃん側で出力した同じはずのハッシュ値を出力します。
タマちゃん側で生成したハッシュ値と公開鍵とデジタル署名を非対称暗号アルゴリズムに入れて、デジタル署名を検証します。
その結果、デジタル署名が検証出来たら(2 つのハッシュ値が同じ値ならば)、平文は改ざんされていないことが確認できます。
もしデジタル署名が検証できない場合は、「平文」か「デジタル署名」のどちらか、もしくは両方に変更が加えられたことになります。
非対称暗号方式(公開鍵と秘密鍵を利用する方式)では、デジタル署名は秘密鍵でハッシュ値を暗号化することにより生成します。
デジタル署名は対応する公開鍵(秘密鍵に対する公開鍵)で、そのデジタル署名を復号することにより元のハッシュ値を求め、検証されます。
元のハッシュ値を新しく生成したハッシュ値と比較し、2 つが一致するならば、デジタル署名は正しく検証されたことになります。
デジタル署名は秘密鍵の保有者だけが作成できる
デジタル署名(電子署名)の目的の所で「本人性が確認できること(否認防止)」と解説しましたがデジタル署名は秘密鍵の保有者だけが作成することができます。
したがって、デジタル署名を利用すると、検証者(メールの受信者、タマちゃん)が「対応する公開鍵はその署名者(山ちゃん)のものである」ことを知っていれば検証者(タマちゃん)は署名者(山ちゃん)を認証できます。
更に秘密鍵を持っている署名者だけが「デジタル署名」ができるので第三者に「本人性」を証明できます。
そのためデジタル署名をした人(山ちゃん)は否定することができません。
(仮に秘密鍵を第三者に盗まれた場合は否認できるかもしれませんが、最終的には盗まれた本人に責任が帰ってきます)
そもそも公開鍵がその人に帰属していることはどうやって証明するか?
上で「デジタル署名を利用すると、検証者(メールの受信者、タマちゃん)が対応する公開鍵はその署名者(山ちゃん)のものであることを知っていれば検証者(タマちゃん)は署名者(山ちゃん)を認証できます。」と説明しましたが、そもそも「公開鍵」がその人に帰属していることをどうやって証明するのでしょうか?
山ちゃんが公開鍵に対して「これは自分のではない」と主張したら、「デジタル署名」の前提が崩れてしまいます。
そのため山ちゃんの公開鍵は山ちゃんのものであることを証明する「第三者機関」が必要になります。
また、山ちゃんにとっても、自分が「公開鍵」に対応する「秘密鍵」を持っていることを証明してもらう必要があります。
この独立した第三者機関は「認証局(CA、Certification Authority)」と呼ばれています。
この認証局(CA)を Linux などで自分で構築して自分で構築した CA に証明してもらって発行した証明書は「オレオレ証明書(自己証明証明書)」と言います。
参考図書
若干古いですが、非常に図が豊富で分かりやすく詳しく PKI(Public Key Infrastructure)を解説している技術書です。
コメント