Beveiliging
Wiskunde, geen beleid.
De meeste wachtwoordbeheerders zeggen "we zullen je gegevens nooit lezen." Clavitor's architectuur betekent dat we dat niet kunnen. Jouw vingerafdruk, gezicht of beveiligingssleutel genereert versleutelingssleutels die nooit op een server bestaan. Wij bewaren de kluis. Alleen jij hebt de sleutel.
Drie dingen maken dit mogelijk.
01 — Veld
Versleuteling per veld
Elk veld heeft zijn eigen versleutelingsniveau. Jouw API-sleutel is leesbaar door de AI-agent die hem nodig heeft; je creditcard in dezelfde vermelding niet. Dezelfde record, andere toegang.
02 — Hardware
Hardwaresleutels
Jouw meest gevoelige velden worden versleuteld met een sleutel die is afgeleid van je apparaat — vingerafdruk, gezicht of beveiligingssleutel. De sleutel wordt berekend in je browser. Hij verlaat het apparaat nooit.
03 — Afstand
Buiten bereik
De kluis draait op aparte infrastructuur die je AI-agent niet kan aanraken. Inloggegevens worden vrijgegeven via een beperkte API, per AI-agent. Niets op je laptop. Niets in je .env-bestand.
Tier 1 — Vault encryption
Alles is versleuteld in rust.
Every record in your vault — every field, every entry, every byte — is encrypted at rest with AES-256-GCM. The encryption key is 8 bytes, derived from a 32-byte master secret that was randomly generated when your vault was created. That master secret is never stored on disk. It exists only inside a WL3 file, wrapped with the output of your hardware key.
Als iemand het kluisbestand steelt — een gestolen back-up, een gecompromitteerde host, een kwaadwillende sysadmin — krijgen ze cijfertekst. Titels van vermeldingen, gebruikersnamen, wachtwoorden, kaarten, notities: allemaal versleuteld. De 8-byte sleutel is sterk genoeg dat brute-force onpraktisch is, en zelfs dan zijn de velden binnenin opnieuw versleuteld op hogere versleutelingsniveaus.
Dit is de basislijn. Elke wachtwoordbeheerder versleutelt in rust. Wat ertoe doet, is wat er boven deze lijn gebeurt.
Tier 2 — Credential encryption
Je AI-agenten kunnen inloggegevens lezen. Niets anders.
Boven de kluislaag is elk inloggegevensveld — API-sleutels, wachtwoorden, TOTP-seeds, OAuth-tokens, SSH-sleutels — individueel versleuteld met zijn eigen afgeleide sleutel. De versleutelingssleutel is 16 bytes van volledige entropie. Computationeel onbreekbaar.
Je AI-agenten ontvangen deze sleutel zodat ze hun werk kunnen doen. Dat is opzettelijk — een AI-agent die je code implementeert, heeft je SSH-sleutel nodig. Maar de sleutel komt met vier lagen van verdediging die bepalen wat ermee gebeurt:
Beperkte tokens. Elke AI-agent krijgt een token dat toegang geeft tot specifieke vermeldingen. Je deploy-agent ziet je SSH-sleutel en je AWS-inloggegevens. Hij ziet je Stripe-sleutel, je e-mailwachtwoord of de vermeldingen van je collega niet. Hij kan geen inloggegevens buiten zijn bereik opsommen, doorbladeren, zoeken of ontdekken. Hij krijgt wat hem is toegewezen en kan niet vinden wat hij niet heeft.
Afstand. Je kluis staat niet op je laptop. Hij draait op aparte infrastructuur die je AI-agent niet kan aanraken. De AI-agent communiceert via een beperkte API die bedient of weigert — er is geen bestandssysteem om te lezen, geen procesgeheugen om te inspecteren, geen lokale cache om te plunderen. Als de kluis op dezelfde machine als de AI-agent zou staan, zou een gecompromitteerde skill het systeem kunnen binnendringen en extraheren wat het wil. Afstand elimineert die optie volledig.
Rate limiting. Een AI-agent die meer dan drie unieke inloggegevens per minuut, of tien per uur, benadert, wordt vertraagd. Een tweede overtreding binnen twee uur triggert een harde vergrendeling — de AI-agent wordt bevroren en vereist je hardwaresleutel om te ontgrendelen. Een normale AI-agent heeft twee of drie inloggegevens nodig. Een AI-agent die er tien leest, is ofwel verkeerd geconfigureerd of gecompromitteerd. Hoe dan ook, hij stopt.
IP-whitelisting. Elke AI-agent token is gebonden aan een bron-IP bij het eerste contact. Een gestolen token die vanaf een ander IP wordt gebruikt, wordt geweigerd op de middleware-laag voordat enige handler wordt uitgevoerd. De aanvaller heeft de sleutel, maar kan deze nergens anders gebruiken dan vanaf de machine waaraan hij is uitgegeven.
Het resultaat: de impact van een gecompromitteerde AI-agent is beperkt tot zijn bereik, vanaf zijn IP, met een snelheid die vergrendeling triggert voordat zinvolle exfiltratie kan plaatsvinden. Je andere AI-agenten, je andere inloggegevens en je identiteitsvelden blijven onaangetast.
Tier 3 — Identity encryption
Je meest gevoelige gegevens worden versleuteld met je apparaat. Wij kunnen ze niet lezen.
Creditcards, CVV, paspoortnummers, BSN, herstelcodes, privénotities, ondertekeningssleutels — dit zijn identiteitsvelden. Ze worden versleuteld met een 32-byte sleutel die willekeurig werd gegenereerd toen je kluis werd aangemaakt. Jij kent deze sleutel niet. Wij hebben hem niet. Hij heeft nooit op een server bestaan.
The key lives inside a WL3 file, wrapped with the 32-byte output of your hardware key's PRF extension (WebAuthn PRF). To unwrap it, you need the physical device — your fingerprint reader, your face sensor, or your YubiKey. The unwrapping happens in your browser. The plaintext key exists in browser memory for the duration of one operation, then it's gone.
Geen enkele AI-agent ontvangt deze sleutel. Geen enkele API-endpoint levert hem. Geen enkel server-side proces kan hem afleiden. Identiteitsvelden zijn cijfertekst op elke server, in elke back-up, in elk replicatiedoel, op elk moment. Een inbreuk op onze infrastructuur — totaal, compleet, elke byte geëxfiltreerd — levert cijfertekst op voor elk identiteitsveld in elke kluis. De ontsleutelingssleutel zit niet in de geëxfiltreerde gegevens. Dat kan niet, want hij was er nooit.
Wij kunnen je identiteitsvelden niet ontsleutelen. We kunnen niet gedwongen worden een sleutel te produceren die we niet hebben. Dit is geen beleidsbelofte. Het is een wiskundige eigenschap van het systeem.
Niemand anders dan jij heeft toegang
En er is geen master wachtwoord.
Er is niets te vergeten, niets om te phishen, niets om te kraken bij een inbreuk. Je apparaat — vingerafdruk, gezicht of beveiligingssleutel — is het enige pad naar binnen. Elke verbinding is TLS 1.3 met moderne ciphers en HSTS. Inloggegevens worden vrijgegeven aan beperkte AI-agent tokens via beperkte API-endpoints, nooit gelogd. Zelfs onze AI-ondersteuning kan je inloggegevens niet zien — dezelfde versleuteling die je geheimen voor ons verbergt, verbergt ze ook voor onze ondersteuningstools.
Dreigingsmodel
Waar we ons tegen verdedigen.
Elk platform voor inloggegevens wordt geconfronteerd met dezelfde aanvalsoppervlakte. Hier is hoe Clavitor is ontworpen tegen elk ervan.
| Dreiging | Hoe we verdedigen | Uitkomst |
|---|---|---|
| Phishing van inloggegevens | Gebruikers kennen hun wachtwoorden niet (32-byte willekeurig, nooit weergegeven). De extensie vult alleen in bij URL-match. De gebruiker kan niet typen wat hij niet weet. | Structureel geblokkeerd |
| OTP / 2FA phishing | TOTP leeft in de kluis, beperkt tot het echte domein. Verkeerd domein — geen code. Dezelfde verdediging als het wachtwoord. | Structureel geblokkeerd |
| Serverinbreuk | Identiteitsvelden worden versleuteld met hardware-afgeleide sleutels die wij nooit bezitten. Inloggegevensvelden roteren automatisch — gelekte platte tekst vervalt binnen enkele uren. | Schade beperkt |
| Gecompromitteerde AI-agent | Elke AI-agent heeft een beperkt token. Compromittering legt alleen het bereik van de AI-agent bloot — niet je volledige kluis. | Impact beperkt |
| Malware op eindpunt | Kluis is extern, niet lokaal. Sessietokens zijn tijdgebonden. WebAuthn-uitdagingen zijn oorsprong-gebonden — malware kan niet namens de gebruiker ondertekenen. | Gemitigeerd |
| Insideraanval | Identiteitsvelden zijn wiskundig ontoegankelijk voor ons. We kunnen geen platte tekst produceren onder een dagvaarding. | Buiten ons bereik |
Vertrouw het platform, niet alleen de cryptografie.
Versleuteling is slechts één van de drie garanties. De andere twee gaan over wat er gebeurt als iets misgaat — de service, of je eigen toegang ertoe.
Veerkracht — de service blijft serveren
We vroegen wat er gebeurt als elke laag faalt — cloud, DNS, registrar, e-mail, onze eigen software. De architectuur is zo ontworpen dat het antwoord altijd hetzelfde is: de kluis blijft serveren. De eerlijke dreigingslijst →
Herstel — je blijft binnen
Verlies je hardwaresleutel en je komt er nog steeds in — via een split-knowledge code aan jouw kant, een herstelanker aan onze kant, en een Zoom-gesprek met verificatiemateriaal dat jij hebt gekozen. Geen e-mailreset, geen SMS, geen beveiligingsvragen. Hoe herstel werkt →
Lees de diepere duiken.
Voor het technische publiek: cryptografische details, dreigingsmodel-analyses en een open uitnodiging om te vinden wat we hebben gemist.