さよならGAFAM、をリアルにやってみる方法

1月5日(日)19時0分 GIZMODO


190217_gafamblock1
Image: Jim Cooke / Gizmodo US

※この記事は2019年2月27日に公開された記事の再掲載です。

週末の課題にでも?

先日来ご報告している、GAFAM(Google、Amazon、Facebook、Apple、Microsoft)を使わずに生活してみる実験。単に「Amazonで買い物しない」「アクセスしないように気をつける」とかじゃなく、専用に作ったVPNを使って、指定のIPアドレスとの通信を遮断する徹底ぶりでした。その実験でテクノロジー関係を構築したのは、ネットワークや権力、政策について考える活動家でもあるDhruv Mehrotraさんです。彼はこのGAFAM断ちを自分もやってみたいという方向けに、具体的にどういうことをしたのか、こんなふうに解説してくれました。

巨大テック企業たちはそれぞれ、たいていの中規模の国よりたくさんのお金を動かしています。彼らの莫大な利益は、莫大なリーチによるもので、これは秘密でも何でもありません。ほんの片手で数えられるほどの企業が無数の人の家々にアクセスできるという前代未聞の事態が、野放しになったままです。そしてこのことは、小さなコンピュータがどこにでもある今、あえて言う必要もないほどの事実となっています。

米GizmodoのKashmir Hill記者(僕はKashと呼んでいます)からGAFAMをブロックしたいという相談を受けたとき、僕はすごくワクワクしていました。消費者として僕らが選べる道はいくつかしかなく、その中で一番合理的なのは、ある会社のやっていることが気に入らなければ、自分のお金とデータを他に移すだけというものです。

でもこんな選択肢でさえ、今はますます手に入りにくくなっています。大手テック企業は我々の生活にあまりに深く織り込まれていて、その存在を検知するだけでも簡単ではないのです。今回のGAFAM断ち実験は、彼らのリーチの深さを測定する機会でもあり、世界がいかに彼ら企業中心になってしまったかを明らかにする場でもあります。

以下に、僕らが実験中にデータを集め分析した方法をまとめていきます。GAFAMをブロックするファイアウォールを立てるmacOS・OS X用スクリプトへのリンクも入れています。このスクリプトでは、オンライン状態を保ちながらもGAFAMだけブロックできるようにしています。

ただしこの方法はあくまで米Gizmodo内部で使うために考えたものなので、GAFAMをブロックするにはこれがベストとか、これしかないということじゃありません。でも希望的には、これを読んでくれた人に何らかのヒントを与えられて、自力でこの問題にアプローチする手がかりになれればと思います。

VPNの構築今回の実験では、Kashが使う複数のデバイスのトラフィックを個々に分析するより、トラフィックを中心となるVPN1カ所に集めて、そのVPNを僕が管理するのが合理的でした。そのため僕らはDigitalOceanのバーチャルマシン・Dropletを購入し、そこにOpenVPNサーバをインストールしました。そのとき僕が使ったのは、DigitalOceanの便利なチュートリアルです。

僕らは次にOpenVPNクライアントをKashの全デバイスにインストールしました。彼女のMacBookにはフリーでオープンソースなOpenVPNのインターフェースとしてTunnelblickというmacOS・OS X用ソフトウェアを入れました。Tunnelblickはプラグアンドプレイのアプリケーションで、必要なバイナリとかドライバがみんな入っています。

KashのiPhoneには、OpenVPN公式のiOSクライアントを使いました。家のスマートホーム系機器に関しては、各IoTデバイスがつながるルータをRaspberry Piルータにして、そこにOpenVPNクライアントをインストールしました。

これで、Kashの使うデバイスのトラフィックはすべて僕らが作ったVPNを通ることになりました。データの流れはOpenVPNにセットアップされたtun0のインターフェースを使い、ネットワーク調査ツールtcpdumpで把握できました。僕らの分析は全部、tun0でフィルタリングした各パケットの行き先のネットワークに関する情報に基づいて行ないました。

初期段階の分析最初の分析では、僕らはまず基本を理解すべく、どんな行為をするとどれだけのデータがテック企業に流れるのかを調べてみました。僕はネットワーク監視ソフトウェアを作り、Kashと僕がそれぞれデータを集める実験ができるようにしました。たとえばKashはランニングに行くとき、ソフトウェアにネットワークトラフィック監視の開始をさせ、データキャプチャにラベルを割り当てます。これでネットワーク上の活動とそれぞれの行為を結びつけました。次にこのソフトウェアはWHOISを使い、各パケットの行き先を分類しました。

