Guides › Privacy

Secret messages

Send private notes to contacts, hidden inside a tiny Zcash payment.

Simple

You can send a private note to a contact. Only they can read it, and nobody else can even tell the two of you were in touch.

Open Profile → Inbox to read and write messages. You can write to contacts who have shared a private Zcash address with you, usually through Link Up. Each message costs a tiny network fee, paid from your private (shielded) ZEC.

You choose whether they see it's from you, with Show who it's from. Switch it off and even they won't know who sent it. Private ZEC payments can carry a note too, with the same choice.

Messages can take a minute or two to arrive. They stay on the blockchain for good, encrypted so only the recipient can read them. Never put your recovery phrase in one, or a password you use for anything else.

Detailed

Zcash's encrypted memos

Every shielded Zcash payment can carry a memo of up to 512 bytes, encrypted so that only the recipient can read it (its format is standardised in ZIP 302). A note to a contact travels this way, inside a shielded payment of a tiny amount, so it gets the same protection as private money.

Memos can only go to shielded or unified Zcash addresses. The network sees that a shielded transaction happened, but not the sender, the recipient, the amount or the text.

Who sent it?

The Zcash protocol hides the sender even from the recipient. That's why showing who a message is from is your choice: with it off, a message reveals nothing about you to anyone, including the person reading it.

Keep in mind

  • Messages are permanent: they stay on the blockchain as encrypted data, and anyone who later obtains the recipient's keys could read them. • Sending needs spendable private ZEC. • Any Zcash wallet that displays memos can show the text.

In depth

Encrypting to an address

Zcash encrypts each shielded output, memo included, with an integrated encryption scheme: the sender picks a fresh ephemeral key, performs elliptic-curve Diffie–Hellman with the recipient's public key, hashes the shared secret into a symmetric key, and encrypts with an authenticated cipher (ChaCha20-Poly1305). The ephemeral public key travels alongside the ciphertext.

Authenticated encryption gives confidentiality and integrity together: without the key, the ciphertext reveals nothing but its length, and any change to it is detected on decryption. Zcash memos are a fixed size, so even the length of the text stays hidden.

Digital signatures

A digital signature proves who wrote a message without revealing their secret. The signer uses a private key to produce a signature over the message; anyone with the matching public key can verify it, and nobody without the private key can forge one. Ed25519 (Schnorr-style signatures on an Edwards curve) and ECDSA are widely used schemes.

sign(private key, message) → signature
verify(public key, message, signature) → true / false

Binding a signature to its context

A signature only vouches for what it covers. Careful designs include the intended recipient, a time and a purpose label (domain separation) in what is signed, so a valid signature can't be copied onto another message, replayed to another person or reused in a different protocol.

Deniability versus authenticity

Because Zcash hides the sender, an unsigned message is deniable: the recipient can read it but can't prove who wrote it. A signed message trades that away for authenticity: whoever holds the signature can check who wrote it.