1. Ziel und Scope
VisuKey ist ein clientseitiger, zero-knowledge-orientierter Vault für Passwörter, Notizen und Dateien.
Kryptographische Kernfunktionen (Key-Derivation, Key-Wrapping, Ver- und Entschlüsselung) werden lokal ausgeführt.
- Galerie-Modus: deterministische Schlüsselableitung aus normalisiertem Bild (optional mit PIN).
- Kamera-Fuzzy-Modus: fehlertolerante Rekonstruktion über Embeddings + BCH-Fehlerkorrektur.
- Recovery-Modus: separates Recovery-Secret für den Notfallzugang.
2. Sicherheits- und Bedrohungsmodell
Schutzziele sind Vertraulichkeit, Integrität und Wiederherstellbarkeit ohne serverseitige Klartextkenntnis.
- Angreifer kann die Vault-Datei kopieren und offline analysieren.
- Angreifer kann ohne gültige Authentifizierungsdaten keinen VaultKey unwrappen.
- Out-of-Scope: vollständig kompromittiertes Endgerät mit Laufzeit-Memory-Dumps.
- Out-of-Scope: unsichere Nutzer-Backups im Klartext.
3. Kryptographische Bausteine
VaultKey (32 Byte, CSPRNG)
-> wrap mit MK_img
-> wrap mit MK_rec
MK_img = Argon2id(imgSecret, salt_img)
MK_rec = Argon2id(recoverySecret, salt_rec)
Vault-Payload = AES-256-GCM(ciphertext, aad)
- AES-256-GCM schützt Dateninhalte und Integrität (AEAD-Tag).
- AAD bindet Header-Metadaten kryptographisch an den Ciphertext.
- HKDF wird im Fuzzy-Flow für die deterministische Schlüsselableitung eingesetzt.
4. Authentifizierungsmodi
4.1 Galerie-Modus (deterministisch)
Identisches Bild + identische PIN führen zum gleichen imgSecret und damit zum gleichen MK_img.
4.2 Kamera-Fuzzy-Modus (fehlertolerant)
- Mehrere Enrollment-Bilder erzeugen robuste Embeddings.
- Stabile Bits werden per SNR-Analyse ausgewählt.
- BCH korrigiert Bitfehler bis zur definierten Korrekturkapazität t.
- Finale Sicherheitsebene: AEAD-Tag-Validierung beim Vault-Unlock.
5. Datenmodell und Vault-Format
Die Vault-Datei enthält ausschließlich notwendige Metadaten und verschlüsselte Nutzdaten.
- Header (Version, Zeit, Krypto-Metadaten)
- KDF-Parameter für Bild- und Recovery-Pfad
- Wrapped Keys (
img, rec)
- Optional:
fuzzy_auth Helper-Daten
- Verschlüsselter Vault-Blob (Ciphertext + Tag)
6. Laufzeitschutz und Betrieb
- Auto-Lock bei Inaktivität, Schlüsselmaterial wird aus dem RAM entfernt.
- Clipboard Auto-Clear für sensible Datenkopien.
- Audit-Log für sicherheitsrelevante Ereignisse (Unlock, Copy, Änderungen).
- Optionale dateibasierte Synchronisierung mit clientseitiger Verschlüsselung.
7. Grenzen und bekannte Risiken
- Gerätesicherheit bleibt ein zentraler Faktor.
- Schwache oder leicht reproduzierbare Bilder senken die effektive Sicherheit.
- Fuzzy-Modus benötigt qualitativ sauberes Enrollment.
- Security-Properties hängen von korrektem Parameter-Tuning ab.
8. Release- und Verifikationsprozess
- Signierte Release-Artefakte bereitstellen.
- SHA256-Checksumme für jedes Installationspaket veröffentlichen.
- Changelog mit sicherheitsrelevanten Änderungen pflegen.
- Dokumentierte Responsible-Disclosure-Kontaktadresse anbieten.
Responsible Disclosure: ruedi@kryentech.ch
1. Purpose and Scope
VisuKey is a client-side, zero-knowledge oriented vault for passwords, notes and files.
Core cryptographic operations are executed locally on the endpoint.
- Gallery mode: deterministic key derivation from a normalized image (optional PIN).
- Camera fuzzy mode: tolerant reconstruction via embeddings and BCH error correction.
- Recovery mode: separate recovery secret for emergency access.
2. Security and Threat Model
Primary objectives are confidentiality, integrity and recoverability without server-side plaintext access.
- Attacker may copy and analyze the vault file offline.
- Without valid authentication input, VaultKey unwrap is not feasible.
- Out-of-scope: fully compromised endpoint with runtime memory extraction.
- Out-of-scope: insecure plaintext backups by end users.
3. Cryptographic Primitives
VaultKey (32 bytes, CSPRNG)
-> wrapped by MK_img
-> wrapped by MK_rec
MK_img = Argon2id(imgSecret, salt_img)
MK_rec = Argon2id(recoverySecret, salt_rec)
Vault payload = AES-256-GCM(ciphertext, aad)
- AES-256-GCM protects confidentiality and integrity (AEAD tag).
- AAD binds critical header metadata to ciphertext.
- HKDF is used in the fuzzy flow for deterministic key material derivation.
4. Authentication Modes
4.1 Gallery mode (deterministic)
Same image + same PIN results in the same imgSecret and therefore the same MK_img.
4.2 Camera fuzzy mode (tolerant)
- Multiple enrollment captures produce robust embeddings.
- Stable bits are selected using SNR analysis.
- BCH corrects bit errors up to correction capability t.
- Final security layer: AEAD tag verification during unlock.
5. Data Model and Vault Format
The vault file stores only required metadata plus encrypted payloads.
- Header (version, timestamp, crypto metadata)
- KDF parameters for image and recovery paths
- Wrapped keys (
img, rec)
- Optional
fuzzy_auth helper data
- Encrypted vault blob (ciphertext + tag)
6. Runtime Security and Operations
- Auto-lock on inactivity, with in-memory key cleanup.
- Clipboard auto-clear for copied sensitive values.
- Audit log for security-relevant actions (unlock, copy, updates).
- Optional file-based synchronization with client-side encryption.
7. Limitations and Known Risks
- Endpoint security remains a critical dependency.
- Weak or easily reproducible images reduce effective security.
- Fuzzy mode depends on high-quality enrollment captures.
- Security properties depend on proper parameter tuning.
8. Release and Verification Process
- Ship signed release artifacts.
- Publish SHA256 checksums for each installer package.
- Maintain changelog entries for security-relevant updates.
- Provide a documented responsible disclosure contact.
Responsible disclosure: ruedi@kryentech.ch