Foundations

Where your keys live

What is stored on your device, what is stored nowhere, and what an attacker would actually have to do.

3 min readUpdated 16 Aug 2026
On this page

Self-custody is a claim that is easy to make and worth checking. Here is exactly what happens to your key.

Generation

Keys are generated on your device, using the platform's cryptographic random number generator. No server is contacted, no entropy is requested from anywhere, and no copy is made.

Your recovery phrase is a BIP39 mnemonic produced in the same moment. It is shown to you once, and the app does not retain a readable copy for later display without a fresh biometric check.

Storage

iOS

The Keychain, backed by the Secure Enclave, with an access policy requiring biometric authentication.

Android

The Android Keystore, hardware-backed on devices that support it, with the same biometric requirement.

Not stored in

App storage, preferences, Redux state, logs, analytics, crash reports, or any network request.

Every signature goes through a single signing path in the app, and the only way key material leaves secure storage is a biometric-gated read. There is no other route to the key, including for the app's own code.

That read happens when you unlock the app, not once per transaction. The unlocked session then holds a signer in memory, so transactions you make while the app is open and unlocked are signed without prompting again. Leaving the app and returning puts the lock screen back in front of you.

Transmission

Never. Not to us, not to a node, not to an analytics endpoint, not in a crash report. The wallet broadcasts signed transactions to Solana RPC endpoints — which is the signature and the instruction, never the key that produced it.

This is checkable

Everything above is an observable property. A network capture of the app in use will show RPC calls carrying signed transactions and nothing carrying key material. We would rather you verified it than believed it.

What an attacker needs

Your recovery phrase. The complete answer. Anyone with the words has the wallet, on any device, permanently. This is why the phrase is stored offline and never typed anywhere but the import screen.

Your device, and the app already unlocked. Biometrics gate opening the app, not each individual signature — so a phone handed over, or taken, while the wallet is open and unlocked can sign. This is the realistic attack, and the defence is mundane: lock the app when you put the phone down, keep the auto-lock short, and do not leave the wallet open in public. A phone plus coercion is a different matter again, and no software solves it.

A compromised operating system. A device with malicious root access is beyond what any app can defend. Keep the OS updated and do not jailbreak or root a phone that holds funds.

What an attacker cannot do

  • Obtain your key from us. We do not have it.
  • Obtain it from the storage backend. It is not there.
  • Recover it from a backup service. There is no such service.
  • Persuade support to reset it. There is no reset.

That is the same property that means we cannot help you if you lose the phrase. The two are inseparable — see what we cannot do.

Multiple wallets

Each wallet on the device gets its own entry in secure storage under the same protections. Inheritance is configured per wallet address, so a wallet with no inheritance account behaves as a completely ordinary wallet.

Keep reading

Still stuck?

Tell us what you were doing and what you expected — never your recovery phrase, private key, or a vault passphrase. Nobody from Legacy Wallet will ever ask for those.

Opens a support ticket and emails you the link. We reply by email, usually within a couple of days.