Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] MSC2359: E2EE VoIP Conferencing #2359

Closed
wants to merge 1 commit into from
Closed

Conversation

ara4n
Copy link
Member

@ara4n ara4n commented Nov 17, 2019

A quick WIP sketch of how E2EE SFU VoIP conferencing could work in Matrix

Rendered

A quick WIP sketch of how E2EE SFU VoIP conferencing could work in Matrix
@ara4n ara4n added the proposal A matrix spec change proposal label Nov 17, 2019
@ara4n ara4n changed the title MSC2359 E2EE VoIP Conferencing [WIP] MSC2359: E2EE VoIP Conferencing [WIP] Nov 18, 2019
@turt2live turt2live changed the title MSC2359: E2EE VoIP Conferencing [WIP] [WIP] MSC2359: E2EE VoIP Conferencing Dec 7, 2019

* You start off with a normal E2EE matrix room
* All members start a VoIP 1:1 call in a DM with the SFU
* However, the SRTP keys for the media RTP (not RTCP) streams are
Copy link
Member Author

@ara4n ara4n Mar 19, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@emcho wisely points out that SDP hasn't included SRTP keys in ~10 years, you just get the a=fingerprint line these days, which is a DTLS fingerprint. WebRTC doesn't currently give you a way in-browser to suppress the DTLS handshake and exchange the keys OOB, so there isn't a way to avoid handing the keys to the bridge endpoint. Therefore this proposal is completely flawed.

Hum.

Copy link
Member Author

@ara4n ara4n Mar 22, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

However, discussing further, it turns out that libwebrtc may well provide easy hooks these days to get at the compressed frames and encrypt them before transmit (and vice versa). So you'd keep the DTLS handshake to secure the SRTP stream, but would be transferring e2e-encrypted payloads within the SRTP stream.

Apparently Jitsi is then able to switch the streams around, assuming you packetise them with appropriate metadata, for which there's an spec or RFC somewhere (perhaps from PERC?).

In other words, while this may be impossible in browser, it could be done on Electron (especially with our fancy new build process) - and on the mobile apps, given we control the webrtc version they use.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...it is now no longer impossible in browser, as per https://twitter.com/jitsinews/status/1249682190209896448?s=20

So, our plan now is to integrate to Jitsi much as we do today in Riot, but somehow tracking jitsi’s e2ee keys within megolm on the Matrix side. In future we could swap our their XMPP signalling entirely for Matrix and simplify things loads.

@turt2live turt2live added the kind:feature MSC for not-core and not-maintenance stuff label Apr 20, 2020
@ara4n
Copy link
Member Author

ara4n commented Jun 27, 2020

I need to update this to describe how it'd work with insertable streams rather than the SRTP keying thinko.

@immanuelfodor
Copy link

Signal has added encrypted group calls today, it would be great to have it in Matrix as well: https://signal.org/blog/group-calls/

@turt2live turt2live marked this pull request as draft April 8, 2021 23:36
@turt2live turt2live added the needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. label Jun 8, 2021
@ara4n
Copy link
Member Author

ara4n commented Aug 8, 2021

this needs to be completely reworked for insertable streams, plus is about to get obsoleted by native matrix voice/video conferencing, so am going to close it in favour of whatever comes next :)

@ara4n ara4n closed this Aug 8, 2021
@turt2live turt2live added the abandoned A proposal where the author/shepherd is not responsive label Aug 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
abandoned A proposal where the author/shepherd is not responsive kind:feature MSC for not-core and not-maintenance stuff needs-implementation This MSC does not have a qualifying implementation for the SCT to review. The MSC cannot enter FCP. proposal A matrix spec change proposal
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants