MixinNetwork / mips

Messenger Improvement Proposals
https://mixin.one/mm
Apache License 2.0
2 stars 0 forks source link

E2EE group voice call #1

Closed cedricfung closed 4 years ago

cedricfung commented 4 years ago

End to end encrypted group voice call could be implemented in both Android and iOS Mixin Messenger apps.

For performance and security consideration, we should use an SFU and TURN to proxy the traffic, while still ensure full E2EE.

WebRTC library has the feature called insertable streams https://www.chromestatus.com/feature/6321945865879552 to make this happen.

cedricfung commented 4 years ago

@crossle please add more info, maybe we don't need to use the insertable streams, because I remember there is more mature interfaces, e.g. FrameEncryptorInterface?

crossle commented 4 years ago

Insertable streams only for browser, native app should use FrameEncryptorInterface.

cedricfung commented 4 years ago

https://webrtc.googlesource.com/src/+/master/api/rtp_transceiver_interface.h

We should use only one PeerConnection for the group voice call, each participant has a transceiver, and according to the transceiver interface, we can set a FrameEncryptorInterface for each transceiver.

Every device has a sender key for e2ee chat messages, we can use this key in the FrameEncryptorInterface. And since we could decrypt the signal messages with sender key, we are sure that we have the sender key in advance of the transceiver.

over140 commented 4 years ago

https://github.com/MixinNetwork/ios-app/commit/cc689e97fe00f1850797ec44009fd9b14a154a47