Plateforme · Modèle de sécurité de MindooDB

Partez du principe que les serveurs sont compromis

Voici le modèle de sécurité, au niveau de la plateforme, qui porte chaque déploiement de MindooDB — y compris Sécurité & confidentialité de Haven. MindooDB est conçu pour que l'infrastructure de stockage et de synchronisation n'ait pas besoin d'être digne de confiance. Trois couches de chiffrement indépendantes protègent la confidentialité des données. Des signatures cryptographiques prouvent l'auteur et empêchent toute manipulation. Même une compromission totale du serveur ne livre que du texte chiffré et des clés publiques — aucune donnée en clair, aucune clé privée, aucun nom d'utilisateur.

Architecture de sécurité zero trust : les clés restent sur les appareils, les données chiffrées traversent un bouclier de chiffrement vers des serveurs incapables de les déchiffrer
Défense en profondeur

Trois couches de chiffrement indépendantes

Le protocole de synchronisation de MindooDB étage la protection sur plusieurs couches. Même si l'une est compromise, les autres continuent de protéger la confidentialité des données. C'est la pièce maîtresse de la sécurité de MindooDB : vous n'avez à faire confiance à aucune couche en particulier pour être en sécurité.

Couche 1
Chiffrement au niveau de l'application

Avant même qu'une entrée n'arrive dans le store, sa charge utile est chiffrée avec une clé symétrique (AES-256-GCM). Ce chiffrement fait partie du modèle de données, pas du transport. Le serveur qui stocke les entrées ne peut pas lire leur contenu — il ne voit que des octets chiffrés.

Couche 2
Chiffrement de la charge utile en transport

Quand le serveur répond à une demande de synchronisation, il enveloppe les charges utiles des entrées dans une couche de chiffrement RSA supplémentaire, avec la clé publique de l'utilisateur qui demande. Même en interceptant la réponse HTTP, on ne peut pas la déchiffrer sans la clé RSA privée du destinataire.

Couche 3
Chiffrement du canal

Toute la communication passe par TLS. Cela protège les métadonnées (identifiants d'entrées, horodatages, paramètres de requête) que les couches de charge utile ne couvrent pas. Ensemble, les trois couches assurent une protection complète des données : au repos, en transit et sur le réseau.

Modèle de confiance

Comment la confiance s'établit

Dans MindooDB, la confiance a une seule racine : la clé de signature Ed25519 de l'admin. L'admin signe la base de données d'annuaire, qui contient les enregistrements des utilisateurs. La clé publique de chaque utilisateur est consignée dans une entrée d'annuaire signée par l'admin. Quand un client ou un serveur reçoit une modification de document, il vérifie la clé publique du signataire contre l'annuaire — si la clé n'est pas enregistrée, la modification est rejetée. Aucune authentification serveur n'est nécessaire ; la confiance s'établit par des preuves cryptographiques.

Chaîne de confiance
La clé de signature de l'admin signe l'annuaire ; l'annuaire contient les enregistrements d'utilisateurs signés par l'admin ; les utilisateurs enregistrés signent les modifications de documents dont les charges utiles sont chiffrées
La clé d'admin signe l'annuaire. L'annuaire définit les utilisateurs de confiance. Les utilisateurs signent leurs modifications. Les serveurs peuvent valider sans lire les données métier.

Ce que le serveur voit et ce qu'il ne voit pas

C'est la conséquence pratique de l'architecture zero trust. Un serveur (ou tout intermédiaire, y compris un nœud relais) ne manipule jamais que des données chiffrées et des informations publiques. Tout ce qui est sensible reste sur les appareils des clients.

Le serveur voit
  • Les clés de signature publiques (Ed25519)
  • Les clés de chiffrement publiques (RSA-OAEP)
  • Les blobs chiffrés (texte chiffré AES-256-GCM)
  • Les métadonnées des entrées (horodatages, empreintes de contenu)
  • Les hachages des noms d'utilisateur (SHA-256 — pas les noms eux-mêmes)
Le serveur ne voit jamais
  • Le contenu des documents (chiffré de bout en bout)
  • Les noms d'utilisateur (chiffrés avec la clé RSA de l'admin)
  • Les clés privées de signature ou de chiffrement
  • Les clés de chiffrement symétriques (de tenant ou nommées)
  • Les mots de passe partagés (hors bande uniquement)
