雑種路線でいこう

ぼちぼち再開しようか

もっと安全なメッセンジャーを考える

前の記事ではFACTAの記事が事実と仮定した場合に韓国政府が認めたのは韓国国内利用者-日本のLINEデータセンター間の平文通信の傍受で、日本国内での利用を韓国当局が適法に傍受することは難しいと書いた。技術的にはSSL秘密鍵やサーバーに蓄積された情報が狙われ得るものの、日本国内での通信傍受は司法傍受を除いて違法で、事業者が法的手続きを経ずに外国当局に情報提供すれば電気通信事業法の「通信の秘密」に觝触するから、国家間の協議であっさり認めるとは考え難いからだ。
とはいえ諜報の世界では非合法のことも行われている。例えば米国が法律上の権限を超えて広く通信傍受していたことや、中国が民主化運動家のアカウントを嗅ぎ回っていることは広く知られている。従って事業者として絶対に傍受されていないと断言すべきではなく、データセンターの場所や暗号化方式などの事実を説明し、それ以上のことは断言を避けた方が広報上のリスクは小さいと結論づけた。仮に通信傍受が行われていたとしても、直接的に協力していない限りは関知しようがないからである。
日本は敗戦以降、諸外国と比べて「通信の秘密」を厳しく規律してきたが、青少年対策の文脈で警察や総務省SNS事業者に対してミニメールの自主的な監視や児童ポルノブロッキングを求めるなど、ここ数年で大きく風穴が開いた。また海外のサーバーでサービスを運営している場合は、現地の法律を守るために情報提供する限りは正当業務行為に当たるとの解釈も成り立つ。
そもそもブラックボックスかつ本来の目的はお遊びツールであるスマホアプリを信じて行政傍受への対策まで求めるのは筋違いというか、どうしても傍受されたくないのであれば、もっと真剣に安全性を担保できるアプリを検討すべきだろう。では安全なメッセンジャーの要件は何か。
まず無線LANでの通信だけでなく、3G・LTEでの通信も暗号化すべきだ。そして端末-サーバー間の通信を暗号化するだけでなく端末間でEnd-to-endの暗号化を行った方が安全だ。端末単位でキーペアを作成して直接暗号化していれば、運営者のサーバーが不正に侵入された場合や、運営者が当局にSSL秘密鍵を提出していた場合であってもメッセージの解読が難しい。
アカウントや公開鍵を共有するディレクトリーサービスや、片方の端末がオフラインであった場合にメッセージを一時保存するキューはサーバーに集中させるのではなく、P2Pで分散管理した方がいい。端末間で直接通信すると通信の存在そのものを隠せないので、インターネットを使う場合はTORなどのOnion Routingを使って間接的に通信した方がいい。ローカルで直接接続できる場合はインターネットを使わず、無線通信は直接拡散方式の無線LANよりも、Firechatのように周波数ホッピング方式の古いBluetoothでバケツリレーを行った方が傍受は難しい。これらを全てテンコ盛りにすると著しく重くて不便そうだけど。
こうした方針が適切に実装されているかを確認するためには、参照実装がオープンソースで提供されてコードレビューを行えた方がいい。OpenSSLにHeartbleed脆弱性が紛れ込んだ教訓を踏まえると、プロジェクトには暗号通信の専門家が複数関わって、ちゃんと安定した経済基盤の上でレビューしている必要がある。ひとつの実装に依存するよりは、公開された標準プロトコルに基づいて複数の実装が提供された方がいい。
これらの理想を全て満たしたメッセンジャーを探して様々なアプリを試しているのだが、部分的にはTextSecure、ChatSecureやthreema.などが実現しているが、どれも流行っていない。起動時のパスワード入力など操作が複雑であったり、暗号化のオーバーヘッドや最適化不足で操作感が軽快でなかったり、あまり積極的にマーケティングされていないのだろう。
大きなシェアを獲得したサービスの中でアーキテクチャー的に傍受が難しかったのはSkypeだが、中国参入に当たってはバックドアを開けたし、それ以外でも各国の規制に対応するための仕組みが埋め込まれていると考えられている。ビジネスで儲けようとすると課金や規制との絡みで様々なしがらみが発生し、政府やパートナー企業と折り合いをつけていく必要が生じる。Skypeからの教訓を考えると、通信傍受が不可能なメッセージング・アプリケーションをつくって世界中で広く普及させるのは難しいのだろうか。
メッセンジャーに限らなければPGPやTor、Bitcoinといった仕組みは利便性や必要性が評価されて、しぶとく生き残っている。日本でもSoftEtherの登君がVPN Gateで中国政府などによる検閲を乗り越えるサービスを提供している。これらの単体では様々な使い道のあるコンポーネントを組み合わせ、システムとしてもビジネスとしても脱中心化したかたちで盗聴に対して安全なメッセージング基盤をつくることは可能だし、実際に様々なかたちで細々と運用されているのだろう。
それらはオープンなインターフェースに基づく誰もが後から入り込めるエコシステムで、上手にボトルネックをつくって儲かる仕組みをつくるのは非常に難しい。その代わりに運営コストを低く抑え、様々な人々の緩やかな厚意と強力によって維持される。しかしながらOpenSSLにHeartbleed脆弱性が仕込まれたように、オープンソース、オープンなプロセスだからといって安全とは限らない。腰を据えて開発やレビューに打ち込める経済的余裕がなければ、いとも簡単にバックドアは開けられ得るのである。閑話休題
商業的に成功するアプリはほどほどに安全で、各国の規制と折り合いをつけられる仕組みにならざるを得ない。もちろん技術的には安全なメッセンジャーをつくることはできるが、広く普及して成功する過程でSkypeのように当局と折り合いをつけるか、LavabitやSilent Circleのようにサービスを閉じることになる。
権力から潰されないためには小さな運営コストで、収入源を人質に取られないよう運営する必要があるが、そうすると今度はOpenSSLのように外部からのバックドアを含んだ寄付に対して脆弱となる。そういったトレードオフの中で成功しているサービスはそれなりにバランスを取っているのであって、本当に高い安全性が欲しいのであれば外部性なり利便性を犠牲にして、地味に目立たず運営していくのが手堅いのではないか。
それは海の果てで孤軍奮闘する未来の革命家の人生を支えて、密かに世界史を動かす小道具になるかも知れないが、若者に使われ出会いのきっかけをつくったり、テレビで宣伝されたり運営会社を上場に導くようなヒットを飛ばすことは難しいだろう。という訳でLINEがEnd-to-end暗号化するべきとは思わないし、とはいえオプションで通信傍受とか気にする人向けに「常にTLSを利用する」オプションくらい用意してもいいかもね、とは思う。
本当に安全な環境が欲しいんだったらgeekなりCypherpunkとなってハードボイルドに頑張ろうぜ、あんまり敷居を下げて出会い厨とかに使われると日本でも厄介なことになるし、テロリストや犯罪者に助け舟を出してると外国政府から後ろ指を指されながらの金儲けって難しいけどさ。
そして自分でつくるほどの根性はないが、そこそこ安全な通信手段が欲しいのであれば、End-to-end暗号化をサポートした実装の公開されている定評のあるアプリを検討した方がいい。とはいえどんなに安全なアプリを使っていてもOSがマルウェアに汚染されていれば台なしだし、話し相手のいないメッセンジャーほど虚しいものはない。
斯様に技術も世の中も、あちらが立てばこちらが立たずという制約の中で、上手にバランスを取ったアプリが流行っているし、深く考えるほど不便を受け入れてまで相手に隠したいメッセージなんてやりとりしていない。口説きたい相手がLINEを使っていれば後から消したくなる程度に恥ずかしいメッセージであってもLINEで送るし、それを情報機関に傍受されたところで普通そんなに困らないはずだ。暗号が身近になって、やろうと思えば何でもできるようになっても、伝えたいことを伝えたい相手に伝えたい時に伝えることは、今も昔も変わらず難しい。
僕は通信傍受の実態を多少は知った上で、明日以降もLINEやFacebook MessengerやGmailで他愛ない連絡を続けるし、いろんなセキュア・メッセージングのアプリを入れてはみたものの話し相手が誰もいなくて、早く同好の士をみつけなきゃと気にしつつ、普段連絡を取りたい相手に押し付けたくなるほど気に入ってもいない。ハードボイルドな試みの中から簡単には潰されない安全かつ堅牢な環境が整備されて、いずれカジュアルに使っても楽しい安全なアプリが出てきたら面白いけどね。