【仮想通貨】デジタル署名について調べてみた【ブロックチェーン】

ビットコインなどの仮想通貨のブロックチェーンで用いられているデジタル署名(Digital signature)技術について調べてみました。

仮想通貨で送金などの取引を行うときは、トランザクションという単位で行われます。その際に、「仮想通貨を譲渡する人が同意している」ことを証明することが必要になります。

紙媒体などでしたら、署名(サイン)ハンコ(印章)でその人が同意しました、ということを表します。

その署名や判子の代わりに、仮想通貨では、デジタル署名という技術が使われています。

デジタル署名とは?

デジタル署名は、仮想通貨に限らず電子データを扱う際の改ざん防止などで使用されています。

デジタル署名を実現するために、

  • ハッシュ値(ハッシュ関数)
  • 秘密鍵と公開鍵(公開鍵暗号)

の技術が使われます。

ハッシュ値(ハッシュ関数)については以前にまとめました。
【仮想通貨】ハッシュ関数(SHA-256)について調べてみた【ブロックチェーン】

送信者の手順

送信するメッセージにデジタル署名を入れるには、次の手順で行います。

  1. 署名をしたいメッセージのハッシュ値を作成する。
  2. メッセージのハッシュ値を送付者の秘密鍵を使って暗号化する(デジタル署名)。
  3. メッセージとデジタル署名(メッセージのハッシュ値を秘密鍵で暗号化したもの)をセットにして送信する。

 

このように、「デジタル署名は送付するメッセージを元に作成されている」ということがポイントです。

受信者の手順

一方、受信する人は、次の手順で行います。

  1. メッセージからハッシュ値を作成する。
  2. デジタル署名を公開鍵を使って復号し、ハッシュ値を得る(送信者のハッシュ値と等しくなる)。
  3. これらの2つのハッシュ値を比較し、検証する。

 

もし、2つのハッシュ値が異なっていたら、どこかでメッセージが改ざんされていたことになります。

ブロックチェーンでのデジタル署名

仮想通貨では、取引(トランザクション)のまとまり(ブロック)をつないでいき、1つの台帳(ブロックチェーン)を作成していきます。

そのブロックチェーンでのデジタル署名の使用パターンは、

  • トランザクションへの署名
  • トランザクションの検証

の2つがあります。

トランザクションへの署名

先ほどは、メッセージに対してデジタル署名を行う手順を紹介しましたが、ブロックチェーンでは、そのメッセージがトランザクションに変わります

メッセージもトランザクションも文字列なので、署名の手順はあまり変わりません。

トランザクションのデジタル署名を作成するには、以下の手順で行います。

  1. 「アカウント番号」「譲渡金額」などの必要な情報(デジタル署名を除く)を全て使ってトランザクションを記述する。
  2. 記述したトランザクションのハッシュ値を作成する。
  3. 所有権を譲渡するアカウントの秘密鍵を使って、トランザクションのハッシュ値を暗号化する(デジタル署名)。
  4. 手順 3 で作成したデジタル署名をトランザクションに追加する。

 

トランザクションの検証

トランザクションを検証するには、以下の手順で行います。

こちらも、先ほどの「受信者の手順」とほとんど変わりません。

  1. トランザクションデータ(デジタル署名は除く)のハッシュ値を計算する。
  2. 所有権を譲渡するアカウントの公開鍵を使ってデジタル署名を復号し、ハッシュ値を得る。
  3. これらの2つのハッシュ値を比較し、同一であれば承認する。

参考書籍

徹底理解 ブロックチェーン」という書籍を参考にしました。

この本はブロックチェーンの仕組みについて丁寧に書かれており、数式も全く出てこないので非常に読みやすくてオススメです!

関連記事

【仮想通貨】時価総額のランキングを円(JPY)で見る方法。

ビットコインやイーサリアムなどの仮想通貨の時価総額のランキングを 円(YEN)で見れる分かりやすいサ

記事を読む

【イーサリアム】日本円のチャートで比較する方法【イーサリアム・クラシック】

イーサリアム(Ethereum)は、2020年時点で、時価総額がビットコインに次ぐ第2位の仮想通貨で

記事を読む

【イーサリアム】 公開鍵暗号について調べてみた。

仮想通貨の1つであるイーサリアムでは、公開鍵暗号という技術が使われています。 公開鍵暗号では、

記事を読む

【仮想通貨】新しいトランザクション(取引)の追加方法【ブロックチェーン】

仮想通貨で用いられているブロックチェーン技術において、新しいトランザクション(取引)をどのように既存

記事を読む

【イーサリアム】 ホリエモンが2014年当時にイーサリアムの可能性に気付いていた!?

ホリエモンこと堀江氏が、2014年の自身のブログで「イーサリアムやべぇ。。。」というタイトルでイーサ

記事を読む

【仮想通貨】トランザクションについて調べてみた【ブロックチェーン】

ビットコインなどの仮想通貨では、取引をトランザクションで記述されます。 そのトランザクションの

記事を読む

【イーサリアム】 チューリング完全性について調べてみた。

仮想通貨の1つであるイーサリアムについて調べていると、チューリング完全性(Turing comple

記事を読む

【ビットコイン】ハッシュ関数(SHA-256・RIPEMD-160)について調べてみた。

ビットコインなどの仮想通貨で使用されているハッシュ関数(hash function)という技術につい

記事を読む

【仮想通貨】デジタル署名と公開鍵暗号の違いは!?

ビットコインなどの仮想通貨のブロックチェーン技術で用いられている「デジタル署名」「公開鍵暗号」につい

記事を読む

【ビットコイン】 アドレス生成方法について調べてみた。

仮想通貨の1つであるビットコインを送金するときは、送付側と受け手側のそれぞれのアドレスが必要になりま

記事を読む

【matplotlib】 Python でヒストグラムの横軸と棒(ビン)の数を調整する方法。

Python の matplotlib を使ってヒストグラムを描画し、

【デジカメ】 NEX-6 で撮った写真を Wi-Fi で PC に転送する方法【SONY】

今回は、SONY の NEX-6 のデジカメで撮った写真を 無線の W

【SONY NEX-6】オールドレンズをミラーレスカメラに付ける方法【マウントアダプター】

家でずっと眠っていたオールドレンズ(フィルムカメラに装着されて

【WordPress】 カテゴリごとに広告を簡単に切り替える方法【AdRotate】

今回は、WordPress のプラグインを使って、簡単にカテゴリごとに

【ビットコイン】 アドレス生成方法について調べてみた。

仮想通貨の1つであるビットコインを送金するときは、送付側と受け手側のそ

→もっと見る

PAGE TOP ↑