【疑問解消】 ビットコインアドレスの意味と安全な使い方

btc_address_world

何この暗号みたいな文字の羅列・・・・・・?

結論から言うと、ハガキを送るの時の住所(英語だとaddress)、Eメールを送るときのメールアドレス(e-mail address)、銀行の口座の口座番号、に相当するものが、ビットコインアドレスです。

実際にはビットコインアドレスを目にする時はQRコードの形を取っていることが多いのですが、元々は単なる英数字が並んでいるだけのこんな感じの文字列です。

15szQ2BfTqRbNQJ2a6Fxqjj5p4RQ1EeGu7

ビットコインを使うのに、いきなりビットコインアドレスって言われても…
何か文字の羅列があって、メモを取るにも間違えてしまいそう…

ビットコインの送金でアドレスを間違えて入れてしまい、自分のビットコインが誰か分からない所に行ってしまったとか聞くこともあります。

ここでは、そもそもビットコインアドレスはどういったものなのか、から始まり、プライバシーを守るためのビットコインアドレスの使い方について説明します。
さらに詳しく知りたい方は、その後の仕組みや技術も見てみてください。

ビットコインに詳しいエンジニアが解説しますので、ビットコインアドレスの正しい知識をゲットして、トラブルの無いビットコイン生活を送りましょう!

1. ビットコインアドレスの概要これからビットコインを使いたい方へ

1-1. そもそもビットコインアドレスとは?

ビットコインについて聞いた時、以下のような文字列(文字の集合)を見かけたことがありませんか?

15szQ2BfTqRbNQJ2a6Fxqjj5p4RQ1EeGu7

答え、それはビットコインアドレスです。ビットコインアドレスとは簡単に言うと、銀行の「口座番号」と一緒です。これがあることで、ビットコインを送ったり、受け取ったりすることができます。

もちろん口座番号とフォーマット、また使い方と裏側の技術は違いますが、意識的には上記述べたように考えても大丈夫です。

例えば、もし誰かの口座番号に送金の時に1文字でも間違えたら、送金先は変わり、大変なことになります。

同じくビットコインアドレスにおいても、数字や文字だけでなく、アルファベットの大文字小文字も間違えたら、全く違うアドレスに大切なビットコインが送られてしまいます。

例えば、
1mye7Vmj2kgnyig6uKcbuZHmUxKziunb2

1Mye7Vmj2kgnyig6uKcbuZHmUxKziunb2
の二つのアドレスは、全く違うアドレスになります。

さらに、銀行の口座番号とのもう1つの違いは、着金のためにビットコインアドレスをいくつでも生成できます。同じウォレットからつくったアドレスは、ウォレットに紐付いてるので、送金されたビットコインはウォレットに入ります。

ビットコインのフォーマットですが、以上の例のビットコインアドレスのように、各ビットコインアドレスには26〜35文字で、「1」か「3」から始まります。

例えば、ビットコインウォレットでビットコインアドレスを作った場合、
1C4ERYZUhM12mNLEP4jD3Mkf7tQ6GcTFGf
1JdAMMgvVWn3Y6so36d87iUgtPMmdrvP8a
1mye7Vmj2kgnyig6uKcbuZHmUxKziunb2
…などが生成されます。

でもそんな長い文字列をどうやって使えばいいでしょうか?
使い方は口座番号に似ていると言っても、スマホとかを使ってビットコインをもっと気軽に使いたいですね。

様々な方法があるので、それについては次の節で紹介しましょう。

1-2. ビットコインアドレスの生成と使い方

ビットコインアドレスの生成方法は様々ありますが、代表的な生成仕方を紹介します。

それは、スマホのウォレットアプリを使う仕方です。

まず、アプリをダウンロードしインストールします。次にウォレットを立ち上げて、ウォレットの作成のプロセスをできたら、ビットコインアドレスは生成されます。

それだけです。

ビットコインアドレスの使い方ですが、一般的には二つあります:
1) ウェブサイトからクリップボードにコピーして、ウォレットに貼り付ける
2) QRコードをスキャンする

QRコードを初めて見た方がいると思いますので、簡単に説明します。

QRコードとは、何かデータを 画像化されたものです。つまり以下のようなものです:

qr_code_example

スマホのQRコードをアプリでスキャンすれば、QRコードの元々のデータをご覧できます(ちなみに以上のコードを是非スキャンしてみてくださいね!)

そういうQRコードは世界でいろんな方法で使われてますが、ビットコインの世界で主に支払いデータかビットコインアドレスがQRコード化されてます。

