beChat is designed so the server can route encrypted data without being able to read messages or attachments.
In plain English
"Zero-knowledge" means the company running beChat knows nothing about what you say. The server is like a post office that moves sealed envelopes between mailboxes but has no letter opener and no master key. Below, each property has a one-line plain-English summary. For definitions of any term, see the glossary.
Message encryption
Messages are protected with a Double RatchetDouble RatchetThe key-ratcheting construction beChat implements for end-to-end encryption, the same mechanism Signal and WhatsApp use. It generates a brand-new key for every message so a single compromised key does not expose past or future messages.Open in the glossary construction with continuous post-quantum ratcheting (ML-KEM-1024ML-KEMThe post-quantum key-exchange algorithm beChat uses to let two phones agree on a shared secret that a future quantum computer cannot figure out. Standardized by NIST as FIPS 203.Open in the glossary on every ratchet step, not just the handshake) and encrypted with AES-256-GCM-SIVAES-256-GCM-SIVThe encryption beChat uses to scramble message content and attachments. It is a hardened variant of AES-256-GCM, the standard the U.S. government approves for top-secret documents, designed to stay safe even if a nonce is accidentally reused.Open in the glossary. Message headers are encrypted separately. The server stores only encrypted message blobs.
In plain English
Your text is scrambled on your phone, sent as noise, and only unscrambled on your contact's phone. A new post-quantum lock is added every time the conversation changes direction, not just at the start. The server never sees readable text.
Hybrid signatures
Every device and message key is signed with both classical Ed25519 and post-quantum ML-DSA-87ML-DSAThe post-quantum signature algorithm beChat uses to prove who sent a message and that it was not tampered with. Standardized by NIST as FIPS 204.Open in the glossary (FIPS 204). The two schemes mutually bind each other. If a future quantum computer can forge one signature type, the other still holds.
In plain English
Every key carries two signatures: today's math and post-quantum math. Both must be valid. A future quantum computer can't forge one without also breaking the other.
Sealed sender
The sender's identity is encrypted inside the message envelope, and the stored message record carries no sender PIN. Delivery tokens (RSA-PSS signed, bound to the recipient, rate-limited, anti-replay) prevent abuse. The server still authenticates the account that submits each message and issues each token, so sealed sender limits what stored records reveal. It does not make you anonymous to the server.
In plain English
Alice's name is locked inside the envelope, so the stored message just says "for Bob." The server still sees that Alice's account handed the envelope in, so this is about keeping records lean, not about hiding Alice from the server. One-time tickets stop spam.
Attachment encryption
Attachments are encrypted with AES-256-GCM-SIVAES-256-GCM-SIVThe encryption beChat uses to scramble message content and attachments. It is a hardened variant of AES-256-GCM, the standard the U.S. government approves for top-secret documents, designed to stay safe even if a nonce is accidentally reused.Open in the glossary with an additional HMAC-SHA256 integrity check before upload. PlaintextPlaintextThe readable, unscrambled version of a message or file. This is what encryption protects. beChat never sends plaintext over the network or stores it on the server.Open in the glossary attachments are never sent to the server.
In plain English
Photos and files are scrambled before they leave your phone, using a hardened variant of the encryption standard approved for U.S. top-secret documents.
Local storage
Local databases use SQLCipherSQLCipherAn encrypted version of the database that stores your chat history on your phone. It is locked by your PIN, so without the PIN even someone holding your phone sees only scrambled noise.Open in the glossary encryption with a multi-slot DEK/KEK envelope model. PIN-based keys use (memory-hard, 64 MiB). On supported devices, KEKs can be hardware-backed (Android StrongBox/TEE, Linux TPM, Windows DPAPI). A 12-word BIP39 recovery phrase optionally wraps the DEK.
In plain English
Your chat history is locked behind your PIN with memory-hard encryption that resists brute force. On supported phones, the key is backed by hardware security. You can optionally write down a 12-word recovery phrase.
Safety numbers
beChat computes a SHA-512 safety number from both parties' identity keys. You compare it with your contact through a trusted channel. If the numbers match, nobody is intercepting your conversation.
In plain English
Both phones show a long number. You read it to your contact and check it matches. If it does, nobody is listening in. If it doesn't, the connection was compromised.
Server data
The server stores what it needs to deliver messages: your PINPIN (in beChat)A random 8-character code your phone generates when you install beChat. It is your account identity, like a gym locker number. It is not a password you choose, and it says nothing about who you are.Open in the glossary, device identifierDevice fingerprintA random identifier the beChat app creates for your device. beChat pairs it with your PIN to recognize your device, without ever collecting your name, email, or phone number.Open in the glossary, public keys, push token, contact and group relationships, optional profile details you choose to set (such as a username), and encrypted message blobs. It also records routing metadata (recipient, size, timestamps, delivery receipts), and request IP addresses are kept in a 30-day audit log. None of this includes message content.
In plain English
The server knows your locker number, who you are connected to, and when envelopes move between lockers. It never sees what is inside the envelopes.
Transport security
Network requests use TLSTLSThe encryption that protects the connection between your phone and a server, the same technology that puts the padlock in your browser. beChat uses it for every request.Open in the glossary, certificate pinningCertificate pinningA rule where your phone only trusts one specific ID badge for the beChat server. So even if someone fakes a badge that looks officially issued, your phone refuses to talk to them.Open in the glossary (SPKI SHA-256, live and backup pins baked in at compile time), and HMAC-SHA256 request signingHMAC request signingA tamper-proof seal on each network request that proves it really came from your account and was not modified on the way. Works alongside TLS for defense in depth.Open in the glossary with per-request nonces for replay protection. Auth tokens use PASETO v3.local, not JWT.
In plain English
The connection is tamper-proof. Your phone only trusts the real beChat server. Every request is individually signed with a one-time code so it can't be replayed.
Privacy posture
beChat does not run analytics, crash reporting, advertising, or third-party SDKsSDKA "software development kit," a bundle of third-party code an app can include. Many apps include analytics or advertising SDKs that quietly collect your behavior. beChat includes none of those.Open in the glossary that collect user behavior. Android push notifications go through Google Firebase Cloud Messaging and carry no message content. Viewing a shared location loads map tiles from OpenStreetMap, and link previews are fetched by your device from the linked site.
In plain English
The app skips analytics, ads, crash reporters, and third-party data collectors entirely. Google's push service and the OpenStreetMap map tiles are the outside services involved, and neither sees your message content.
Push notifications
Android push notifications are delivered via Google Firebase Cloud Messaging (FCM)Firebase Cloud Messaging (FCM)Google's service for delivering push notifications on Android. For new messages, beChat uses it only to tap your phone and say "wake up, fetch something." That notification contains no message content and no sender, and the message itself never goes through Google.Open in the glossary. A new-message notification carries only a wake-up signal, with no content and no sender. Contact-request and incoming-call notifications include the other person's PIN and display name so your phone can show them.
In plain English
For messages, Google's push service only taps your phone to say "wake up, fetch something." The actual message never goes through Google.
Infrastructure
beChat runs on an independent European hosting provider, on infrastructure in Germany, governed by Belgian and European law. The server does not run on Amazon, Google, or Microsoft cloud.
In plain English
The servers live in Europe (Germany), hosted by an independent provider rather than Amazon, Google, or Microsoft cloud. Belgian law applies.