世界中で人気のモバイルメッセージアプリWhatsAppにセキュリティ上の問題が浮上した。暗号化されたメッセージが第三者に傍受され、内容が漏えいしてしまう可能性があると噂されているのだ。

The Guardianは報道の中でこの脆弱性を”バックドア”と表現し、セキュリティ研究家のTobias Boelterが昨年4月にこの問題に気づいたと伝えている。彼はFacebookに問題を報告したが、これは「予想される挙動」で同社は積極的に修正を加えるつもりはないと言われてしまったとのこと。さらにThe Guardianは、この脆弱性が未だに修正されずそのままになっていることを確認している。

WhatsAppは消費者に人気のメッセージアプリだが、プラットフォーム全体にSignal Protocolという名高いエンドツーエンドの暗号化技術を採用しており、セキュリティの専門家の評判も良い（エンドツーエンド暗号化の実装は昨年4月に完了した）。しかしアプリのソースコードは公開されていないため、外部機関のコードに関する検査も無しに、ユーザーは常に同社を信用しなければならない。一方でWhatsAppのプラットフォームの暗号化にあたっては、Signal Protocolを開発したOpen Whisper Systems（OWS）が協力していた。

先月末のタレコミを受けてThe Guardianが報道した、Boelterの言うセキュリティ問題とは、オフラインユーザーのために新しい暗号鍵が強制的に発行されるSignal Protocolの実装方法のことを指している。Boelterが”再送の脆弱性”と呼ぶこの仕組みのせいで、メッセージが傍受されてしまう可能性がある（つまりWhatsAppのエンドツーエンド暗号化のバックドアになりえる）と彼は主張しているのだ。

しかしWhatsAppはバックドアという見方を否定し、この仕組みはオフラインユーザー宛のメッセージが送信中に紛失してしまわないよう、新たな暗号鍵を発行するために設計されたものだと主張する。

「The Guardianは今朝の報道で、本来何百万というメッセージの紛失を防ぐためにWhatsAppが意識的に導入した仕組みを”バックドア”だと表現し、この仕組みはWhatsAppが政府の要請に応じてメッセージの内容を解読するためのものだと伝えていますが、これは誤報です」とWhatsAppの広報担当者はTechCrunch宛の声明の中で語った。

「WhatsAppは政府がシステムに入り込むための”バックドア”など用意していませんし、万が一そのような要請が政府からあっても立ち向かうつもりです。私たちはこの仕組みを利用して、何百万というメッセージの紛失を防ぐと共に、ユーザーに対してもセキュリティ上のリスクがあると気づいてもらうために通知を送っています。さらに暗号化の仕組みついても技術白書の中に記載していますし、Facebook Government Reuqests Reportの中では政府からの情報開示要請に関するデータを公開し、私たちがどのような要請を受けているかということをきちんと伝えています」と担当者は付け加える。

政府からのユーザーデータ開示要請に対するWhatsApp・Facebookの回答の詳細はこちら。

セキュリティ評論家の中には、この脆弱性は何ら新しいものではなく、むしろ暗号化されたシステムにおける鍵認証の実装方法に関して昔からある問題だと主張する人もいる。

Key verification is a hard usability problem. Efforts like Key Transparency & CONIKS can help make this less painfulhttps://t.co/H7Ptvh5Djg — Frederic Jacobs (@FredericJacobs) January 13, 2017

