Add support for end-to-end encryption using Insertable Streams and Web Crypto API #142
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PBKDF2
andAES-GCM
encryption keysCloses #141
How does it work?
Currently only Chrome is supported, and the flag
Experimental Web Platform Features
needs to be enabledenabled in chrome://flags.The passphrase is used to derive a
PBKDF2
key, which is then used to create a 256-bitAES-GCM
key. The salt is constructed from the full call URL and the userID (UUID) received from the server. This is to avoid sending the key information via SFU to other participants.Each participant generates their own key for encrypting their own streams, as well as keys for decrypting remote streams from all other participants.
To enable encryption, users can use the new toolbar button with a lock icon:
This can be set up before joining the call.
A warning will be shown for unsupported browsers:
An example with two peers using different passwords: