仮想通貨(ビットコイン)の秘密鍵はなぜ盗られてはいけないのか?

仮想通貨投資をしていると秘密鍵は他人に盗まれないように注意しましょう!とよく聞きますよね。

秘密鍵は取引所に預けている場合は秘密鍵を教えてくれないので特に意識することはないと思いますが、ペーパーウォレットを作ったりすると秘密鍵が表示されますよね。

  たとえばこんな感じ

ビットコインペーパーウォレットの公開鍵と秘密鍵

bitcoinwallet-3

今回はなぜ秘密鍵を他人に盗られてはいけないのか少し技術的なことを解説していきます。

まず、ビットコインの技術的に画期的な点として以下の3つを組み合わせたことによります。

公開鍵暗号方式・P2P・ブロックチェーン

今回はそのうちの一つ「公開鍵暗号方式」に焦点を当てて説明していこうと思います。

 

暗号の基礎(暗号化と復号化)

暗号化と復合化

最初に暗号で出てくる言葉のひとつ「暗号化」と「復号化」について説明していきます。

 

上の図で説明すると、お母さんにメモを渡されて「なす」と「すいか」を買って来てほしいと頼まれたとします。

でも、買ってくるものを人に見られると困るので「字の間に『れ』を入れる」というプロトコルを使って他人に読まれにくくします。

そうすると、

なす ⇒ なれす

すいか ⇒ すれいれか

になりますよね。

これを「暗号化」といいます。

逆に、

なれす ⇒ なす

すれいれか ⇒ すいか

のように暗号文を普通の文に戻すことを「復号化」といいます。

共通鍵暗号方式と公開鍵暗号方式、デジタル署名について

なぜ仮想通貨(ビットコイン)の秘密鍵を盗まれてはいけないかを理解するには「デジタル署名」を理解しないといけません。

でも、その前に前提として大事な共通鍵暗号方式と公開鍵暗号方式についてもみていきましょう。

共通鍵暗号方式

共通鍵暗号方式の仕組み

共通鍵暗号方式

上の図はサンタさんが子供に今年のプレゼントの内容を暗号化して送っている例です。

サンタさんが子供に内緒で今年のプレゼントの内容を教えてるんですね。

この例を使って、「共通鍵暗号方式」の手順を見て行きましょう。

  • STEP.1
    普通の文を用意する

    サンタさんは子供に送る文章「つみき」をまず用意します。

  • STEP.2
    暗号化

    サンタさんは「字の間に『れ』を入れる」という鍵を使って暗号化します。

  • STEP.3
    暗号文の完成

    「つみき」という文章の間に『れ』をいれることで暗号文「つれみれき」が完成します。

  • STEP.4
    子供に送る

    子供に暗号文「つれみれき」を送ります。

  • STEP.5
    復号化

    子供は「字の間に『れ』を入れる」という鍵を使って復号化します。

  • STEP.6
    普通の文の完成

    「つれみれき」から字の間に入っている『れ』をとって、普通の文「つみき」が完成します。

    これで子供は次のクリスマスにもらえるプレンドは「つみき」ということがわかりました。

 

しかし、ここで一つ問題があります。

共通鍵暗号方式の問題点

この方法で暗号文を送ってやり取りをする場合、サンタさんと子供が「字の間に『れ』をいれる」という共通の鍵を使っています。(共通の鍵を使って、暗号化・復号化がされているので共通鍵方式といいます。)

サンタさんが暗号文をつくるときに使った「字の間に『れ』をいれる」という鍵をを子供に事前に教えておく必要がありますが、どうやって子供に教えればいいのでしょうか?

これが鍵配送問題といわれるやつです。

暗号文を送るためには鍵を使って他人にわからないように送る必要があるが、その鍵をどうやって相手にこっそり送るのか?どうどうめぐりになってしまいます。

それを解決したのが次に紹介する公開鍵暗号方式です。

公開鍵暗号方式

公開鍵と秘密鍵

公開鍵暗号方式では先程の「鍵配送問題」を解決するために、鍵を配送しなくてもいい方法として作られました。

ここでは「公開鍵」「秘密鍵」という二つの鍵を使います。

上の図にあるように「公開鍵」は暗号文を作る鍵で、いわば秘密のメッセージが入った箱に鍵をかけるためのものです。

一方「秘密鍵」は復号化をを行うための鍵で、秘密のメッセージの入った箱を開けるためのものです。