「WHOIS」とはインターネットの住所録みたいなもので、ドメイン名やIPアドレスを登録した人や会社の情報がリストになって公開されています。WHOIS参照をするにはターミナルを開いて、「whois (たとえば)151.101.130.166」と打ち込むと(この例は米GizmodoのIPアドレスです)、そのネットワークに関する有用な情報をたくさん出してくれます。上の例だと、GizmodoがコンテンツをホストするCDN(コンテンツデリバリーネットワーク)としてFastlyを使っていることがわかったりします。今回のGAFAM断ち実験では、WHOISが返してくるデータの中の「OrgName」(組織名)というフィールドをチェックしていました。

tcpdumpが捉えたパケットにはそのパケットが向かう先のIPアドレスが書かれているので、それら全部についてWHOIS を見ることで、どんなアプリがどんなサービスを使っているのかがわかりました。たとえば下のグラフは我々のソフトウェアを元に生成したものですが、Uber乗車中の1分ごとに、データがどこに送られたかを描いています。


190217_gafamblock2
Image: Gizmodo US

そして下のグラフは、僕がiPhoneをチャージャーにつなぐたびに発生するトラフィックを描いています。


190217_gafamblock3
Image: Gizmodo US

カウントとブロック次のステップは実際外に行くトラフィックのうちGAFAM行きのものをブロックすることです。そのために我々は、各企業が持つさまざまなIPネットワークを特定しました。インターネットインフラは、データが複数のネットワークを経由しても正しく行き先に到達できるよう、一定の透明性の上に成り立っています。なので僕らはテック企業が使うAS(Autonomous System)番号なるものを使い、彼らのIPネットワークを特定できます。これが実際動いているところは、Whoisクエリを入力すると見られます。

たとえば「whois -h whois.radb.net — ‘-i origin AS32934」と入れてみます。この例のAS32934とは、FacebookのもつAutonomous Systemsのひとつです。

IPアドレスを分類する方法はわかっているので、僕らはファイヤウォールルールをVPNで作り、GAFAMと関係するパケットを落とすように設定しました。ファイヤウォールルールでは、コンピュータがインターネットパケットをどう扱うべきかという要件を指定します。たとえば、VPNがIPアドレス「75.126.39.35」の5222番ポートに行こうとするデータを見つけると、我々のパケットフィルターはそれがWhatsApp行きトラフィックだと認識します。WhatsAppはFacebook傘下の会社なので、この場合はブロックします。これを理解するには、インターネット上での情報の流れ方を理解しておくのがいいです。ここに、Maneesha Wijesingheさんが書いた読みやすい解説があります(でも英語ですみません)。

テック企業ブロックを自力で簡単に実現するには、こちらのGithubリポジトリをチェックしてみてください(GithubはMicrosoft傘下ですが)。このコードはmacOSとOS X用に書かれていて、Mac OS X Lion以降OSに同梱されているパケットフィルター、略してPFに依存しています。やや独特のクセがありますが、そのへんはreadmeの「installation」部分に詳しく説明しました。

課題このシステムを設計するにあたり、僕らはCDNが実験に及ぼす影響を考えていませんでした。CDN(Content Delivery Network)とは、ウェブコンテンツをインターネット経由で配信するために最適化されたネットワークのこと。多くのWebサイトやアプリを使うとき、じつは大元のWebサイトやアプリのサーバからユーザーのブラウザが直接通信しているとは限りません。多くの場合CDNが間を取り持っていて、バッファとして機能しています。

その理由はスピードとセキュリティにあります。CDNは企業のコンテンツをより速くユーザーに届けるため、それをあちこちの場所に保存しています。インターネットを広がった雲みたいなものじゃなくワイヤの束として考えるなら、CDNを使う理由は明らかです。コンテンツの置かれた場所がユーザーから物理的に近ければ近いほど、より速く届くのです。

でも今回の実験では、CDNがあることで結果に多少の誤差が生まれました。というのは、CDN経由のトラフィックは、大元がAWSとかGoogle Cloudでもそれを検知できなかったためです。SpotifyやNetflix、その他数々のメジャーなサービスやWebサイトが、Amazon・Google・Microsoftのどこかにホストされつつ、CDNも使っています。実際今回の実験では、Airbnbや米GizmodoはAWSにホストされているにもかかわらず、我々のブロックを通り抜けてきました。

なのでもしGAFAMを完全に使わないようにするとしたら、メジャーなCDNのIPアドレスも全部ブロックする必要があります。この方法のデメリットは、「メジャーなCDNを使ってはいるけど、大元のホスティングはGAFAMじゃない」ところまで全部ブロックしてしまうことです。つまりGAFAMと何の関係もない、無実の企業やサービスまでブロックしてしまいます。逆にメリットは、ブラウザがほとんど使えなくなることです。この方法を取りたい勇気ある人は、上に書いたレポジトリにある「—fascist」フラグの付いたコードを動かせばOKです。

これまでの「さよならGAFAM」シリーズReference: Wikipedia

GIZMODO

「2019年」をもっと詳しく

「2019年」のニュース

トピックス

BIGLOBE
トップへ