Security Model | TZUR Wallet
Non-Custodial by Design
TZUR is fully non-custodial on every platform. Your private keys are never stored on our servers, and TZUR has no ability to access, freeze, or move your funds. There are no accounts, no cloud storage of wallet data, and no server-side record of your holdings. Your keys exist only on your device. If TZUR's servers disappeared tomorrow, your Bitcoin would remain fully accessible: you can recover your wallet from your recovery phrase in any BIP-39 compatible wallet. This is self-custody in its truest form: you hold the keys, you own the Bitcoin.
Open Bitcoin Standards
TZUR is built entirely on open, audited Bitcoin standards, so your wallet is portable and your recovery is verifiable in any compatible software. Your recovery phrase follows BIP-39 (12 words by default, with a 24-word option). Keys are derived hierarchically with BIP-32, so every address and key pair comes from a single master seed, and addresses use BIP-84 Native SegWit (bech32) on the standard path m/84'/0'/0'. Behaviour is fully deterministic: the same recovery phrase always produces the same addresses, on any platform. TZUR also supports an optional BIP-39 passphrase. iOS and Windows share the same TZURCore cryptography; Android uses the BDK library built on the same audited Rust core.
Your Recovery Phrase Stays With You
Your recovery phrase is generated locally using your operating system's cryptographically secure random number generator: SecRandomCopyBytes on iOS, SecureRandom on Android, and the OS CSPRNG on Windows. It is the sole recovery mechanism for your wallet. TZUR does not store it, transmit it, or have any access to it. It is never sent over the network, never written to server logs, and never included in analytics. It is shown once at wallet creation and can be re-viewed in the app for backup, behind authentication. If you lose both your recovery phrase and your device, no one, including TZUR, can recover your Bitcoin. We strongly recommend writing it down and storing it in a secure, offline location.
On-Device Key Storage
Your seed is encrypted at rest using the strongest protection each operating system provides, and is never stored in plaintext. On iPhone, it is held in the iOS Keychain with the this-device-only protection class: accessible only while the device is unlocked, non-exportable, and excluded from backups and device migration (on devices with a Secure Enclave, the Keychain's encryption keys are hardware-backed by that coprocessor). On Android, the seed is sealed with AES-256-GCM using a non-exportable Android Keystore key, StrongBox-backed when the device supports it, with a Trusted Execution Environment fallback. On Windows, the seed file is encrypted with AES-256-GCM under a key derived from your PIN, bound to your Windows account with DPAPI, and can optionally be sealed by a non-exportable TPM key so it cannot be decrypted off the machine. TZUR never stores sensitive data in unprotected storage.
Authentication & Device Lock
Access to your keys is gated by your device authentication and an app PIN. Your PIN is never stored; only a PBKDF2-HMAC-SHA256 hash (600,000 iterations, with a random per-wallet salt) is kept, and it is compared in constant time. On iPhone, unlock uses Face ID or Touch ID through Apple's LocalAuthentication, and the biometric proof is invalidated if your enrollment changes. On Android, it uses BiometricPrompt at the strong-biometric class. On Windows, it uses Windows Hello consent backed by the TPM, layered on your PIN, and degrades cleanly to PIN if no Hello authenticator is enrolled. Auto-lock and re-lock on sleep are supported.
Key Material Is Treated as Toxic Data
Private key material exists in memory only for the moment it is needed to sign a transaction. Key buffers are zeroed immediately after use on every platform, and keys are never cached in application state, never written to temporary files, never logged, and never persisted outside secure storage. On Android, the build itself fails if logging APIs appear in the key-management module, and seed and PIN screens use screenshot protection; on Windows, screen capture is blocked while the recovery phrase is shown. One honest limitation, stated in our own code: a recovery phrase briefly held as a text string cannot be force-wiped because language runtimes make strings immutable, so we keep its lifetime as short as possible.
Transactions Are Signed Locally
All transaction construction and signing happen on your device. The wallet loads key material, signs, and zeroes it, with no network activity while keys are live; only the finished, already-signed transaction is broadcast. Watch-only wallets and locked passphrase wallets cannot sign at all, and a fresh authentication is required before every signature. On iOS and Windows this runs in the shared TZURCore; on Android it runs in BDK.
Servers Are Never Trusted
TZUR talks to public Electrum servers for blockchain data such as balances, history, and fee estimates, but treats them strictly as untrusted data providers. Connections are TLS-only with certificate pinning on iOS and Windows; a server whose certificate does not match the pin is rejected with no fallback. On Android, returned chain data is validated with SPV and Merkle proofs before it reaches your balance. Wallet lookups use script hashes rather than your addresses, and the only thing ever uploaded is a fully-signed transaction for broadcast. Your keys, recovery phrase, and PIN are never transmitted. Failover across multiple independent servers prevents any single operator from withholding data.
App Integrity Attestation
To protect the optional BlockSight explorer's API from abuse, TZUR uses platform attestation, Apple App Attest on iOS and Google Play Integrity on Android, to prove that requests come from a genuine, unmodified app. This is isolated from your wallet: attestation gates only public blockchain-explorer data, never key material or fund operations, and if it ever fails, only the explorer is affected while your wallet keeps working.
Privacy-Respecting Analytics
TZUR Wallet may collect anonymous usage analytics to improve the application. These analytics help us understand how features are used and where the user experience can be improved. Analytics collection is entirely optional and can be disabled at any time in the app's Settings. When enabled, data is aggregated and anonymized -it is never linked to your wallet, your identity, or your Bitcoin activity.
Analytics never include:
- Wallet addresses or public keys
- Account balances or UTXO data
- Transaction amounts, destinations, or history
- Seed phrases or any key material
- Private keys or derivation paths
- Personal identity, name, or location
TZUR Wallet does not include advertising SDKs, third-party tracking technologies, or fingerprinting libraries. We do not sell, share, or monetize any user data.
Responsible Disclosure
If you discover a security vulnerability in TZUR Wallet, please report it to contact@tzur.live. We take all reports seriously and will respond promptly. Please do not publicly disclose vulnerabilities before they have been addressed. We are committed to fixing confirmed security issues as quickly as possible and will credit researchers who report valid findings, if desired.
Last updated: April 2026
