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

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

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

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

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

デジタル署名とは?

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

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

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

の技術が使われます。

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

送信者の手順

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

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

 

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

受信者の手順

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

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

 

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

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

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

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

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

の2つがあります。

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

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

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

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

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

 

トランザクションの検証

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

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

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

参考書籍

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

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

関連記事

【ビットコイン】1ブロックに含まれる情報について調べてみた【マークル木】

ビットコインなどの仮想通貨では、トランザクション(取引)の束を「ブロック」という単位で扱い、

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【ビットコイン】承認されたブロックを見てみる【ブロックチェーン】

ビットコイン(BitCoin)の公開台帳であるブロックチェーンについて、新たに承認されたブロ

記事を読む

初心者でも分かるビットコインの仕組みについてまとめてみた。

ビットコインは,時価総額が1位で最も有名な仮想通貨です. 仮想通貨の時価総額の見方について

記事を読む

【Solidity】 イーサリアムでコントラクトを生成してみた。

スマートコントラクトプログラミングの高級言語の1つである Solidity を使って、イーサ

記事を読む

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

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

記事を読む

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

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

記事を読む

【LaTex】目次を作成し、ページ番号をローマ数字にする方法。

LaTexで論文やレポートを書いていて、目次・図目次・表目次を自動的に

【MusicBee】マイナーなアーティストのCD情報を自動で取得する方法。

普段、MusicBee というソフトを使ってCDをPC内に取り込んでい

【m.o.v.e】 トランス系の曲 Best5をまとめてみた。

m.o.v.e といえば、頭文字Dの主題歌の曲などで ユーロビート系の

初心者でも分かるビットコインの仕組みについてまとめてみた。

ビットコインは,時価総額が1位で最も有名な仮想通貨です. 仮

【LaTeX】 見出し付き箇条書きを右にずらす方法【数式の変数説明】

今回は、LaTeX で見出し付き箇条書きの全体の位置を右にずらす方法に

→もっと見る

PAGE TOP ↑