ブロックチェーン

デジタル署名で本人確認

「仮想通貨(暗号資産)の代表格ビットコインとは」で、ビットコインのシステムは、安全な取引を実現するうえで、「デジタル署名」と「Proof of Work、P2Pネットワークによる情報の共有」が必要であると紹介しました。

今日は、「デジタル署名」のしくみについて、説明します。

デジタル署名とは

私たちが契約書などに捺印する実印の役目を果たすものです。文書に実印があることで、本人がその文書を書いたものであると証明できます。これと同じように、ファイルにデジタル署名があると、デジタル署名をした人がそのファイルの作成者であることが証明されます。

デジタル署名の仕組み

デジタル署名は公開鍵暗号の方法を用いており、秘密鍵と公開鍵が必要です。

秘密鍵はデジタル署名を生成するときに使用するものです。それを生成した人だけが持つものであり、なくしたり盗まれたりしないように厳重に管理する必要があります。

公開鍵はその名称の通り、公開しても問題ない鍵で、デジタル署名を復号するときに使用します。

※公開鍵暗号では、2つの鍵の使われ方が逆で、暗号化に必要なのは公開鍵、復号に必要なのは秘密鍵になります。

その仕組みを、AさんからBさんに契約書のファイルを送る場面を例にして説明します。

(条件)契約書の内容は公開しても問題ありませんが、契約書はAさんが書いたものであることを保証する必要があります。

(デジタル署名付きファイルの作成)

契約者作成のAさんがデジタル署名付きファイルを作成し、Bさんに送付します。

1.Aさんが鍵生成アルゴリズムで秘密鍵と公開鍵を生成

2.AさんがBさんに公開鍵を送付

3.契約書をハッシュ化します
契約書の内容は秘密ではないので、ハッシュ化は必須ではありませんが、データ量が多いと、デジタル署名の暗号化に時間がかかります。ハッシュ化すると一定のデータ量になるため、暗号化にあまり時間がかからないというメリットがあります。

4.ハッシュ化した契約書と公開鍵を合わせたものを秘密鍵で暗号化
これでAさんの契約書にデジタル署名が付きました。秘密鍵はAさんしかもっていないので、デジタル署名をつけることができるのは、Aさんだけです。

5.Aさんが、契約書のファイルとデジタル署名付きファイルをBさんに送付

(デジタル署名付きファイルの検証)

デジタル署名付きファイルを受け取ったBさんは、そのファイルが、本当にAさんが作成したものかどうかを検証します。

6.Bさんが、デジタル署名付きファイルを公開鍵で復号します
復号には「2」でAさんから送られてきた公開鍵を使用します。復号されたファイルは、「3」で示した契約書をハッシュ化したものです。

7.復号されたファイルと契約書を比較
Bさんは、送られてきた契約書そのもののファイルを自らハッシュ化して、復号されたファイルの内容と比較します。

比較の結果、内容が同一であれば、

◎契約書はAさん本人から送られてきた
◎Aさん本人が送付しているので内容は改ざんされていない
◎デジタル署名をつけられる秘密鍵を持っているのはAさんだけなので、Aさんはこの契約書の作成を否認できない

が証明されました。

同一でなければ、Aさん以外の人がなりすまし、乗っ取りなどをして、Bさんあてに偽物の契約書を送ったことになります。

以上がデジタル署名の仕組みです。デジタル署名では、署名をつけるために、秘密鍵で暗号化しますが、内容自体の機密性を保つことが目的ではないので、内容そのものを送ることに問題はありません。

上記の説明を図にしました。それぞれの番号は、デジタル署名生成と検証の手順の番号と同じです。

次回は、このデジタル署名がビットコインシステムでどのように活用されているかを説明します。

参考文献
「暗号技術入門」第3版 結城浩 SB Creative
「暗号技術のすべて」 IPUSIRON  翔泳社
「ブロックチェーン」 岡嶋裕史 講談社ブルーバックス