アドレス? プライベートキー? 仮想通貨に使われる公開鍵暗号方式と電子署名についてわかりやすく説明するよ!!

2018-01-31

Digital Signature

こんにちは! 育休パパのアキオ(@hiroakio97)です。

 

先日、『リスクを知って資産を守ろう! 仮想通貨初心者のためのウォレット基礎講座』という記事のなかで、”仮想通貨のウォレットとは自分の口座のアドレスと秘密鍵を保管する場所のことです!“と書きました。

書いた後で「そもそもアドレスと公開鍵って何よ?」ってなったのでまとめてみました。

仮想通貨の裏側・仕組みにまで興味のあるエンジニア気質の方、ぜひ読んでみてください!

 

ブロックチェーンとは

ビットコインやイーサリアム、NEMなどなど、多くの仮想通貨にはブロックチェーンという技術が使われています。

 

ブロックチェーンとはまたの名を分散型台帳技術もしくは分散型ネットワークと言います。

これまでの全取引を鎖状につなげてネットワーク上の参加者全員で共有しているため、障害に強い不正・改ざんができない、などの特徴があります

今回はアドレスと秘密鍵についての説明なので詳細は省きます。
ブロックチェーンについてはいろんなところで既に解説されているので少しググってみるのもいいでしょう。

こんな風に動画でも解説されていますよ!

 

 

 

通信の秘密を守る暗号化

上の動画でも最後に説明されていましたが、ブロックチェーンでは取引の正当性を証明するため、公開鍵暗号方式を用いた電子署名が使われています

 

「。。。。。。 暗号化? 署名? 何のこと???」って感じですよね?

まず暗号化から、順を追って説明しますね。

 

金庫の扉を想像してください。

一度 扉を閉めて鍵をかけてしまえば、鍵を持ってない人は中に何が入っているかわかりませね。
もちろん中のものを盗んだりすり替えてしまうことも出来ません。

これが暗号化です。

暗号化された情報は正しい鍵を持つ人にしか解読できません
つまり、暗号化された情報は第三者が盗聴したり改ざんしたりすることができない ということです。

 

インターネット上のデータ通信も、普通の手紙や小包なんかを送るのと同じです。

送る人が荷物に鍵をかけて(=情報を暗号化して)、宅配業者(=インターネット)に預けます。

荷物には鍵がかかっているので、輸送途中で誰かが盗み見たり中身をすり替えたりすることはできません。

受け取った人は鍵を使って荷物を開けます(=暗号を解読します)。

 

この時、送る人と受け取る人が使う鍵の種類が大きなポイントです。

大きく分けて『共通鍵暗号方式』と『公開鍵暗号方式』、2つの方法があります!

 

シンプルで高速な共通鍵暗号方式

まず『共通鍵暗号方式』から紹介しますね。

この方法はとってもシンプル。
送る人と受け取る人、双方が共通鍵と呼ばれる同じ鍵を使う方法です。

要は合鍵ですね。
荷物を送る前に受取人に合鍵を渡しておくわけです。

差出人・受取人 共に同じ鍵を持っているので、その鍵を使って暗号化とその解読を行います。

仕組みがシンプルな分、処理が高速なので大量のデータをやりとりする場合は優れた方法です。

共通鍵を使った暗号化・復号化のイメージ

ただし、この方法には解決しなくてはいけない大きな問題が一つ。

どうやって受取人に合鍵を渡すのか? ということです。

もちろん、合鍵を普通に送ってはいけませんよ!

肝心の鍵を盗まれたりすり替えられたのでは、せっかく荷物の方に鍵をかけた意味がありません。

 

というわけで、単独ではちょっと使いにくい共通鍵暗号方式。

次に説明する公開鍵暗号方式と組み合わせて使われることが多いです。

 

共通鍵を安全に送るために使われる 公開鍵暗号方式

公開鍵暗号方式では秘密鍵公開鍵という2つの鍵がペアで使われます

秘密鍵がマスターキーで、秘密鍵から公開鍵を作成することができます。
逆に公開鍵から遡って秘密鍵を作ることはできません

 

ところで この2つの鍵、一般的な鍵とは少し勝手が違います。

先ほどの共通鍵を含め、普通は鍵って扉ごとにひとつですよね?
ある鍵を使って扉を閉めたら、開くのにも同じ鍵を使います。

ところが公開鍵暗号方式の鍵は2つでひとつ。
秘密鍵で閉めた扉はそのペアになる公開鍵でないと開けられない
同じく、公開鍵で閉じた扉はそのペアになる秘密鍵でないと開けられない

つまり、扉を閉めたその鍵で、もう一度 扉を開けることはできないのです。

 

この不思議な鍵を使って通信の秘密を保持しようというのが公開鍵暗号方式。

通信前に相手に自分の公開鍵を渡し、その鍵でデータを入れた金庫の扉を閉めてもらいます(暗号化してもらいます)。

金庫は自分の持つ秘密鍵でしか開けられない(解読できない)ので、輸送中に金庫の中の情報が漏洩したり改ざんされることはありません。

公開鍵暗号化方式のイメージ

