Beveiligingsarchitectuur

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.

01
Lokale versleuteling
Browser · uw sleutels
AMK → RSA-4096 + ML-KEM-768 → sleutel per bestand
Bewaart de eigen Account Master Key van de gebruiker, leidt bestandssleutels af en opent ze, voert alle AES-GCM-bewerkingen uit.
Vertrouwd
02
Tenantgrens
Geïsoleerde tenant-API + database
Versleutelde payloads · ondertekende deelrechten
Autoriseert verzoeken, slaat verpakte sleutels, deelrechten en de auditketen op.
Niet vertrouwd
03
EU-opslag
Versleutelde objectopslag
Eigen bucket · Duitsland / Finland
Slaat ondoorzichtige blokken cijfertekst op, geadresseerd met willekeurige identificaties.
Niet vertrouwd

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.

Wachtwoord (wordt nooit verzonden)
Account Master Key · per gebruiker · Argon2id
RSA-4096-sleutelpaar
ML-KEM-768-sleutelpaar
Verpakte bestandssleutel (hybride, per bestand)
AES-256-GCM bestandscijfertekst

Versleutelingsproces bij het uploaden

  1. 01
    OpschonenContent Disarm & Reconstruction verwijdert macro’s, scripts en ingesloten objecten in de browser.
  2. 02
    Bestandssleutel genererenEen 256-bits sleutel en 96-bits nonce uit de CSPRNG van het platform, per bestandsversie.
  3. 03
    In 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.
  4. 04
    De sleutel tweemaal verpakkenRSA-4096-OAEP en ML-KEM-768-encapsulatie, gecombineerd met HKDF.
  5. 05
    Uploaden en vastleggenCijfertekst gaat naar uw bucket; de tenant legt de verpakte sleutel, de versleutelde metadata-envelop en een auditvermelding vast.

Delen

Toegang verlenen verpakt de bestandssleutel opnieuw voor de publieke sleutels van de ontvanger, in de browser van de verzender. Het deelrecht wordt ondertekend met Ed25519 en gepind aan de sleutelvingerafdruk van de ontvanger, zodat een server die zijn eigen sleutel onderschuift een deelrecht oplevert dat de client weigert.

Browser van de verzenderBestandssleutel openen → opnieuw verpakken voor ontvanger → deelrecht ondertekenen (Ed25519)
ondertekend deelrecht
Browser van de ontvangerHandtekening en gepinde vingerafdruk verifiëren → openen → lokaal ontsleutelen

Dreigingsmodel

Wat dit ontwerp tegenhoudt, en wat niet.

DreigingMaatregelRestrisico
Inbraak in de opslagAlleen cijfertekst; sleutels nooit aanwezigLaag
Kwaadwillende insider bij NomadVaultGeen sleutelmateriaal in de tenant; manipulatiebestendige auditketenLaag
Opgenomen verkeer, later ontsleuteldHybride ML-KEM-768-verpakking vandaagLaag
Metadata-analyseVersleutelde metadata-enveloppen; groottes, timing, deelgraaf, toegangspatronen en versleutelde zoektokens blijven waarneembaarGedeeltelijk
Gecompromitteerd apparaat van de gebruikerPasskeys, MFA, sessiebeperking, intrekken van apparatenBuiten scope

Beheer en compliance

HostingDuitsland en Finland, datapaden uitsluitend in de EU
Back-upsVersleuteld, off-site, hetzelfde rechtsgebied
Beschikbaarheid99,5% doel per tenant, gepubliceerde statuspagina
CertificeringAVG-conform; op weg naar ISO 27001 en BSI C5

Documenten