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
Architecture
Key Components
- E2EEContext: Per-participant encryption context
- Worker: Web Worker that performs encryption/decryption
- OlmAdapter: Handles key distribution via Olm
- Key Ratcheting: Automatic key rotation on participant changes
Encryption Flow
Enabling E2EE
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
E2EE with Visitors (Experimental)
Performance Considerations
Web Worker Usage
Encryption Overhead
Limitations
Known Issues
Debugging E2EE
Enable E2EE Logging
E2EE Ping
Monitor E2EE health using ping:Security Best Practices
Use strong random keys
Use strong random keys
Generate keys using cryptographically secure random number generator:
Share keys securely
Share keys securely
Verify participants
Verify participants
Always verify critical participants using SAS:
Rotate keys regularly
Rotate keys regularly
Rotate keys when participants leave:
Complete E2EE Example
Next Steps
Recording
Record conferences (note: incompatible with E2EE)
Statistics & Analytics
Monitor conference metrics