公開鍵を使って閉められた金庫は同じ公開鍵で開けることができません。

なので、先ほどの共通鍵(合鍵)のように鍵の渡し方に悩む必要はありません

公開鍵は金庫を閉じることしかできない(開けることができない)鍵なので、安心して世界中へ配ることができるというわけです。

 

ただし この公開鍵暗号方式は処理が複雑なため、情報量が多いと解読に時間がかかります

 

SSL通信での共通鍵暗号と公開鍵暗号の使われ方

公開鍵暗号方式はその複雑さから、大きな情報をやりとりすることが得意ではありません。

そこで先ほどの共通鍵暗号方式と組み合わせて使われるのが一般的です。

SSL/TLS通信の鍵交換イメージ

はじめに公開鍵暗号方式で暗号化した共通鍵を互いに交換します。

公開鍵暗号なので共通鍵が誰かに漏洩する心配はありません。
鍵はサイズが小さいので、公開鍵暗号方式でも解読に時間がかかりません。

共有鍵が共有されたら、以降の通信は共有鍵暗号方式で暗号化します。
共有鍵暗号方式はシンプルな暗号方式なので、情報量が大きくても問題ありません。

ふたつの暗号化方式を組み合わせることで、うまくそれぞれの短所を補い合っているわけです。

 

ちなみに この暗号方式は既に世界のインターネット中、至る所で利用されています。

ブログなどのサイト運営をされている方なら、SSL/TLSとかHTTPSという言葉を聞いたことがあるでしょう。

ご存知ない方も、今ご覧のウェブブラウザの上の方・アドレスバーの左端に”保護された通信”とか鍵マークのアイコンが付いてるのは目にしたことがあるでしょう。

HTTPSの鍵マーク

これはそのサイトとの通信が暗号化されており盗聴の心配がないことを意味しています。

 

なお、ここまで読んでいただけた方は既におわかりかと思いますが、秘密鍵は絶対に他人に知られてはいけません!

プライバシーどころか、財産まで失うことになるかもしれませんよ。

 

公開鍵暗号方式を用いた電子署名

ということで、やっと『電子署名』です。
長かった!

とは言ってもこの電子署名、特に追加の説明はありません。

なぜなら、電子署名は公開鍵暗号方式を逆に行うだけだから。

 

どういうことかというと、

公開鍵暗号方式を用いた暗号化では受け手の公開鍵を使って暗号化し受け手の秘密鍵を使って解読しました。

電子署名ではその逆、送り手の秘密鍵で暗号化し送り手の公開鍵で解読します。

電子署名のイメージ

「秘密鍵で暗号化してもみんなが公開鍵で解読できるんだから意味ないんじゃないの?」と思われた方、正解です!

秘密鍵で暗号化するのは、機密の保持が目的ではありません。

目的は機密保持ではなく、本人確認です。

 

「公開鍵で暗号が解ける」ということは、つまり「情報を暗号化したのが秘密鍵の所有者本人である」ということの証明になるのです

また、情報が他人の手によって改ざんされていないという証明にもなります。

つまり、印鑑や割り印のような役目を果たすわけです。

 

ブロックチェーンとデジタル署名、ウォレット

ビットコインをはじめとしたブロックチェーンでは、この署名技術を利用して送金や取引の依頼がコインの所有者本人によって為されたものかを確認しています

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

なお ブロックチェーンで使用される際、公開鍵は形を変えてアドレスと呼ばれます。

銀行預金に例えると、アドレスは口座番号秘密鍵は印鑑&通帳に、それぞれ相当します。

アドレスは単なる口座番号ですから、他人に教えても問題ありません。
自分の口座へ送金してもらう時などは教える必要があります。

一方 秘密鍵の方は、、絶対に他人に教えてはいけません!
秘密鍵を教えるということは、印鑑と通帳を渡すことと同義です。
そのアドレスに置かれた資産をそっくり全部譲る意図がある場合をのぞいて、秘密鍵は他人に渡してはいけません。

 

ちなみに、アドレスと秘密鍵のペアを保存しておく場所がウォレットです。

ここまで読んでいただけた方なら、自分の秘密鍵を他人が運営する取引所やオンラインウォレットへ預けることのリスク、わかっていただけると思います。

秘密鍵の扱いはくれぐれも最新の注意を払い、取引所やオンラインウォレットに不必要に多くの資産を預けたり長時間放置することの無いようにしましょう

 

 

 



まとめ ブロックチェーンと暗号化技術は仮想通貨の基礎

インターネットが現在の情報化社会を作ったように、分散型ネットワーク・ブロックチェーンは次の時代に欠かせないインフラとなるでしょう。

 

インターネットの基礎であるTCP/IPやHTMLを理解していなくてもSNSを楽しめるのと同様、別にブロックチェーンや暗号化技術について何も知らなくてもビットコインの売買・利用は可能です。

が、ザッとでも理解していれば、仮想通貨とその未来をもっと楽しむことができるはず。

そう思って勉強した内容を記事にまとめてみました。

 

ではでは。

2018-01-31IT・プログラミング, 仮想通貨

Posted by アキオ