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

公開日: : 最終更新日:2020/11/19 仮想通貨 , , , , , , ,

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

なお、ブロックチェーンにおけるデジタル署名(電子署名)の詳細については以前にまとめました。
【仮想通貨】デジタル署名について調べてみた【ブロックチェーン】

「デジタル署名」「公開鍵暗号」は、いずれも、公開鍵・秘密鍵とよばれる2種類の鍵を用いて暗号化・複合化する技術になります。

では何が違うのでしょうか?

それは、鍵を用意するのが、文書を「送る側」か「受ける側」かという違いになります。

鍵を受け手側で用意する方式が「公開鍵暗号」で、鍵を送り手側で用意する方式が「デジタル署名(電子署名)」となります。

基本的には、同じような技術を使っているのですが、鍵を作成する人が異なるのは、「公開鍵暗号」と「デジタル署名」で目的が異なるためです。

簡単にいうと、公開鍵暗号の目的は、「送付する文書そのものを暗号化し、第3者から読み取られないようにする」ことです。

一方、デジタル署名の目的は、「送付する文書の内容が改ざんされないようにする」ことです。なので、デジタル署名の場合は、文書の内容については第3者に読み取られてもかまわないということになります。

もう少しだけそれぞれの暗号方式について詳しくみていきましょう。

Contents

公開鍵暗号

公開鍵暗号では、データ(文書)を受け取る人が「公開鍵(暗号化に使う鍵)」「秘密鍵(複合化に使う鍵)」を用意します。

そして、暗号化に使う鍵である公開鍵をデータを送る人に渡します。データを送付する人は、その公開鍵を使ってデータを暗号化します。

暗号化されたデータを受け手に送付し、受け取ったら秘密鍵を使って複合化します。

このようにすることによって、秘密鍵を持っている人だけがデータ(平文)を読むことができます。

なお、暗号化されたデータは第3者も見ることができますが、秘密鍵がないと平文に戻せないので、受け手以外は文書を読み取ることができません。

デジタル署名

デジタル署名は、公開鍵暗号と逆の流れになります。

デジタル署名では、データ(文書)を送る人が「秘密鍵(暗号化に使う鍵)」「公開鍵(復号化に使う鍵)」を用意します。

送付データを送付する人が秘密鍵を使ってデータを暗号化します。この暗号化したデータをデジタル署名といいます。

そして、元のデータと暗号化したデータ(デジタル署名)、さらに、公開鍵を受け手に送ります。

受け手は、公開鍵を使って暗号化したデータ(デジタル署名)を復号化します。元のデータも送付されているので、復号化したデータと比べることによって、送られたデータが改ざんされていないことを確認することができます。

また、本当にその送り手が送ったものかどうかについても確認することができます。

参考書籍

「いまさら聞けない ビットコインとブロックチェーン」という本を参考にしました。

この本は、仮想通貨の取引所であるコインチェックの執行役員の 大塚雄介 氏が書いています。

2017年に出版されており、その次の年の2018年にコインチェックで取り扱っている仮想通貨の1つ NEM(ネム)が580億円分流出する事件が起こります。

本書では、「仮想通貨は取引所も含めて安全である」的なことが書かれてありますが、事件の壮絶なフラグになっているように感じました。。。

関連記事

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【MetaMask】イーサリアムのウォレットを使ってみた【テスト環境】

今回、イーサリアムのウォレットの1つである MetaMask(メタマスク)を使って、テストブ

記事を読む

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

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

記事を読む

【イーサリアム】クライアントソフト geth を使ってみた。

イーサリアムのクライアントソフト geth をインストールして使ってみました。 クライ

記事を読む

【イーサリアム】 ハッシュ関数(Keccak-256)について調べてみた。

仮想通貨の1つであるイーサリアムで用いられているハッシュ関数「Keccak-256」について

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

【Cubase】イヤホンから音がでないときの対処方法。

Cubase でイヤホンから音がでなくなったときの対処方法のメモです。

【Cubase】特定のトラックを無効にする方法。

今回は、Cubaseで特定のトラックのみを無効にする方法について紹介し

【転移学習】学習済みVGG16 による転移学習を行う方法【PyTorch】

今回は、PyTorch を使って、学習済みのモデル VGG16 を用い

【PyTorch】畳込みニューラルネットワークを構築する方法【CNN】

今回は、PyTorch を使って畳込みニューラルネットワーク(CNN)

【PyTorch】ニューラルネットワークを構築する方法【NN】

今回は、PyTorch を使って、ニューラルネットワーク(NN)を構築

→もっと見る

PAGE TOP ↑