Sådan beskytter LifeVeil dine filer
Denne side forklarer med almindelige ord, hvad LifeVeil gør, og også hvad appen ikke kan. Vi vil hellere have, at du kender begrænsningerne, end at du stoler på et løfte, der er for stort.
Kort fortalt
- Al kryptering sker på din telefon. Der er ingen LifeVeil-server og ingen konto.
- Dine filer krypteres med en tilfældig nøgle. Kun dit mønster, din gendannelsessætning eller dit fingeraftryk kan låse den nøgle op.
- Vi, udviklerne, har aldrig dit mønster, din sætning eller dine nøgler. Vi kan ikke åbne dine filer, og vi kan ikke nulstille dit mønster.
- Vi bruger den kryptering, der er indbygget i Android, og det velkendte bibliotek libsodium. Vi har ikke skrevet vores egen kryptering.
- LifeVeil har endnu ikke været igennem en uafhængig sikkerhedsgennemgang.
Fra dit mønster til en nøgle
Du tegner et mønster på et 5×5-gitter med mindst 6 prikker og uden at bruge den samme prik to gange. LifeVeil gør mønsteret til en nøgle med Argon2id fra libsodium (version 1.0.20 på Android).
- Indstillinger: 64 MiB hukommelse, 3 gennemløb, 1 bane, 256-bit nøgle.
- Argon2id er langsom med vilje og kræver meget hukommelse for hvert gæt. Det gør det meget dyrere at gætte med grafikkort.
- På vores testtelefoner tager én oplåsning ca. 0,6 til 0,9 sekunder.
- Mønsteret blandes med et tilfældigt enhedssalt på 16 byte. Saltet gemmes i appen, krypteret med en nøgle i Android Keystore, som ikke kan kopieres ud af telefonen.
- Der gemmes ingen kopi af mønsteret. Appen kontrollerer et mønster ved at prøve at låse nøglen op.
- Efter 5 forkerte mønstre i træk skal du vente 30 sekunder. Ventetiden fordobles efter hver ny fejl, op til 16 minutter.
Sådan krypteres filerne
- Hver boks har en tilfældig hovednøgle på 256 bit. Din mønsternøgle og din gendannelsesnøgle "pakker" (krypterer) kun denne hovednøgle.
- Filer, miniaturer og listen over dine elementer (oprindelige filnavne, datoer, størrelser) krypteres med AES-256-GCM ved hjælp af den kryptering, der er indbygget i Android. GCM opdager også, om en fil er blevet ændret eller byttet ud.
- Filerne i appen har tilfældige navne. Store filer krypteres i stykker på 1 MiB, så videoer kan afspilles, uden at der nogensinde skrives en ukrypteret kopi til lageret.
- For JPEG-billeder gemmes de skjulte oplysninger (EXIF, f.eks. kamera og dato) separat, også krypteret.
- Når appen låses, overskriver den de nøgler, den har i hukommelsen, med nuller.
Gendannelsessætning
- Når du opretter en boks, vælger telefonens sikre tilfældighedsgenerator 9 engelske ord. De kommer fra to lister med 1.024 almindelige ord i en af 4 faste rækkefølger. Det giver 92 bit tilfældighed. Ordene er engelske på alle appens sprog.
- Sætningen går gennem de samme Argon2id-indstillinger og låser hovednøglen op på egen hånd. Den har ikke brug for enhedssaltet, så den virker også, når mønsteret ikke længere gør.
- En kopi af sætningen gemmes på telefonen, krypteret to gange: én gang med hovednøglen og én gang med en nøgle i Android Keystore. Du kan se den under Indstillinger, når du har tegnet dit mønster igen.
- Når du ændrer dit mønster eller bruger sætningen til at komme ind igen, får du en ny sætning. Den gamle holder op med at virke.
Fingeraftryk
Oplåsning med fingeraftryk er valgfri. Det er Android, der kontrollerer fingeraftrykket, ikke LifeVeil; appen modtager aldrig dit fingeraftryk. En nøgle i Android Keystore, der kun virker lige efter en stærk biometrisk kontrol, låser hovednøglen op. Hvis nogen tilføjer et nyt fingeraftryk på telefonen, holder denne nøgle op med at virke, og du skal bruge dit mønster igen.
Sikkerhedskopifil
- En sikkerhedskopi er én
.lvb-fil. Den indeholder dine elementer præcis som de allerede er krypteret, plus to pakkede kopier af hovednøglen: én til det mønster, du tegnede, da du lavede sikkerhedskopien, og én til den gendannelsessætning, du havde dengang. - Mønsterkopien bruger et nyt tilfældigt salt for hver sikkerhedskopi, ikke enhedssaltet. Det er derfor, du kan åbne sikkerhedskopien på en ny telefon.
- Filens header er beskyttet, så ændringer eller udskiftede dele bliver opdaget.
- Du vælger selv, hvor den skal gemmes, via Androids egen gemmeskærm. Den går aldrig gennem os.
- For at gendanne åbner du filen med dens mønster eller dens sætning. Derefter tegner du et nyt mønster og får en ny gendannelsessætning.
Anden beskyttelse i appen
- Skærmbilleder, skærmoptagelse og forhåndsvisningen i listen over seneste apps er blokeret på alle skærme.
- Som standard låses appen, så snart du forlader den. Du kan i stedet vælge 30 sekunder eller 1 minut.
- Androids egen cloudbackup og overførsel fra telefon til telefon medtager ikke LifeVeils data. Brug sikkerhedskopifilen i stedet.
- Appen beder ikke om adgang til placering, kontakter eller "alle filer".
- Tom boks ved forkert mønster. Et mønster, der ikke åbner nogen boks, viser en tom boks i stedet for en fejl, så den, der tvinger dig til at åbne appen, ikke kan se, hvad der ellers findes. Forkerte forsøg tælles stadig med, der tages stadig fotos af ubudne gæster, og ventetiderne gælder stadig. Du kan slå det fra under Indstillinger > Sikkerhed > Tom boks ved forkert mønster.
AI og gætning af mønstre
- AI kan ikke springe matematikken over. Hvert gæt skal stadig køre Argon2id med 64 MiB hukommelse. AI bryder ikke Argon2id eller AES, så intet enkelt gæt bliver billigere.
- Det, AI ændrer, er rækkefølgen af gættene. Den kan lære de former, folk kan lide (bogstaver, firkanter, foretrukne starthjørner), og prøve dem først. Den kan også hjælpe med at aflæse et mønster fra en video optaget over din skulder eller fra fedtmærker på skærmen.
- Derfor handler forsvaret om mønsteret, ikke om matematikken. Styrkemåleren advarer om almindelige former. Mønster + pinkode tilføjer en pinkode på 4–6 cifre, så et mønster, der er set på video, ikke er nok. Skjul mønsterlinje efterlader ingen linje at filme. Enhedssaltet i Android Keystore forhindrer gætning uden for telefonen.
Begrænsninger, du bør kende
Ingen app kan beskytte mod alt. Dette er de ærlige begrænsninger ved LifeVeil.
Enkle mønstre kan gættes
Korte eller almindelige former (et L, et Z, en lige linje) kan gættes ved at se dig over skulderen, ud fra fedtmærker på skærmen eller på få forsøg. Rigtige mønstre er meget nemmere at gætte, end antallet af mulige mønstre antyder. Brug flere prikker og flere sving. Appen advarer dig om meget enkle mønstre.
Hvor lang tid gætning kan tage
I appen tager hvert forsøg ca. et sekund, og ventetiden vokser efter 5 fejl. Men en person, der har din sikkerhedskopifil, eller som har hentet enhedssaltet fra en rootet telefon, kan i stedet gætte på en computer uden ventetid. Argon2id gør det langsommere, men et mønster har langt færre muligheder end en lang adgangskode. Grove skøn for ét kraftigt grafikkort (RTX 4090-klassen) med ca. 1.000 gæt i sekundet:
| Hvad der gættes | Muligheder | Tid, ét grafikkort |
|---|---|---|
| De 10.000 mest almindelige mønstre | 104 | ca. 10 sekunder |
| Alle mønstre med 6 prikker | 1,28 × 108 | ca. 1,5 døgn |
| Alle mønstre med 7 prikker | 2,42 × 109 | ca. 28 dage |
| Alle mønstre med 8 prikker | 4,36 × 1010 | ca. 1,4 år |
| Gendannelsessætning (92 bit) | 4,95 × 1027 | ca. 1,6 × 1017 år |
Det er skøn, ikke målinger. Antallet af mønstre er øvre grænser; rigtige mønstre er langt færre. Mere eller hurtigere hardware gør gætningen tilsvarende hurtigere.
Hold din sikkerhedskopifil privat
Sikkerhedskopifilen indeholder ikke enhedssaltet, så alle, der får fat i den, kan prøve mønstre offline som vist ovenfor. Gem den kun et sted, hvor kun du har adgang, f.eks. din egen cloudkonto, og brug et længere mønster.
Rootede eller inficerede telefoner
Hvis nogen kan køre kode med appens tilladelser (f.eks. på en rootet telefon eller med malware, der har fuld kontrol), kan de låse enhedssaltet op og gætte offline. Mens boksen er åben, ligger nøglerne i hukommelsen og kan læses med root-adgang eller en debugger. Visse kopier, der laves inde i Android og Flutter, og billeder, der vises på skærmen, kan ikke slettes fra hukommelsen med det samme.
Visse oplysninger er synlige
Antallet af krypterede filer i appens lager, deres omtrentlige størrelse, og hvornår de blev oprettet eller ændret, er ikke skjult. Det er det heller ikke, at LifeVeil er installeret.
Den tomme boks narrer kun skærmen
Den, der kan læse appens filer (for eksempel på en rootet telefon), kan tælle boksenes mapper og se, at denne indstilling er slået til. Og efter 5 forkerte mønstre skal du vente, hvilket viser, at de tidligere mønstre ikke åbnede noget.
Forklædningen ændrer kun startskærmen
- Kun ikonet og navnet på startskærmen ændres. Telefonens liste under Indstillinger > Apps, appoplysningerne og lagerskærmene viser stadig LifeVeil.
- Skærmlæsere kan stadig sige "LifeVeil". For eksempel giver Samsung One UI-startskærmen TalkBack det rigtige appnavn, og det kan appen ikke ændre.
- Androids delingsmenu viser altid det rigtige appnavn, så LifeVeil fjerner sig selv fra den, når du skifter ikonet. Du kan slå det til igen.
- Androids anmodninger om tilladelser viser det rigtige navn, så appen beder om tilladelser, før du skifter ikonet.
- Mens ikonet er skiftet, sender appen ingen notifikationer.
- Forklædningskoden (4 til 8 cifre) viser kun låseskærmen. Den åbner ikke dine filer. Den gemmes som en saltet hash, men med så få muligheder er den let at finde, hvis nogen får fat i filen.
Fingeraftryk er en svagere vej
Oplåsning med fingeraftryk springer Argon2id over. Styrken afhænger af telefonens fingeraftrykssensor og Android Keystore. Du kan til enhver tid slå det fra under Indstillinger.
Billeder af ubudne gæster
Appen afspiller ingen lukkerlyd, men telefoner, der sælges i visse lande, f.eks. Japan og Korea, afspiller altid en. Der tages intet billede, hvis en anden app bruger kameraet, eller hvis der ikke er et frontkamera. Indtil du låser den første boks, du oprettede, op, er billederne forseglet med en nøgle i Android Keystore.
Billedoplysninger
- For HEIC-, PNG- og WebP-billeder bliver de skjulte oplysninger (EXIF) inde i filen. Hele filen er stadig krypteret.
- På Android 10 og nyere fjerner Android GPS-placeringen fra billeder, som LifeVeil læser, fordi appen ikke beder om adgang til placering. Når originalen slettes fra galleriet, er placeringen væk.
- Billeder, der tilføjes via Androids billedvælger, får nye navne ud fra datoen, fordi vælgeren ikke oplyser det oprindelige navn.
Låsning sættes på pause under systemskærme
Mens en systemskærm er åben (anmodning om tilladelse, bekræftelse af sletning, billed- eller filvælger, fingeraftryksdialog), og mens en import eller eksport kører, venter appen med at låse. Hvis du har forladt appen, låses den 2 sekunder efter, at det er afsluttet.
Bokse deler ét enhedssalt
Alle bokse på en telefon bruger det samme enhedssalt. Hvis nogen har det salt, tester ét gæt alle bokse på én gang. Omkostningen ved at angribe en enkelt boks er den samme.
Ting, ingen app kan forhindre
En person, der ser dig tegne dit mønster, eller et kamera, der filmer din skærm.
Hvis du mister begge dele, kan ingen hjælpe
Hvis du mister både dit mønster og din gendannelsessætning, kan ingen gendanne dine filer. Heller ikke os.