Un journal privé ne vaut que par ce qu'il refuse de livrer.

Patinae est construit autour d'une hypothèse simple : il faut supposer que la base de données finira un jour entre de mauvaises mains, et faire en sorte que ça ne suffise pas. Voici comment, sans métaphore.

Détail architectural d'une porte de coffre en acier brossé, avec sa serrure ronde
Une clé par entrée, pas une clé pour tout

Chaque entrée a sa propre clé.

Patinae emploie un chiffrement d'enveloppe versionné. Une clé de données est tirée au hasard pour chaque entrée du journal, sert à chiffrer cette entrée-là, puis est elle-même chiffrée par une clé de contenu distincte. Seuls le texte chiffré, la clé enveloppée, sa référence et sa version sont conservés.

  • Texte XChaCha20-Poly1305, chiffrement authentifié : toute altération est détectée
  • Photos et audio Flux secrets XChaCha20 découpés en trames, adaptés aux fichiers volumineux
  • Clé par entrée Une clé de données aléatoire par entrée, jamais réutilisée d'une entrée à l'autre
  • Enveloppe Adaptateur remplaçable : la clé locale peut céder la place à un coffre de clés ou à un KMS géré sans toucher au journal
  • Rotation Une nouvelle référence de clé ré-enveloppe les clés de données existantes : le contenu n'est pas réécrit
  • Production L'application refuse de démarrer sans clé de contenu dédiée : pas de repli silencieux

Une conséquence pratique : compromettre une entrée ne donne rien sur les autres. Et l'application elle-même ne manipule jamais de contenu en clair dans ses gabarits : les vues reçoivent des données déjà préparées.

Pas de mot de passe, donc pas de mot de passe à voler.

Des liens à usage unique

On se connecte par un lien signé, valable quelques minutes et consommable une seule fois. Seule l'empreinte SHA-256 du jeton est conservée : le lien lui-même n'existe nulle part côté serveur.

Une confirmation explicite

Ouvrir le lien ne connecte pas : il faut confirmer par une action. Cette étape empêche les analyseurs de liens intégrés aux messageries de consommer le lien avant vous.

Ré-authentification récente

Consulter des informations sensibles, gérer les accès ou transmettre un objet exige une confirmation récente par un nouveau lien personnel, valable un temps limité.

Aucun secret dans une page

Les liens d'invitation ne déposent leur secret que dans la session chiffrée, puis redirigent immédiatement vers une adresse sans jeton. Aucun jeton n'est rendu dans du HTML.

Un registre d'accès qui ne dit rien de trop.

Les invitations, les réponses, les révocations et les consultations sont consignées dans un registre en ajout seul. Ce registre existe pour que vous puissiez constater ce qui s'est passé sur un objet, pas pour constituer un dossier.

  • N'y figure jamais

    Le contenu des messages, les numéros de série, les jetons d'invitation, les adresses IP brutes, le contenu des médias. Ni dans le registre, ni dans les journaux techniques.

  • Sessions chiffrées

    Les sessions sont chiffrées en base, parce qu'elles transportent temporairement des secrets d'invitation entre deux étapes.

  • Réponses non mises en cache

    Les pages sensibles désactivent la mise en cache et la propagation du référent, pour ne pas laisser de copie dans un proxy ou une barre d'adresse voisine.

  • Notifications chiffrées

    Les notifications qui transportent un lien secret sont chiffrées dans la file d'attente, entre le moment où elles sont créées et celui où elles sont envoyées.

Ce que le chiffrement ne fait pas.

Aucun produit sérieux ne devrait vous laisser croire l'inverse. Voici les limites réelles, pour que vous décidiez en connaissance de cause.

  • Vos e-mails comptent

    Puisque la connexion passe par votre boîte de réception, qui contrôle votre e-mail peut demander un lien. Protégez cette boîte au moins autant que le reste.

  • Les membres voient le journal

    Le chiffrement protège des tiers, pas des personnes que vous avez invitées. N'accordez un accès qu'à des personnes de confiance, et révoquez quand ce n'est plus le cas.

  • Le service détient les clés

    Les clés de contenu sont gérées côté serveur, en dehors de la base et des sauvegardes. Ce n'est pas du chiffrement de bout en bout : c'est un compromis assumé pour que la transmission d'un objet reste possible, et pour qu'un journal ne devienne pas illisible parce qu'un appareil a été perdu.

  • Un transfert est définitif

    Accepter une transmission retire l'accès de l'ancien propriétaire. Il n'y a pas d'annulation : c'est ce qui rend la propriété crédible.

Écrivez-nous avant d'écrire ailleurs.

Si vous pensez avoir trouvé une vulnérabilité, contactez-nous directement et laissez-nous un délai raisonnable pour corriger. N'incluez jamais de contenu de journal, de lien d'invitation ni de numéro de série dans votre message.