ビットコインを普段あつかうときは、コピーかスキャンがほとんどだと思いますので、覚えてくださいね。

また、特にスマホを使う時はコピーの場面も多くなると思います。パソコンでネットショッピング、また外にいる場合QRコードがよく表示されます。スマホのウォレットを使って、そのQRコードをカメラでスキャンすれば、QRコードによってアドレスだけか、請求金額をウォレットに入力され、支払いにはボタンを押すだけになります。

一応そのまま文字列のビットコインアドレスをウォレットに入力もできますが、その作業と確認は随分手間がかかりますし、間違える可能性は高いので、できるだけ避けたほうが良いです。

万が一、QRコードがなかったりペーパーウォレットから書くなど、手書きや入力でビットコインアドレスを写すことになった場合、とても注意してください。前に述べたように1文字の大文字小文字を変えるだけで全く別のビットコインアドレスになってしまうので、何回もチェックした方がいいです。

基本の使い方に関して以上です。

では次に利用の場面を想像してみましょう。

1-3. ビットコインアドレスを使う想像できる場面

では、こちらに前章に述べた使い方を具体的な場面を想像しながら説明してみます。

1) ネットショッピングのアドレスのコピー
竜介はスマホでよくネットショッピングしています。代金引換やコンビニ支払いで注文していますが、前に買ったビットコインの値段が上がり、初めてネットショッピング上で使ってみたいと思いました。

支払い方法にはビットコインを見つかって、支払い先が現れたら、ビットコインアドレスをクリップボードにコピーします。使っているウォレットアプリを起動して、送金のところでさっきコピーしたアドレスを貼り付け、請求金額を記入し、送金ボタンを押します。送金したら、支払いが確認されたメール通知がきます。

2) カフェでQRコードのスキャン
ゆみこはすごいコーヒー好きで、新技術にも興味を持っています。渋谷のカフェではビットコインで支払えると聞き、すぐに店舗へ行き、カフェラテを注文します。「ビットコインでお願いします」と店員さんに言うと、タブレット上でQRコードを表示してくれます。QRコードに支払い情報が入ってたので、ウォレットアプリでQRコードをスキャンしたら送信ボタン押すだけでOK。あとは出来上がったカフェラテを待つだけです。

3)  仕方ないから手打ち
アリスは自分のスマホウォレットに多量のBTC(ビットコイン)を持っていますが、持ち歩きは怖いので、貯金用のペーパーウォレットに移したいです。しかし、残念ながらスマホのカメラが壊れていて、QRコードをスキャンできません。なので、手で打って入力するしかありません。アリスは丁寧に紙を見ながら文字を1つ1つ打ち、送信を押す前にアドレスは正しいか3回チェックします。

いかがでしたでしょうか? 誰かどれかのシチュエーションになりそうですか?

次の章では、使う時のセキュリティーや、安全な取扱方法についてお話ししたいと思います。

2. 自分のプライバシーを守ろう – ビットコインアドレスの使い回しに関して

ビットコインアドレスは口座番号に似てるからといって、基本的には同じビットコインアドレスを使い回すものではありません。したいならそのようにもできますが、そうするとビットコインの利用によるプライバシーが下がります。本章それについてお話ししたいと思います。

2-1. なんでビットコインアドレスを二回使わない方がいいのか

数回ビットコインをもらったことのある方はおそらく気づいたと思いますが、アドレスは毎回違っていたのではないでしょうか。一般的には、ビットコインネットワークでセキュリティーとプライバシーを守るために、送金処理(トランザクション)ごとにビットコインアドレスは毎回生成されます。

前のアドレスを使えないわけでもないですが、一般のユーザーであれば使い捨てたほうが自分のプライバシーが守れますのでお勧めします。

その理由は、ビットコインの設計として、各ビットコイントランザクションは一般公開されており、ブロックチェーンと呼ばれている分散型台帳で見られるからです。このブロックチェーンには、ビットコインのスタートから全ての送金処理(トランザクション)の記録がされていますが、アドレスはユーザーに銀行口座番号みたいに個人との直接の繋がりがないので、ある程度のプライバシーがまだあります。

送金処理(トランザクション)の記録が誰でも見られるということで、もしビットコインアドレスを個人に繋げられたら、実際の個人間で行っている振り込みの情報をわかる恐れがあります。だからこそ、そういう繋がりをもっと難しくするために、ビットコインアドレスは使い捨てにするのです。

