BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース WhatsApp、セキュアなマルチデバイス通信のためにSignalプロトコルを採用

WhatsApp、セキュアなマルチデバイス通信のためにSignalプロトコルを採用

原文(投稿日:2021/07/21)へのリンク

WhatsAppは、暗号化によってエンドツーエンドのセキュリティを確保しながら真のマルチデバイスメッセージ同期を可能にする、まったく新しいアーキテクチャをテスト中である。この目的のために同社は、Signalプロトコルを採用している。

このエンドツーエンドの暗号化プロトコルは、サードパーティおよびWhatsAppに対して、メッセージあるいは呼び出しをプレーンテキストとしてアクセスできなくするように設計されています。暗号化キーは一時的なものであるため、ユーザのデバイスで使用中のキーが物理的に危険な状況にあったとしても、それを使って送信済のメッセージを復号することはできません。

WhatsAppの現行のアーキテクチャは、スマートフォンアプリを信頼できる唯一の情報源(primary source of truth)として使用することをベースとしている。これに関わるのが、すべての対話の開始と、各ユーザの安全なエンドツーエンド接続の実現に使用されている、ユニークな識別キーである。他のコンパニオンデバイスは、スマートフォンアプリに接続して、そのコンテンツを複製(mirror)する。

このアプローチは、実装が容易である反面、ユーザエクスペリエンスの面で多くのデメリットがある、とFacebookは言う。オペレーションの遅さ、スマートフォンのバッテリ状態への依存性、一時に使用可能なコンパニオンデバイスがひとつに限られること、などがその具体例である。

WhatsAppの新しいマルチデバイスアーキテクチャは、セキュリティを損なうことなく、これらすべての問題を解決しようというものだ。最も明確な変更は、各デバイスが独自に識別キーを所有し、ユーザが承認済デバイスのリストを持つ、という点である。ユーザが新たなデバイスを認証するためには、自身のスマートフォンを使ってQRコードをスキャンする必要がある。デバイスがサポートしていれば、生体情報の使用も可能だ。

コンパニオンデバイスをWhatsAppアカウントにリンクするには、最初にユーザのプライマリデバイスで新しいデバイスの公開識別キーをサインしたアカウントシグネチャ(Account Signature)を作成し、次にコンパニオンデバイスでプライマリの公開識別キーをサインしたデバイスシグネチャシグネチャ(Device Signature)を作成する、という手順が必要です。2つのシグネチャを作れば、コンパニオンデバイスとの暗号化されたエンドツーエンドのセッションが確立できるようになります。

この方法で承認されたデバイスでは、しかしながら、ユーザの通信が盗聴不可能であると保証することはできない。悪意を持ったサーバが、ユーザの承認デバイスのリストに新たなデバイスを追加するかも知れないからだ。これを防ぐために、ユーザがメッセージを送信するデバイスを検証することが可能である。ただし、検証に使用されるコードは、単一デバイスのみを表現するものではなく、ユーザの所有するデバイスのリスト全体を表すものになっている。本人確認の実行が必要になる頻度を低減するために、WhatsAppでは、Automatic Device Verificationの使用を予定している。これは、新たなデバイスがアカウントに追加される都度ではなく、アカウント全体が再登録された場合にのみユーザの介在を必要とするように、デバイス間の信頼の自動確立を可能にする、というものだ。

すべてのデバイスに対するすべてのメッセージを暗号化形式にする上で、Signalプロトコルが採用するアプローチは、クライアント・ファンアウトと呼ばれるものである。この方法は、送信者と受信者両方のデバイスリストにある各デバイスに対して、メッセージを送信することで構成される。デバイスに対して送信される各メッセージは、送信デバイスと受信デバイスの間で確立したキーを使って暗号化される。

これにより、同期や同じユーザエクスペリエンスを提供するために、デバイス相互、あるいはデバイスとWhatsAppサーバ間で情報を交換する必要はなくなる。唯一の例外は、新たなデバイスを最初に承認する時だ。この場合には、新しいデバイスの承認に使用するスマートフォンから、すべての通信履歴が送信される。

ビデオコールやオーディオコールも同様のアプローチで管理される。誰かが呼び出しを行うと、使用されているデバイスがSRTPマスタシークレットを生成し、受信者のデバイスリストにある全デバイスに送信する。呼び出された側がいずれかのデバイスで応答すれば、共有SRTPマスタシークレットを使用して安全な通信が確立される。グループコールの場合は、全参加者の中からひとつのデバイスがランダムに選択されてマスタシークレットを生成し、参加者の全デバイスに送信される。

Facebookはクライアント・ファンアウトアプローチの影響について詳細を公表していないが、WhatsAppサーバが処理する通信やメッセージは大幅に増加する可能性がある。

WhatsAppの使用するSignalプロトコルは、Open Whisper Systemが開発したオープンソースライブラリをベースとしている。暗号化の詳細に興味があるのならば、Signal protocol whitepaperは必見である。

この記事に星をつける

おすすめ度
スタイル

BT