🛡️ Architettura di Sicurezza TL Wallet

Zero-Knowledge by Design. Verificabile. Open Source.

Principio Fondante: Zero-Knowledge

TL Wallet è costruito su un principio semplice: il server non deve mai vedere le tue chiavi private. Non è una promessa di marketing — è un vincolo architetturale. Il seed BIP39 viene generato, crittografato e archiviato esclusivamente sul dispositivo dell'utente. Il server Firebase funge solo da relay di metadati pubblici (stato del wallet, nonce anti-replay, timestamp) e non ha mai accesso al contenuto cifrato.

Stack Crittografico

ComponenteAlgoritmoScopo
Cifratura a riposo (seed)AES-256-GCMProtezione del seed sul dispositivo
Scambio chiavi (transfer)X25519 (Curve25519 ECDH)Accordo su chiave effimera senza scambio di segreti
Firma digitale (transfer)ED25519 (EdDSA)Autenticazione e anti-manomissione del payload
Derivazione chiave (backup cloud)PBKDF2-HMAC-SHA256Derivazione chiave AES da password utente (600k iterazioni)
Cifratura (backup cloud)AES-256-GCMCifratura del seed per backup su Firestore
Derivazione walletBIP39 + BIP84Seed phrase → derivazione indirizzi Native SegWit (bech32)
Trasporto P2PDTLS-SRTP (WebRTC)Cifratura nativa del canale dati WebRTC

Flusso di Trasferimento Sicuro

1. Bluetooth P2P (Android)

  1. Discovery: I dispositivi si scoprono via BLE con validazione del fingerprint del certificato
  2. Key Exchange: Scambio di chiavi pubbliche effimere X25519
  3. Transfer: Il seed viene cifrato con la chiave condivisa e trasmesso con firma ED25519
  4. Conferma: Il ricevente decifra e conferma crittograficamente; il server marca il wallet come trasferito

2. QR Code a 2 Fasi (iOS + Android)

  1. Fase 1: Il ricevente genera un QR code contenente la sua chiave pubblica effimera X25519
  2. Fase 2: Il mittente scansiona, cifra il seed con quella chiave, e genera un secondo QR code
  3. Il payload è cifrato X25519 + firmato ED25519. Due scansioni, zero connessioni di rete

3. WebRTC (Sperimentale)

  1. Signaling via Firestore (scambio SDP offer/answer e candidati ICE)
  2. DataChannel WebRTC con cifratura nativa DTLS-SRTP
  3. Il seed è cifrato a livello applicativo prima di essere inviato sul canale

Backup Cloud Cifrato

TL Wallet offre un backup cloud opzionale del seed, protetto da crittografia a conoscenza zero:

Protezione Anti-Replay

Ogni mutazione del wallet (registrazione, unlock, trasferimento) è protetta da:

Threat Model

MinacciaMitigazioneRischio Residuo
Hackeraggio server FirebaseZero-knowledge: i dati sono cifrati lato client, il server non ha chiavi🟢 Basso — Metadati pubblici esposti, seed illeggibile
Furto dispositivoSeed cifrato AES-256 + autenticazione biometrica per azioni sensibili🟡 Medio — Dipende dalla forza del lockscreen del dispositivo
Intercettazione BluetoothCifratura applicativa X25519 + ED25519 sopra il trasporto BLE🟢 Basso — Dati cifrati anche se il canale è compromesso
Password backup deboleMinimo 8 caratteri richiesti dalla UI + 600k iterazioni PBKDF2🟡 Medio — Con 8 char alfanumerici: ~6900 anni CPU per brute-force
Attacco Man-in-the-Middle (QR)Il QR code è effimero e usa chiavi pubbliche mostrate su entrambi i dispositivi🟢 Basso — Richiede accesso fisico a entrambi i dispositivi simultaneamente
Furto post-trasferimento via backupBackup cloud eliminato automaticamente al trasferimento + verifica device_id🟢 Basso — Doppia protezione: eliminazione + controllo proprietà

Verifica Indipendente

TL Wallet è completamente open-source. Chiunque può verificare il codice:

Visualizza il codice su GitHub →

← Torna alla Home