Ghostr

Vos conversations.
Et personne d'autre.

Your conversations.
And nobody else.

Une messagerie conçue pour résister aux menaces actuelles et futures. Pas de numéro, pas d'email, pas de carnet de contacts. Juste vos messages, chiffrés de bout en bout sur votre appareil.

A messenger built to resist today's and tomorrow's threats. No phone number, no email, no address book. Just your messages, end-to-end encrypted on your device.

Privé · Anonyme · Chiffré Private · Anonymous · Encrypted
0
Email requis
Email required
0
Téléphone requis
Phone required
192
Bits de sécurité
Bits of security
Forward secrecy
Forward secrecy
Pourquoi Ghostr

La vie privée n'est pas un paramètre. C'est une fondation.

La plupart des messageries promettent la confidentialité, puis vous demandent votre numéro de téléphone, scannent votre carnet de contacts, suivent votre activité, et stockent des métadonnées qui révèlent qui parle à qui, quand et — même si elles ne lisent pas le contenu.

Ghostr part d'un autre principe : les meilleures données sont celles qu'on ne collecte jamais. Pas d'identifiant lié à votre vie réelle. Pas de carnet de contacts uploadé. Pas de graphe social reconstructible. Pas de métadonnées d'appel. Pas même la possibilité, pour le développeur, de savoir si vous utilisez l'application aujourd'hui.

Ce niveau d'anonymat ne vient pas d'une simple promesse. Il est imposé par l'architecture : le chiffrement de bout en bout empêche le développeur de lire les messages, le Sealed Sender empêche le serveur de savoir qui envoie, le routage OHTTP split-trust empêche un acteur unique de corréler IP et contenu, le trafic constant avec décoys masque l'activité — et le tout repose sur des protocoles cryptographiques résistants aux ordinateurs quantiques de demain.

Why Ghostr

Privacy isn't a setting. It's a foundation.

Most messengers promise confidentiality, then ask for your phone number, scan your contacts, track your activity, and store metadata revealing who talks to whom, when, and where — even when they don't read content.

Ghostr starts from another principle: the best data is data you never collect. No identifier tied to your real life. No uploaded contact list. No reconstructable social graph. No call metadata. Not even the ability, for the developer, to know whether you're using the app today.

This level of anonymity isn't a promise — it's enforced by architecture: end-to-end encryption keeps the developer from reading messages, Sealed Sender keeps the server from learning who sent, OHTTP split-trust keeps any single party from correlating IP and content, constant traffic with decoys masks activity — all on top of cryptographic protocols resistant to tomorrow's quantum computers.

Comment ça marche
How it works

Quatre étapes,
zéro information personnelle.

Four steps,
zero personal information.

De la création de votre profil au chiffrement d'un message, voici exactement ce qui se passe — et ce qui ne se passe pas.

From profile creation to message encryption, here's exactly what happens — and what doesn't.

01

Profil local

Local profile

Vous choisissez un pseudonyme et un mot de passe. Une paire de clés Ed25519 + X25519 est générée localement. Rien n'est envoyé au serveur.

Pick a pseudonym and a password. An Ed25519 + X25519 keypair is generated locally. Nothing is sent to the server.

02

Invitation chiffrée

Encrypted invite

Pour parler à quelqu'un, vous lui envoyez un lien d'invitation à usage unique (par tout canal). Au premier message, un échange PQXDH établit une session post-quantique.

To talk to someone, send a one-time invitation link (any channel). On first message, a PQXDH handshake establishes a post-quantum session.

03

Triple Ratchet

Triple Ratchet

Chaque message a une clé unique, mélangée avec un secret post-quantique (ML-KEM-768) qui change tous les 50 messages. Compromettre une clé ne révèle ni le passé, ni l'avenir.

Every message has a unique key, mixed with a post-quantum secret (ML-KEM-768) rotated every 50 messages. Compromising one key reveals neither past nor future.

04

Routage split-trust

Split-trust routing

