2025/06/27 13:00 Orange Me2eets:We made an end-to-end encrypted video calling app and it was easy

ロボ子、今日のITニュースはビデオ会議のセキュリティ強化についてじゃぞ!CloudflareがOrange Meetsっていうビデオチャットアプリにエンドツーエンド暗号化(E2EE)を実装したらしいのじゃ。

博士、エンドツーエンド暗号化ですか!それはすごいですね。ビデオ会議のセキュリティは重要ですから。

そうじゃろ!ビデオ会議って、P2P構成だと参加者が増えた時に拡張性の問題が出てくるからの。SFU(Selective Forwarding Unit)を使って、帯域幅を最適化するのが一般的なんじゃ。

SFUは、参加者からのメディアとデータをルーティングして、ネットワーク状況に合わせて配信を最適化するんですね。でも、SFUを使うとプライバシーの懸念が出てくるんですよね?

そうなんじゃ。SFUはメディアコンテンツを傍受できる可能性があるからの。そこで、E2EEの出番じゃ!

なるほど。E2EEは、参加者だけが内容を見たり聞いたりできる安全な通信チャネルを確立するんですね。

その通り!でも、ビデオ通話はチャットメッセージと違って、同期性が高くて高帯域幅が必要じゃから、テキストメッセージで使えるE2EE技術がそのままでは使えないのじゃ。

記事に「NユーザーのグループチャットでメッセージをN-1回暗号化することは、クライアントのアップロード能力を飽和させる可能性があるため、ビデオ会議には適さない」とありますね。

そうそう。そこでCloudflareは、Messaging Layer Security (MLS)っていうIETF標準プロトコルを使ったんじゃ。これはグループ通信のエンドツーエンド暗号化を確立するためのものじゃ。

MLSは標準化されているから、高品質な実装が複数登場していて、Signalレベルのセキュリティを少ない労力で実現できるんですね。

その通り!CloudflareのSFUは、データプレーン上で転送されるデータのコンテンツや暗号化の有無に関与しないから、安心じゃ。

Orange Meetsは、Cloudflare Workers上で実行されるシンプルなサービスで、ユーザーの参加状況を管理するんですね。そして、Cloudflare Realtime SFUがオーディオとビデオを受信してブロードキャストする、と。

E2EEの実装方法として、通話の開始時に対称暗号化キーに合意して、すべてのビデオフレームを暗号化するのが一番簡単じゃけど、MLSを使うと、もっと高度なセキュリティが実現できるんじゃ。

MLSは、post-compromise securityとperfect forward secrecyを実装した継続的なグループキー合意プロトコルなんですね。

そうじゃ!Cloudflareは、MLSクライアントを記述して、WASMにコンパイルして、ブラウザ内でビデオストリームを復号化するようにしたんじゃ。

ブラウザがストリームの暗号化を認識していないと、コーデックによってはエラーが発生する可能性があるんですね。VP8コーデックの場合は、パケットの最初の数バイトを暗号化せずに送信することで解決する、と。

そうなんじゃ。「Join my Orange Meet」を安全に行うために、DiscordのDAVEプロトコルと同様に、MLSのexternal proposalsを使う方法もあるけど、Cloudflareはdesignated committerアルゴリズムを開発したんじゃ。

指定コミッターアルゴリズムですか。ユーザーがグループに参加すると、暗号化マテリアルをグループメンバーに送信し、そのメンバーが残りのグループにAddメッセージを構築して送信するんですね。

そうそう。ユーザーが退出する時は、指定されたコミッターがRemoveメッセージを構築して送信するんじゃ。サーバーはメッセージのブロードキャストだけを担当するから、シンプルで安全じゃ。

TLA+モデルチェッカーを使ってアルゴリズムを検証し、バグを修正したんですね。すごい!

Monster-in-the-Middle攻撃を防ぐために、すべての通話の画面の隅にsafety numberを表示するようにしたのもポイントじゃな。

今後の課題として、悪意のあるJavaScriptの配布を防ぐためのWAICの利用や、OpenPubkeyを使ったアウトオブバンド認証の容易化が挙げられていますね。

Cloudflareは、クライアントコードのみを変更することで、Orange MeetsにE2EEを実装したんじゃ。WASMサービスワーカーを構築して、MLSグループを設定し、ストリームの暗号化と復号化を実行するようにしたんじゃな。

素晴らしいですね、博士!ビデオ会議のセキュリティがますます向上していくのが楽しみです。

じゃろ?ところでロボ子、E2EEって、まるで忍者が使う隠れ身の術みたいじゃな。でも、忍者は暗号化されたメッセージをどうやって伝えていたのかの?

博士、忍者は暗号化されたメッセージではなく、暗号そのものを開発した、という説もありますよ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。