bohemia日記

おうちハックとか画像処理、DeepLearningなど

自宅の照明をつけるだけでインターネット上を地球1周以上してた

こんにちは。ぼへみあです。

Google Homeで照明をつけたり、テレビをつけたりしているのですが、ネットワーク経由でどんなところを巡って自宅に帰ってくるのか気になって調べてみたら、地球1周以上の距離を巡っていた話です。

ネットワーク依存が進むIoT家電

昨年2018年の年末に、ネットワーク接続型の学習リモコンのサーバーがダウンして、電気がつけられなくなった、というニュースがありました。

www.itmedia.co.jp

その記事のブックマークコメントでは、このような意見がスターを集めていました。

「電気もエアコンもつけられない」 スマートリモコン「Nature Remo」で障害相次ぐ - ITmedia NEWS

スマートスピーカーもスマートリモコンも同じ家の中の同じネットワークにつながっているのにいちいちインターネットを経由して通信する仕組みだが、ちょっと馬鹿らしい感じ

2018/12/25 13:55
b.hatena.ne.jp

「電気もエアコンもつけられない」 スマートリモコン「Nature Remo」で障害相次ぐ - ITmedia NEWS

目の前の家電を操作するのにえらい遠回りしてるのね

2018/12/25 14:53
b.hatena.ne.jp

確かに遠回りしているなーと思いつつ、果たして我が家のIoT家電はどれほど遠回りしているのか気になりました。 なんとなくアメリカ行って帰って来てるのは分かりますが、本当に海外まで行っているのか、ネットワーク解析を行い確かめたくなりました。

IoT機器監視のための準備 パケットキャプチャリング

IoTデバイスがどこのサーバーに繋ぎに行っているのかを知るためには、通信を傍受してIPを調べます。 適当な国産無線ルーターを使っているため、拡張性はなく、ルーターだけでは通信は見られません。 そこで前回のこちらの記事で作った無線ルーターを間に挟んで、パケットキャプチャリングを行います。

bohemia.hatenablog.com

構成図はこのようになります。 f:id:bohemian916:20190129010023p:plain

このスーファミを挟むことで、自宅のIoT機器のがどのようの通信をしているのかを監視することができます。 なおPhilips Hueのブリッジは有線接続のため、ラズパイに有線lanのインターフェイスを新たに接続して有線で繋げています。

「OK, Google 電気つけて」の通信経路

まずは基本的な電気点けるタスクで、どういう経路で自宅のHueまで帰ってくるか見てみます。 Google HomeとPhilips Hueは提携しており、各機器の設定さえすれば「電気つけて」が使えるようになります。 そのため経路なこのようになっていると考えられます。 f:id:bohemian916:20190129010101p:plain

まずはGoogle Homeの音声認識がどこに送られているのかを見てみます。 スーファミ型のパケットキャプチャリング機にコンソールログインして、通信をみます。

tcpdump -i wlan0

これを実行中に「OK, Google」を言うと、以下のような通信が大量に発生します。

14:37:33.345649 IP Google-Home.12345 > kix06s01-in-f228.1e100.net.https: Flags [.], seq 418305:419673, ack 8094, win 762, options [nop,nop,TS val 7270253 ecr 2553555075], length 1368
14:37:33.983110 IP kix06s01-in-f228.1e100.net.https > Google-Home.37536: Flags [.], seq 30635:32037, ack 429209, win 1050, options [nop,nop,TS val 2553555821 ecr 7270314], length 1402

"kix06s01-in-f228.1e100.net"が通信先のようです。このアドレスは、GoogleのクラウドサービスであるGoogle Cloud Platformで大阪リージョンでインスタンスを立てた時のIPのようです。何度か試してみると、"nrt20s09-in-f10.1e100.net"という東京リージョンの通信先も出現していました。

この通信先にたどり着く経路をgeotracerouteという、tracerouteの経路のサーバーの位置を取得してGoogle Earthに表示してくれるサービスを使って表示してみます。

f:id:bohemian916:20190129010124p:plain

音声認識の時点では、まだ日本を脱出していないことが分かりました。 Googleの音声認識が解決したあとの先の経路は、こちらからでは分かりません。しかし「電気つけて」と言った後に、Hue宛てにアクセスが来ていました。というかHueが特定のサーバーと頻繁に通信しています。

15:24:40.373278 IP Philips-hue.56896 > 93.93.211.130.bc.googleusercontent.com.http: Flags [P.], seq 6:542, ack 1, win 2144, length 536: HTTP
15:24:40.621246 IP 93.93.211.130.bc.googleusercontent.com.http > Philips-hue.56896: Flags [.], ack 6, win 28400, length 0
15:24:40.621490 IP 93.93.211.130.bc.googleusercontent.com.http > Philips-hue.56896: Flags [.], ack 542, win 28944, length 0
15:24:40.621682 IP Philips-hue.56896 > 93.93.211.130.bc.googleusercontent.com.http: Flags [P.], seq 542:631, ack 1, win 2144, length 89: HTTP

こちらはどうやら所在地がイギリスのサーバーみたいです。 経路を調べると、このように一気にグローバルになりました。 f:id:bohemian916:20190129010151p:plain

太平洋を横断してアメリカを経由し、大西洋も横断してイギリスまで行っているようです。 DNSの関係か、西海岸のシアトルから東海岸のニューヨークまで行き、また西海岸のサンノゼまででアメリカを往復しています。 通信経路の直線総距離はなんと24350km!! 地球の円周が約40000kmなので、地球を半周以上しています。

