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 tuoi file sono crittografati con una chiave casuale. Solo la tua sequenza, la tua frase di recupero o la tua impronta possono sbloccare quella chiave.
- Noi sviluppatori non abbiamo mai la tua sequenza, 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, usando almeno 6 punti e senza ripassare due volte sullo stesso punto. 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. L'app verifica una sequenza provando a sbloccare la chiave.
- Dopo 5 sequenze sbagliate di fila, devi aspettare 30 secondi. L'attesa raddoppia a ogni ulteriore errore, fino a 16 minuti.
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
- Quando crei una cassaforte, 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 è conservata sul telefono, crittografata due volte: una con la chiave principale e una con una chiave dell'Android Keystore. Puoi vederla nelle Impostazioni dopo aver disegnato di nuovo la sequenza.
- Quando cambi la sequenza o usi la frase per rientrare, ricevi una nuova frase. Quella vecchia smette di funzionare.
Impronta
Lo sblocco con l'impronta è facoltativo. È 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ù due copie avvolte della chiave principale: una per la sequenza che hai disegnato quando hai creato il backup e una per la frase di recupero che avevi allora. - 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 e ricevi una nuova 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".
- Cassaforte vuota con sequenza errata. Una sequenza che non apre nessuna cassaforte mostra una cassaforte vuota invece di un errore, così chi ti costringe ad aprire l'app non può sapere cos'altro c'è. I tentativi errati vengono comunque contati, le foto degli intrusi vengono comunque scattate e le attese restano. Puoi disattivarla in Impostazioni > Sicurezza > Cassaforte vuota con sequenza errata.
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'indicatore di sicurezza avvisa delle forme comuni. Sequenza + PIN aggiunge un PIN di 4–6 cifre, così una sequenza vista in un video non basta. Nascondi 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.
Quanto tempo potrebbe servire per indovinare
Dentro l'app, ogni tentativo richiede circa un secondo e le attese aumentano dopo 5 errori. 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.
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.
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. Inoltre, dopo 5 sequenze errate l'app ti fa aspettare, e questo mostra che le sequenze precedenti non hanno aperto nulla.
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.
Foto degli intrusi
L'app non riproduce il suono dello scatto, ma i telefoni venduti in alcuni paesi, come il Giappone e la Corea, lo riproducono sempre. Nessuna foto viene scattata se un'altra app sta usando la fotocamera o se non c'è una fotocamera anteriore. Finché non sblocchi la prima cassaforte che hai creato, le foto sono sigillate con una chiave dell'Android Keystore.
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.
Se perdi entrambe, nessuno può aiutarti
Se perdi sia la sequenza sia la frase di recupero, nessuno può recuperare i tuoi file. Nemmeno noi.