Contrôle d'accès

Un contrôle d'accès fondé sur le chiffrement

MindooDB applique le contrôle d'accès par les clés de chiffrement, pas par des autorisations côté serveur. Qui détient la clé peut déchiffrer le document. Qui ne la détient pas ne voit que du texte chiffré. Le contrôle d'accès agit donc de façon identique, que les données soient sur un serveur, sur un appareil pair ou sur un nœud relais incapable de les lire. Pour un contrôle fin des opérations d'écriture — qui peut créer, modifier, supprimer, snapshotter ou purger des documents — voir la page dédiée au contrôle d'accès.

Clé de tenant par défaut

Tous les documents sont chiffrés avec la clé AES-256 par défaut du tenant, sauf si une autre clé est indiquée. Chaque utilisateur enregistré reçoit cette clé à son intégration. À utiliser pour les données générales du tenant.

Clés nommées

Pour les documents sensibles, créez une clé de chiffrement nommée et ne la partagez qu'avec les utilisateurs autorisés. Les clés voyagent hors ligne (la clé chiffrée par e-mail, le mot de passe par téléphone ou en personne) ou à l'aveugle pour l'admin via une politique : un utilisateur qui détient la clé l'encapsule pour chaque destinataire avec sa clé publique (RSA), si bien qu'un admin peut la distribuer sans jamais la lire. Seuls les utilisateurs qui détiennent la clé peuvent déchiffrer.

Clé $publicinfos

