Beveiliging
Bankgrade-encryptie voor uw digitale leven
Zero-Knowledge-architectuur
ByteGuard is gebouwd op een Zero-Knowledge-beveiligingsmodel. We zien, openen of bewaren nooit uw encryptiesleutels.
- Hoofdwachtwoord: Uw persoonlijke sleutel om de app te ontgrendelen. Wordt nooit verzonden, nooit op afstand opgeslagen.
- Geheime sleutel (Secret Key): Een 12-woorden herstelzin (BIP39) gegenereerd bij het aanmaken van uw kluis. Gecombineerd met uw hoofdwachtwoord voor maximale beveiliging.
- Lokale sleutelafleiding: Argon2id met 64 MB geheugenkosten en 3 iteraties leidt de hoofdsleutel lokaal af. HKDF-SHA256 creëert de sleutelhiërarchie.
- Geen achterdeuren: Als u zowel uw hoofdwachtwoord als uw geheime sleutel verliest, kunnen wij uw gegevens niet herstellen. Dit is bewust ontworpen.
Encryptiedetails
Meerdere lagen encryptie beschermen elk gevoelig gegeven.
- Veldniveau-encryptie: Elk gevoelig veld (wachtwoorden, kaartnummers, API-sleutels) wordt individueel versleuteld met AES-256-GCM.
- Sleutelhiërarchie: Hoofdsleutel → Sleutelencryptiesleutel (KEK) → Dataencryptiesleutel (DEK). Elk item heeft zijn eigen DEK.
- Unieke IVs: Elke encryptiebewerking gebruikt een unieke initialisatievector, waardoor dezelfde platte tekst verschillende cijfertekst oplevert.
Gegevensopslag
Uw gegevens blijven op uw apparaat. Cloud-synchronisatie is optioneel en altijd versleuteld.
- Lokaal eerst: Alle gegevens worden opgeslagen in een versleutelde lokale database op uw apparaat.
- Optionele iCloud-synchronisatie: Indien ingeschakeld, worden gegevens op het apparaat versleuteld voordat ze via CloudKit naar uw privé iCloud-container worden geüpload.
- Biometrische bescherming: Face ID en Touch ID via Secure Enclave. Biometrische gegevens worden verwerkt door iOS, nooit toegankelijk voor de app.
Wat wij niet kunnen
Onze Zero-Knowledge-architectuur betekent:
- Wij kunnen uw opgeslagen gegevens niet bekijken, openen of ontsleutelen
- Wij kunnen uw hoofdwachtwoord niet resetten
- Wij kunnen uw kluis niet herstellen zonder uw geheime sleutel
- Wij kunnen uw gegevens met niemand delen — inclusief wetshandhaving
- Wij kunnen geen achterdeuren in de encryptie plaatsen
Apparaatbeveiliging-compatibiliteit
ByteGuard is ontworpen om naadloos samen te werken met de ingebouwde beveiligingsfuncties van Apple.
- Apple Lockdown Mode: Volledig compatibel met Apple's hoogste beveiligingsniveau. Alle functies — inclusief AutoFill, iCloud-synchronisatie en widgets — werken normaal wanneer de vergrendelingsmodus is ingeschakeld.
- Geen WebView-afhankelijkheid: ByteGuard gebruikt geen enkele webrenderingengine. Uw kluisgegevens worden nooit verwerkt via WebKit, waardoor een hele klasse browsergebaseerde aanvalsvectoren wordt geëlimineerd.
- Secure Enclave-integratie: Biometrische authenticatie wordt volledig afgehandeld door de iOS Secure Enclave. ByteGuard heeft nooit toegang tot biometrische gegevens en slaat deze ook niet op.
Device-Level Protection
The biometric quick-unlock boundary is maintained jointly by iOS Keychain and Secure Enclave. The application never holds any Face ID/Touch ID-derived key.
- iOS Keychain ACL: A copy of the Vault DEK is stored in Keychain with kSecAttrAccessibleWhenUnlockedThisDeviceOnly + kSecAccessControlBiometryCurrentSet. Unreadable when the device is locked or Face ID has not authenticated.
- Secure Enclave Takes Over: The Keychain entry is encrypted by a device key inside Secure Enclave. When the app calls SecItemCopyMatching, iOS triggers Face ID; on success SE decrypts and returns the plaintext DEK — the app never touches any SE key.
- Auto-Invalidation on Face ID Re-enrollment: biometryCurrentSet semantics: when the user removes/re-enrolls Face ID in system settings, iOS automatically deletes the Keychain entry. ByteGuard detects the invalidation at launch and forces Master Password re-entry.
- Strict Mode (No Fallback): If biometryCurrentSet is unavailable (simulators, no enrolled biometrics), the DEK cache simply fails — never falls back to a less-protected Keychain entry. Fallback would be weaker than not enabling Face ID at all and would violate user intent.
- Memory Zeroing (Vault DEK): On lock, suspension, or vault switch, the Vault DEK is overwritten three times (zero → random → zero) with a memory barrier defeating compiler optimization. Master Key / KEK are local variables inside the unlock function, released by Swift ARC (not explicitly zeroed). Argon2 internal buffers are zeroed by libsodium via sodium_memzero.
Download in de App Store