The security model

How Skelett protects your data

No marketing in this page — just what actually happens to your bytes. If anything here is unclear or looks wrong, email us and we'll answer straight.

Cipher
AES-256-GCM, fresh random nonce per encryption
Key derivation
PBKDF2-SHA256 × 310,000 iterations
Salt
32 bytes, system CSPRNG, unique per vault
Password check
SHA-256 of the derived key — one-way verifier
Key at rest
Never. Memory only, only while unlocked
Sync transport
Your private iCloud (CloudKit) — ciphertext only
Developer servers
None. Zero. There is no backend

01From master password to vault key

When you create your vault, Skelett generates a random 32-byte salt and stretches your master password through PBKDF2-SHA256 with 310,000 iterations into a 256-bit AES key. The password itself is never written anywhere — not on disk, not in the keychain, not over the network.

To check future unlocks, Skelett stores only a one-way verifier: the SHA-256 hash of the derived key. Even someone who reads it out of the keychain can't reverse it into your key or your password — the cheapest attack it allows is guessing passwords one by one, each guess costing a full 310,000-round derivation.

02What gets encrypted

Everything sensitive, field by field, before it touches disk: passwords, passkey private keys, 2FA secrets, card numbers and CVVs, identity details, secure notes, and attachment files. Each encryption uses AES-256-GCM with a fresh random nonce, so identical values never produce identical ciphertext, and any tampering fails authentication loudly.

Details that aren't secrets — item titles, usernames, site URLs — stay searchable so the app is usable while locked-at-rest. Your secrets never are.

03The key's life

04Face ID, precisely

If you enable biometric unlock, the derived key is stored in a keychain item gated by biometryCurrentSet and WhenPasscodeSetThisDeviceOnly — meaning: this device only, never synced, and invalidated automatically if the device's biometric enrollment changes. Turning the toggle off deletes that key immediately. Your biometric data itself lives in the Secure Enclave; Skelett never sees it.

05Sync without a company cloud

Skelett syncs through the CloudKit private database of your own Apple ID. What leaves the device is ciphertext — the records are sealed with your vault key before they go anywhere. We operate no servers, so there is no Skelett database to breach, no employee who could peek, and nothing to hand over.

The salt and verifier travel via iCloud Keychain, so a new iPhone needs exactly two things: your iCloud sign-in, and your master password. If you enable Apple's Advanced Data Protection, your iCloud layer becomes end-to-end encrypted too.

06AutoFill, without leaks

07Small things that add up

08What Skelett can't protect you from

Honesty section. No password manager can save you from everything:

Found a vulnerability? Please report it privately to skelett@lumira.app before disclosing publicly. Security reports get answered first and fast.