Privacy and Security

How to Verify End-to-End Encryption: A Step-by-Step Guide for Every Major Messaging App

Last updated: June 8, 2026ยท12 min

End-to-end encryption is everywhere in 2026. WhatsApp, Signal, iMessage, and most other major messaging apps advertise E2EE as a default feature. The cryptographic protections are real, well-understood, and continuously improving.

But there is a step most users never take: actually verifying that the encryption is doing what it claims. Without verification, you have a strong protocol with an unverified counterparty. The encrypted channel is secure. The person on the other end may or may not be who you think they are.

This guide explains how to verify end-to-end encryption on every major messaging app, what each app's verification system actually proves, and the structural gap that manual verification cannot close in 2026.

What "Verification" Actually Means

End-to-end encryption uses cryptographic keys held only on the endpoints of a conversation. The math guarantees that a message encrypted with the recipient's key can only be decrypted by that key. As long as the keys belong to the people you think they belong to, the system works.

The catch is in that last clause. Encryption protocols generate keys automatically. You never see them, and you have no native way to know whether the key your phone is encrypting to actually belongs to your friend, or to someone who has compromised your friend's account, or to a man-in-the-middle attacker who substituted their own key into the exchange.

Verification is the process of confirming, through an out-of-band channel, that the encryption key your phone is using really belongs to the person you mean to talk to.

This matters because:

Verification catches all three scenarios. Without it, you have to trust that nothing has gone wrong.

WhatsApp: Safety Numbers

WhatsApp uses a system called safety numbers to enable verification. Each conversation has a unique 60-digit safety number generated from the cryptographic keys of both participants.

How to find your safety number on WhatsApp:

  1. Open the conversation with the contact you want to verify
  2. Tap the contact's name at the top of the chat
  3. Scroll to "Encryption" and tap it
  4. You will see a 60-digit safety number and a QR code

How to verify:

In person, the easiest method is scanning each other's QR codes. Tap "Scan code" and point your camera at your contact's code. If the codes match, you will see a "Verified" confirmation. WhatsApp marks the conversation as verified going forward.

If you cannot meet in person, you can compare the 60-digit number through another trusted channel. A phone call to a number you already know works. Mail or email is acceptable if you trust those channels. Comparing inside the same WhatsApp chat does not count, since that is the channel you are trying to verify.

When safety numbers change:

WhatsApp's safety number will change if either person reinstalls WhatsApp, switches phones, or restores from backup on a new device. When this happens, WhatsApp will show you a "Security code changed" notification. If you have not done any of those things and your contact has not either, the change deserves attention.

Limitations:

Most WhatsApp users never verify safety numbers. The feature exists, but it is not in the user's face. Without active verification, the system trusts every new key automatically.

Signal: Safety Numbers (Same Concept, Better Surfacing)

Signal uses the same underlying protocol as WhatsApp (Signal Protocol, which Signal itself developed). The safety number concept is identical, but Signal makes it more visible.

How to find safety numbers on Signal:

  1. Open a conversation with the contact
  2. Tap the contact's name at the top
  3. Tap "View Safety Number"
  4. You see a 60-digit number plus a QR code

How to verify:

Tap the QR code icon. In person, tap "Scan code" on your phone and have your contact open their safety number screen and let you scan their QR code. Signal confirms the match and marks the contact as verified.

You can also mark a contact as verified manually after comparing numbers through any out-of-band channel you trust.

Signal's edge: notification on key changes:

Signal optionally notifies you when a verified contact's safety number changes. This is on by default for contacts you have marked as verified. You can also enable it globally for all contacts in settings.

Limitations:

The same problem applies. Most users never verify. Signal makes the feature more prominent than WhatsApp, but the default behavior is still to trust new keys.

iMessage: Contact Key Verification

Apple introduced Contact Key Verification (CKV) in iOS 17.2 in late 2023. It is one of the most ambitious key verification systems in consumer messaging, and it is also one of the most underused because it requires both parties to opt in.

How to enable Contact Key Verification:

  1. Open Settings
  2. Tap your Apple ID at the top
  3. Scroll to "Contact Key Verification" and turn it on

Both you and your contact must have this enabled for verification to be possible between you.

How to verify a contact:

  1. Open the contact in Messages or Contacts
  2. Tap "Verify Contact"
  3. Compare verification codes in person (a short string is displayed on both phones) or have your contact send their code through a trusted out-of-band channel
  4. If codes match, tap "Mark as Verified"

Once verified, iMessage will notify you if your contact's identity keys change in a way that is unexpected.

iMessage's advantage:

Contact Key Verification is enforced at the identity level, not just the conversation level. If anyone (including a sophisticated attacker with Apple-level access) tries to add a new device to your contact's iMessage account, you get notified.

Limitations:

CKV is opt-in for both parties. Adoption is low because most users have never heard of it. Without both parties enabling it, the feature does nothing. Additionally, iMessage's encryption story is strongest between Apple devices. Fallback to SMS or RCS for non-Apple contacts has different security properties entirely.

Telegram: Secret Chats Only

Telegram is the most confusing of the major apps when it comes to verification, because Telegram's encryption is not what most users assume.

The critical fact about Telegram encryption:

Telegram's default chats are not end-to-end encrypted. They are encrypted in transit and at rest on Telegram's servers, but Telegram holds the keys and can read them under their own access controls. End-to-end encryption in Telegram only happens in "Secret Chats," which are a separate, per-conversation, per-device feature you must explicitly activate.

This means:

