1

If someone sends me a large video file on WhatsApp I believe it is compressed and encrypted. I believe it can only be decrypted on my device with a key that never leaves my device.

If I was to forward this file to another person I would expect it to be encrypted again and re-uploaded from my device. However, the forwarding seems to happen very fast almost instantly as if being forwarded straight from the server.

Any idea how the forwarded party can see the video when it was forwarded straight from the server? Or is it actually uploading from my phone and I am underestimating the speed?

  • 1
    One way to do this is simply to use a file-specific key for the file, and encrypt the key with the per-user (assymetric) key. In this way you just re-encrypt the small key with the new key - and send this and a link to the file to the user. If this is the way it's actually done? Not sure. – vidarlo Jul 2 '18 at 15:58
1

It is likely implemented something like this*:

Alice sends video to Bob

  1. Alice generates a Data Encryption Key (DEK) uses it to encrypt the video
  2. The encrypted video is uploaded and given an id
  3. Alice sends the DEK and video id to Bob using the normal end to end encrypted channel
  4. Bob retrieves the video from the server and uses the DEK to decrypt it

Bob forwards the video to Charlie

  1. Bob sends the DEK and video id to Charlie using the normal end to end encrypted channel

As you can see, this means the video encryption isn't the same as the normal end to end encryption used, but has the advantage that it can be further shared simply by sharing the key and video id, eliminating the need to re-upload the video. This does leak some metadata, as the video host will be able to see that different people are downloading the same video.

* I don't know how it's actually done, this is a guess based on your observation that forwarding is instant

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.