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.
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.
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.
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.
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.
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.
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é.
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.
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.
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.
Les sessions sont chiffrées en base, parce qu'elles transportent temporairement des secrets d'invitation entre deux étapes.
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.
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.
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.
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.
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.
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.
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.
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.