Ga uit van gecompromitteerde servers
Dit is het beveiligingsmodel op platformniveau achter elke MindooDB-installatie — inclusief Haven Beveiliging & privacy. MindooDB is zo ontworpen dat opslag- en sync-infrastructuur niet vertrouwd hoeft te worden. Drie onafhankelijke versleutelingslagen beschermen de vertrouwelijkheid van gegevens. Cryptografische handtekeningen bewijzen wie iets schreef en verhinderen manipulatie. Zelfs een volledig gekraakte server levert alleen versleutelde gegevens en publieke sleutels op — geen leesbare gegevens, geen privésleutels, geen gebruikersnamen.
Drie onafhankelijke versleutelingslagen
Het sync-protocol van MindooDB stapelt de bescherming over meerdere lagen. Ook als één laag is gekraakt, blijven de andere de vertrouwelijkheid van gegevens beschermen. Dat is het architectonische hart van de beveiliging van MindooDB: je hoeft geen enkele losse laag te vertrouwen om veilig te zijn.
Voordat een vermelding de store bereikt, wordt haar payload met een symmetrische sleutel (AES-256-GCM) versleuteld. Die versleuteling hoort bij het datamodel, niet bij het transport. De server die de vermeldingen bewaart, kan de inhoud niet lezen — hij ziet alleen versleutelde bytes.
Antwoordt de server op een sync-verzoek, dan verpakt hij de payloads van de vermeldingen in een extra RSA-laag met de publieke sleutel van de vragende gebruiker. Zelfs wie het HTTP-antwoord onderschept, kan het zonder de privé-RSA-sleutel van de ontvanger niet ontsleutelen.
Alle communicatie loopt over TLS. Dat beschermt de metadata (vermeldings-ID's, tijdstempels, verzoekparameters) die de payload-lagen niet dekken. Samen sluiten de drie lagen de gegevens volledig af: opgeslagen, onderweg en op de verbinding.
Hoe vertrouwen ontstaat
Vertrouwen heeft in MindooDB precies één wortel: de Ed25519-ondertekeningssleutel van de beheerder. De beheerder ondertekent de directory-database, waarin de gebruikersregistraties staan. De publieke sleutel van elke gebruiker staat in een door de beheerder ondertekende directory-vermelding. Krijgt een client of server een documentwijziging binnen, dan toetst die de publieke sleutel van de ondertekenaar aan de directory — staat de sleutel er niet in, dan wordt de wijziging afgewezen. Authenticatie op de server is niet nodig; vertrouwen ontstaat uit cryptografisch bewijs.
Wat de server wel en niet ziet
Dit is het praktische gevolg van de zero-trust-architectuur. Een server (of elke tussenstap, ook relayknopen) verwerkt uitsluitend versleutelde gegevens en publieke informatie. Alles wat gevoelig is, blijft op de apparaten van de clients.
- Publieke ondertekeningssleutels (Ed25519)
- Publieke versleutelingssleutels (RSA-OAEP)
- Versleutelde blobs (AES-256-GCM)
- Metadata van vermeldingen (tijdstempels, content-hashes)
- Hashes van gebruikersnamen (SHA-256 — niet de namen zelf)
- Documentinhoud (end-to-end versleuteld)
- Gebruikersnamen (versleuteld met de RSA-sleutel van de admin)
- Privésleutels voor ondertekening of versleuteling
- Symmetrische versleutelingssleutels (tenant of benoemd)
- Gedeelde wachtwoorden (alleen out-of-band)
Toegangscontrole via versleuteling
MindooDB regelt toegangscontrole met versleutelingssleutels, niet met rechten op de server. Heb je de sleutel, dan kun je het document ontsleutelen. Heb je hem niet, dan is het document onleesbaar. Daarmee werkt toegangscontrole overal gelijk — of de gegevens op een server staan, op een peer-apparaat of op een relayknoop die ze niet kan lezen. Voor fijnmazige controle over schrijfbewerkingen — wie documenten mag aanmaken, wijzigen, verwijderen, snapshotten of wissen — is er de aparte pagina Toegangscontrole.
Alle documenten worden versleuteld met de AES-256-standaardsleutel van de tenant, tenzij een andere sleutel is opgegeven. Elke geregistreerde gebruiker krijgt die sleutel bij de onboarding. Geschikt voor algemene gegevens binnen de hele tenant.
Voor gevoelige documenten maak je een benoemde versleutelingssleutel aan en deel je die alleen met bevoegde gebruikers. Sleutels worden offline verdeeld (de versleutelde sleutel per e-mail, het wachtwoord telefonisch of persoonlijk) of via een beleidsregel zonder admin-inzage: wie de sleutel al heeft, pakt hem voor elke ontvanger in met diens persoonlijke publieke (RSA-)sleutel, zodat een beheerder hem kan doorgeven zonder hem ooit te lezen. Alleen wie de sleutel heeft, kan ontsleutelen.
Een speciale sleutel die uitsluitend de toegangscontrolevermeldingen van de directory versleutelt (gebruikersregistraties, intrekkingen, groepen). Servers controleren daarmee welke ondertekeningssleutels worden vertrouwd — zonder gebruikersnamen of bedrijfsgegevens te zien. Gebruikersnamen staan er als SHA-256-hashes in; de echte namen zijn versleuteld met de RSA-sleutel van de admin.
| Bewerking | Afgedwongen door |
|---|---|
| Gebruiker registreren | Admin-handtekening vereist (Ed25519) |
| Document aanmaken | Versleutelingssleutel nodig (standaard of benoemd) |
| Document wijzigen | Ondertekeningssleutel (geregistreerde gebruiker) + versleutelingssleutel nodig |
| Document lezen | Ontsleutelingssleutel nodig |
| Gebruiker intrekken | Admin-handtekening vereist; blokkeert sync en wijst volgende wijzigingen af |
Challenge-response-authenticatie en veilige onboarding
MindooDB gebruikt geen wachtwoorden of tokens op de server. De authenticatie berust op Ed25519-challenge-response: de server maakt een willekeurige challenge, de client ondertekent die met zijn privésleutel en de server toetst de handtekening aan de geregistreerde publieke sleutel. Dat bewijst de identiteit zonder geheimen te delen.
Elke sync-sessie begint met een challenge-response-handshake:
- De client stuurt zijn publieke ondertekeningssleutel naar de server
- De server zoekt de sleutel op in de directory en stuurt een willekeurige challenge
- De client ondertekent de challenge met zijn privésleutel
- De server toetst de handtekening, controleert of de gebruiker is ingetrokken en geeft een kortlevende JWT uit
Geen wachtwoorden of sessiedatabases op de server. Een ingetrokken gebruiker komt zelfs niet aan het begin van de authenticatie.
Nieuwe gebruikers komen erbij via een handshake in drie stappen waarbij privésleutels het apparaat nooit verlaten:
- Toetredingsverzoek — De nieuwe gebruiker maakt zijn sleutels lokaal aan en stelt een verzoek op dat alleen publieke sleutels bevat. Dat is veilig via elk kanaal te versturen.
- Goedkeuring door de beheerder — De beheerder registreert de gebruiker in de directory en versleutelt de symmetrische sleutels met een eenmalig deelwachtwoord.
- Uitwisseling via twee kanalen — Het toetredingsantwoord gaat per e-mail of chat; het deelwachtwoord komt apart telefonisch of persoonlijk.
Algoritmen en garanties
MindooDB gebruikt gevestigde, breed onderzochte cryptografische algoritmen. Geen eigen cryptografie. De keuzes wegen het beveiligingsniveau af tegen compatibiliteit op alle platformen (Node.js, browsers, React Native).
- Ondertekening: Ed25519 (128 bits beveiliging, elliptische kromme)
- Payload-versleuteling: AES-256-GCM (256 bits beveiliging)
- Transportversleuteling: RSA-OAEP met SHA-256 (3072-bits sleutels)
- Sleutelafleiding: PBKDF2 met een eigen salt per sleuteltype
- Token-ondertekening: HMAC-SHA256
- Hashing: SHA-256 (content-adressering, privacy van gebruikersnamen)
- Vertrouwelijkheid: AES-256-GCM-versleuteling — alleen wie de sleutel heeft, kan lezen
- Authenticiteit: Ed25519-handtekeningen — bewijzen wie een wijziging maakte
- Integriteit: Hash-ketening — manipulatie breekt de ketting en is op elk punt te zien
- Onweerlegbaarheid: Handtekeningen zijn niet na te maken — wie iets schreef, is te bewijzen
- Privacy: Gebruikersnamen gehasht en versleuteld — de server kan gebruikers niet herkennen
Waartegen het systeem beschermt
MindooDB gaat ervan uit dat servers, netwerkinfrastructuur en zelfs sommige peers gecompromitteerd of kwaadwillend kunnen zijn. Het beveiligingsmodel houdt de vertrouwelijkheid en integriteit van gegevens ook onder die omstandigheden overeind.
- Gekraakte server — Een aanvaller krijgt alleen versleutelde gegevens en publieke sleutels. Niets leesbaar, geen privésleutels, geen gebruikersnamen.
- Afluisteren van het netwerk — Drie versleutelingslagen beschermen de gegevens, ook als TLS is gekraakt.
- Onbevoegde wijzigingen — Elke wijziging is ondertekend; niet of verkeerd ondertekende wijzigingen worden afgewezen.
- Manipulatie — Hash-ketening maakt elke aanpassing zichtbaar.
- Toegang van ingetrokken gebruikers — Het intrekken werkt bij de challenge en bij de tokencontrole; de sync is meteen geblokkeerd.
- Meelezen bij het relay — Relayknopen bewaren en geven versleutelde vermeldingen door die ze niet kunnen ontsleutelen.
De inhoud van de payload is altijd versleuteld, maar een deel van de metadata is bewust zichtbaar voor de server. Dat is een doelbewuste trade-off: het sync-protocol heeft metadata nodig om vermeldingen af te stemmen.
- Zichtbaar: tijdstempels van vermeldingen, content-hashes, documentstructuur (hoeveel vermeldingen per document), toegangspatronen (wanneer gebruikers synchroniseren)
- Niet zichtbaar: documentinhoud, gebruikersnamen, versleutelingssleutels, inhoud van bijlagen
Content-hashes verraden wanneer twee vermeldingen identieke versleutelde gegevens bevatten (voor de deduplicatie). Dat is een aanvaarde trade-off voor efficiënte opslag.
Wat je moet weten
MindooDB is bètasoftware met een sterk cryptografisch fundament. Er is een uitgebreide beveiligingsaudit uitgevoerd die benoemt welke onderdelen voor productiegebruik nog steviger moeten. Wij denken dat openheid over grenzen meer vertrouwen wekt dan marketingbeloften.
Een gebruiker intrekken blokkeert alle verdere sync en wijst zijn volgende wijzigingen af. Gegevens die al naar zijn apparaat zijn gesynchroniseerd, blijven daar echter leesbaar — geen enkel systeem kan verwijdering garanderen op een apparaat dat nooit meer verbinding maakt. Beperk het risico: gebruik benoemde sleutels voor gevoelige documenten (kleiner bereik) en roteer sleutels als gebruikers vertrekken. Haven Enterprise voegt aan diezelfde governance-beleidsregels een admin-ondertekend wissen op afstand toe: de tenant verdwijnt van een gestolen of afgedankt apparaat zodra dat weer verbinding maakt.
Meerdere sleutels per gebruiker (ondertekening, versleuteling, benoemde symmetrische sleutels) moeten veilig worden verdeeld. Beperk het risico: één wachtwoord ontgrendelt alle sleutels via PBKDF2 met verschillende salts. De KeyBag biedt daarvoor één gezamenlijke sleutelopslag. De join-request/response-flow regelt de sleuteluitwisseling voor nieuwe gebruikers. Haven Enterprise automatiseert het werk daarna: admin-ondertekende beleidsregels voor sleuteldistributie geven sleutels aan gebruikers en groepen — en trekken ze weer in — per ontvanger ingepakt, en elke client stemt zijn KeyBag bij de volgende sync af.
Standaard kan de server niet in documentinhoud zoeken, omdat hij alleen versleutelde gegevens ziet. Alle query's lopen via de client met incrementele indexering. Vraagt jouw toepassing toch om verwerking op de server (bijvoorbeeld een online boekingssysteem of een openbare website), dan kun je het serverproces een ontsleutelingssleutel geven of een deel van de gegevens met hem delen. Dat is per installatie een bewuste architectuurkeuze — standaard geldt vertrouwelijkheid, met serveropslag alleen waar je die zelf aanzet.
Een uitgebreide beveiligingsaudit heeft benoemd wat steviger moet: rate limiting op de endpoints, het intrekken van JWT-tokens en rotatie van de admin-sleutel. Wijzigingen die ingetrokken gebruikers met terugwerkende kracht aanbrengen, worden inmiddels tegengehouden door getuigenbewijzen met vertrouwde tijd (zie het model van de toegangscontrole). Het cryptografische fundament (Ed25519, AES-256-GCM, RSA-OAEP) staat stevig. Het steviger maken van de operatie loopt.
Technische maatregelen die compliance ondersteunen
MindooDB levert cryptografische bouwstenen die de belangrijkste technische eisen van gangbare regelgeving afdekken. Compliance zelf blijft een organisatorische taak — MindooDB geeft je het technische fundament.
- ✅ Volledige schrijfgeschiedenis (append-only)
- ✅ Cryptografische handtekeningen (bewijs van auteurschap)
- ✅ Manipulatievrije vastlegging (hash-geketend)
- ✅ Tijdreizen (elke stand reconstrueren)
- ✅ End-to-end versleuteling (server kan niet ontsleutelen)
- ✅ Fijnmazige toegangscontrole (benoemde sleutels)
- ✅ Gecoördineerd wissen (
purgeDocHistory) - ⚙️ Leestoegang loggen (bouw je op app-niveau)
Deze maatregelen ondersteunen programma's volgens HIPAA (zorg), SOX (financieel), AVG (gegevensbescherming) en PCI-DSS (betalingen). Uitgebreide compliance-documentatie bekijken →
MindooDB Haven is een PWA in de browser die dezelfde end-to-end versleuteling, apps in een sandbox en local-first sync in één rustige werkruimte op elk platform brengt. Probeer de gratis bèta of lees je in de details in.