⚽ Fluid — Recovery Core

Phase 1 prototype of recover.fluid.ng: split a BIP39 seed into 2-of-4 Shamir shards, encrypt each shard with its own password, and recover the seed from any 2 shards. 100% client-side. No server calls. Works from file:// offline.

⚠️ Throwaway seeds ONLY

This is unaudited prototype crypto built to prove the recovery flow. Do never use it with a wallet that holds real money. Test it, break it, and only trust a future audited release.

Honest design notes (fixes to the original spec):
• Secure Enclave / StrongBox cannot store a BIP39 seed — they hold non-exportable P-256 keys only. In the real app the seed exists in memory only during split/recovery (then zeroized), and a key-encryption-key stays in the enclave.
• Cloud and email shards use different passwords here — one shared password would let anyone with your cloud + inbox rebuild your wallet.
• This prototype derives keys with PBKDF2-SHA256 (600,000 rounds, WebCrypto) + AES-256-GCM because Argon2id needs a large WASM library. The production spec calls for Argon2id (libsodium) — treat that swap as required before any real use.

Create 2-of-4 shards

Minimum 8 characters each. Fluid never sees any of these. Losing a password loses that shard — any other 2 shards still recover you.

Where each file goes: device.enc stays on the phone · cloud.enc → your iCloud/Google Drive /Fluid/Backup/ · guardian.enc → send to your guardian · email.enc → email it to your recovery address.

How it works

Fluid Phase 1 · Built 2026-11-05 · Prototype — not audited, not for real funds.