How to verify a Telegram Secret Chat:

  1. Open the Secret Chat (you may need to start one from the contact's profile)
  2. Tap the contact's name at the top
  3. Tap "Encryption Key"
  4. You see a visualization of the encryption key and a corresponding 32-byte string

Compare the visualization or the string with your contact's view. If they match, the conversation is verified.

Limitations:

Secret Chats do not work across multiple devices. They are per-device, per-conversation. Group Secret Chats are not supported. The vast majority of Telegram users have never used a Secret Chat, which means the vast majority of Telegram conversations are not end-to-end encrypted at all.

If verification matters to you on Telegram, the first step is making sure you are actually in a Secret Chat and not a regular cloud chat.

What Verification Cannot Catch

The verification systems above work as designed. When used correctly, they confirm that the cryptographic keys belong to the person you intended to contact at the time of verification. That is a meaningful guarantee.

Several things they cannot catch:

The sender as a real human. Verification confirms the keys belong to your contact's account. It does not confirm that a real human is currently at the keyboard. If your contact has an AI assistant integrated into their messaging, or if their account has been taken over by an automated system, the keys are still legitimate. The messages are still encrypted. The sender is no longer your friend.

One-time impersonation through compromised devices. If someone briefly takes control of your friend's unlocked phone, sends a message, and gives the phone back, that message will be perfectly encrypted, verified, and from an attacker.

Social engineering of the verification step itself. Sophisticated attackers can manipulate the verification process by tricking users into accepting key changes. WhatsApp's "Security code changed" notification is easy to dismiss without thinking.

The behavior of the recipient after a message arrives. Encryption protects content in transit. It does not stop the recipient from screenshotting, forwarding, or sharing what you said with anyone they choose.

Bots and automated senders. This is the big one for 2026. As AI agents become more capable of operating messaging apps, "verified" no longer means "human." A verified account can still be running an autonomous AI agent that sends messages on the user's behalf, or impersonates them, or is operated by a malicious party who took over the account at some earlier point.

The fundamental issue is that encryption verifies keys, not humans. In 2020, that distinction was mostly academic, because keys generally belonged to humans by default. In 2026, that assumption no longer holds.

The Verification Gap

End-to-end encryption with manual verification has solved the technical problem of secure transport. The remaining gap is sender authenticity at the human level, not just the key level.

Manual verification, as implemented in every app above, has structural limitations beyond what it cannot catch:

Most users never verify. The verification step requires conscious user action, in-person meetings or out-of-band coordination, and the patience to compare long numbers. Surveys consistently show that fewer than 10% of users of any major encrypted messenger have ever verified a single contact.

Verification is one-time. Most apps verify a key at a moment in time. Even with notifications on key changes, the verification status of a conversation is a stamp that, once given, persists until something obvious breaks. AI agents and account takeovers do not break the cryptographic verification.

It does not scale to large contact networks. Verifying every contact you ever message requires hours of effort that most people will never invest.

The system depends on user vigilance for change detection. Apple's CKV notifications help here, but the user still has to read and respond to notifications, which most people do not.

A Different Approach to the Same Problem

If the goal of verification is to confirm that messages are sent by real humans you have chosen to communicate with, then verifying cryptographic keys once is an indirect solution. A more direct approach is to verify the human at the moment of sending, every time, automatically.

This is the architectural choice behind LegitChat. Every message sent through LegitChat is automatically verified to come from a real human before it leaves the sender's device. The verification happens at the message level, not the conversation setup level, and not the account creation level. Bots, AI agents, and automated systems cannot satisfy the verification requirement, which means they cannot send messages on the platform.

This does not replace cryptographic verification. LegitChat uses end-to-end encryption by default, just like Signal and WhatsApp. The difference is that LegitChat layers a continuous human-verification check on top of the cryptographic protections. The encryption guarantees the content. The verification guarantees the sender.

For users who have been verifying contacts manually and find the system increasingly inadequate as AI agents proliferate, this combination is the gap that manual key verification cannot close.

What To Do Today

Until verification approaches mature, the practical recommendations for users are unchanged:

  1. Enable Contact Key Verification on iMessage if both you and your contact use Apple devices
  2. Verify safety numbers on Signal for at least your most sensitive conversations
  3. Verify safety numbers on WhatsApp for the same
  4. Use Telegram Secret Chats (not regular chats) for anything that needs end-to-end encryption, and verify those
  5. Pay attention to "security code changed" notifications and investigate when you see one
  6. Treat unexpected behavior from "verified" contacts as a possible identity compromise

These steps do not solve the broader verification gap, but they raise the bar for attackers significantly. Any verification is better than none.

For a more structural solution to the sender-authenticity problem, join the LegitChat waitlist. LegitChat launches summer 2026 on iOS and Android with verified-human messaging built in by default.

The Bottom Line

End-to-end encryption is essential. Verification of cryptographic keys is the next layer of defense, and every major messaging app supports it in some form. WhatsApp and Signal use safety numbers. iMessage uses Contact Key Verification. Telegram uses Secret Chat key visualization.

Using these systems is worth the time investment for any conversation where sender identity matters. Most users never bother, which leaves them exposed to identity compromise even on apps with strong encryption.

That said, verifying cryptographic keys is no longer the same as verifying that a real human is at the keyboard. In 2026, the gap between "encrypted by an authenticated account" and "sent by a real human" is the next problem to solve. Architectural answers to that problem are starting to emerge, and they look different from manual key verification.

LegitChat launches summer 2026 on iOS and Android. Every message is automatically verified to come from a real human. Join the waitlist to be notified when it is available.

Messaging built for humans, not bots.

LegitChat launches summer 2026 on iOS and Android. Every message is automatically verified to come from a real human.

Back to legitchat.io