Bitcoinの暗号化技術とBitTorrentのネットワーク技術を使い検閲不能・コストゼロ・常にアクセス可能なサイトを作るZeroNet

Bitcoin(ビットコイン)の暗号化技術とBitTorrentのネットワーク技術を使い検閲不能・コストゼロ・常にアクセス可能なサイトを作る「ZeroNet」


Bitcoin(ビットコイン)は2017年10月には1BTCが65万円を突破するなど、世界的に活発な取引が行われている仮想通貨です。
今最もホットな仮想通貨であるビットコインのシステムを利用して、検閲による削除が不可能・運営コストゼロ・インターネットに接続していなくてもアクセス可能なサイトが閲覧・作成できるソフトウェア「ZeroNet」が、現在GitHubから誰でも無料でダウンロードして使用可能となっています。

ZeroNet: Decentralized websites using Bitcoin crypto and the BitTorrent network
https://zeronet.io/

GitHub – HelloZeroNet/ZeroNet: ZeroNet – Decentralized websites using Bitcoin crypto and BitTorrent network
https://github.com/HelloZeroNet/ZeroNet

「ZeroNet」はBitTorrentやビットコインで採用されているピア・ツー・ピア(P2P)という仕組みでウェブサイトを構成するもので、大規模サーバーのような中央組織が存在しません。
誰かが「ZeroNet」のサイトを表示するように要求した時は、過去にそのサイトへアクセスした多くのユーザーが相互にファイルの断片をアップロードすることによって要求者の端末にサイトを表示します。
この仕組みによって「ZeroNet」によって作成されたサイトは、第三者による検閲を受けて閉鎖されるという危険性が限りなく低いものになっています。
つまり、「ZeroNet」で作成されたサイトはウェブ上には存在しておらず、あくまでも相互にやり取りされるデータの断片のみの状態となっているため、事実上存在しない「ZeroNet」のサイトは第三者が削除することもできないというわけ。


サイトを訪問したユーザーは「ZeroNet」のサービス利用の対価として、他のユーザーがサイトを利用する時にデータの提供者となって貢献します。
つまり、サイトの訪問者がサイトを維持する通信費(コスト)を負担することになり、サイトの運営者はサーバー代などのコストを負担する必要がなくなるため、「ZeroNet」ではサイト運営のコストゼロを実現しているとのこと。
実質的にはすべてのユーザーがほんの少しずつの通信費を負担している形になるため、「サイト運営者とユーザーでコストの平等を実現した」という表現が正しいかもしれません。
また、「ZeroNet」ではP2Pでデータのやり取りができさえすればサイトを閲覧することが可能で、Bluetoothやラジオでも通信さえできればインターネット接続なしでもサイト構成ファイルのダウンロードが可能。


ユーザーはサイトを開設した時、2つのキーを受け取ります。
1つはサイト運営者のみに開示されるプライベートキーで、サイトの編集を行うことが可能なのはプライベートキーを持っているユーザーだけ。
もう1つはサイト運営者以外のユーザーにも公開されるパブリックキーで、こちらはサイトのアドレスとなります。
プライベートキーとパブリックキーの仕組みは現在ビットコインのシステムに使われているものと同じ方式を採用していて、暗号化されたキーは現在最も高性能なスーパーコンピューターでもクラックするのに10億年かかるとのことです。


◆インストールとサイトの閲覧

では早速、GitHubから「ZeroNet」をインストールしてサイトを作ってみます。
「Microsoft Windows」、「Apple macOS」、「Linux 64bit」、「Linux 32bit」の中から使用したいOSを選んでダウンロードできますが、今回は「Microsoft Windows」をクリック。


「ファイルを保存する」にチェックを入れて、「OK」をクリックします。


解凍した「ZeroNet-win-dist」をクリック。


フォルダ内の「ZeroNet.exe」をクリックすると……


ブラウザで「ZeroNet」のホーム画面が開きました。
ホーム画面には「このサイトは現在、中央のサーバーを経由することなく、84のPeers(P2P方式においてファイルのやり取りをする個々のユーザーのこと)によって提供されています」と表示されていました。


