Storing contacts without storing contacts

WhatsApp has long kept contact management tied to the phone. Users could only add contacts from a mobile device, and there was no way to have that list automatically restored after a device change. A new feature changes that: contacts can now be created directly inside WhatsApp, synced to the phone, or stored only against the user's account. If the phone is lost, the list comes back on a fresh registration. Users with multiple accounts on one device get separate contact lists per account.

Behind the feature is a storage system WhatsApp calls Identity Proof Linked Storage (IPLS). Contact names are encrypted with a key generated on the client device, and retrieval is tied to authentication of the device's primary identity. The system combines two pieces of WhatsApp infrastructure already in production: the key transparency directory and the hardware security modules (HSMs) used for end-to-end encrypted backups.

Cloudflare acts as an independent witness to the directory's integrity, and both NCC Group Cryptography Services and external researchers reviewed the stack.

Two building blocks

Key transparency maps a phone number to the identity key currently associated with it. Events like installing or reinstalling WhatsApp trigger creation of a new keypair; those changes are published to an append-only Auditable Key Directory (AKD). Clients and third parties can cryptographically verify which key belongs to which number. The feature that triggers trust issues is identical to what a user sees in the security code UI, where a QR code can surface a key compromise.

The HSM piece is WhatsApp's Key Vault: tamper-resistant hardware in WhatsApp data centers. Even an insider with full physical access cannot see what is executed inside the security boundary. The vault stores the contact encryption key and makes it retrievable over an end-to-end encrypted channel.

When a client needs to restore contacts, a new device opens a secure session with the vault. The vault checks the client's identity key against the AKD using a cryptographic protocol, confirms the client holds the corresponding private key, and only then releases the contact key over the secure channel. Because the contact key lives in the vault rather than on the lost phone, the data survives a device change.

Making the directory trustworthy

A single-instance directory only helps if it cannot be silently rewritten. Cloudflare's key transparency service provides that check. Each epoch addition to the AKD is digitally signed by Cloudflare, and the HSM-based Key Vault validates that signature with Cloudflare's public key. The system will not proceed without it.

The auditable proofs of consistency between epochs are published to a write-once S3 bucket with a public interface. Anyone can retrieve those proofs and verify that the directory evolved correctly, which prevents WhatsApp from unilaterally altering the record of identity key changes.

The practical effect is that any data access in IPLS is coupled to identity key changes that are publicly and verifiably logged. An attacker who obtains the wrong key would have to move through the transparency directory to do anything with it — a step designed to be visible rather than silent.

What the new system changes

IPLS is not a new cryptography primitive so much as a new way to assemble existing ones. The contact names are encrypted on the client, the key is held in an HSM, and the identity that can request that key is pinned to a public, witnessed directory of key changes. That arrangement is what lets WhatsApp offer contact restore without making the contact list readable by WhatsApp itself.

The feature expands what is possible on linked devices, which now can manage contacts without involving the phone, and gives users a reason to keep a contact list inside WhatsApp rather than depending on the phone's local address book.