Une messagerie privée qui chiffre vos messages et vos appels sur votre appareil. Aucun numéro, aucun email, aucun carnet de contacts. Juste vos conversations, chiffrées de bout en bout.
A private messenger that encrypts your messages and calls on your device. No phone number, no email, no address book. Just your conversations, end-to-end encrypted.
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 où — 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. Aucune publicité, aucun tracker, aucun profil publicitaire.
Cette confidentialité ne repose pas sur une simple promesse. Elle est garantie par l'architecture : le chiffrement de bout en bout protège le contenu de vos messages, le Sealed Sender sépare l'expéditeur du contenu transporté, le routage OHTTP split-trust sépare l'adresse IP du contenu — le tout sur des protocoles cryptographiques publiés, audités, et résistants aux ordinateurs quantiques de demain.
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. No ads, no trackers, no advertising profile.
This privacy isn't just a promise — it's guaranteed by architecture: end-to-end encryption protects the content of your messages, Sealed Sender separates the sender from the transported content, OHTTP split-trust separates the IP address from the content — all on top of published, audited cryptographic protocols resistant to tomorrow's quantum computers.
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.
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.
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.
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.
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.
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.
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.
DH1..DH4) combined with an ML-KEM encapsulation.
The final shared secret mixes both worlds — classical security today,
quantum resistance tomorrow.
m=64 MiB, t=3, p=1.
Cela rend une attaque par force brute massivement coûteuse, même sur GPU.
m=64 MiB, t=3, p=1. This makes
brute-force attacks massively expensive, even on GPU.
256 B, 1 KB, 4 KB, 16 KB,
64 KB, puis arrondi au multiple de 64 KB pour les fichiers.
256 B, 1 KB,
4 KB, 16 KB, 64 KB, then to the next 64 KB
for larger files.
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.
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 |
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.
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".
Hybrid X3DH with post-quantum KEM
Module-Lattice KEM (CRYSTALS-Kyber)
Sparse Post-Quantum Ratchet construction
Two-hop privacy-preserving routing
Sender metadata protection with HMAC certificates
Password-based KDF, OWASP recommended
L’application et chacun des serveurs qu’elle utilise sont publiés dans un seul dépôt, sous licence AGPL-3.0. Quiconque fait tourner une version modifiée d’un serveur Ghostr doit en publier le code. Chaque promesse de cette page se vérifie ligne par ligne.
The app and every server it relies on are published in a single repository under the AGPL-3.0 license. Anyone running a modified Ghostr server must publish their changes. Every claim on this page can be checked line by line.
React Native / Expo. Triple Ratchet, Sealed Sender, tags journaliers, leurres, appels chiffrés : tout le code qui tourne sur votre téléphone.
Ouvre l’enveloppe chiffrée, route par tag destinataire, purge les fichiers après 48 h. Ne connaît jamais votre IP.
Relais anonyme devant le gateway, relais d’entrée des appels, SFU 1-à-1, page d’invitation sans aucune ressource externe.
Second saut des appels. Proxy transparent : il ne lit pas les messages qu’il transporte.
Déchiffre le jeton push, envoie un ping vide via FCM ou APNs, puis l’efface de la mémoire. Isolé du gateway.
Tables, politiques RLS, fonctions, purge automatique à 48 h. Reconstruit une base identique à partir de zéro.
React Native / Expo. Triple Ratchet, Sealed Sender, daily tags, decoys, encrypted calls: every line that runs on your phone.
Opens the encrypted envelope, routes by recipient tag, purges files after 48 h. Never learns your IP.
Anonymous relay in front of the gateway, call entry relay, 1-to-1 SFU, invite landing page with no external resource.
Second hop for calls. Transparent proxy: it never parses what it carries.
Decrypts the push token, sends an empty ping through FCM or APNs, then wipes it from memory. Isolated from the gateway.
Tables, RLS policies, functions, automatic 48-hour purge. Rebuilds an identical database from scratch.
Les serveurs sont répartis chez des hébergeurs distincts, exprès : aucun d’eux ne reçoit à la fois votre adresse et vos messages.
The servers are deliberately spread across separate providers: none of them receives both your address and your messages.
| Composant | Hébergé chez | Ce qu’il voit | Ce qu’il ne voit jamais |
|---|---|---|---|
| Relais anonyme | Cloudflare Workers | Votre adresse IP | Le contenu, le destinataire |
| Gateway OHTTP | Google Cloud Run · Finlande | Tag destinataire (change chaque jour), heure, palier de taille | Votre IP, l’expéditeur, le texte |
| Base de données | Supabase · PostgreSQL | Tags, messages et fichiers chiffrés, 48 h au plus | Votre IP, les identités |
| Push proxy | Fly.io · Paris | Le jeton push, le temps d’un envoi | Votre IP, le message, qui parle à qui |
| Relais d’entrée et SFU | Cloudflare Workers | Votre IP (entrée) · flux audio chiffrés (SFU) | Les clés, l’audio en clair |
| Exit relay | Fly.io · Paris | L’adresse du SFU | Votre IP |
| Component | Hosted on | What it sees | What it never sees |
| Anonymous relay | Cloudflare Workers | Your IP address | Content, recipient |
| OHTTP gateway | Google Cloud Run · Finland | Recipient tag (rotates daily), time, size bucket | Your IP, the sender, the text |
| Database | Supabase · PostgreSQL | Tags, encrypted messages and files, 48 h at most | Your IP, identities |
| Push proxy | Fly.io · Paris | The push token, for one send | Your IP, the message, who talks to whom |
| Entry relay and SFU | Cloudflare Workers | Your IP (entry) · encrypted audio frames (SFU) | Keys, clear audio |
| Exit relay | Fly.io · Paris | The SFU address | Your IP |
Vous avez trouvé une faille ? Écrivez à g6042044@gmail.com avec l’objet
[ghostr-security]. Accusé de réception sous 5 jours ouvrés, 90 jours de délai avant
divulgation publique, ou moins dès qu’un correctif est publié.
Found a flaw? Email g6042044@gmail.com with the subject
[ghostr-security]. Acknowledgement within 5 working days, 90 days before public
disclosure, or less once a fix has shipped.
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.