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

公開日: : 最終更新日:2020/05/15 仮想通貨 , , , , , , ,

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

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

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

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

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

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

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

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

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

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

公開鍵暗号

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

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

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

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

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

デジタル署名

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

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

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

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

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

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

参考書籍

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

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

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

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

関連記事

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

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

記事を読む

【仮想通貨】ハッシュ関数(SHA-256)について調べてみた【ブロックチェーン】

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

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

記事を読む

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

ビットコインなどの仮想通貨のブロックチェーンで用いられているデジタル署名(Digital signa

記事を読む

【Python】 DataFrame の特定の列で出現回数をカウントして降順でソートする方法。

Python で DataFrame 型の特定の列を指定して、対象列の

【テキストマイニング】 Amebaブログからデータ取得するための準備。

テキストマイニングを行うために、Ameba ブログ(アメブロ)のデータ

【Linux】 ローカルに Python をインストールする方法。

今回は、Linux サーバに、root 権限なしで、ローカルに Pyt

【Linux】 ファイルの重複した行を削除して、ファイルを結合する方法。

大容量の CSV ファイルの重複した行を削除して、ファイルを結合する処

【画像認識】 Google画像検索結果を取得する方法 【google image download】

今回は、深層学習(DeepLearning)で画像認識をするための画像

→もっと見る

PAGE TOP ↑