Orange Me2eets: We made an end-to-end encrypted video calling app and it was easy

This post details the implementation of end-to-end encryption (E2EE) for the open-source Orange Meets video conferencing application, built on Cloudflare Workers and the Cloudflare Realtime SFU. The core contribution is the integration of the Messaging Layer Security (MLS) protocol, compiled to WebAssembly (WASM), to handle group key exchange and establish E2EE for real-time audio and video streams. The implementation involves modifying WebRTC streams to send frames to a Rust web worker for encryption/decryption and addresses codec-specific behaviors (VP8) by sending a small header unencrypted to maintain browser compatibility. The post also discusses the challenges of E2EE in real-time communication compared to text messaging, emphasizing the need for continuous group key agreement protocols like MLS for post-compromise security and perfect forward secrecy.