I've just tried Facebook Messenger's secret conversations feature. I started a conversation with Alice on Facebook Messenger for iOS. I noticed the following in Facebook's online help, under the heading How do I verify that my secret conversation in Messenger is encrypted?

Both people in a secret conversation have a device key that you can compare to verify that the messages are end-to-end encrypted.

To verify that the conversation is encrypted, compare your device key with the other person's device key to confirm that they match.

When I tap through to the device keys pane for a secret conversation, I am presented with keys called "YOUR KEY" and "ALICE'S KEY". They do not match. The wording above implies to me that I should see two identical keys. Although if they are "device keys" then they should be unique to a device and therefore be different. I concluded the help's wording is just unclear.

On that same screen displaying the keys, I read the following message.

Your key is the same for all of your secret conversations on this device. Alice's key should match the one on their device.

That seems to say that if Alice sees the same two keys on her device, encryption is "verified." So it seems that:

  1. A device key is the public key of a keypair generated by the Facebook Messenger app.
  2. By confirming with Alice that her device key is the one I'm using, I authenticate her public key and achieve the "verification" Facebook is talking about.

If all of this is correct, then I have to ask:

Is this verification process just here to provide some comfort? Or is Facebook Messenger actually vulnerable to MITM attacks? Do paranoid users require an already-secure channel over which to verify keys? Finally, how can I find out more about the implementation of Facebook's secret conversations?

2 Answers 2


Facebook Messenger uses the Signal Protocol. This is the same protocol used in Signal and WhatsApp, and works on standard public-key cryptography principles.

Your key is your own public key, which others can use to encrypt messages intended for you. Alice's key is Alice's public key you (or anyone else) can use to encrypt messages intended for Alice. The strings presented in the app are actually cryptographic signatures of these keys.

To verify that both you and Alice have the correct keys, you have to compare the cryptographic signature of your key on your device to the cryptographic signature of your key on Alice's device and the cryptographic signature of Alice's key on Alice's device to the cryptographic signature of Alice's key on your device. This should be done over a secure channel, e.g. by meeting with Alice in person and comparing the signatures visually.

When you have verified both keys, MITM should not be possible. This is of course assuming Facebook's implementation of the Signal Protocol is correct and secure.

You can also skip the verification entirely for what's known as Trust On First Use (TOFU). With the TOFU approach you simply blindly assume that the keys are correct the first time, and later if someone attempts a MITM attack, the app will notify you that the keys have changed.

There's a Facebook whitepaper on Messenger Secret Conversations here and a formal audit report of the Signal Protocol itself here.

  • 2
    Couldn't messenger just send the encryption keys to Facebook? How do we know they aren't doing that already?
    – woojoo666
    Oct 3, 2019 at 3:28

I've not looked at the details for this service yet. However, it appears to be suggesting that both parties have a key pair.

So if you compare your copy of Alice's key with hers, they should be the same. And visa versa.

However, if that is the case, I don't see how that proves that nobody can intercept the messages since if, lets say Facebook, has access to all the keys then surely they could indeed intercept any message. Perhaps, for example, to be able to mine the messages for advertising intelligence which is, after all, the only way Facebook have of making money!

I'm not suggesting they do do this but it seems at first glance that they could.

As an aside,

Like Google, Facebook have a credibility issue when it comes to security of customer data because their profitability depends on being able to target advertising. They both have a lot of work to do in order to convince people that their data is not being processed in ways that are not transparent to customers.

  • Good point on the data mining. Perhaps that explains partly why secret conversations are not the default.
    – user68527
    Dec 11, 2016 at 6:03
  • 1
    Thanks for your post. I was just researching aspects of the E2E encryption used by Meta/Facebook/Messenger, and they basically lie on their explanation page here that says: "This means that nobody else can see or listen to what's sent or said - not even Meta. We couldn't even if we wanted to." Well, actually, their own website and apps handle the keys and unencrypted plaintext, so of course they could if they really wanted to. 😒
    – Simon East
    Apr 25 at 4:59

You must log in to answer this question.