Une clé spéciale qui ne chiffre que les entrées de contrôle d'accès de l'annuaire (enregistrements d'utilisateurs, révocations, groupes). Les serveurs s'en servent pour vérifier quelles clés de signature sont dignes de confiance — sans voir les noms d'utilisateur ni les données métier. Les noms d'utilisateur sont stockés sous forme de hachages SHA-256 ; les vrais noms sont chiffrés avec la clé RSA de l'admin.

Application du contrôle d'accès
Opération Appliqué par
Enregistrement d'un utilisateur Signature d'admin requise (Ed25519)
Création d'un document Clé de chiffrement requise (par défaut ou nommée)
Modification d'un document Clé de signature (utilisateur enregistré) + clé de chiffrement requises
Lecture d'un document Clé de déchiffrement requise
Révocation d'un utilisateur Signature d'admin requise ; bloque la synchronisation et rejette les modifications futures
Authentification

Authentification par défi-réponse et intégration sécurisée

MindooDB n'utilise ni mots de passe ni tokens stockés sur le serveur. L'authentification repose sur un défi-réponse Ed25519 : le serveur génère un défi aléatoire, le client le signe avec sa clé privée, et le serveur vérifie la signature contre la clé publique enregistrée. L'identité est ainsi prouvée sans partager de secret.

Authentification de la synchronisation

Chaque session de synchronisation commence par une poignée de main défi-réponse :

  • Le client envoie sa clé de signature publique au serveur
  • Le serveur cherche la clé dans l'annuaire et envoie un défi aléatoire
  • Le client signe le défi avec sa clé privée
  • Le serveur vérifie la signature, contrôle l'état de révocation et délivre un JWT à courte durée de vie

Aucun mot de passe, aucune base de sessions sur le serveur. Un utilisateur révoqué ne peut même pas entamer le flux d'authentification.

Intégration sécurisée des utilisateurs

Les nouveaux utilisateurs arrivent par une poignée de main en trois étapes, où les clés privées ne quittent jamais l'appareil :

  • Demande d'adhésion — Le nouvel utilisateur génère ses clés en local et crée une demande qui ne contient que des clés publiques. Elle se partage sans risque par n'importe quel canal.
  • Approbation par l'admin — L'admin enregistre l'utilisateur dans l'annuaire et chiffre les clés symétriques avec un mot de passe de partage à usage unique.
  • Échange par canaux séparés — La réponse d'adhésion part par e-mail ou messagerie ; le mot de passe de partage est transmis à part, par téléphone ou en personne.
Primitives cryptographiques

Algorithmes et garanties

MindooDB s'appuie sur des algorithmes cryptographiques éprouvés et largement audités. Aucune cryptographie maison. Les choix d'algorithmes équilibrent le niveau de sécurité et la compatibilité multiplateforme (Node.js, navigateurs, React Native).

Algorithmes
  • Signature : Ed25519 (sécurité de 128 bits, courbe elliptique)
  • Chiffrement de la charge utile : AES-256-GCM (sécurité de 256 bits)
  • Chiffrement du transport : RSA-OAEP avec SHA-256 (clés de 3072 bits)
  • Dérivation de clés : PBKDF2 avec un sel propre à chaque type de clé
  • Signature des tokens : HMAC-SHA256
  • Hachage : SHA-256 (adressage par contenu, protection des noms d'utilisateur)
Garanties de sécurité
  • Confidentialité : chiffrement AES-256-GCM — seuls les détenteurs de la clé peuvent lire
  • Authenticité : signatures Ed25519 — prouvent qui a créé chaque modification
  • Intégrité : chaînage par empreintes — une manipulation rompt la chaîne et se détecte en tout point
  • Non-répudiation : les signatures sont infalsifiables — l'auteur est prouvable
  • Vie privée : noms d'utilisateur hachés et chiffrés — le serveur ne peut pas identifier les utilisateurs
Modèle de menace

Ce contre quoi le système protège

MindooDB part du principe que les serveurs, l'infrastructure réseau et même certains pairs peuvent être compromis ou malveillants. Le modèle de sécurité est conçu pour préserver la confidentialité et l'intégrité des données dans ces conditions.

Attaques contrées
  • Compromission du serveur — L'attaquant n'obtient que du texte chiffré et des clés publiques. Aucun clair, aucune clé privée, aucun nom d'utilisateur.
  • Interception réseau — Trois couches de chiffrement protègent les données même si TLS est compromis.
  • Modifications non autorisées — Chaque modification est signée ; celles qui ne le sont pas, ou mal, sont rejetées.
  • Manipulation — Le chaînage par empreintes rend toute altération détectable.
  • Accès d'un utilisateur révoqué — La révocation s'applique au défi comme à la validation du token ; elle bloque la synchronisation immédiatement.
  • Écoute au relais — Les nœuds relais stockent et transmettent des entrées chiffrées qu'ils ne peuvent pas déchiffrer.
Métadonnées exposées

Le contenu de la charge utile est toujours chiffré, mais certaines métadonnées sont visibles par le serveur, par conception. C'est un compromis délibéré : le protocole de synchronisation a besoin de métadonnées pour rapprocher les entrées.

  • Visible : horodatages des entrées, empreintes de contenu, structure des documents (combien d'entrées par document), habitudes d'accès (quand les utilisateurs se synchronisent)
  • Non visible : contenu des documents, noms d'utilisateur, clés de chiffrement, contenu des pièces jointes

Les empreintes de contenu révèlent quand deux entrées contiennent des données chiffrées identiques (pour la déduplication). C'est un compromis accepté au profit de l'efficacité du stockage.

Compromis assumés

Ce qu'il faut savoir

MindooDB est un logiciel en bêta doté de fondations cryptographiques solides. Un audit de sécurité complet a été mené ; il identifie les points à durcir avant un déploiement en production. Nous pensons que la transparence sur les limites bâtit plus de confiance que les promesses marketing.

Limites de la révocation

Révoquer un utilisateur bloque toute synchronisation ultérieure et rejette ses futures modifications. En revanche, les données déjà synchronisées sur son appareil restent accessibles — aucun système ne peut garantir la suppression sur un appareil qui ne se reconnecte jamais. Atténuation : utiliser des clés nommées pour les documents sensibles (rayon d'impact plus réduit), faire tourner les clés au départ d'un utilisateur. Haven Enterprise ajoute aux mêmes politiques de gouvernance un effacement à distance signé par l'admin : le tenant est retiré d'un appareil volé ou rendu dès sa prochaine connexion.

Complexité de la gestion des clés

Plusieurs clés par utilisateur (signature, chiffrement, clés symétriques nommées) doivent être distribuées en toute sécurité. Atténuation : un seul mot de passe déverrouille toutes les clés, via PBKDF2 avec des sels différents. Le KeyBag offre un stockage de clés unifié. Le flux demande/réponse d'adhésion prend en charge l'échange de clés pour les nouveaux utilisateurs. Haven Enterprise automatise le travail courant : des politiques de distribution de clés signées par l'admin approvisionnent utilisateurs et groupes en clés — et les révoquent à nouveau —, chacune encapsulée par destinataire, et chaque client réconcilie son KeyBag à la synchronisation suivante.

Les requêtes côté serveur exigent un partage de clé explicite

Par défaut, le serveur ne peut pas interroger le contenu des documents, puisqu'il ne voit que du texte chiffré. Toute interrogation se fait côté client, par indexation incrémentale. Si votre cas d'usage demande un traitement côté serveur (un système de réservation en ligne, un site public), vous pouvez donner une clé de déchiffrement au processus serveur ou ne partager avec lui qu'un sous-ensemble des données. C'est un choix d'architecture conscient, propre à chaque déploiement — la confidentialité par défaut, l'accès serveur seulement là où vous l'activez.

État de l'audit de sécurité

Un audit de sécurité complet a identifié des points à durcir : limitation de débit sur les points de terminaison, révocation des tokens JWT et rotation de la clé d'admin. Les modifications antidatées par des utilisateurs révoqués sont désormais empêchées par les reçus de témoin à temps de confiance (voir le modèle de contrôle d'accès). Les fondations cryptographiques (Ed25519, AES-256-GCM, RSA-OAEP) sont solides. Le durcissement opérationnel est en cours.

Conformité

Les contrôles techniques qui soutiennent la conformité

MindooDB fournit des briques cryptographiques qui répondent aux principales exigences techniques des cadres réglementaires courants. La conformité elle-même reste une responsabilité organisationnelle — MindooDB vous en donne les fondations techniques.

Intégré : audit & intégrité
  • ✅ Historique d'écriture complet (append-only)
  • ✅ Signatures cryptographiques (preuve de l'auteur)
  • ✅ Enregistrements infalsifiables (chaînés par empreintes)
  • ✅ Voyage dans le temps (reconstituer n'importe quel état)
Intégré : protection des données
  • ✅ Chiffrement de bout en bout (le serveur ne peut pas déchiffrer)
  • ✅ Contrôle d'accès fin (clés nommées)
  • ✅ Effacement coordonné des données (purgeDocHistory)
  • ⚙️ Journalisation des accès en lecture (à construire au niveau de l'app)

Ces contrôles soutiennent les programmes HIPAA (santé), SOX (finance), RGPD (protection des données) et PCI-DSS (paiements). Voir la documentation détaillée sur la conformité →

Le voir à l'œuvre
Haven - l'espace de travail bâti sur ce modèle de sécurité

MindooDB Haven est une PWA qui tourne dans le navigateur et met le même chiffrement de bout en bout, les mêmes apps en bac à sable et la même synchronisation local-first dans un espace de travail serein et multiplateforme. Essayez la bêta gratuite ou plongez dans les détails.