CloudflareはE2EE対応のビデオ通話アプリ「Orange Meets」を発表した。SFUの利点を生かしつつ、MLSやRust、WASMを使って高いセキュリティを確保しており、オープンソースとして一般にも公開されている。
この記事は会員限定です。会員登録すると全てご覧いただけます。
Cloudflareは2025年6月26日(現地時間)、エンド・ツー・エンド暗号化(E2EE)を実装したビデオ通話アプリ「Orange Meets」を発表し、その実装方法と技術的背景を詳細に説明した。Orange MeetsはCloudflareのWebRTC製品群「Cloudflare Realtime」(旧称Cloudflare Calls)の一部として構築されており、「WebRTC Selective Forwarding Unit」(SFU)を利用したスケーラブルなメディア転送を実現している。
SFUは各参加者の映像や音声を受信し、それを他の参加者に効率的に中継する仕組みで多くのビデオ会議アプリケーションにおいて中心的な構成要素となっている。しかし、この手法にはプライバシーの懸念が存在し、SFUが暗号化されていないメディアを扱う場合にシステム運用者が通信内容を閲覧できる可能性があった。
今回、Cloudflareが導入したE2EEは通話メディアをクライアント間でのみ復号可能とし、SFUなどの中継ノードからは通話内容を解読できないよう設計されている。実装にはIETFが標準化した「Messaging Layer Security」(MLS)プロトコルを使っており、これによってグループ通話における継続的な鍵更新や、参加者の追加・削除時の安全性を確保している。
映像や音声の暗号化処理はRustで実装され、「WebAssembly」(WASM)を使ってWebブラウザで実行される。送信ストリームは「WebRTC」のEncoded Transform API(RTCRtpScriptTransform)によって個別のフレームに分割し、それぞれに暗号処理を施した上で転送される。受信時は同様に復号され、ブラウザには通常のメディアストリームとして扱われるよう工夫されている。
この暗号化方式ではVP8などのビデオコーデックが内部的に必要とするヘッダバイトの一部のみを平文で送信し、再生時の互換性を保っている。これはDiscordがDAVEプロトコルで採用した手法を参考にしており、Cloudflareも同様の方式を採用している。
新設計の「Designated Committer Algorithm」は、MLSのExternal Proposal機能を使用せず、クライアント側のみで安全に参加者の追加・削除を処理できるよう設計されている。このアルゴリズムは形式検証ツール「TLA+」によって検証され、参加者の順序や脱退時の状態遷移などのエッジケースに対応できることが確認されている。
通話の安全性をユーザー自身が確認できるよう、画面には「セーフティーナンバー」と呼ばれる確認用の識別情報が常に表示される。この番号を別のチャネル(Signalのチャットなど)で照合することで、第三者による鍵の差し替えを検出できる。
Cloudflareは、Webブラウザに配信されるJavaScriptコードの改ざんを検出可能にするための標準化作業「Web Application Manifest Consistency, Integrity, and Transparency」や、認証機関を活用した鍵の署名による本人性確認の仕組み「OpenPubkey」の活用にも言及しており、今後の機能拡張が示唆されている。
Orange Meetsはオープンソースで公開されており、誰でも自由に利用・展開できる。E2EE対応版はe2ee.orange.cloudflare.devで利用可能で、GitHubからの導入も可能となっている。
Copyright © ITmedia, Inc. All Rights Reserved.