bitcoin_mark

連載『bitcoinに迫る!』第2回 ~bitcoinの信頼性~

  • このエントリーをはてなブックマークに追加

by [2013年12月04日]

前回の記事では仮想通貨「bitcoin」がどのようなものなのかを見ました。今回はそのbitcoinがどのようにして通貨のやりとりを行い、その信頼性を保証しているのか、その仕組みを見て行きます。

P2Pの仕組み

P2Pネットワーク イメージ図
ネットワークのノード(結節点)となる各マシン同士が、任意に1対1で接続し情報をやりとりする。クライアント・サーバ型のネットワークとは異なり、中央集権的に全てのトラフィックを処理するサーバを持たないため、1カ所での変更が全体に波及するには時間がかかるが、例えばノードが1つ脱落しても迂回経路が形成されるため、局所的なトラブルに対する耐性が高い。

bitcoinでの参加者間の取引による通貨データの授受を行うのに用いられる、Peer to Peer(P2P)ネットワークの仕組みはいたって単純です。

P2Pネットワークでは、それを形成する参加各マシンが対等に、相互間で情報をやりとりする結節点(ノード)の役割を果たすことで形成された網目状のネットワーク上での総体として情報を保持し、1台のマシンで発生した情報の変化が順次ネットワーク上の他のマシンに拡散しつつ伝播してゆくことで変化がP2Pネットワークに参加する全マシンに伝わります。

この仕組みの有利な点は、P2Pネットワークを形成する参加各マシンが任意にネットワークへの接続と離脱を繰り返してもネットワーク総体での情報保持が破綻しにくくなっている=耐障害性が高いことと、通信相手やその相手との通信経路の特定が困難である=個人情報の秘匿性が高いこと、そしてネットワークの参加マシン数が増減しても各マシンレベルでは特に対応を要しない=スケーラビリティが高いことです。

特にネットワーク参加マシン数の増加は、中央集権的なクライアント・サーバ型のネットワークでは唯一のノード(結節点)となり、クライアントマシンからのトラフィックが集中するサーバの分散処理などによる強化・増強が必須となることが多く、ネットワークの規模拡大に伴って大きな設備投資が求められる、という問題があります。

「艦隊これくしょん~艦これ~」で新規参加希望をした際にしばしば表示される画面
クライアント・サーバ型ネットワーク構造をとるシステムでは、サーバの処理能力を超えてアクセスが集中すると、このようにエラーメッセージを出してサービスの提供そのものを停止せざるを得なくなる。

この問題は実際にも、例えば最近話題のブラウザゲームの「艦隊これくしょん~艦これ~」(角川ゲームス/DMM)が運営側の想定を遙かに超えるペースでユーザー数が増えた(※2013年11月現在、遂に登録ユーザー数が120万人を超えるという、この種のゲームではほとんどありないような空恐ろしい状況を呈しています)結果、サーバの増設を狂ったような凄まじい勢いで繰り返すのを強いられ続けていることが示すようにクライアント・サーバ型のネットワーク構造ではそのネットワークに参加するクライアント(ユーザー)の数が増え続けた場合、その対応のためにネットワーク管理者は本当に大きな負担が強いられることになります。

これに対しP2Pネットワークの場合、ユーザー数増大に伴う回線の輻輳問題はあるものの、そもそも基本的な仕組みとして中央集権的なサーバが存在しないため、存在しないモノを増設する必要はなく、またそもそも自律的かつスケーラブルにネットワークが組織化されるため、ネットワークのメンテナンスや管理そのものが事実上不要となります。

そこでbitcoinでは、こうしたP2Pネットワークの仕組みを最大限に有効活用することで、中央銀行(に相当する機関)なしでの安全な仮想通貨流通とデータ改竄などによる通貨の詐取を防ぐ、つまり通貨としての「信用」を保証するためのメカニズムが巧妙に構築されています。

前所有者を確認するためのメカニズム

bitcoinがPeer to Peer(P2P)ネットワークを基本としていることはここまでで記したとおりですが、その上で通貨の多重利用を防止するために、非常に複雑かつ巧妙な仕組みが幾つか組み込まれています。

一つ目は、通貨としての電子コイン(※BTCという単位を用います)が、公開鍵暗号によるデジタル署名のチェーン(連鎖)として定義されていることです。

公開鍵暗号というのは、現在の電子署名をはじめとする暗号化技術で一般的に使用されている方式です。

この方式はまず受信者が事前に暗号の鍵の生成作業を行い、受信者自身が非公開で保有する秘密鍵と送信者に公開する公開鍵の2つ1組の暗号鍵データを生成します。そして送信者側が送りたいデータに対して受信者から送られた公開鍵を使って暗号化を行い、最後に暗号化されたデータを受け取った受信者がそのデータを自身の持っている秘密鍵で元のデータを復号する、という仕組みになっています。

この仕組みは、2つ1組の暗号鍵が暗号化に用いる公開鍵とその暗号化されたデータを復号するための秘密鍵、とそれぞれ役割が違えてあって、それぞれ逆の処理には利用ができない、という不可逆性を実現していることに大きな特徴があります。

つまり、この仕組みでは(基本的に受信者が流出させない限り)他者が入手することのできない、復号のための秘密鍵を何らかの手段を用いて手に入れない限り、高度に暗号化されたデータを元の状態に復号するのは事実上不可能(※全く不可能というわけではありませんが、ほぼ総当たり戦に近い状況となるため、莫大な時間をかけて解読処理を行う必要があります)です。そのため、仮に悪意ある攻撃者が何らかの手段を用いて送信者と受信者の間で取り交わされる全ての通信を傍受し、暗号化データや公開鍵を手に入れたとしても実用上意味のある期間内に解読できないため意味がない、ということなのです。

中本論文で示された、公開鍵暗号を利用したbitcoinの所有者情報の変遷を示す概念図

bitcoinではこうした公開鍵暗号の仕組みを利用し、電子コインが取引によって転送される際に受取人が公開している公開鍵と、現在の所有者がこの電子コインを受け取った際の取引データからハッシュ関数を用いて生成される要約値であるハッシュ値を用いて現在の所有者のデジタル署名を生成・暗号化して電子コインのデータ末尾に追加します。

こうすることで現在の所有者から電子コインを受け取った受取人は、自身の持っている秘密鍵を用いてこの暗号化されたデジタル署名を復号し、デジタル署名の正当性と直前の所有者を確認できるようになっているのです。

次回はbitcoinがどのように二重取引を防いでいるか、といったメカニズムについて見てみたいと思います。

コメントは受け付けていません。

PageTopへ