全体の通信経路を簡単にまとめると
東京→大阪→東京→シアトル→ニューヨーク→サンノゼ→イギリス→サンノゼ→ニューヨーク→シアトル→東京
のようになっているみたいです。総距離は、約50000km、地球を1と1/4周してます。

部屋の湿度が低くなったら、電気の色を変える

続いては、Netatmo Weather Stationという、お部屋の状態を計測するサーモスタットを試します。 我が家では、部屋の湿度が低くなると、電球を砂漠っぽい色にしてお知らせするようになっています。 また二酸化炭素濃度が高くなると、赤色になり警告します。 こちらはIFTTTというサービスを使って繋げており、構成はこのようになっています。 f:id:bohemian916:20190129010356p:plain

詳しくはこちらの記事で。 bohemia.hatenablog.com

Netatmoはフランスの会社なので、またヨーロッパに飛ぶのかなとワクワクしながらパケットキャプチャリングをします。 息を端末に吹きかけ、CO2濃度を無理やり上昇させてみたところ、51.144.7.223というIPと通信をしていました。 こちらもtracerouteしてみると、さらにグローバルな感じになりました。 f:id:bohemian916:20190129010420p:plain

Netatmoはオランダにサーバーを置いているようです。NetatmoはIFTTTにトリガーを送信して、IFTTTからイギリスのPhilipsサーバーからHueへのアクセスが来ます。IFTTTの通信経路は分かりませんが、IFTTTのMakerチャンネルはアメリカのシアトルのサーバーから来ています。したがって経路は
東京→ロサンゼルス→ニューヨーク→ロンドン→アムステルダム→イギリス→ニューヨーク→シアトル→ニューヨーク→イギリス→ニューヨーク→ロス→東京
のようになっていると思われます。直線総距離は約60000km。地球1.5周分もしてます。光の速さでも0.2秒かかりますね。

Amazon Echoの通信

Google Homeは国内のクラウドで音声認識処理をしていたようですが、Amazon Echoはどうなのかも調べてみました。 結果は、シアトルのAWSに行っているようでした。

f:id:bohemian916:20190129141818p:plain

Google Homeならまだ国内で完結する余地もありましたが、Alexaだとどんなことをしようが、アメリカ往復は免れません。 LINE Cloverはどうなっているのでしょうか。持っていないので、誰か検証して欲しいです。

世界を巡るのには理由がある

家の電気をつけるだけで地球1周以上も通信するなんて、随分遠回りしていると思われるかもしれませんが、こうなるのも様々な理由があります。 現状で音声認識をするためにはクラウドで音声を処理するのが合理的だということです。ディープラーニングのおかげで音声認識の精度がグンと向上しました。しかしディープラーニングで音声を処理するにはそこそこの計算量が必要です。スマートスピーカーに端末にそれを載せるとコストがかさみます。

また学習済みモデルを端末に入れてしまうと、リバースエンジニアリングをされて、高度な学習技術と大量の計算コストがかけられたモデルが流出してしまいます。Google Homeの認識精度は群を抜いていると思います。私はGateboxという嫁召喚デバイスの開発に携わっていたことがあるのですが、音声認識を担当していたエンジニアは、周囲の雑音に大変苦労していました。音の反響や設置位置の影響でストレスなく会話できるレベルの音声認識を作るのは大変難しいです。

計算コストとモデル流出リスクを考えると、クラウドで処理してしまうのが良いというわけです。しかし世界中のネットワークをここまで容易で安価に使える今の世の中には驚きます。

IoTのリスクをどう捉えるか

クラウドに依存していると、ネットワーク障害やサーバーダウンのリスクが家庭内に持ち込まれることになります。アメリカやヨーロッパで通信障害が起きると、我が家の電気が点かなくなります。なんか「風が吹けば桶が売れる」みたいですね。 この点から「俺はIoT家電を使わない」と考える人もいますが、そうした人の多くは「ゼロリスク信仰」に近い考えの人であると考えています。もしくは、「便利なものに依存すると、なくなったときに困る」症候群です。 IoTデバイスが使えなくなっても、そこまでリスクは大きくありません。一時的に従来のリモコン操作に切り替えるだけです。 私は全ての操作を音声認識や自動化すべきだとは考えておらず、操作手段はたくさんあるほうが便利だと思っています。

それよりも怖いのが、クラッキングですね。NICTがIoTデバイスの脆弱性の調査のためにポートスキャンするって話題になっていましたが。 ITセキュリティの知識があるひとなら、ルーター等の設定でポート閉じたり、パスワード等の管理をきちんと行うことで問題ないと安心できますが、一般の人からすると「何をすればいいかわからない」ので家電が勝手に操作されたり盗聴されるかもしれないという怖さがぬぐいきれないと思います。もはやインターネットは電気水道ガスに並ぶ、誰もが契約するインフラなので、ルーターの設定に必要な知識は義務教育で教えてもいいんじゃないかと思います。

インターネットはスゴイ

今回IoTデバイスの経路を調べてみて、我が家は世界と繋がっていることを実感しました。AIやIoT、クラウドなどの技術が絡み合い、家の電気を点けるだけでも多くの人が関わっており、それを繋げているインターネットって偉大だなぁと思いました。普段はネットワークの存在を意識することなくスマホで動画みたりしてますが、これだけ安価にネットワークを使えるのはスゴイことです。 高々3m先の照明を点けるだけで気軽に5万kmも通信してるって、インターネット以前では考えられないことです。

しかし今のインターネットはGDPRしかり、個人情報の保護の方向へ向かっています。不要なインターネットを介したIoTは敵視されていくかもしれません。今後どうなるか見ていきたいです。