昔はインターネットでの決済やオンライン銀行すら危ないと言われていましたが、インターネットで買い物をする機会は格段に多くなりました。

オンラインショップを使ったことがないという方もかなり少なくなってきたのでは?

最初は躊躇されていたオンライン上でのクレジットカード払いがやっと浸透してきた状況ですが、それはクレジットカードの場合は補償が受けられるという背景もあるでしょう。

また支払いも大きなクレジットカード会社や銀行を通して行うので安心感がありました。

しかし、まだ一部しか補償制度が整っていない仮想通貨の場合はシステムや危険性に疑問を持ってしまうのも、しょうがないのかもしれません。

今回は送金や受け取りのときの改ざんやなりすましのリスクは大丈夫なのかと疑問に思っている方のために、仕組みを紹介していきます。

ビットコインの公開鍵暗号方式ではなく、従来の共通暗号方式だと情報が漏洩しやすい

bitcoin-publickey1

今まで暗号技術でよく用いられてきたのが「共通化暗号方式」です。

送る側が情報に鍵をかけて送り、受け取り側は同じ鍵で復号(鍵の施錠=元のデータに戻す)を行う方法。

ただ、そうなるとどうしても送る側が鍵をかけたデータを復号できるように先に鍵を渡す必要が出てきます。

個人間や仲間内でしか知らない情報を暗号化することは昔からよく行われていましたが、第3者に鍵の情報を盗まれてしまう危険性があるのです。

たとえ上手くいったとしても同じ鍵をずっと使い続けることはセキュリティのリスクもありますし、鍵を頻繁に変更する必要性も出てきます。

どうすれば肝心な情報を相手伝えずに済むのか、またもっと安全に送ることはできないかと考えられたのが次に紹介する「公開暗号方式」です。

公開鍵=データを暗号化するための鍵。名前の通りネットワーク上に公開され、誰でも見ることができます。

秘密鍵=公開鍵の対になっている鍵。送金や取引所から自分のウォレットにコインを移すときの署名として必要になり、本人であることの証明にもなります。暗証番号のようなもので相続以外で第3者に知らせてはいけません。

2つの鍵を用いて情報をやり取りする公開鍵暗号方式とは?

bitcoin-publickey2

共通暗号方式だとどうしても鍵を2人の間で共有しないといけないため、重要な情報データの鍵を相手に送ったり、変更したりする必要がありますが、公開鍵暗号方式の場合は必要がありません。

どうしたかというと、公開してもいい鍵を作ったことがポイントです。

「公開する鍵なんてさらに危ないじゃないか」と思うかもしませんが、使うのは公開してもいい鍵と本人にしか分からない秘密鍵の2つ。

この秘密鍵は本人にしか分からないもので、データの暗号化するための鍵と復号(暗号化されたデータを元に戻す)するための鍵を別々にすることで安全が保たれる仕組みです。

秘密鍵と公開鍵はそれぞれセットになっていて、対応する鍵でないと開けることができません。

通信方法

  • まず、受け取り側が先に暗号化するための公開鍵を送付側に送ります。
  • 送られてきた公開鍵で送付側はデータを暗号化し、受け取り側に送ります。
  • 受け取り側は暗号化されたデータをセットの秘密鍵を用いてデータを復号し、完了です。

  • 送付側が送る暗号化データは盗むことも出来ますが、公開鍵では復号は出来ず、専用の秘密鍵が必要になります。

    ゆえに共通化暗号方式よりも安全性があるんですね。

    仮想通貨だけでなく、電子カルテやメールの送受信、ネット銀行にもこの技術は幅広く利用されています(ビットコインはこの技術を用いていますが、暗号化はされません)。

    ビットコインを送金するときに使う電子署名

    bitcoin-publickey3

    ビットコインを送金するときに必要な電子署名は公開鍵暗号を応用した技術です。

    送金する仕組みは上記で述べた公開鍵暗号とは逆の方法で、送る側が公開鍵と秘密鍵を使い送金する方法。

    具体的には送る側がまず、自分の秘密鍵で復号するための「公開鍵」を作成します。

    次に自分が相手にいくら支払うという取引のデータを自分の秘密鍵によって「暗号化されたデータ」に変換します。

    よく書面上では支払うときの署名として印鑑を押しますが、ビットコインではいくら送金したというデータに間違いがないように秘密鍵で暗号化し署名するイメージですね。

    そしてこの「公開鍵」と「暗号化されたデータ」をビットコインのネットワーク上に送ります。

    最後にマイナーたちが送った人の公開鍵で検証をし、完了すると受け取り側に送金される仕組みです。

    公開鍵と暗号化データがネットワーク上に出ても大丈夫なの?

    ネットワーク上に公開鍵と暗号化されたデータがバレてしまうことの危険性を気にする方もいるかもしれません。

    しかし、公開鍵と秘密鍵はセットになっているので、公開鍵だけで秘密鍵の情報が分かることはないのです。

    また秘密鍵によって公開鍵の作成やデータの暗号化を行うので、送った側の公開鍵で復号できるということはすなわち秘密鍵で暗号化されたという本人であることの証明になります。

    ただ、秘密鍵が自分以外の第3者に知られてしまうとログインIDやパスワードのように再発行というものができません。

    秘密鍵自体に本人を特定する情報はないので、盗まれてしまうとビットコインの所有権を失うことを意味します。

    ここが唯一のネックであり秘密鍵インフラの改善点でもありますが、今のところ自己責任ですので、管理にはくれぐれも注意しましょう。