2-2. ビットコインアドレスを使い回すと、具体的に何が起こりうるのか。

何が起こりうるか簡単で言うと、自分の財産が追跡(トラッキング)され、詐欺師などにバレると、自分の銀行口座の取引履歴を見せるのと一緒です。あなたの財産状況がはっきり見えてしまうので、もしターゲットになってしまったら、泥棒たちがどのぐらい盗めそうなのかすぐ分かります。

後で詳しくプライベートキーについてお話ししますが、基本的にはプライバシーキーを自分だけ持っている限りは、自分の財産に自分だけアクセスできます。もし誰かが、パソコンのハッキングなどで、そのプライバシーキーを手に入れてしまったら、その人はそのビットコインを使えるようになってしまいます。

ビットコインアドレスを使い回すことで、潜在的にハック対象のターゲットにされることに加え、自分のプライベートキーもバレる可能性があります。あまり一般的な話しではないですが、トランザクションがサインされたパブリックキーは毎回同じだった場合、高スキルなエンジニアがいれば、プライベートキーを再建築出来てしまいます。

いずれにせよ、普通、多くの人はお金を何に使っているかを知られたくないと思いますので、ビットコインネットワークが仕組みとして提供している機能として、ビットコインアドレスの使い捨てを行いましょう。

3. ビットコインアドレスの仕組みと技術  ー ちょっと上級者向け

最初はユーザー観点からビットコインとは何かは簡単に紹介しました。使う際にそれ以上の認識は必要ありませんが、ビットコインアドレスに関して書くときに、裏側にある技術も重要だと思います。若干難しい話になりますので、技術の面に興味がなければ大半を飛ばしても大丈夫ですが、3-2、3-3と3-4 にはセキュリティーの面で大事なところを触れるので、その部分だけでも読んで心に入れていただきたいです。

3-1. ビットコインアドレスの生成概要

まず、ビットコインを送金する時、「XXX BTCを ビットコインアドレスから新しいビットコインアドレスへ送金します」というメッセージが送金アドレスの所有者からビットコインネットワークに送信されます。

それは基本的なビットコインのアドレスの役割です。

文字列の中身ですが、ほとんどのビットコインアドレスには、 ランダムな数字と大文字と小文字を混ぜた34文字が入ってます。全部の文字は大丈夫なわけでもないですけどね。大文字「O」、大文字「I」、小文字「l」と数字0は見た目の曖昧さを避けるために使われてません。

また、幾つかの文字がタイポの予防として入っており、それでビットコインのソフトウェアによりアドレス自体は正しいかをすぐ確認できます。

どうしてこんな文字数な形になっているでしょうか。答えは、もともとのアドレスは非常に長い数字数だったため、様々な暗号化の方法を使って、できるだけ人間にとって読みやすくされました。

基本的には、ビットコインアドレスは、公開鍵と秘密鍵のキーペアからなる「公開鍵暗号方式」という技術を利用し、キー(鍵)生成プロセスの結果でプライベートキーとパブリックキーというセットとして生成されます。

ビットコインを送金するたびに、ビットコインの所有者は自分のパブリックキーと毎回新しく生成された署名を見せます。パブリックキーと署名の表示で、ビットコインネットワークのみんながそのトランザクションを判断することができます。もしあってたら、ビットコインの所有権は新しいビットコインユーザーのものになります。でなければ、トランザクションはネットワークに否定され、送金処理に入りません。

では、プライベートキーとパブリックキーについてもっと詳しく説明しましょう。

3-2. プライベートキーとパブリックキー生成と役割

もうご存知であるかもしれませんが、一般のビットコインウォレットには、キーペアが入ってます — このキーペアには、プライベートキー「秘密鍵」とパブリックキー「公開鍵」があります。そのペアの所有により、ビットコインシステムでは、ビットコインへのアクセスが決まります。

プライベートキーはもともとランダム数字として生成され、次に幾つかの暗号化用のスクリプトを使って文字と数字を混ぜた文字列に最終的になります。

パブリックキーはビットコインをもらうためのもので、プライベートキーはビットコインを送金する時のトランザクションの署名のためにあります。

そのパブリックキーとプライベートキーは数学的な関連性を持っているので、プライベートキーはネットワークに送るメッセージに署名を生成できます。署名した後、その署名自体はパブリックキーを使って確認できます。署名の確認にプライベートキーは必要ありません。

3-3. プライベートキーについて

