Architectuur
Beveiliging & privacy, volledig
"Privé van opzet" is makkelijk op een homepage te zetten. Deze pagina legt uit hoe je kluis werkelijk versleuteld is, welke verzoeken de app doet, wat daarin zit en net zo belangrijk, wat er niet in zit.
Laatst bijgewerkt: 17 juli 2026
Het model in één zin
Alles wat je toevoegt wordt versleuteld op je eigen apparaat en verlaat het nooit. Er is geen server die je stack bewaart, geen accountdatabase en geen kopie in de cloud: niet als beleid, maar als architectuur. Er valt niets te buitmaken omdat er niets is. De keerzijde daarvan: als je je gegevens kwijtraakt, kan niemand je meer binnenlaten. Ik ook niet.
Versleuteling & sleutelafleiding
- De inhoud van je kluis (stukken, prijzen, notities, collecties) wordt opgeslagen als één met AES-256-GCM versleuteld bestand.
- Foto's worden apart versleuteld met AES-256-GCM onder dezelfde hoofdsleutel en op volle resolutie bewaard in IndexedDB. Ze worden nooit onversleuteld weggeschreven.
- De hoofdsleutel wordt nooit opgeslagen. Hij bestaat alleen in het geheugen zolang de kluis open is en verdwijnt zodra je vergrendelt.
- Wat er wel wordt opgeslagen is de hoofdsleutel, twee keer ingepakt: één keer met een sleutel afgeleid van je pincode, één keer met een sleutel afgeleid van je herstelwachtwoordzin. Beide afleidingen gebruiken PBKDF2-SHA-256 met een salt per gebruiker.
- De afleiding van de pincode is gebonden aan je gebruikersnaam en pincode samen, dus alleen een pincode (of de juiste pincode bij de verkeerde gebruikersnaam) opent niets.
- Er staat nergens een wachtwoord-hash. Een verkeerde pincode of wachtwoordzin wordt geweigerd omdat de authenticatietag van AES-GCM niet klopt, niet omdat een opgeslagen hash niet matcht.
Wat je apparaat verlaat
De volledige lijst. Elk verzoek is alleen-lezen, en geen ervan draagt je bezit, je foto's, je notities, een account of een token mee, want dat bestaat allemaal niet aan de serverkant.
| Verzoek | Waarom | Wat het verstuurt |
|---|---|---|
/assets/spot.json | Actuele goud- & zilverprijs | Niets behalve het verzoek zelf |
/assets/spot-history-daily.json | De historie van de marktgrafiek | Niets behalve het verzoek zelf |
/api/announcements | Af en toe een mededeling in de app | Niets behalve het verzoek zelf |
/api/welcome | Welkomstbericht bij ontgrendelen | Niets behalve het verzoek zelf |
api.github.com (Windows) | Controleren op een update | Niets behalve het verzoek zelf |
De eerste vier gaan naar hollandia.the-vault.vip. In de apps zitten de merklettertypen lokaal ingebouwd. De app doet bij het opstarten geen enkel lettertypeverzoek aan Google of een andere derde partij.
Het eerlijke deel: een verzoek blijft een verzoek. Als je app om prijzen vraagt, ziet mijn server (en Cloudflare ervoor, en GitHub bij Windows-updates) het IP-adres waarmee je verbindt, precies zoals bij elk willekeurig websitebezoek. Dat is gewone verbindingsmetadata, bewaard voor beveiliging en storingzoeken, niet gebruikt om iemand te profileren. Je stack is dus privé en geen account koppelt hem aan jou, maar "een apparaat op deze verbinding vroeg om prijzen" is niet onzichtbaar. Wie volledige anonimiteit belooft voor een app die live gegevens laadt, verkoopt je iets.
Wil je ook je IP-adres verbergen? Gebruik de app achter een VPN die je vertrouwt. Het verandert niets aan wat de app verstuurt, maar je verbinding toont dan het adres van de VPN in plaats van je eigen adres. Optioneel. De kluis is ook zonder VPN al privé.
Waar de app niet kan komen
- Een strikte Content-Security-Policy beperkt netwerktoegang tot alleen
selfenhollandia.the-vault.vip. - Op Windows heeft de interface zelf helemaal geen netwerktoegang. Elk uitgaand verzoek wordt gedaan door het hoofdproces van de app, alleen naar toegestane hosts, en de antwoorden zijn begrensd in omvang.
- Geen analytics, geen telemetrie, geen advertenties, geen scripts van derden. Nergens.
Beveiliging per platform
Windows
- Beveiliging tegen schermopname: schermafbeeldingen en schermopnames van het kluisvenster komen er zwart uit.
- Sleutelbinding via DPAPI: sleutelmateriaal wordt extra ingepakt op je Windows-gebruiker en je apparaat, dus sleutels die naar een andere computer zijn gekopieerd zijn daar waardeloos.
- Automatisch vergrendelen zodra Windows vergrendelt of in slaapstand gaat, plus een tijd van inactiviteit die je zelf instelt (5–60 minuten).
- Ontwikkelaarstools uitgeschakeld in releasebuilds; navigatie en pop-ups volledig geblokkeerd.
Android
- FLAG_SECURE: blokkeert schermafbeeldingen, schermopnames en voorbeelden in het appoverzicht.
- Uitgesloten van cloud- en adb-back-ups, zodat de kluis niet in een Google-back-up kan belanden.
- Netwerkverkeer alleen via HTTPS; WebView-foutopsporing uit; root- en manipulatiedetectie als waarschuwing vooraf.
- Vergrendelen op de achtergrond: de kluis sluit zodra de app naar de achtergrond gaat.
- Ontgrendelen met biometrie (optioneel, zelf aanzetten). Een eerdere versie werd bewust met deze functie uitgeschakeld geleverd: uit een codereview bleek dat de opgeslagen sleutel niet echt gebonden was aan de biometrische prompt van de hardware. Dat is nu op de juiste manier opgelost: de pincode zit achter een sleutel in de hardware-Keystore die bij elk gebruik een verse vingerafdruk vereist, afgedwongen door de beveiligingschip zelf en niet door de code van de app. Een nieuwe vingerafdruk toevoegen op het apparaat vernietigt de sleutel en de app valt terug op de pincode, die altijd blijft werken.
Back-ups & herstel
- Bij export krijg je één
.hnv-bestand met de versleutelde kluis, de ingepakte sleutels en je al versleutelde foto's. Het wordt alleen gemaakt als je erom vraagt en het gaat waar jij het neerzet. - Import is afgeschermd: een gemanipuleerd of in elkaar geknutseld
.hnv-bestand kan geen willekeurige gegevens de app in duwen; het bestand wordt eerst op structuur gecontroleerd. - Pincode vergeten? Met je herstelwachtwoordzin kom je weer binnen en stel je een nieuwe in.
- Allebei kwijt? Dan is de kluis niet meer te openen. Er is geen hoofdsleutel, geen herstelmail, geen achterdeur. Dat is het ontwerp.
Behandel de export als de kluis zelf. Hij is versleuteld, dus een verloren usb-stick is geen open boek, maar lees hieronder eerst de beperking van de pincode voordat je hem in een gedeelde cloudmap zet.
Updates
Op Windows kijkt de app bij GitHub Releases of er een nieuwere versie is. Er wordt niets gedownload tot jij op de knop drukt, en de SHA-512 van het installatiebestand wordt vóór installatie gecontroleerd tegen het ondertekende releasemanifest, zodat een gemanipuleerde download wordt geweigerd. Updaten raakt je kluisgegevens nooit aan. Je kunt het installatiebestand ook zelf controleren: de downloadpagina controleert de vingerafdruk van het bestand lokaal in je browser.
Op Android komen updates binnen via Google Play, net als bij elke andere app.
Dreigingsmodel
- Je laptop of telefoon raakt kwijt of wordt gestolen: zonder je gegevens is de kluis een onleesbaar bestand
- Iemand maakt een kopie van je schijf of van de opslag van de app
- Een server of clouddienst wordt gekraakt: er is geen kopie van je stack om mee te nemen
- Een nieuwsgierige cloudsync die bestanden opslurpt
- Meekijken via schermafbeeldingen, schermdelen of het appoverzicht
- Een vijandig of gekaapt prijseindpunt dat de app rommel probeert te voeren
- Malware, een keylogger of een tool voor toegang op afstand op je apparaat terwijl de kluis open staat
- Iemand die je gebruikersnaam, pincode en wachtwoordzin kent
- Een gekraakt of geroot besturingssysteem
- Iemand die je dwingt hem te openen
- Je eigen back-upbestand dat ergens slordig is neergezet
- Meekijkers op het netwerk die zien dát er een verzoek is gedaan (niet wat erin zit)
Eerlijke beperkingen
De dingen die een verkooppagina zou weglaten.
- Een pincode van 6 cijfers is een licht slot. Het is een gemak om de app te openen op een apparaat dat je toch al beheert. Maar omdat je geëxporteerde back-up ook met die pincode te openen is, kan iemand die je back-upbestand heeft offline in zijn eigen tempo alle miljoen combinaties proberen. De wachtwoordzin is de sterke factor, de pincode niet. Bewaar exports op een privéplek en maak van je herstelwachtwoordzin een echte.
- Het installatiebestand is niet ondertekend met een codecertificaat. Windows zegt dan "Onbekende uitgever". Zo'n certificaat kost geld dat dit project nog niet heeft. Er is niets mis met het bestand, maar je hoeft mij niet op mijn woord te geloven, en daarom bestaat de vingerafdrukcontrole.
- Er is geen audit gedaan door een professioneel beveiligingsbedrijf. De code is herhaaldelijk nagelopen, ook door verschillende onafhankelijke AI-beveiligingsreviews, en echte problemen die daaruit kwamen zijn opgelost. Dat is niet hetzelfde als een betaalde audit door mensen, en ik ga niet doen alsof.
- Het is gebouwd met hulp van AI. Ik ben een stacker, geen professionele ontwikkelaar. De code is geschreven met Claude onder mijn aansturing; elke beslissing, en dit beleid, is van mij. Dat zeg ik liever gewoon dan te suggereren dat er een team is dat niet bestaat.
- Het is bètasoftware. Houd back-ups. Niet omdat ik verwacht je gegevens kwijt te raken, maar omdat je nooit iemand zo veel zou moeten hoeven vertrouwen. Mij ook niet.
Iets gevonden?
Zie je een beveiligingsprobleem, mail dan naar [email protected]. Op echte meldingen komt een echt antwoord, en een oplossing als dat nodig is. Geen advocaten, geen kastje naar de muur.
Meer antwoorden in gewone taal staan op de pagina Vragen & Antwoorden; het formele gegevensbeleid is het privacybeleid.
