WebRTC SFU における E2EE

概要

WebRTC SFU は HBH (hop-by-hop) 部分には DTLS-SRTP や DTLS を利用しています。ただこの場合 WebRTC SFU が復号可能となります。

これを回避するのが E2EE です。WebRTC SFU は知らず、クライアント同士のみが知っている鍵を利用してエンコード済みの音声や映像に暗号化を行います。

こうすることで、WebRTC SFU には復号が難しい状況を作り出します。

すべての処理をクライアント側で実現するのが E2EE の特徴です。 WebRTC SFU 自体は暗号化されていることにすら気付かないのが理想です。そしてそれは WebRTC SFU とは別のメッセージングサーバーを用意することで実現可能です。

とはいえ実際は E2EE を行っている事自体は WebRTC SFU 側に伝えておいたほうがサービス的には良いと思います。WebRTC SFU 経由のほうが仕組み上便利な場合もあります。

WebRTC SFU における E2EE はこの「クライアント同士で完結する暗号化/復号化」部分がメインとなります。

ただ、実際はこの部分は E2EE という仕組みでは主となる部分ではありません。 主となる部分は「クライアント同士のみが知っている鍵共有」と「参加/離脱時での鍵交換」です。

これは Signal Protocol や MLS (Message Layer Security) などの知識が必要となります。 Signal、WhatsApp、Google Duo、Facebook Messanger は Signal Protocol を採用しています。