Le message chiffré transite via OHTTP : Cloudflare voit votre IP mais pas le contenu, le Gateway voit le contenu mais pas votre IP. Aucun acteur ne peut corréler les deux.

The encrypted message transits via OHTTP: Cloudflare sees your IP but not the content, the Gateway sees the content but not your IP. No party can correlate both.

Pile cryptographique
Cryptographic stack

Huit protocoles, une seule promesse.

Eight protocols, one promise.

Chaque couche a une raison d'exister : forward secrecy, post-compromise security, résistance quantique, anonymat de l'expéditeur, dissociation IP/contenu, anti-traçage passif. Voici la pile complète, telle qu'elle tourne sur votre appareil.

Each layer exists for a reason: forward secrecy, post-compromise security, quantum resistance, sender anonymity, IP/content unlinkability, passive-tracking resistance. Here is the full stack, as it runs on your device.

Layer 1 · Session
Triple Ratchet + SPQR
Trois cliquets en série : X25519 pour la forward secrecy classique, un cliquet symétrique pour des clés par message, et SPQR (Sparse Post-Quantum Ratchet, Eurocrypt 2025) qui injecte un secret ML-KEM-768 tous les 50 messages.
Three ratchets in series: X25519 for classical forward secrecy, a symmetric ratchet for per-message keys, and SPQR (Sparse Post-Quantum Ratchet, Eurocrypt 2025) injecting a fresh ML-KEM-768 secret every 50 messages.
X25519 ML-KEM-768 HKDF-SHA256 XSalsa20-Poly1305
Layer 0 · Handshake
PQXDH
Établissement de session hybride. Quatre échanges Diffie-Hellman X25519 (DH1..DH4) combinés à une encapsulation ML-KEM. Le secret partagé final mélange les deux mondes — sécurité classique aujourd'hui, résistance quantique demain.
Hybrid session establishment. Four X25519 Diffie-Hellman exchanges (DH1..DH4) combined with an ML-KEM encapsulation. The final shared secret mixes both worlds — classical security today, quantum resistance tomorrow.
4× X25519 DH ML-KEM-768 FIPS 203
Layer 2 · Anonymat expéditeur
Sealed Sender
Double chiffrement : le message Triple Ratchet est emballé dans une NaCl box adressée au serveur, accompagné d'un certificat anonyme signé HMAC. Le serveur prouve que l'expéditeur est légitime sans jamais apprendre qui c'est.
Double encryption: the Triple Ratchet message is wrapped in a NaCl box addressed to the server, accompanied by an anonymous certificate signed via HMAC. The server proves the sender is legitimate without ever learning who they are.
NaCl box HMAC-SHA256 PoW 18 bits
Layer 3 · Transport
OHTTP Split-Trust
Routage oblivious en deux sauts. Le client chiffre la requête avec la clé publique du Gateway (X25519, épinglée par empreinte SHA-256) puis l'envoie via Cloudflare. Cloudflare voit votre IP mais un blob illisible. Le Gateway déchiffre, mais ne voit que le trafic post-relais — votre IP est strippée.
Oblivious two-hop routing. The client encrypts the request with the Gateway's public key (X25519, pinned by SHA-256 fingerprint), then sends it through Cloudflare. Cloudflare sees your IP but an unreadable blob. The Gateway decrypts, but only sees post-relay traffic — your IP is stripped.
NaCl box Pinned X25519 Multi-gateway
Layer · Stockage local
Argon2id (KDF)
Votre mot de passe local est transformé en clé via Argon2id avec les paramètres OWASP 2025 : m=64 MiB, t=3, p=1. Cela rend une attaque par force brute massivement coûteuse, même sur GPU.
Your local password is turned into a key via Argon2id with OWASP 2025 parameters: m=64 MiB, t=3, p=1. This makes brute-force attacks massively expensive, even on GPU.
m=64 MiB t=3 iter ~200-400ms
Layer 4 · Anti-traçage
Trafic constant + Decoys
Constant traffic + Decoys
Un slot d'envoi se déclenche toutes les 30 secondes (±30s de jitter). S'il y a un vrai message à envoyer, il prend la place du décoy ; sinon, un décoy indistinguable est envoyé. Un observateur du réseau ne peut pas distinguer activité d'inactivité.
A send slot fires every 30 seconds (±30s jitter). If a real message is queued, it replaces the decoy; otherwise an indistinguishable decoy is sent. A network observer can't tell activity from inactivity.
Slot 30s ±30s 30s ±30s slot Burst 5% 5% burst Drain accéléré Accelerated drain
Layer 4 · Anti-fingerprint
Padding par buckets
Bucketed padding
Sans padding, la taille révèle le type : un accusé de réception fait ~100 octets, une photo ~50 Ko. Ghostr aligne chaque message sur les buckets 256 B, 1 KB, 4 KB, 16 KB, 64 KB, puis arrondi au multiple de 64 KB pour les fichiers.
Without padding, size reveals type: an ack is ~100 bytes, a photo ~50 KB. Ghostr rounds each message to the nearest bucket: 256 B, 1 KB, 4 KB, 16 KB, 64 KB, then to the next 64 KB for larger files.
256 B → 64 KB v1 + v2 format
Layer 5 · Voix
Call Triple Ratchet
Call Triple Ratchet
Les appels (jusqu'à 20 participants) sont chiffrés par paquet audio, dérivés du Triple Ratchet de la session. Le SFU Cloudflare relaie sans déchiffrer ; aucune métadonnée d'appel n'est stockée. Rotation DH périodique en option.
Voice calls (up to 20 participants) are encrypted per audio packet, derived from the session's Triple Ratchet. The Cloudflare SFU forwards without decrypting; no call metadata is stored. Optional periodic DH rotation.
20 participants max Up to 20 peers Forward secrecy par paquet Per-packet FS
Architecture réseau
Network architecture

Le voyage d'un message.

A message's journey.

Chaque saut a un rôle précis. Aucun saut ne voit assez pour vous identifier.

Every hop plays a precise role. No hop sees enough to identify you.

Flux d'un message — split-trust à 3 niveaux A message's flow — 3-tier split-trust
CLIENT · ALICE
Votre appareil
Your device
  • Triple Ratchet (E2E)
  • Sealed Sender
  • OHTTP encrypt
RELAY · CLOUDFLARE
Cloudflare Worker
  • voit votre IP
  • sees your IP
  • pas le contenu
  • blind to content
  • pas l'expéditeur
  • blind to sender
  • pas le destinataire
  • blind to recipient
GATEWAY · OHTTP
OHTTP Gateway
  • voit la requête
  • sees the request
  • pas votre IP
  • blind to your IP
  • pas le contenu E2E
  • blind to E2E content
  • pas l'expéditeur
  • blind to sender
STORE · SUPABASE
Stockage temporaire
Temporary storage
  • tag destinataire
  • recipient tag
  • pas le contenu E2E
  • blind to E2E content
  • pas l'expéditeur
  • blind to sender
  • supprimé ≤ 7j
  • deleted ≤ 7d
→ Bob récupère le message et le déchiffre localement avec son état Triple Ratchet
→ Bob fetches the message and decrypts it locally with his Triple Ratchet state
● voit cette donnée ● sees this data ○ aveugle à cette donnée ○ blind to this data
Qui voit quoi
Who sees what

La matrice de l'aveuglement.

The blindness matrix.

Aucun acteur unique de la chaîne ne dispose des informations nécessaires pour vous identifier ou lire vos messages. Voici la liste exhaustive.

No single party in the chain has enough information to identify you or read your messages. Here is the exhaustive breakdown.

Donnée Cloudflare Gateway Supabase FCM / APNs
Data Cloudflare Gateway Supabase FCM / APNs
Votre adresse IP VOIT AVEUGLE AVEUGLE AVEUGLE
Contenu du message AVEUGLE AVEUGLE AVEUGLE AVEUGLE
Identité de l'expéditeur AVEUGLE AVEUGLE AVEUGLE AVEUGLE
Tag destinataire (pseudonyme) AVEUGLE VOIT VOIT AVEUGLE
Push token natif (FCM/APNs) AVEUGLE AVEUGLE AVEUGLE VOIT (effacé)
Métadonnées d'appel AVEUGLE AVEUGLE AVEUGLE AVEUGLE
Carnet de contacts / vrai nom AVEUGLE AVEUGLE AVEUGLE AVEUGLE
Your IP address SEES BLIND BLIND BLIND
Message content BLIND BLIND BLIND BLIND
Sender identity BLIND BLIND BLIND BLIND
Recipient tag (pseudonym) BLIND SEES SEES BLIND
Native push token BLIND BLIND BLIND SEES (erased)
Call metadata BLIND BLIND BLIND BLIND
Contact list / real name BLIND BLIND BLIND BLIND
Modèle de menace
Threat model

Ce que Ghostr protège — et ne protège pas.

What Ghostr protects — and what it doesn't.

Honnêteté radicale. Aucune messagerie ne peut tout protéger ; voici les limites explicites du modèle.

Radical honesty. No messenger can protect everything; here are the explicit boundaries of the model.

Ce que Ghostr protège

What Ghostr protects

  • Lecture du contenu par n'importe quel intermédiaire (E2E)
  • Décryptage rétroactif si une clé est compromise (forward secrecy)
  • Récupération après compromission (post-compromise security)
  • « Harvest now, decrypt later » par ordinateur quantique
  • Reconstruction du graphe social par le serveur
  • Corrélation IP ↔ contenu par un acteur unique
  • Analyse de trafic passive (volume, timing)
  • Force brute du mot de passe local (Argon2id 64 MiB)
  • MITM par compromission Cloudflare (key pinning)
  • Spam massif de certificats (Proof of Work)
  • Content reading by any intermediary (E2E)
  • Retroactive decryption if a key is compromised (forward secrecy)
  • Recovery after compromise (post-compromise security)
  • "Harvest now, decrypt later" via quantum computer
  • Server-side social graph reconstruction
  • IP ↔ content correlation by any single party
  • Passive traffic analysis (volume, timing)
  • Local password brute force (Argon2id 64 MiB)
  • MITM via compromised Cloudflare (key pinning)
  • Mass certificate spam (Proof of Work)

Ce que Ghostr ne protège pas

What Ghostr doesn't protect against

  • Compromission de votre appareil physique (malware, screen capture)
  • Captures d'écran ou photos de l'écran par votre interlocuteur
  • Coercition légale ou physique pour vous forcer à déchiffrer
  • Mot de passe trivial ou réutilisé (vous restez responsable)
  • Identité révélée volontairement dans les messages
  • Métadonnées globales si plusieurs acteurs colludent (Cloudflare + Gateway + Supabase)
  • Identification par IP si vous n'utilisez pas Tor/VPN ET que Cloudflare est compromis
  • Compromise of your physical device (malware, screen capture)
  • Screenshots or photos of the screen by your contact
  • Legal or physical coercion forcing you to decrypt
  • Trivial or reused passwords (your responsibility)
  • Identity voluntarily revealed inside messages
  • Global metadata if multiple parties collude (Cloudflare + Gateway + Supabase)
  • IP identification if you don't use Tor/VPN AND Cloudflare is compromised
Vérifiable
Verifiable

Pas de magie. Que de la cryptographie publiée.

No magic. Just published cryptography.

Tous les protocoles utilisés par Ghostr sont publics, audités, et issus de la recherche académique récente ou de standards. Aucun « secret sauce ».

Every protocol Ghostr uses is public, audited, and drawn from recent academic research or established standards. No "secret sauce".

Reprenez le contrôle.

Take back control.

Téléchargez Ghostr, choisissez un pseudonyme, et redécouvrez ce que ça fait d'écrire un message qui n'appartient qu'à son destinataire.

Download Ghostr, pick a pseudonym, and rediscover what it feels like to write a message that belongs only to its recipient.