PrivateFamily / Le chiffrement expliqué

Le chiffrement expliqué

Vos photos sont chiffrées avant même de quitter votre téléphone

PrivateFamily est l'album photo de famille chiffré de bout en bout : voici, étape par étape, comment nous chiffrons vos photos avant leur envoi, ce que le serveur voit réellement, et ce qui reste encore à chiffrer. Sans survendre, sans jargon inutile.

Étape par étape

Le trajet d'une photo, du téléphone à la famille

Voici précisément ce qui se passe, techniquement, entre l'instant où vous appuyez sur « envoyer » et l'instant où votre mère ouvre la photo sur son téléphone.

Sur votre téléphone, avant l'envoi

Dès que vous choisissez une photo, l'application la découpe en blocs d'1 Mio et chiffre chacun avec la clé secrète de votre famille — une clé générée sur cet appareil, jamais ailleurs. Ce qui part vers le serveur n'est déjà plus une photo : c'est une suite d'octets illisible.

Sur le serveur, à la réception

Le serveur reçoit ces octets chiffrés, les stocke tels quels et les servira tels quels plus tard. Il ne détient pas la clé : il ne peut ni les ouvrir, ni produire un aperçu, ni deviner ce qu'ils représentent.

Sur le téléphone d'un proche, à l'ouverture

Quand un membre de la famille ouvre l'album, son téléphone télécharge ces mêmes octets chiffrés puis les déchiffre localement, avec sa propre copie de la clé de famille. La photo n'existe en clair sur aucun serveur, à aucun moment.

Deux façons de comprendre

Simplement, puis en détail

Deux lectures possibles, selon ce qui vous rassure le plus : une image simple, ou les mécanismes cryptographiques exacts que nous utilisons.

Expliqué simplement

Imaginez que chaque photo quitte votre téléphone déjà enfermée dans une boîte scellée. Seules les personnes de votre famille possèdent la clé de cette boîte — une clé fabriquée par un téléphone, jamais tapée au clavier, jamais envoyée par e-mail.

Le serveur ne fait que ranger des boîtes fermées sur une étagère : il peut les compter, les déplacer, les remettre à la bonne personne. Il ne peut pas les ouvrir. Et quand vous invitez un proche, c'est votre téléphone — jamais le serveur — qui lui glisse discrètement un double de la clé.

Pour les technicien·nes

Chiffrement authentifié XChaCha20-Poly1305-IETF, via la bibliothèque react-native-libsodium. La clé de famille (« FDK ») fait 256 bits (32 octets), générée aléatoirement sur l'appareil avec randombytes_buf — jamais dérivée d'un mot de passe.

  • Nonce de 24 octets : 16 octets aléatoires propres à chaque fichier, suivis d'un compteur de bloc de 8 octets en big-endian.
  • Blocs de 1 Mio (1024 × 1024 octets), chacun chiffré indépendamment avec son propre tag d'authentification Poly1305 de 16 octets — ce qui permettra un jour de servir des extraits vidéo par plage d'octets, contrairement à un flux chiffré d'un seul tenant.
  • Résistant à la falsification : altérer, tronquer, réordonner un bloc ou y substituer un bloc d'un autre fichier fait systématiquement échouer le déchiffrement — un comportement couvert par des tests automatisés.
  • Clé stockée en zone sécurisée matérielle : Keychain iOS / Keystore Android, via expo-secure-store — jamais dans le stockage classique de l'application, jamais transmise sur le réseau.
  • Phrase de secours de 12 mots, tirés de la liste standard BIP-39 (2048 mots) par un générateur aléatoire cryptographique — environ 132 bits d'entropie. Affichée une seule fois, à la création de la famille. Le serveur n'en stocke qu'une empreinte SHA-256, jamais la phrase elle-même ; 5 essais erronés bloquent la récupération pendant une heure.
  • Dérivation par Argon2id (crypto_pwhash, profil INTERACTIVE de libsodium) pour retrouver la clé de famille à partir de la phrase de secours.
  • Invitation d'un nouveau membre : l'appareil qui invite, déjà déverrouillé, enveloppe une copie de la clé de famille sous un secret dérivé du code d'invitation, et seule cette enveloppe scellée transite par le réseau. L'appareil qui rejoint la famille la télécharge et l'ouvre localement avec le code saisi. Le code lui-même fait 8 caractères, à usage unique, expire par défaut après 30 jours.
  • Miniatures générées sur le téléphone, jamais sur le serveur, et chiffrées de la même façon avant l'envoi.