ホーム画面の左側には「ZeroNet」のコンテンツが並びます。
試しに「ZeroBoard」というコンテンツをクリックしてみます。


すると、いろんなユーザーが掲示板のような感覚で単文を投稿していました。
興味の向くままに下の方へスクロールしていくと……


なにやら不穏な中国語の文章が並んでいます。
こういった文言も「ZeroNet」なら削除されませんが、ユーザーの匿名性自体はBitTorrentと同じため「IPアドレスをたどられても大丈夫なんだろうか……」と、ユーザーのことが少々心配になってしまいます。


ユーザーは上部の入力フォームから発言可能です。
「hello」と入力して「Submit message」をクリックすると……


少しの間を開けて画面右上に「Message submitted successfully! It could take some minutes to appear.」という表示が出ます。


「Board」を確認すると、しっかりと自分の発言が投稿されていました。


次は「ZeroSites」というコンテンツをクリックしてみます。
やはり新しいページを開くときにはダウンロードするファイルが大きくなるため、正常に見られるようになるまでは画面がカクカクしてしまいます。
P2Pは人気のあるファイルほど高速でダウンロードできますが、「ZeroNet」ではまだユーザー数が少ないためか快適なブラウジングとはいきません。
サイトの容量が大きくなりすぎるとデータのやり取りに支障を来すため、記事執筆時点では「ZeroNet」で作成できるサイトの容量が10MBに制限されていました。
他方で、1度表示されたページは新規にダウンロードするファイルが少ないため、スムーズに閲覧することができます。


「ZeroSites」には「ZeroNet」で作成されたサイトが並んでおり、ここから閲覧したいサイトを選択するのが「ZeroNet」を利用するには最も便利。
「ZeroSites」はコンテンツごとにサイトが分けられていて、「Blogs(ブログ)」「Services(サービス)」「Forums, Boards(フォーラム、掲示板)」などに加え……


「Chat(チャット)」「Video, Image(ビデオ、画像)」「Guides(ガイド)」などのコンテンツがありました。
ざっと見てみた印象としてはほとんどが英語と中国語のサイトで占められています。


「0ch」という4chを模したサイトも作られていました。


「0ch」を開くと「あなたは完全に匿名性が保たれているわけではありません」という警告画面が表示され、思わず身構えてしまいます。


「0ch」は非常に簡素な作り。
試しに「Anime」というスレッドを開いてみると……


不謹慎な香りが漂う「けいおん!」のコラ画像が貼られていました。
こういうところは普通の掲示板と変わりありません。


◆インターネット接続なしでも閲覧可能

「ZeroNet」は自分が1度接続したサイトであれば、たとえインターネット接続が切断された状態であっても……


通常通り閲覧が可能です。
「ZeroNet」はユーザーが1度訪れたサイトがアップデートされると、P2P方式でサイトの構成ファイルをブラウジング中に随時ダウンロードするシステムのため、1度自分が訪れたサイトを構成するファイルは最後のアップデート状態で手元に残っています。
そのためインターネット接続が切れてもほぼ問題なくブラウジングが可能というわけ。


◆「ZeroNet」でサイトを作成する

それでは実際に「ZeroNet」で自分のサイトを作成します。
「ZeroNet」では1から自分でコードを書いて作成することも可能ですが、ただ単純にサイトを作りたいだけならばそれほど難しくありません。
まずは「ZeroHello」をクリックして「ZeroNet」のホームを開き、左側上部の点が3個縦に並んだアイコンをクリックします。


メニューが開くので、「Language:」が「JA」になっていることを確認してから「Create new, empty site」をクリック。


すると、作られたばかりの新しいサイトが開きました。
サイトは編集前の状態だと、白紙の画面にサイトのアドレスなどの情報が表示されます。
このアドレスは他のユーザーにも公開されるパブリックキーです。


「HelloZero」の画面に戻ると、画面左側に「my new site」として先ほど作ったサイトが追加されていました。
「my new site」をクリック。


サイト右側の「0」マークにカーソルを合わせると……