「公開鍵」と「秘密鍵」になっていて、秘密鍵から公開鍵を作るのは簡単ですがその逆はほとんど不可能になっています。(秘密鍵が大事ですので、公開鍵から秘密鍵を作れたんじゃセキュリティもなにもないですもんね。)

公開鍵暗号方式の仕組み

公開鍵暗号方式

今回もサンタさんが今年のクリスマスプレゼントの内容を暗号化して子供に教えるのを使って説明していきます。

  • STEP.1
    普通の文を用意する

    サンタさんは子供に送る文章「つみき」をまず用意します。

  • STEP.2
    暗号化

    あかちゃん公開鍵を使って暗号化します。

  • STEP.3
    暗号文の完成

    あかちゃんの公開鍵を使うことで暗号文「A!#%2E#」が完成します。

  • STEP.4
    子供に送る

    子供に暗号文「A!#%2E#」を送ります。

  • STEP.5
    復号化

    赤ちゃんは自分秘密鍵を使って復号化します。

  • STEP.6
    普通の文の完成

    「A!#%2E#」を復号化することで普通の文「つみき」が完成します。

    これで子供は次のクリスマスにもらえるプレンドは「つみき」ということがわかりました。

しかし、ここでも問題が一つあります。

公開鍵暗号方式の問題点

サンタさんは子供の公開鍵を使って暗号文を送ってくれましたが、公開鍵はその字のとおり公開されているものなので子供としてはホントにサンタさんが送ってくれたのか、もらえるものが「つみき」なのか確かめる方法がありません。

そこで、次に出てくるのがデジタル署名という方法です。

デジタル署名

公開鍵と暗号鍵

デジタル署名の場合は秘密鍵と公開鍵の役割が公開鍵暗号方式のときと逆になるので注意してください。

デジタル署名の場合は、秘密鍵で暗号文を作って、公開鍵で復号化します。(公開鍵暗号方式の場合は、公開鍵で暗号化して、秘密鍵で復号化しましたよね。)

 

今回もサンタさんと子供で説明していきます。

デジタル署名の仕組み

デジタル署名

  • STEP.1
    普通の文を用意する

    サンタさんは子供に送る文章「つみき」をまず用意します。

  • STEP.2
    暗号化

    サンタさんは自分秘密鍵を使って暗号化します。

  • STEP.3
    暗号文の完成

    自分(サンタさん)の秘密鍵を使うことで暗号文「A!#%2E#」が完成します。

  • STEP.4
    子供に送る

    子供に暗号文「A!#%2E#」と普通の文「つみき」を送ります。

  • STEP.5
    復号化

    赤ちゃんはサンタさん公開鍵を使って復号化します。

  • STEP.6
    普通の文の完成

    「A!#%2E#」を復号化することで普通の文「つみき」が完成します。

    そしてサンタさんから暗号文と一緒に送られてきた普通の文「つみき」と復号化した文章内容が一致しているので子供は次のクリスマスには「サンタさん」から「つみき」をもらえることがわかりました。(改ざん防止となりすまし防止)

デジタル署名ではサンタさんしか持っていない、サンタさんの秘密鍵を使って暗号化を行っているので暗号文を作ったのはサンタさんであることが確認できます(なりすまし防止)。

また、サンタさんの暗号文と一緒に来た普通の文を照らし合わせることにより文章の内容が書きかえられていないことも確認できました(改ざん防止)。

仮想通貨(ビットコイン)の秘密鍵をなぜ盗まれてはいけないのか?

ビットコインの場合、送金する相手はビットコインアドレスで特定をします。

このビットコインアドレスというのは1NK8S4ep9UZpm3ACPAfvrCVsVAKLbolmdのような数字の羅列でありこのビットコインアドレスは秘密鍵から生成されます。

このビットコインアドレスの秘密鍵を持つ人だけがそのアドレスにあるビットコインを送金することができます。

上のデジタル署名のところでも説明したように、送信する場合には自分の秘密鍵が必要になるからです。

ですので、秘密鍵はそのアドレスの所有権を証明するものになります。

もしも秘密鍵を盗まれればそれを使って他人のアドレスに勝手に送金することが可能になってしまいます。

仮想通貨はいろいろなリスクがありますがすべて自己責任ですので注意して投資をしていきたいですね。

仮想通貨投資に興味がある人へ

仮想通貨のリスクから買い方まで網羅的に知りたい人へ

【まとめ】あなたもきっとわかる仮想通貨の始め方!|リップルの買い方を初心者向けに解説

 

 

 

記事の感想や質問など気軽にコメントしてください。