見出し画像

ブロックチェーン入門_#6:基礎技術「デジタル署名」- 本当に押印・割印よりも便利なのか

ブロックチェーン技術の中で、ユーザ本人の意思を確認するために使用する「デジタル署名」とはどんなものでしょうか。構造と課題を解説します。


デジタル署名とは何か?

■押印・割印には欠点がある

押印や割印は、書類や契約に自分の同意を示す伝統的な方法です。押印によって意思を表明し、例えば同じ契約書を2部作る時など、二つの契約書にまたがるように割印をすることで、同じ時に作られた二つの書類であることを証明できるとされます。

しかし、印影の偽造はテクノロジーの発展によりどんどん容易になっており、書類の一部に印影が載っているからといって、書類のその他の部分に後から変更が加えられていないことの証明はできません。サインについても同様です。

■デジタル署名の目的

デジタル署名は、印鑑やサインがもつこれらの問題を解決すべく、デジタル技術で以下を実現することを目的としています。

・本人の意思で署名したことを否定できない
・署名されたデータに署名後に変更が起きていないことを証明できる

■電子署名との違いは?

「電子署名」はむしろ日本の法律用語で、上のような目的が達成されているものの総称を意味します。デジタル署名はそのための具体的な技術の例です。

■秘密鍵と公開鍵

デジタル署名では、「秘密鍵」と「公開鍵」と呼ばれる二つの鍵が使われます。秘密鍵は自分だけが持つ鍵で、公開鍵は他人に公開する鍵です。二つを合わせて「鍵ペア」と呼ぶこともあります。鍵は256ビットなどの大きな数です。

ブロックチェーンで使われる多くのデジタル署名アルゴリズムでは、秘密鍵だけを保存しておけば、公開鍵は秘密鍵から生成できます。一方で、そのようにできないアルゴリズムもあります。どのデジタル署名アルゴリズムでも、公開鍵から秘密鍵は推測できません。できるとしたら、コンピュータ技術の発展に伴い、そのアルゴリズムが古くなってしまったことを意味します。

デジタル署名の仕組み

■署名の生成

デジタル署名をする際は、秘密鍵を使ってデータに対する「署名」を作ります。このための計算は複雑で、対象のデータが大きくなると煩雑になります。まずデータの暗号学的ダイジェストを得て、得られたダイジェストに対しての署名を作るのが一般的です。(関連単元:基礎技術「暗号学的ハッシュ関数」 - 同じかどうかを確かめる

この署名をデータと一緒に相手に送ります。ブロックチェーンでは、トランザクションのデータに署名し、データと一緒に公開する(全員に向けて配付する)ことになります。

■署名の検証

署名付きのデータを受け取った側は、公開鍵を使って署名の正しさを検証できます。検証が成功すれば、その公開鍵とペアとなる秘密鍵が使われたことと、署名が施されて以降はデータが変更されていないことが分かります。

秘密鍵は本人が隠し持っているため、正しさが検証されたデジタル署名があるということは、間違いなく本人の意思によりそれが行われたと推定できます。

■署名と暗号化は違う

書籍等で、署名は暗号化処理で、署名の検証は暗号文の復号処理だと説明している例が多く見受けられます。そのように解釈できるデジタル署名の方式(例えばRSA)もありますが、一般にそうだとは言えません。特に、ブロックチェーンでよく用いられているデジタル署名のアルゴリズム(楕円曲線を用いるアルゴリズム)では、暗号化や復号の操作は行っていません。

デジタル署名の課題と対策

■公開鍵が正しいとどうして言える?

デジタル署名の落とし穴は、公開されている公開鍵が本当に本人のものかどうかをどうやって確かめるのかという点です。ニセモノが自分の公開鍵をあたかも本人のものであるかのように公開できれば、本人になりすましたデジタル署名が可能になってしまいます。

この問題の解決のためには、一般に、認証局と呼ばれる信頼された第三者機関が発行する公開鍵証明書が用いられます。公開鍵証明書は、公開鍵が本当に本人のものだということを認証局が責任をもって証明するものです。

■BitcoinやEthereumのアプローチ

ブロックチェーンの特長の一つは「耐検閲性」のため、検閲者になり得る認証局に頼ることはできません。

そのため、Bitcoin(ビットコイン)やEthereum(イーサリアム)などでは、公開鍵証明書に依らずに公開鍵の真正性を確認できるような仕組みを持っています。それは、ユーザの公開鍵のダイジェストをユーザのアドレスとして利用するという方法です。トランザクションには、それを投入したユーザの署名と公開鍵の両方が添付されています。

トランザクションの正当性を検証するマイナー(Bitcoinの場合)やバリデーター(Ethereumの場合)といった検証者らは、トランザクションのデータと署名と公開鍵を使ってデジタル署名を検証するとともに、ユーザのアドレスと、公開鍵のダイジェストがマッチすることを確認します。これにより、アドレスが正しい限りにおいて、本人のデジタル署名が付いている、本人の意思に基づくトランザクションであることが確認できます。

この方法を使うには、ユーザのそれぞれが、互いから伝えられたアドレスが正しいものだと確認していなければなりません。つまり、認証局ではなく、一人ひとりのユーザ自身が公開鍵の真正性を責任もって確認するという仕組みになっています。
次回は、ブロックチェーンを支える技術の中でも最も耳にした方が多いであろう「ピアツーピア・ネットワーク」について解説します。「P2P」のような表記で見た方も多いでしょう。ぜひ、どういう技術なのかをご確認ください。


Web3ポケットキャンパスはスマホアプリでも学習ができます。
アプリではnote版にはない「クイズ」と「学習履歴」の機能もあり、
よりWeb3学習を楽しく続けられます。

ぜひご利用ください

▼スマホアプリインストールはこちら

この記事が気に入ったらサポートをしてみませんか?