Documentation Index
Fetch the complete documentation index at: https://mintlify.com/satsigner/satsigner/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Seed phrases (mnemonics) are the master keys to your Bitcoin wallet. SatSigner implements comprehensive security measures to protect these critical secrets throughout their lifecycle.BIP39 Seed Phrases
Supported Configurations
SatSigner supports standard BIP39 mnemonic configurations: Word Counts:- 12 words (128-bit entropy)
- 15 words (160-bit entropy)
- 18 words (192-bit entropy)
- 21 words (224-bit entropy)
- 24 words (256-bit entropy)
- English (default)
- Multiple language support via BIP39 standard
- BIP39 25th word (“passphrase”)
- Adds additional layer of protection
- Creates entirely different wallet from same seed
Seed Generation
When generating a new seed (Creation Type:generateMnemonic):
- Entropy Source: Cryptographically secure random number generator
- Word Selection: From BIP39 standardized word list
- Checksum: Automatically calculated and appended
- Validation: Ensures valid BIP39 structure
Seed Storage Architecture
Encryption at Rest
All seed phrases are encrypted before storage (apps/mobile/types/models/Account.ts:40-52):Storage Layers
Layer 1: Encryption- Algorithm: AES-256-CBC
- Key: Derived from user PIN via PBKDF2
- IV: Unique per account
- iOS: Keychain (hardware-backed)
- Android: SharedPreferences (encrypted)
- Platform: expo-secure-store
- MMKV storage for non-sensitive account metadata
- Encrypted secrets stored separately
- No plaintext seed phrases in logs
Seed Verification
Initial Verification Process
When creating a new wallet, users must verify their seed phrase to ensure proper backup:- Display Phase: Show all words in order
- Write Down: User records words securely
- Verification Phase: Random word challenges
Word Verification Challenge
SatSigner implements a secure verification system (apps/mobile/utils/seed.ts:4-35):Prefix Ambiguity Handling
Some BIP39 words are prefixes of others (apps/mobile/utils/seed.ts:40-90):Seed “Dropping” Feature
Watch-Only Mode
SatSigner supports “dropping” the seed while keeping watch-only capabilities: What is Seed Dropping?- Converts signing wallet to watch-only
- Deletes private key material (seed/mnemonic)
- Retains public keys and addresses
- Preserves transaction history viewing
- Moving to cold storage
- Reducing mobile device risk
- Maintaining portfolio visibility without spending capability
Technical Implementation
After dropping seed (checked viaseedDropped flag in apps/mobile/hooks/useKeyValidation.ts:7):
mnemonic- Seed phrase wordspassphrase- BIP39 passphrase if present- Private key derivation capability
Seed Import Methods
Manual Entry
Process:- Select word count (12/15/18/21/24)
- Enter each word from BIP39 word list
- Auto-completion prevents invalid words
- Checksum validation ensures correct entry
- Optional passphrase entry
- Only valid BIP39 words accepted
- Prefix matching for faster entry
- No clipboard access for word entry
- Immediate encryption after validation
QR Code Import
SatSigner supports multiple QR code formats (apps/mobile/utils/seedqr.ts):Standard Format (SeedQR)
- 4 digits per word
- 48 digits for 12-word seed
- 96 digits for 24-word seed
Compact Format (CompactSeedQR)
- 11 bits per word (2048 possible values)
- 128 bits for 12-word seed (minus 4 checksum bits)
- 264 bits for 24-word seed
Descriptor Import
Watch-Only Import:- Import output descriptors directly
- No seed phrase required
- Suitable for viewing accounts from hardware wallets
- Supports both external and internal (change) descriptors
Seed Re-Encryption
PIN Change Impact
When changing PIN, all encrypted seeds must be re-encrypted (apps/mobile/hooks/useReEncryptAccounts.ts:26-39):- Brief moment of decryption during re-encryption
- Process happens in secure memory
- No plaintext written to storage
- Atomic operation prevents partial updates
Best Practices
Seed Generation
Seed Backup
Mandatory Practices:-
Physical Backup
- Write seed words on paper or metal
- Store in secure physical location
- Never digital copy (photo, file, cloud)
- Consider multiple geographic locations
-
Verification
- Verify backup immediately after writing
- Test recovery process with small amount first
- Periodic verification of backup readability
-
Passphrase Backup
- If using passphrase, back up separately
- Remember: seed + passphrase required for recovery
- Consider multi-location storage
Seed Protection
Security Measures: ✓ Never Share - Seed phrase is complete access to funds ✓ No Digital Copies - No photos, screenshots, or cloud storage ✓ Physical Security - Fire-proof and water-proof storage ✓ Access Control - Limited people aware of location ✓ Duress Plan - Consider duress PIN for emergency situationsPassphrase as Duress Wallet: Use a small decoy amount without passphrase, keep main funds in same seed + passphrase. Provides plausible deniability.
Seed Exposure Response
If you suspect seed phrase compromise:-
Immediate Action
- Generate new seed phrase immediately
- Transfer all funds to new wallet
- Do not reuse compromised seed
-
Investigation
- Identify exposure vector
- Assess other potential compromises
- Update security practices
-
Documentation
- Record incident details
- Note when/how exposure occurred
- Update operational security procedures
Multi-Signature Considerations
Key Management
For multi-signature wallets: Each Cosigner Key:- Separate seed phrase
- Independent backup requirement
- Individual encryption
- Distinct fingerprints
- Track all cosigner fingerprints
- Maintain cosigner order
- Backup wallet descriptor
- Document signing threshold (m-of-n)
Seed Dropping in Multisig
Considerations:- Can drop seeds for keys not needed for spending
- Maintain at least m keys with seeds for m-of-n wallet
- Example: In 2-of-3 wallet, can safely drop one seed if other two secure
Technical Security Details
Entropy Quality
SatSigner uses platform-provided CSPRNG:- iOS: SecRandomCopyBytes (hardware-backed)
- Android: SecureRandom (hardware-backed when available)
- Minimum 128-bit entropy for 12-word seeds
Memory Protection
Runtime Measures:- Seed phrases only decrypted when needed
- Immediate zeroing after use (where possible)
- No logging of sensitive material
- Secure text input fields
- JavaScript doesn’t guarantee memory clearing
- Relies on garbage collection
- Consider device-level encryption as additional layer
Fingerprint Calculation
Key fingerprints help identify seeds without exposing them:Related Topics
- PIN Protection - Encryption key derivation
- Backup & Recovery - Comprehensive backup strategies
- Encryption - Technical encryption implementation
- Duress PIN - Emergency security feature