普通のSMSより安全、ってほんとですか?
iPhoneのSMSで、返信先を偽装できてしまう脆弱性(米Gizmodoの記事がこちら)が明らかになりました。アップルはこの件について「iOSだけでなくOSや機種にかかわらず注意を要する」「SMSでなくiMessageを使えばこのような攻撃から保護される」としています。でも、ジョンズ・ホプキンス大学で暗号化を中心に研究を行っているマシュー・グリーン准教授は、そんなアップルの姿勢に疑問を投げかけています。一見、「アップルはオープンじゃないからダメだ」というありがちな批判のように見えますが、そんなアップルのあり方を変えられないならどうすればよいかというところまで踏み込んでいます。
以下、グリーン氏の論考です。
僕はふだん、アップルのことはあまり悪く言いません。なぜなら、(a)アンチアップルの人たちは他にたくさんいるし、(b)僕はアップルのことがすごく好きで、アップル製品もたくさん持っているからです。というか、この記事を書くのにも使っています。それに、セキュリティの観点から見ると、アップルに対してそこまで不満はないんです。たしかにアップルは、Mac OS Xに古いバージョンのJavaを残したまま提供していたことがあったりしました。でも、こんなのはかわいいものです。ソフトウェアは、どれも同じように不完全なんです。
でも、アップルのセキュリティに関する姿勢で本当に腹が立っていることがあるんです。ご存じの通り、アップルは世界的・歴史的に最大級規模に普及した暗号化テキストメッセージサービスをこの1年ほど運営しています。それだけなら別にいいんですが、問題はアップルがその仕組みをいまだにきちんと説明していないことです。
そして、誰もそれを気にかけてすらいないんです。
これはもちろんiMessage、去年iOS 5向けに提供され始めたあのサービスのことです。iMessageを使うと、通常のキャリアのSMSを迂回することができ、というか、テキストメッセージは基本的にアップルのサービス経由でやりとりされるようになります。
これは特に新しいアイデアではありません。ただ、iMessageが特別なのは以下二つの理由があります。ひとつめは、通常のiPhoneのテキストメッセージアプリにビルトインされていて、デフォルトで使うようになっていることです。たとえば僕の母親が誰か別のアップルユーザーにテキストメッセージを送ると、iMessageは自動的にインターネット経由になります。僕の母親がそれを承認する必要もないし、そんな処理の違いを意識することすらほとんどないと思われます。
ふたつめに、iMessageはテキストメッセージに「安全なエンド・トゥ・エンドの暗号化(と認証)」をもたらす、とアップルがうたっていることです。これはすごく重要なことです。真のエンド・トゥ・エンドの暗号化なら、サービスを運営しているアップルでさえ、ユーザーのメッセージを不正に読み取ることはできません。認証はなりすましからユーザーを守ってくれます。ここが、まったく暗号化されていないことが多い通常のSMSとは異なる点です。
では、僕がひっかかっている点は何なのでしょうか。iMessageを使えば、通常のSMSを使わない分(米国など携帯電話利用料金の定額制がメジャーでない地域では)ユーザーのコストも抑えられ、セキュリティ対策も無料でできます。暗号化しないよりはした方が良いはずです。
たしかに、そうかもしれませんが...。
僕にとって、iMessageのひっかかる点は、ほとんどゼロの状態から、数十億件ものメッセージを暗号化するところまで急速に飛躍したことです。しかもプロトコルの仕様をアップルが公開したり、セキュリティ専門家が調査したりしていないのに、その状態になっているということです(これは僕が知る限りなので、何か間違っていたら指摘してください)。
さらに問題なのは、アップルがiMessageは安全だと標榜していることです。アップルは、SMSで起こった深刻ななりすましバグへの解決策としてiMessageの利用を提案さえしています。こんな感じです。
アップルはセキュリティを深刻に考えています。SMSの代わりにiMessageを使えば、アドレスが確認され、なりすまし攻撃から身を守ることができます。SMSの制約のひとつは、メッセージがなりすましのアドレスで、どんな電話にも送れてしまうことです。もしお客様がSMS経由で未知のWebサイトやアドレスに誘導された場合、非常に注意してご対応いただくようお願いします。
こういうのがすごく引っかかってしまうんです。iMessageはアップルが主張するように非常に安全かもしれませんが、そうじゃないかもしれない、とも言える点も多いんです。
まず、iMessageはすごく複雑です。
iMessageでは、ただ2台の端末がTLSプロトコルで通信するだけじゃありません。iMessageについて、Mountain LionのMessages Betaクライアントをもとに部分的にリバースエンジニアリングしたものがここにあるんですが、これが本当だとすれば、システム全体で可動的な部分がすごく多いんです。TLS、クライアントのサーティフィケート、サーティフィケートへのサインのリクエスト、XML経由で届く新しいサーティフィケート...という具合なんです。
一般的なルールとして、可動部分が多いと間違いが起こる余地も大きくなります。つまり、プロトコルのセキュリティを大きく損なう危険があるんです。そしてこのことについては僕が知る限り、誰もほとんど注目していないんです。驚くほどに。
さらに言えば、iMessageをアップルがどの程度コントロールできるのかも疑問です。思想的には、「エンド・トゥ・エンド」の暗号化ではエンドの端末だけが通信内容を読み取ることができます。でも実際、おそらくiMessageではこの通りではありません。上記のリバースエンジニアリング情報をちょっと見るだけでも、アップルはiMessageデバイスに対する認証局として機能しているようです。なので、プロトコルのセキュリティを低下させられる可能性があります。それをするなら、どんなときでしょうか? そしてそれはどのように行われるのでしょうか? そして私たちはそれを知らされるんでしょうか?
最後に、iMessagesが行方不明になったり、間違った(または盗まれた)端末に届いたという情報もいくつかありました。それぞれについてそれなりの説明が可能なのだろうとは思います。でも、そうした知られざる背景があること自体、僕らがiMessageについてもっと理解すべきだと示唆していると思います。
で、結局僕は何を言いたいのかというと...。
これは技術的な記事ではありません。僕は残念ながらここで答えを提示しようとしてるのではありません。もし僕がiMessageのプロトコルをもっと理解できていれば、答えらしいものも多少はあったかもしれません。もしかしたらそんなプロトコルをほめることもできたかもしれません。
この記事はどちらかというと、助けを求めて書いています。iMessageは重要です。みんな使っています。だから、それがどれくらい安全で、それを使うことでどんなリスクを負うのかを知る必要があります。最善の策は、アップルがプロトコルの仕様を詳細に公開してくれることです。キーとなる情報はいくつか隠さなくてはいけないとしても...。でももしそれが望めないなら、コミュニティにいる我々がiMessageを理解するために何か手を打つべきなのかもしれません。
これはセキュリティだけの問題ではありません。僕らの近しい人たちが、iMessageを使っているんです。それが何なのかきちんと知ることは、すごく意味があるはです。
この記事はマシュー・グリーン氏の許可を得て、同氏のブログから米Gizmodoに転載されました。Matthew Green(米版/miho)