Hoe NomadVault sleutels bij de server weghoudt
Deze pagina beschrijft de cryptografie die wij gebruiken, wat elk onderdeel wel en niet kan zien, en de dreigingen die dit ontwerp niet afdekt. Herzien in september 2026.
Vertrouwensmodel
Wij gaan ervan uit dat onze eigen infrastructuur gecompromitteerd kan raken. Het ontwerp plaatst daarom elke sleutel en elke bewerking op leesbare tekst in de client, en behandelt de tenant-API, de database en de objectopslag als niet-vertrouwde opslag van cijfertekst. Een beheerder met volledige databasetoegang krijgt bestandsgroottes, tijdstempels en verpakte sleutels, geen inhoud.
02 / 03 De server ontvangt cijfertekst, niet de inhoud van uw documenten. Metadata en toegangsgebeurtenissen blijven zichtbaar.
Wat de server wel en niet kan zien
Bestandsgroottes, MIME-types, tijdstempels en aantallen versies Mapstructuur en de deelgraaf: wie toegang heeft tot welk bestand of welke map, met welke rol Gebruikersidentiteiten, sessies en elke auditgebeurtenis Toegangspatronen: wie wat wanneer heeft geopend, geüpload of gedownload Versleutelde zoektokens: welke tokens in welk bestand voorkomen, hoe vaak, en welke bestanden bij een zoekopdracht pasten, nooit de woorden erachter
Bestandsinhoud Bestands- en mapnamen Notities en voorbeelden Enige privésleutel, bestandssleutel of zoeksleutel Uw wachtwoord
Sleutelhiërarchie
De keten begint bij de individuele gebruiker, niet bij de tenant. Elke gebruiker leidt in de browser met Argon2id een eigen Account Master Key af uit zijn wachtwoord; die ontgrendelt alleen de RSA-4096- en ML-KEM-768-sleutelparen van die gebruiker. Elk bestand heeft een eigen symmetrische sleutel, tweemaal verpakt aan die sleutelparen, klassiek en post-quantum, zodat een toekomstige breuk van alleen RSA geen inhoud blootlegt. Er is geen tenantbrede hoofdsleutel en geen beheerderssleutel: een beheerder aan wie een bestand niet is gedeeld, kan het niet ontsleutelen.
Versleutelingsproces bij het uploaden
- 01OpschonenContent Disarm & Reconstruction verwijdert macro’s, scripts en ingesloten objecten in de browser.
- 02Bestandssleutel genererenEen 256-bits sleutel en 96-bits nonce uit de CSPRNG van het platform, per bestandsversie.
- 03In blokken versleutelenAES-256-GCM over blokken van 10 MB, elk met een eigen nonce en het bloknummer als geauthenticeerde data, het laatste opgevuld tot vaste grootte; gestreamd terwijl het ontstaat.
- 04De sleutel tweemaal verpakkenRSA-4096-OAEP en ML-KEM-768-encapsulatie, gecombineerd met HKDF.
- 05Uploaden en vastleggenCijfertekst gaat naar uw bucket; de tenant legt de verpakte sleutel, de versleutelde metadata-envelop en een auditvermelding vast.
Dreigingsmodel
Wat dit ontwerp tegenhoudt, en wat niet.