Come LifeVeil protegge i tuoi file
Questa pagina spiega con parole semplici cosa fa LifeVeil, e anche cosa non può fare. Preferiamo che tu conosca i limiti piuttosto che fidarti di una promessa troppo grande.
In breve
- Tutta la crittografia avviene sul tuo telefono. Non esiste un server LifeVeil né un account.
- I file di ogni cassaforte sono crittografati con una chiave casuale. Solo la sequenza di quella cassaforte (con il suo PIN al livello massimo), la sua frase di recupero se ne hai aggiunta una, o la tua impronta se l'hai attivata possono sbloccare quella chiave.
- Ogni sequenza apre una cassaforte. Una sequenza che non corrisponde a nessuna cassaforte salvata ne apre una vuota, e non viene scritto nulla finché non vi aggiungi un file.
- Noi sviluppatori non abbiamo mai la tua sequenza, il tuo PIN, la tua frase o le tue chiavi. Non possiamo aprire i tuoi file e non possiamo reimpostare la tua sequenza.
- Usiamo la crittografia integrata in Android e la nota libreria libsodium. Non abbiamo scritto una crittografia nostra.
- LifeVeil non è ancora stato sottoposto a un controllo di sicurezza indipendente.
Dalla sequenza a una chiave
Disegni una sequenza su una griglia 5×5, senza ripassare due volte sullo stesso punto. Una nuova sequenza che imposti richiede almeno 6 punti. LifeVeil trasforma la sequenza in una chiave con Argon2id, di libsodium (versione 1.0.20 su Android).
- Parametri: 64 MiB di memoria, 3 passaggi, 1 corsia, chiave a 256 bit.
- Argon2id è lento di proposito e richiede molta memoria per ogni tentativo. Questo rende molto più costoso indovinare con le schede grafiche.
- Sui nostri telefoni di prova, uno sblocco richiede da circa 0,6 a 0,9 secondi.
- La sequenza viene combinata con un sale del dispositivo casuale di 16 byte. Il sale è conservato nell'app, crittografato con una chiave custodita nell'Android Keystore, che non può essere copiata fuori dal telefono.
- Non viene conservata nessuna copia della sequenza, tranne quella tenuta insieme a una frase di recupero (vedi sotto). L'app verifica una sequenza provando a sbloccare la chiave.
- Qualsiasi cosa digiti nella casella del PIN sopra i punti entra nella stessa derivazione della chiave insieme alla sequenza. Una casella vuota significa solo la sequenza.
Livelli di sicurezza
Ogni cassaforte ha un livello. Lo scegli all'inizio e puoi cambiarlo in seguito in Impostazioni > Cassaforte > Livello di sicurezza, dopo aver disegnato di nuovo la sequenza.
- Sicurezza massima (Ultra): sequenza e un PIN da 6 a 8 cifre, entrambi solo nella tua testa. Sicuro anche contro i tentativi fatti con l'IA. Se dimentichi uno dei due, la cassaforte non può essere recuperata.
- Livello 1 (consigliato): solo sequenza. Sicuro se eviti le forme comuni. Se la dimentichi, la cassaforte non può essere recuperata.
- Livello 2: sequenza e una frase di recupero scritta su carta. Puoi rientrare se dimentichi la sequenza, ma anche chi trova il foglio può aprire la cassaforte.
- Livello 3: sequenza e impronta. Il più comodo, ma qualcuno potrebbe costringerti a mettere il dito sul sensore. L'impronta funziona per una sola cassaforte.
Come vengono crittografati i file
- Ogni cassaforte ha una chiave principale casuale a 256 bit. La chiave della sequenza e la chiave di recupero si limitano ad "avvolgere" (crittografare) questa chiave principale.
- I file, le miniature e l'elenco dei tuoi elementi (nomi originali dei file, date, dimensioni) sono crittografati con AES-256-GCM, usando la crittografia integrata in Android. GCM rileva anche se un file è stato modificato o scambiato.
- I file dentro l'app hanno nomi casuali. I file grandi sono crittografati in blocchi da 1 MiB, così i video si riproducono senza mai scrivere una copia in chiaro nella memoria.
- Per le foto JPEG, i dettagli nascosti (EXIF, come fotocamera e data) sono conservati a parte, anch'essi crittografati.
- Quando l'app si blocca, sovrascrive con zeri le chiavi che tiene in memoria.
Frase di recupero
- La frase di recupero è facoltativa. Una cassaforte ne riceve una solo quando scegli il Livello 2, e viene salvata dopo che hai superato un breve quiz.
- Il generatore sicuro di numeri casuali del telefono sceglie 9 parole inglesi. Provengono da due elenchi di 1.024 parole comuni, in uno di 4 ordini fissi. Sono 92 bit di casualità. Le parole sono in inglese in ogni lingua dell'app.
- La frase passa per gli stessi parametri di Argon2id e sblocca da sola la chiave principale. Non ha bisogno del sale del dispositivo, quindi funziona anche quando la sequenza non funziona più.
- Una copia della frase e una copia della sequenza della cassaforte (e del PIN) sono conservate sul telefono, ciascuna crittografata due volte: una con la chiave principale e una con una chiave dell'Android Keystore. Quando la frase apre la cassaforte, l'app mostra la sequenza una volta. Viene dimenticata quando l'app si blocca.
- La frase resta la stessa quando cambi la sequenza. Una cassaforte senza frase non ha modo di essere recuperata se la sequenza viene dimenticata.
Impronta
Lo sblocco con l'impronta è facoltativo e funziona per una sola cassaforte. È Android a verificare l'impronta, non LifeVeil; l'app non riceve mai la tua impronta. La chiave principale viene sbloccata da una chiave dell'Android Keystore che funziona solo subito dopo una verifica biometrica sicura. Se qualcuno aggiunge una nuova impronta al telefono, questa chiave smette di funzionare e devi usare di nuovo la sequenza.
File di backup
- Un backup è un unico file
.lvb. Contiene i tuoi elementi così come sono già crittografati, più copie avvolte della chiave principale: una per la sequenza che hai disegnato quando hai creato il backup e una per la frase di recupero, se la cassaforte ne aveva una. - La copia per la sequenza usa un nuovo sale casuale per ogni backup, non il sale del dispositivo. È questo che ti permette di aprire il backup su un nuovo telefono.
- L'intestazione del file è protetta, così modifiche o parti scambiate vengono rilevate.
- Scegli tu dove salvarlo, con la schermata di salvataggio di Android. Non passa mai da noi.
- Per ripristinarlo, apri il file con la sua sequenza o la sua frase. Poi disegni una nuova sequenza. La cassaforte ripristinata parte senza frase di recupero.
Altre protezioni nell'app
- Screenshot, registrazione dello schermo e anteprima nell'elenco delle app recenti sono bloccati in ogni schermata.
- Per impostazione predefinita, l'app si blocca appena la lasci. In alternativa puoi scegliere 30 secondi o 1 minuto.
- Il backup sul cloud e il trasferimento da telefono a telefono di Android non includono i dati di LifeVeil. Usa invece il file di backup.
- L'app non chiede l'accesso alla posizione, ai contatti o a "tutti i file".
- Una cassaforte vuota per ogni nuova sequenza. Una cassaforte senza file ha lo stesso aspetto che sia stata salvata o no, così chi ti costringe ad aprire l'app non può sapere cos'altro c'è. Puoi disattivarla in Impostazioni > Sicurezza, e allora una sequenza che non apre nulla mostra un errore.
Rallentare i tentativi
Poiché ogni sequenza apre una cassaforte, i tentativi di indovinare appaiono come tante casseforti vuote che si aprono. LifeVeil li rallenta senza dirlo sullo schermo, e l'attesa è la stessa per ogni sequenza, compresa quella giusta.
- Nell'arco di 24 ore, 10 aperture di casseforti senza file aggiungono 10 secondi a ogni sblocco, 20 ne aggiungono 60 e 30 aggiungono 5 minuti, il massimo.
- I segni di automazione portano subito al massimo: sequenze completate a meno di 2 secondi l'una dall'altra per tre volte di fila, o tocchi che provengono da servizi di accessibilità o da input simulati invece che da un dito.
- Ogni periodo di 24 ore senza aperture di casseforti vuote lo riduce di un livello. Portare indietro l'orologio del telefono non lo accorcia.
- Funziona solo dentro l'app. Non rallenta i tentativi fatti su un computer con un file copiato (vedi i limiti più sotto).
IA e tentativi di indovinare la sequenza
- L'IA non può saltare i calcoli. Ogni tentativo deve comunque eseguire Argon2id con 64 MiB di memoria. L'IA non viola Argon2id né AES, quindi nessun singolo tentativo diventa più economico.
- Quello che l'IA cambia è l'ordine dei tentativi. Può imparare le forme che le persone preferiscono (lettere, quadrati, angoli di partenza preferiti) e provare prima quelle. Può anche aiutare a ricostruire una sequenza da un video ripreso alle tue spalle o dalle tracce di dita sullo schermo.
- Per questo le difese riguardano la sequenza, non i calcoli. L'app avvisa delle forme comuni. Il livello di sicurezza massimo aggiunge un PIN da 6 a 8 cifre, così una sequenza vista in un video non basta. Nascondi la linea della sequenza non lascia nessuna linea da filmare. Il sale del dispositivo nell'Android Keystore impedisce di indovinare fuori dal telefono.
Limiti da conoscere
Nessuna app può proteggere da tutto. Questi sono, onestamente, i limiti di LifeVeil.
Le sequenze semplici si possono indovinare
Le forme brevi o comuni (una L, una Z, una linea retta) si possono indovinare guardandoti, dalle tracce di dita sullo schermo o in pochi tentativi. Le sequenze reali sono molto più facili da indovinare di quanto suggerisca il numero di sequenze possibili. Usa più punti e più cambi di direzione. L'app ti avvisa delle sequenze molto semplici, e anche prima di salvare una cassaforte la cui sequenza ha meno di 6 punti.
Quanto tempo potrebbe servire per indovinare
Dentro l'app, ogni tentativo richiede circa un secondo, e i tentativi ripetuti rallentano ogni sblocco, fino a 5 minuti. Ma chi ha il tuo file di backup, o chi ha estratto il sale del dispositivo da un telefono con root, può invece fare tentativi su un computer, senza attese. Argon2id rallenta questo processo, ma una sequenza ha molte meno possibilità di una password lunga. Stime approssimative per una scheda grafica di fascia alta (classe RTX 4090) a circa 1.000 tentativi al secondo:
| Cosa si indovina | Possibilità | Tempo, una scheda grafica |
|---|---|---|
| Le 10.000 sequenze più comuni | 104 | circa 10 secondi |
| Tutte le sequenze da 6 punti | 1,28 × 108 | circa 1,5 giorni |
| Tutte le sequenze da 7 punti | 2,42 × 109 | circa 28 giorni |
| Tutte le sequenze da 8 punti | 4,36 × 1010 | circa 1,4 anni |
| Frase di recupero (92 bit) | 4,95 × 1027 | circa 1,6 × 1017 anni |
Sono stime, non misurazioni. I numeri di sequenze sono limiti massimi; le sequenze usate davvero sono molte meno. Hardware in più o più veloce rende i tentativi proporzionalmente più rapidi. Un PIN al livello massimo moltiplica questi numeri fino a 108.
Tieni privato il file di backup
Il file di backup non contiene il sale del dispositivo, quindi chiunque lo ottenga può provare sequenze offline, come mostrato sopra. Conservalo solo dove hai accesso tu e nessun altro, ad esempio il tuo account cloud personale, e usa una sequenza più lunga.
La frase di recupero mostra anche la sequenza
Chi ha la frase di recupero di una cassaforte può aprirla, e l'app gli mostra poi la sua sequenza e il suo PIN. Se usi la stessa sequenza altrove, ad esempio per il blocco schermo del telefono, scopre anche quella. Conserva il foglio con la stessa cura dei file.
Telefoni con root o infetti
Se qualcuno può eseguire codice con le autorizzazioni dell'app (ad esempio su un telefono con root, o con un malware che ha il controllo completo), può sbloccare il sale del dispositivo e fare tentativi offline. Mentre la cassaforte è aperta, le chiavi sono in memoria e possono essere lette con accesso root o con un debugger. Alcune copie create all'interno di Android e Flutter, e le foto mostrate sullo schermo, non possono essere cancellate subito dalla memoria.
Alcune informazioni sono visibili
Il numero di file crittografati nella memoria dell'app, le loro dimensioni approssimative e il momento in cui sono stati creati o modificati non sono nascosti. E nemmeno il fatto che LifeVeil sia installato.
La cassaforte vuota inganna solo lo schermo
Chi può leggere i file dell'app (per esempio su un telefono con root) può contare le cartelle delle casseforti e vedere che questa impostazione è attiva. Il rallentamento conta allo stesso modo le casseforti vuote salvate e non salvate, quindi l'attesa in sé non permette di distinguerle.
Il travestimento cambia solo la schermata Home
- Cambiano solo l'icona e il nome nel launcher. L'elenco Impostazioni > App del telefono, le informazioni sull'app e le schermate della memoria mostrano ancora LifeVeil.
- Gli screen reader potrebbero comunque dire "LifeVeil". Ad esempio, il launcher Samsung One UI fornisce a TalkBack il vero nome dell'app, e l'app non può cambiarlo.
- Il menu di condivisione di Android mostra sempre il vero nome dell'app, quindi LifeVeil ne esce quando cambi l'icona. Puoi riattivarlo.
- Le richieste di autorizzazione di Android mostrano il vero nome, quindi l'app chiede le autorizzazioni prima che tu cambi l'icona.
- Mentre l'icona è cambiata, l'app non invia notifiche.
- Il codice del travestimento (da 4 a 8 cifre) mostra solo la schermata di blocco. Non apre i tuoi file. È conservato come hash con sale, ma con così poche possibilità è facile da trovare se qualcuno ottiene il file.
L'impronta è una via più debole
Lo sblocco con l'impronta salta Argon2id. La sua sicurezza dipende dal sensore di impronte del telefono e dall'Android Keystore. Puoi disattivarlo nelle Impostazioni in qualsiasi momento.
Dettagli delle foto
- Per le foto HEIC, PNG e WebP, i dettagli nascosti (EXIF) restano dentro il file. L'intero file è comunque crittografato.
- Su Android 10 e versioni successive, Android rimuove la posizione GPS dalle foto che LifeVeil legge, perché l'app non chiede l'accesso alla posizione. Quando l'originale viene eliminato dalla galleria, quella posizione va persa.
- Le foto aggiunte tramite il selettore di foto di Android ricevono nuovi nomi basati sulla data, perché il selettore non fornisce il nome originale.
Il blocco viene sospeso durante le schermate di sistema
Mentre è aperta una schermata di sistema (richiesta di autorizzazione, conferma di eliminazione, selettore di foto o file, richiesta dell'impronta) e mentre è in corso un'importazione o un'esportazione, l'app aspetta a bloccarsi. Se hai lasciato l'app, si blocca 2 secondi dopo che è finita.
Le casseforti condividono un unico sale del dispositivo
Tutte le casseforti su un telefono usano lo stesso sale del dispositivo. Se qualcuno ha quel sale, un solo tentativo mette alla prova tutte le casseforti insieme. Il costo per attaccare una singola cassaforte resta lo stesso.
Cose che nessuna app può impedire
Qualcuno che ti guarda mentre disegni la sequenza, o una telecamera che riprende il tuo schermo.
Senza una frase, nessuno può aiutarti
Se dimentichi la sequenza di una cassaforte senza frase di recupero, o perdi sia la sequenza sia la frase, nessuno può recuperarne i file. Nemmeno noi.