2012/07/26

パケットキャプチャをしてわかった。LINEは危険。

ケータイの開発現場の話なので、多くは語れないが、
今日、すこし解析をしていてこれはどうなんだ??と思った件を。メモ。

 標的はAndroidのLINEはアプリ。


1. LINEを入れていると、電池もちが悪くなる件

LINEって、なんかAppleのiMessageみたく、SNSやってるような画面ありますよね。

こんなやつ。(http://news.ameba.jp/image/20120723-287/ から拝借させていただきましたm(_ _)m)

チャットやってる最中にリアルタイムに相手からのメッセージが飛んでくる仕組みは、
まあなんとなくわかりますよね。チャットサーバー的なものにコネクション張りっぱなしにしておいて、受け取ってるんでしょうね。

では、
アプリ画面を閉じてる時ってどうなってると思います?

メール通知みたいな感じでLINEのメッセージを届ける仕組みはどうなっているのか?

rootハックした端末で、tcpdumpをとってみてみました。

なんと、HTTPのKeep-Aliveで実現されているんですね。
ようするに、Android端末はDeepSleepに入っていないんですよ。


まあ、ただ、LINE開発者もちゃんと考えてはいて、多少の考慮はされています。


Keep-AliveのTimeoutが何回か続くと、その後はAlarmManagerのRTC_WAKEUPにゆだねて、5分に1回のポーリングをする動作に切り替えて、Keep-Aliveをやめるようにはなっています。


2. あれ、HTTPって、セキュリティ的に大丈夫なんだっけ・・・?

で、一番の問題は電池の問題じゃなくて、ココ

>なんと、HTTPのKeep-Aliveで実現されているんですね。
でピンときた人もいるかもしれない。
そう、メッセージの内容が盗聴できる!

(2012.10.16 写真追加)

tcpdump -n -s 0 -w /data/local/tmp/line.pcap
(チャット、送信!)
Ctrl+c

と、かなり狙った手順ではありますが、
キャプチャ結果を見ると、どうみても暗号化されてないのがわかります。
その気になれば、盗聴も改ざんもできそうです。

ちなみに、Wifi通信だと、平文っぽくはありませんでした。なんらかの暗号化がされているようです。平文通信なのは、3Gの時だけのようです。


んにしても、「そんな、盗聴されたら会話が丸見えだなんて!」と思う人は多々いるでしょう。

あまり世の中には知られてなさそうだったので、細々とでも、ここのブログで発信してみます。