Beveiligingsmodel

Precies wat Aevumex versleutelt, hoe de sleutels werken, welke gegevens onze server wél ziet, wat wij niet kunnen en waar de grenzen van de zero-knowledge-belofte liggen. Geschreven om na te rekenen, niet om te overtuigen.

Laatst bijgewerkt: 19 september 2026 · geldt voor app-versie 0.1.4 en hoger

Dit document beschrijft eerlijk wat de app doet met je gegevens. Het is bedoeld voor mensen die "zero-knowledge" niet op ons woord willen geloven. Waar iets een grens of een open punt is, staat dat erbij.

In één alinea

Je kluis (elke munt, baar, aankoopprijs, bon en notitie) wordt op je toestel versleuteld met een sleutel die alleen op je toestel bestaat en die uit je herstelzin is afgeleid. Onze server bewaart daarvan uitsluitend versleutelde blokken en kan ze niet lezen. Wat de server wél in klare tekst ziet: je e-mailadres, het aantal kluisitems, je prijsalerts, en alles wat je op de marktplaats plaatst of in een chat schrijft. Er is geen tracking, geen advertentienetwerk en geen crashrapportage. Er is óók nog geen onafhankelijke audit.

Wat versleuteld is

  • Elk kluisitem als één blok: metaal, gewicht en gehalte, aantal, aankoopprijs, -datum en -tijd, notities, serienummers, opslaglocatie, verkoopgegevens en de lijst van bonnen. De server ziet van een item alleen het versleutelde blok, een versienummer en tijdstippen.
  • Aankoopbonnen (foto's) worden als apart versleuteld bestand opgeslagen, lokaal en, als je ingelogd bent, in een privé-opslag op de server. Nooit als leesbare foto.
  • De lokale cache op je toestel (koersen, voorkeuren, de laatst geladen kluis) staat in een versleutelde database waarvan de sleutel in de sleutelhanger van het besturingssysteem ligt.

Hoe de sleutels werken

  1. Bij het aanmaken van je kluis genereert de app een herstelzin van 12 woorden (BIP39, 128 bit willekeur). Die zin wordt nergens opgeslagen; alleen jij hebt hem.
  2. Uit de zin wordt volgens de BIP39-standaard (PBKDF2) een seed berekend, en daaruit met HKDF-SHA256 de hoofdsleutel van 256 bit. Dezelfde zin geeft altijd dezelfde sleutel, dus met de zin alleen kun je op een nieuw toestel alles terughalen.
  3. De hoofdsleutel staat op je toestel in de iOS Keychain of Android Keystore, gemarkeerd als "alleen dit toestel" (hij gaat niet mee in een back-up) en, als je biometrie aanzet, alleen vrij te geven na Face ID, Touch ID of een vingerafdruk. Op Android telt alleen biometrie van de hoogste klasse; gezichtsherkenning van lagere klasse wordt geweigerd in plaats van stilzwijgend afgezwakt.
  4. Je pincode (6 tot 8 cijfers) ontgrendelt alleen de app. Hij wordt gehasht met Argon2id en is geen onderdeel van de encryptie: wie de server hackt, heeft aan de pincode niets, en wie de pincode raadt, heeft de sleutel nog niet.
  5. Elk item wordt versleuteld met AES-256-GCM, met een unieke nonce en met het item-id en je account-id als extra geauthenticeerde gegevens. Een blok van het ene account kan dus niet onder een ander account of ander item worden gezet zonder dat de ontsleuteling faalt.
  6. De sleutel verlaat je toestel nooit. De app heeft geen functie om hem naar ons te sturen, en de server heeft geen tabel om hem in te bewaren.

Wat de server wél ziet

Zero-knowledge geldt voor de kluis. Andere functies werken alleen als de server iets weet. Dit is de volledige lijst.

GegevenZichtbaar voor onsWaarom
E-mailadres, inlogmomenten, of je via Apple of Google inlogtJaAccount en aanmelding
Aantal kluisitems, wanneer ze zijn aangemaakt of gewijzigd, grootte van elk versleuteld blokJa (alleen metadata)Synchronisatie en de limiet van vijf items in de gratis versie
Inhoud van kluisitems en bonnenNeeVersleuteld op het toestel
Prijsalerts: metaal, drempelkoers, richtingJa, in klare tekstDe server controleert elke minuut of een drempel is geraakt en stuurt de push. Een portefeuille-alert (bijvoorbeeld "waarschuw bij € 10.000") wordt op je toestel omgerekend naar één drempelkoers; de server ziet die koers en het metaal, niet je bezit
Marktplaats: advertenties, biedingen, chatberichten, beoordelingen, meldingen, blokkades, opgeslagen zoekopdrachtenJa, in klare tekstBewust: melden en blokkeren, moderatie en verplichtingen richting de app stores werken niet op versleutelde inhoud. Zet nooit iets in een advertentie of chat dat je niet aan ons zou willen vertellen
Pushtoken van je toestel en de taal van de appJaMeldingen versturen in jouw taal
Abonnementsstatus (Pro of niet), transactie-id van Apple of GoogleJa, via RevenueCatPro-functies vrijgeven. Wij zien geen betaalgegevens
Titel van een advertentie waarvoor je een AI-illustratie laat makenJa, doorgestuurd naar Google GeminiAlleen op de marktplaats; kluisitems krijgen nooit een serverbeeld
Gebruiksstatistieken, apparaat-identifiers, crashrapporten, advertentie-id'sNeeDe app bevat geen analytics-, advertentie- of crashrapportage-SDK

Koersen, historie en nieuws haalt de app op uit dezelfde publieke tabellen die deze website gebruikt; die verzoeken bevatten geen gegevens over je bezit.

Wat wij niet kunnen

  • Je kluis lezen, ook niet op verzoek van jou, een erfgenaam of een autoriteit. We kunnen alleen versleutelde blokken overhandigen.
  • Je herstelzin terughalen of je pincode resetten. Zin kwijt én toestel kwijt betekent: kluis kwijt. Daarom vraagt de app je de zin op te schrijven vóór er iets in de kluis staat.
  • Een item herstellen dat je hebt verwijderd nadat de synchronisatie is doorgevoerd.

Waar de belofte ophoudt

Dit zijn de grenzen die je moet kennen om de belofte op waarde te schatten.

  • Je vertrouwt de app-code. De app ontsleutelt je kluis op je toestel, dus code die wij verspreiden zou dat ook kunnen misbruiken. Dat geldt voor elke app met encryptie op het toestel. Wat wij daaraan doen: de kluis wordt uitsluitend op je eigen toestel ontsleuteld en de sleutel verlaat het toestel nooit, dus ook een kwaadaardige update kan niets ophalen wat op onze servers ligt. Wat ontbreekt: ondertekende over-the-air-updates, en reproduceerbare builds waarmee je zelf kunt nagaan dat de binaire app overeenkomt met de broncode. Dat laatste is op iOS praktisch niet haalbaar. Dat is op iOS praktisch niet haalbaar.
  • Metadata verraadt iets. Uit het aantal items en de drempels van prijsalerts kan iemand met toegang tot de database afleiden dat je edelmetaal bezit en ongeveer welk metaal het zwaarst weegt. Niet hoeveel, niet welke munten.
  • Je toestel is de grens. Een ontgrendeld toestel in verkeerde handen, een schermopname, malware op een gejailbreakt of geroot toestel, of iemand die over je schouder de herstelzin leest: daar beschermt encryptie niet tegen. De app vergrendelt automatisch na de door jou gekozen tijd en verbergt bedragen op verzoek.
  • Geen onafhankelijke audit. De sleutellogica is geïsoleerd en volledig getest, maar nog niet door een externe partij beoordeeld. We noemen de app daarom nergens "geaudit" of "geverifieerd". Zodra dat wel gebeurt, staat het rapport op deze pagina.
  • Standaardbouwstenen, geen eigen crypto. AES-GCM, HKDF, Argon2 en BIP39 komen uit de bibliotheken van noble en scure, die zelf geaudit zijn. Wij hebben geen eigen algoritmen bedacht.

Server en infrastructuur

De backend draait op Supabase (PostgreSQL, regio EU-West, Ierland) met rijniveau-beveiliging: elke tabel heeft regels die afdwingen dat een account alleen zijn eigen rijen kan lezen en schrijven, en limieten zoals "vijf items gratis" worden in de database afgedwongen, niet alleen in de app. Koersen komen van metals.dev; de API-sleutel daarvoor staat alleen op de server. Deze website leest koersen met een publieke, alleen-lezen sleutel en zet geen cookies.

Een kwetsbaarheid melden

Gevonden wat hierboven niet klopt, of een lek? Mail support@aevumex.com (ook vermeld in security.txt). We bevestigen binnen vijf werkdagen, houden je op de hoogte en ondernemen geen juridische stappen tegen wie te goeder trouw meldt, geen gegevens van anderen inziet en ons tijd geeft om te herstellen. Een beloningsprogramma is er nog niet.

Wijzigingen aan dit document

  • 19 september 2026: eerste versie. security.txt gepubliceerd.
  • 21 september 2026: de claim over ondertekende over-the-air-updates is ingetrokken. De maatregel was wel ingericht maar is nooit actief geworden in een uitgeleverde app: geen enkele update is ondertekend en geen enkele geïnstalleerde versie controleert handtekeningen. Wat er stond klopte dus niet en is hier verwijderd.