Conversation

Building a cross-platform metadata resistant messaging tool is 50% research, 50% security engineering and 80% staring in horror at proposed dependencies and wondering if people are aware that not every library needs to handle arbitrary remote resources "as a feature".
3
70
Any this is why doesn't support images or audio yet even through "rendering images / playing audio" is "easy": "rendering images / playing audio" that may have been maliciously crafted in ways that don't leak metadata in arbitrary ways is certainly not.
2
40
It's also probably a good idea to encode it into a standard, simple format and re-encode it even if the user supplies it in that format. That at least reduces attack surface substantially and gets rid of identifiers based on how it was generated/encoded, but not other things.
1
1
The main issue is that if you actually run it in your own sandbox you wouldn't have access to hardware accelerated decoding/encoding. I made a thread about doing that here: twitter.com/DanielMicay/st It would also be beneficial for other code like the cryptography.
Quote Tweet
Replying to @SarahJamieLewis and @cwtch_im
Ideally, do that kind of thing in an isolatedProcess service: developer.android.com/guide/topics/m isolatedProcess services are the Chromium layer-1 sandbox implementation on Android and it's very easy to use. It's just a fully unprivileged service only able to communicate via service API.
Nearly every phone have hardware encoding/decoding for H.264 and now also H.265. OS-provided encoding/decoding is sandboxed quite well but primarily to protect the OS. It doesn't protect separate contexts from each other. It's all sandboxed together in the same media processes.
1