En toute transparence

Ce que voit vraiment le serveur

Le chiffrement protège le contenu de vos photos et vidéos. Il ne rend pas le serveur aveugle à tout : voici, sans détour, la frontière exacte entre ce qui est chiffré aujourd'hui et ce qui ne l'est pas encore.

Chiffré
Photos et vidéos

Chiffrées de bout en bout : le serveur ne stocke et ne sert que des octets opaques. Il ne peut générer aucune miniature, lire aucune métadonnée EXIF, ni connaître les dimensions autrement que par ce que l'application lui déclare elle-même.

En clair
Ce que le serveur voit quand même

Des métadonnées, jamais le contenu : la date et l'heure exactes de chaque prise de vue (captured_at), la taille et l'empreinte SHA-256 du fichier chiffré, les dimensions de l'image, et qui a envoyé, vu, réagi ou commenté — via un identifiant de compte interne.

Chiffré
Légendes, commentaires, profils enfants, noms de famille

Légendes, commentaires, prénoms et dates de naissance des enfants, notes de croissance et de jalons, noms de la famille et des membres, emojis de réaction : chiffrés de bout en bout, avec la même clé que vos photos.

Deux nuances honnêtes : les valeurs numériques de croissance (taille, poids) restent en clair — seules leur date et leurs notes sont chiffrées. Le nom de votre compte, qui sert à vous reconnecter sur un nouvel appareil, reste distinct et non chiffré ; c'est le nom affiché aux autres membres de chaque famille qui l'est.

Autre limite honnête : la lecture vidéo télécharge et déchiffre aujourd'hui la vidéo entière avant de la lire. Il n'existe pas encore de déchiffrement en flux continu en temps réel.

Questions fréquentes

Ce qu'on nous demande sur le chiffrement

Pourquoi le serveur voit-il encore la date de la photo ?

La date exacte de prise de vue (captured_at) sert à classer automatiquement vos photos dans la timeline, par mois et par année — un tri qui se fait aujourd'hui côté serveur, ce qui l'oblige à connaître cette date en clair. C'est une métadonnée sur la photo, jamais son contenu : elle ne montre à personne ce qu'il y a sur l'image.

Que se passe-t-il si je perds mon téléphone ?

Un autre administrateur ou coadministrateur de votre famille peut vous redonner accès en quelques secondes. Si vous êtes seul administrateur, la phrase de secours de 12 mots reçue à la création de la famille permet de tout récupérer sur un nouvel appareil.

Le chiffrement ralentit-il l'envoi des photos ?

Non, aucune différence perceptible. Le chiffrement se déroule sur votre téléphone, au moment même où l'application compresse déjà la photo avant l'envoi — une étape qui existait de toute façon.

Pourquoi pas un simple mot de passe familial ?

Parce qu'un mot de passe choisi et retenu par des humains est presque toujours plus faible qu'une clé de 256 bits générée aléatoirement par un appareil. Cette clé n'a d'ailleurs jamais besoin d'être saisie au quotidien : seule la phrase de secours existe, comme filet de sécurité personnel pour chaque administrateur, à n'utiliser qu'en cas de perte d'appareil.

Les commentaires et les prénoms des enfants sont-ils chiffrés ?

Oui, depuis le 31 août 2026 : légendes, commentaires, prénoms et dates de naissance des enfants, notes de croissance et de jalons, noms de famille et des membres, réactions — tout est chiffré de bout en bout avec la même clé que vos photos. Seules exceptions, par nécessité technique : les valeurs numériques de croissance (taille, poids) et le nom de votre compte (utilisé pour vous reconnecter sur un nouvel appareil) restent en clair.

Prêt·e à essayer ?

Le chiffrement le plus sûr est celui que vous n'avez jamais à gérer.

Gratuit jusqu'à 10 photos. Deux minutes pour créer votre famille.