E2EE on mobile

Hello,

We are a team currently working on an application that leverages Jitsi for our video conferencing needs. We are using lib-jitsi-meet in our web client and mobile application.

We are very interested in bringing e2ee to all platforms. It looks like it is currently not available on mobile as the Insertable Streams API is not yet implemented in the react-native-webrtc module.

After discussing it at the community call today, it seems that this is something that is already being worked on internally by the Jitsi team.

How would you recommend us to contribute to this implementation taking into account what has been done already ?

Seems like this one is for you @saghul :wink:

Best regards

Hey @Niponika ! Thanks for joining the effort.

The current state is: we have the boilerplate encoders / decoders in WebRTC but haven’t finished the implementation.

Our current implementation (on web) is using AES-CTR with truncated hashes, which means the mobile version would be somewhat harder to implement.

I think it makes sense to go back to GCM everywhere, so I’d say that’s step 0.

Then WebRTC would have a DefaultEncryptor / DefaultDecryptor which can be used from Java and ObjC. We think this is the best way to go because building them outside if the app would be a royal pain otherwise.

Once the native side is ready, those classes would be exported to JS by react-native-webrtc. There is one extra caveat here. These APIs work on the sender / receiver objects, which we don’t currently have on RN-WebRTC. There is a PR open, we’d need to bring it in.

Once RN-WebRTC is ready it’s time for lib-jitsi-meet. An adapter implementation would be needed for using olm on mobile. Probably a RN plugin would be best. Also we wouldn’t do workers on mobile, since all the work would be done in C++ by the encryptor / decryptor in WebRTC.

Then the easy part would be remaining: some mobile UI.

Last but not least, performance would need to be measured so this is usable :slight_smile: but I don’t think that’s a big problem, Google Duo is using it.

If you’ve read this far and still want to help, great! Shoot me an email to saghul @ jitsi dot org and I’ll be glad to mentor / guide this with occasional meetings for example.