先ほど述べたように、プライベートキーはランダムな数字です。ビットコインアドレスの源になれ、基本的にはプライベートキーを持つことで、関連のビットコインアドレスのすべての財産にアクセスすることが出来ます。またプライベートキーはビットコインを送金する時の署名の生成のために使われ、その署名により所有が決まります。

そのため、プライベートキーを必死に守らなければなりません。もし第三者に自分のプライベートキーを見せたら、それは持っているビットコインのコントロール権限を与えることと一緒です。それとともに、プライベートキーのバックアップも忘れずに。もしプライベートキーをなくしたら自分の財産にアクセスできなくなります。絶対にバックアップしてください。

最近のウォレットアプリは、ウォレットを作る時にバックアップフレーズを見せてるので、それを紙に写して後でリカバリーできます。それで一応OKですが、デメリットとしてはそのバックアップフレーズは作ったウォレットが使っている仕様(BIP39BIP44など)に紐付いており、他のウォレットには使えない可能性がありますのでご注意ください。

ちなみに、たまにウォレットのインストール詳細ページを見るときに「あなたのキーはずっとあなたのものです!」とか見たいな文言が見かけますね。まさに以上の理由により、自分でキーを管理できるのがウォレットの大きいメリットです。

3-4. パブリックキーについて

次に、パブリックキーについてちょっと詳しく書きます。

パブリックキーはプライベートキーから作ったものであり、ここは難しい話になりますが、逆算ができない楕円曲線の乗算を使います。それは、

パブリックキー = プライベートキー * ゲネレートポイント

という式になります。

パブリックキーを知ってても、基本的には逆算はできません。一応、離散対数の検索という方法で逆算できなくもないですが、それはプライベートキーの値を無理やり探すと一緒で、探し当てられる可能性は確率的に非常に低いです。

パブリックキーを作るためには、最初ランダム数字のkでスタートし、それを既に決まってるゲネレートポイントのGで乗算します。それを使って、パブリックキーになる曲線上のもう一個の点を生成します。そのゲネレートポイントはsecp256k1という仕様で指定されます。

3-5. パブリックキーからビットコインアドレスへ

ではプライベートキーとパブリックキーの話ししましたが、どうやってパブリックキーはアドレスになるでしょうか?

ビットコインアドレスは数字と文字を混ぜた文字列であり、それを使って送金してもらいたい人にシェアできます。パブリックキーから計算されたビットコインアドレスは1か3が入ってます。

1PEKzwedF4pFHg3Tvj44H9AHqYjBcPvWdM

ビットコインアドレスは送金先として現れ、メールの送信先、銀行口座番号と同じ感覚です。

ビットコインアドレスはパブリックキーから暗号化ハッシュで計算されます。ハッシュアルゴリズムは一方通行の関数であり、それを使うことにより決まった数で文字列を吐きだせます。

暗号化のハッシュはビットコインの基盤です。ビットコインアドレスとか、スクリプトアドレスに利用され、トランザクションを承認してくれるproof-of-work(作業の証拠)アルゴリズムにも使われます。

ビットコインアドレスを計算するアルゴリズムは下記で、厳密に言えば、SHA256とRIPEMD160です。
・Secure Hash Algorithm(SHA256)
・RACE Integrity Primitives Evaluation Message Digest(RIPEMD160)

パブリックキーKでスタートし、SHA256のハッシュを計算し、さらに、RIPEMD160ハッシュを生成します。最後に、160ビットの文字列が出てきます。

つまり、プラグラミングの関数っぽく書くと、このようになります。

ビットコインアドレス = RIPEMD160( SHA256( パブリックキー ) )

いつもユーザーが見ているビットコインアドレスは、Base58Checkで変換されたものです。それにより、人間が読むことができ、またビットコインアドレスとして使えない文字を入れるとエラーになります。

最後に注意点ですが、ピットコインアドレスはパブリックキーと同じではないです。ビットコインアドレスはパブリックキーから一方通行で計算されているので、関連性がありますが、同一のものではないです。

まとめ

そもそもビットコインアドレスとは何なのか、日常の場面から裏側にある技術までビットコインアドレスを紹介しました。おそらく情報が多く、すぐ覚えられないと思いますので、簡単にまとめます:

・ビットコインアドレスは決まった文字列のセットから作成される
・活用利用は様々 ー QRコードの表示と取り込みやそのままでコピーの方法もある
・受け取る時に、アドレス使い回さない(プライバシーの関係で)
・ビットコインアドレスは暗号化のスクリプトを使ってランダム数から生成される
・自分のプライベートキーはパスワードのようなものであり、必死に守らないといけない