WhatsApp issue (https://t.co/g2uNhSyeD5) isn’t really a backdoor, but it highlights the need for key transparency (https://t.co/k1PpNU2w5B) — Martin Kleppmann (@martinkl) January 13, 2017

以前WhatsAppは声明の中で、同社が実装したSignal Protocolには”セキュリティ通知を表示する”というオプションが用意されており、このオプションを選べば、もしメッセージを送る相手のセキュリティコードが変わっていた場合、ユーザーに通知が送られるようになっていると述べていた。つまり希望するユーザーは、送信先の暗号鍵が変更された（第三者にメッセージを傍受されている可能性がある）際に通知を受け取ることができるのだ。

WhatsAppがSignal Protocolの実装を完了したときに、OWSのMoxie Marlinspikeもユーザーは「連絡先の暗号鍵が変わるたびに通知を受け取るよう設定できます」と説明していた。

さらに彼は、WhatsAppのSignal Protocol実装に関する白書に以下のような詳細が記載されていると指摘する。「WhatsAppのサーバーはユーザーの秘密鍵にアクセスできません。また、ユーザーには自分のやりとりを保護するために、自分で暗号鍵を認証するためのオプションも準備されています」

同じプログポストのなかでMarlinspikeは、WhatsAppユーザーが「エンドツーエンド暗号化メッセージを可能な限りシームレスにするために設計された非対称メッセージシステムの、最新かつオープンソースでセキュアで強力な暗号化プロトコル」の「全ての恩恵」にあずかることができると主張している。なおFacebookの傘下にあるWhatsAppの月間アクティブユーザー数は現時点で10億を超えている。

The Guardianの記事に関してMarlinspikeにコンタクトしたところ、WhatsAppの鍵認証システムがセキュリティ上の問題だと評されていることに彼は明らかに納得しておらず、報道内容が「極めて不正確」だと語っていた。

その後のブログポストの中で彼は、WhatsAppアプリは「入念に設計されている」と述べ、送り先の暗号鍵が変わった後にメッセージをブロックせず通知のみ行うという仕組みを「適切だ」と評したほか、「WhatsAppはシンプルなユーザーエクスペリエンスを確保しながら、暗号化によってやり取りが保護されているという安心感を分かりやすい形でユーザーに与えている」と主張した。

一方でSignal Protocolの検査を行った国際的なセキュリティ研究者のグループの一員であるKatriel Cohn-Gordonは、この問題を重く見ており、Boelterが注意を促している”バグ”は”重大な”問題だと表現している。ただ同時に彼は、この脆弱性をバックドアとまでは表現しておらず、The Guardianの記事の「言い回しは問題の実態と比べると厳しめ」だとしている。

（彼が所属するグループは、Signal Protocolを分析した結果、根底にあるプロトコル自体に論理エラーはなかったとしているが、彼らは同プロトコルの実装方法に関する調査は行っていない。そして今回問題となっているのは、プロトコル自体ではなくWhatsAppの実装方法だ）

WhatsAppの鍵認証プロセス（または”重大な””バグ”）が、意図的につくられたバックドアなのか、ユーザーがオプトアウトできる設計上の仕組みなのかはそれぞれの考え方による。しかし外部の目が行き届かないクローズドなソースコードこそ、間違いなくWhatsAppのプラットフォームに関する最大の問題点である。親会社であるFacebookが、広告のためのプロファイリング・ターゲティングを通じて、ユーザーの個人情報をマネタイズするというビジネスモデルの上に成り立っていることを考えるとなおさらだ。

他の暗号化メッセージアプリの例としては、Proteusが実装されたWireが挙げられる。ProteusはSignal Protocolの前身となるAxolotlをベースに開発された、オープンソースのエンドツーエンド暗号化プロトコルだ。Wireの共同ファウンダー兼CTOであるAlan Duricによれば、WhatsAppのユーザーは盲目的にプライバシーが守られていると信じなければいけないが、Wireは外部機関がセキュリティテストを行えるようにつくられている。実際に同社の広報担当者は、現在Wireがセキュリティ関連の第三者機関による、Proteusプロトコルの監査を受けている最中だと話す。

「Wireは暗号鍵の再発行をしていません。一旦両エンドのユーザーがフィンガープリントを認証すれば、暗号鍵に変更が発生した際に両方のユーザーに通知がいくようになっています。Wireの仕組みは公開されていますし、全てのコードはオープンソースなので、セキュリティ上の問題が発生しても、発見・情報開示・修正に8ヶ月もかかることはありません」とDuricは話す。

「オープンソースという選択をしたことで、GitHub上には私たちのコードを見たことがあるディベロッパーが何千人もいますし、さらに深くコードを分析したことのある人たちもたくさんいます。そのため何か問題が起きても私たちは素早く問題解決に取りかかることができます」と彼は付け加える。

Boelterの言う再送の虚弱性はWhatsAppが意図的につくったものなのか、つまり（Facebookや政府機関の要請に応じて）WhatsAppがユーザーデータにアクセスするためのバックドアとしてつくられたものなのか、それともメッセージを確実に送付するための設計上の判断から生まれた副産物なのかに関して、Boelter自身の意見を尋ねたところ、彼は両方の考え方を支持しながら以下のように語った。

「もしも誰かがWhatsAppにバックドアを準備するよう要請したとすれば、例えばある秘密のメッセージがトリガーとなってメッセージの履歴が全て返ってくるような、もっと分かりやすい仕組みが導入されたとしてもおかしくありません。さらにこの問題は、コーナーケースのひとつにifステートメントを忘れてしまったというような、プログラミング上のバグだと説明することもできます。つまり悪意を持って導入された仕組みだとは必ずしも言えません」と彼は話す。

「しかし私が問題を2016年の4月に指摘した後も、Facebookはこの問題を修正する意向を全く見せていません。そのため、もともとはバグだったのに発見後はバックドアとして利用されはじめた可能性もあります」

「しかし最近WhatsAppは、この問題はバグではないと言っていました。つまりあるユーザーがメッセージを送ったときにオフラインだった受信者が、その後新しい携帯電話を使って再度WhatsAppにアクセスするという珍しい状況下で、送信者が”OK”ボタンを押さなくていいというある種の機能だと彼らは言っているんです。これは説得力に欠ける主張ですよね！もしも『プライバシーとセキュリティが（WhatsAppの）DNAに埋め込まれている』ならば、私が昨年の4月にコンタクトした後で、すぐにこの問題を解決するべきだったと思います」と彼は付け加える。

さらにWhatsAppのサーバーが「受信者のもともと利用していた正しい秘密鍵を送信者に対して」再度アナウンスできる、つまり送信者が「セキュリティーコードが変更されました」という通知を受け取るように設定していたとしても、メッセージは「ブロックされることなく」送信されてしまう。ゆえに、暗号鍵が変更された後もWhatsApp自体はやりとりをブロックせず（Signalではこの時点でやりとりがブロックされる）、送信者と受信者が自分たちで通知内容からリスクを判断しなければならないとBoelterは強調している。

「WhatsAppは、送信者にメッセージが送信済みだと知らせることなく、もともとの送付先にメッセージを送り続け、しばらくたってから暗号鍵を変更するという選択もできるはずです」と彼は付け加える。

ではBeolterはどのメッセージアプリを推奨しているのか？「私はSignalを使っています」と彼は話す。「Signalはオープンソースですし、ビルドの再現性を高める努力を重ねています。またサーバーに保管されるメタデータの量も、WhatsAppのプライバシーポリシーに規定されている量より少ないと言われていますし、WhatsAppと同じくらい簡単に使えます」

さらに前述のブログポストの中でBoelterは、WhatsAppによるSignalの実装方法と関連づけて「クローズドソースで自社開発された暗号化ソフトはおすすめできません。結局のところ、この有害な可能性のあるコードによって、私たちが送受信する全てのメッセージが処理されているんです。今後FBIは標的をAppleからWhatsAppに移し、解読されたメッセージ全てがFBIに届く設定がされたバージョンをリリースするよう要請するかもしれません」と記している。

［原文へ］

（翻訳：Atsushi Yukutake/ Twitter）