Skip to main content
This guide covers end-to-end encryption (E2EE) implementation in lib-jitsi-meet using insertable streams and the JFrame protocol.

Overview

lib-jitsi-meet implements E2EE using:
  • Insertable Streams API: Intercepts and transforms media frames
  • JFrame Protocol: SFrame variant optimized for Jitsi
  • Olm: End-to-end encrypted key exchange
  • AES-GCM: 128-bit encryption for media frames
  • Web Workers: Offloads encryption to background thread
E2EE is currently supported only in browsers with insertable streams support (Chrome, Edge, Safari).

Architecture

Key Components

  1. E2EEContext: Per-participant encryption context
  2. Worker: Web Worker that performs encryption/decryption
  3. OlmAdapter: Handles key distribution via Olm
  4. Key Ratcheting: Automatic key rotation on participant changes

Encryption Flow

Enabling E2EE

1

Check browser support

2

Enable E2EE in conference

3

Set encryption key

Key Management

Generate Encryption Key

Set Encryption Key

Key Rotation

Key Ratcheting

Keys are automatically ratcheted (derived) when participants join:

E2EE Context Management

Per-Participant Context

Encryption Parameters

Frame Encryption

JFrame Format

Encrypted frames use a custom trailer format:

Selective Encryption

E2EE Events

Monitor E2EE Status

Verification (SAS)

Short Authentication String

Verify that participants share the same key using SAS:

Verification Flow

1

Request verification

2

Display SAS to both users

3

Confirm match

E2EE with Visitors (Experimental)

Performance Considerations

Web Worker Usage

Encryption Overhead

Limitations

E2EE has several current limitations:
  • Browser support: Requires insertable streams (no Firefox support)
  • Recording: Cannot record encrypted media on server
  • SFU processing: Bridge cannot do quality adaptation
  • Screen sharing: Works but may have compatibility issues
  • Simulcast: Limited support

Known Issues

Debugging E2EE

Enable E2EE Logging

E2EE Ping

Monitor E2EE health using ping:

Security Best Practices

Generate keys using cryptographically secure random number generator:
Never send keys over the conference signaling:
Always verify critical participants using SAS:
Rotate keys when participants leave:

Complete E2EE Example

Next Steps

Recording

Record conferences (note: incompatible with E2EE)

Statistics & Analytics

Monitor conference metrics