「0」マークが横棒が3つ並んだマークに変わり、色も紫色になりました。
これをクリックして左側にドラッグすると……


サイトの情報が見られます。


この右側部分を下にたどっていくと、サイトを訪れた人数(Peerとなっている人の数)やサイトを構成するファイルの情報などが見られます。


「IDENITITY ADDRESS」とはこのサイトのプライベートキーのことで、サイトを作った人、もしくは編集可能な人のみが保持するものです。
サイトを編集する時に必要になるものであり、第三者に公開してはいけません。
「SITE ADDRESS」はサイトのパブリックキーのことで、サイトのアドレスにも使われているものです。
SITE ADDRESSはサイトを訪れた人なら上部のアドレスを見ることで誰でも確認可能。
プライベートキーとパブリックキーという2つのキーを組み合わせ、プライベートキーを持っている人間だけがこのサイトの編集権を持っているという点が、ユーザーがビットコインを管理する仕組みと同じです。
ビットコインユーザーのプライベートキーが盗み出されるとビットコインが第三者に引き出されてしまうのと同様、「ZeroNet」サイトのプライベートキーが盗み出されると自分のサイトを自由に編集されてしまうため、プライベートキーの管理は厳重にする必要があります。


サイトの編集をしたい場合は、インストールした「ZeroNet-win-dist」フォルダから「data」をクリック。


自分のサイトに割り当てられたパブリックキーが書かれたフォルダをクリックし……


フォルダ内にある「index.html」を開きます。


開いた「index.html」の内容を書き換えたら……


自分のサイトを開き、「0」マークを左へドラッグしてサイト編集ページを開きます。


編集ページの最下部へ移動し、「Sign」をクリック。
これで書き換えた「index.html」ファイルの内容が「ZeroNet」に登録されます。


最後に「Publish」をクリックし、1度ホーム画面に戻ります。


ホーム画面から再び自分のサイトを開くと……


サイトに般若心経が表示されていました。
htmlの知識さえあれば、誰でも「ZeroNet」で自分のサイトを編集することが可能です。


◆サイトの公開

サイトを編集しただけでは、他のユーザーからサイトが見られる状態にはなりません。
サイトの編集・作成とは別にサイトの公開作業が必要になりますが、それには「ZeroNet」内で使用するIDが必要。
ホーム画面から「ZeroID」というコンテンツをクリックすると……


「ZeroID」というページが開きます。
「Get auth cert」をクリック。


適当なユーザーネームを入力し、フォーム右側の表示が「ok」になっていることを確認して「Send request」をクリック。


IDが付与されました。


サイトを公開するにはIDとサイトのURLが必要なため、自分のサイトからURLをコピーします。


ホーム画面から「ZeroSites」をクリックし……


右上の「SUBMIT NEW SITE」をクリック。


サイトの投稿フォームが開くので、アドレス、サイト名、言語、カテゴリー、概要を入力していきます。
言語の選択肢に日本語はなかったので、今回は「MULTI」を選択。
最後に「SUBMIT」をクリックすると……


右上に「このサイトで使用するアカウントを選択してください」というポップアップが出るため、先ほど入手したIDを選択。


再度「SUBMIT」をクリックすると投稿完了です。
「Other」のカテゴリーに自分のサイトが表示されているので、クリックすると……


作ったサイトが表示されました。
これで他のユーザーからもアクセス可能で、第三者による削除もされず運営費もかからないサイトが作成されて公開されたことになります。


◆匿名性を高めるためにTorを使用する

なお、「ZeroNet」は確かに第三者によって削除される危険性はほぼありませんが、ファイルの交換にBitTorrentを利用しているためデフォルトの状態ではユーザーの匿名性がBitTorrentと同じ程度しかありません。
「ZeroNet」の使用において匿名性を付与したい時は、Torからアクセスすることによって接続経路を隠すことが可能とのこと。


Torは「ZeroNet」のインストールファイルに同梱されており、「ZeroNet-win-dist」から「core」をクリックし……


「tools」をクリック。


「tor」と選択し……


「tor.exe」から起動することができます。

こちらからコメントの記入が行えます

*

ピックアップ記事