ディジタル署名は、文字どおり電子的な署名です。電子署名とも呼ばれることもあります(後で補足あり)。
そもそも署名とは何か
ディジタル署名の説明の前に、そもそも署名とは何でしょうか。署名は、本人が自筆で自分の名前を書いたものです。何のために署名するかを考えてみると、以下の二つが考えられます。
署名の効果
1.署名者を示す
2.署名の対象について同意や保証を示す。
「署名」のポイントは「本人が自筆で」というところにあります。筆跡は人によって異なり、筆跡鑑定を行えば、署名した本人が契約した証拠として、その証拠能力はきわめて高くなります。
ディジタル署名も(通常の)署名と同じ効果を持つように作られています。上記1の効果を実現するためには署名と同様に署名者本人の名前を電子データとして書けばよいでしょう。上記2であれば、本人の意思に基づいていることを確認できる必要があります。
これには、
1.確かに本人の行為によるもの(本人しかできないこと)であること
2.署名の対象と署名が対応しているものであること
が確認できる必要があります。
ディジタル署名において上記2の効果を実現するために、署名者本人の名前を電子データとして書くだけなら不十分です。何故なら、電子データは容易にコピー可能であり、そこに筆跡のような差は生じません。単なる名前の電子データをディジタル署名としてしまうと誰でも同じディジタル署名を簡単に作成することができてしまうからです。
ここで役に立つのが、公開鍵暗号です。
公開鍵暗号を用いてディジタル署名の正当性を確認する
では、公開鍵暗号を用いてディジタル署名の正当性確認をどのように実現するのでしょうか。
まず前提として、公開鍵暗号には対応する秘密鍵・公開鍵があり、秘密鍵によって暗号化したものは対応する公開鍵でしか復号化できないという特性があります。(詳細は「公開鍵暗号」を参照してください)
署名の対象データのハッシュ値を署名者の秘密鍵で暗号化(A)したものをディジタル署名とします。
ディジタル署名の検証者は、公開されている署名者の公開鍵(B)を使ってディジタル署名を復号化した値と、署名の対象データのハッシュ値が一致することを確認(C)することで、ディジタル署名が正しいものであるかを確認します。
これにより、署名者であることを(B)により確認でき、署名は確かに本人の行為によるものであることを(A)により、署名の対象と署名が対応しているものであることは(C)により保証されます。
つまり、署名者が公開している公開鍵を使うことで署名者が誰であるかを特定し、署名者しか知らない秘密鍵を使うことで確かにその署名者による行為であることを確認し、ディジタル署名と署名の対象データとの整合性を見ることでその対応を確認できるというわけです。
ディジタル署名の機能についてまとめると下表のようになります。
目的 | 実現方法 | 実現される機能 |
---|---|---|
署名者を示す | 署名者が公開している公開鍵 | 認証 |
署名は確かに本人の行為によるものであることを示す | 署名の対象データのハッシュ値を署名者の秘密鍵で暗号化 | 否認の防止 |
署名の対象と署名が対応しているものであることを示す | 署名の対象データのハッシュ値が一致することを確認 | 改ざん検知 |
否認の防止とは、インターネットなどで利用者が事後になってその利用事実を否定することができないように証拠を残すことです。ディジタル署名のケースでは、私は署名なんかしていないと否定されることを防ぐことができます。
電子署名とディジタル署名
電子文書に対する署名には、上述のディジタル署名 (Digital Signature) の他に、電子署名 (Electronic Signature)という用語もあります。これら2つの用語は、ほぼ同じですが、厳密には異なる意味合いで用いられます。
ディジタル署名は、公開鍵暗号方式を利用したもので、メッセージの発信者の認証と改ざんの検知が可能なものを指します。
一方、電子署名は各国によって様々な定義がされており、ディジタル署名を含む広義の署名として用いられています。日本では、電子データの作成者を特定でき、電子データが改変されていないことが確認できるものを指します。