Jak LifeVeil chrání vaše soubory
Tato stránka jednoduchými slovy vysvětluje, co LifeVeil dělá, a také co dělat nedokáže. Chceme raději, abyste znali omezení, než abyste věřili příliš velkému slibu.
Stručně
- Veškeré šifrování probíhá ve vašem telefonu. Neexistuje žádný server LifeVeil ani žádný účet.
- Soubory každého trezoru jsou zašifrované náhodným klíčem. Tento klíč odemkne jen gesto daného trezoru (na nejvyšší úrovni spolu s jeho PIN), jeho fráze pro obnovení, pokud jste ji přidali, nebo váš otisk prstu, pokud jste ho zapnuli.
- Každé gesto otevře trezor. Gesto, které neodpovídá žádnému uloženému trezoru, otevře prázdný trezor a nic se nezapíše, dokud do něj nepřidáte soubor.
- My, vývojáři, nikdy nemáme vaše gesto, PIN, frázi ani klíče. Vaše soubory otevřít nemůžeme a vaše gesto resetovat nemůžeme.
- Používáme šifrování zabudované v Androidu a známou knihovnu libsodium. Vlastní šifrování jsme nepsali.
- LifeVeil zatím neprošel nezávislým bezpečnostním auditem.
Od gesta ke klíči
Gesto nakreslíte na mřížce 5×5 a žádný bod nesmí použít dvakrát. Nové gesto, které nastavujete, musí spojit alespoň 6 bodů. LifeVeil gesto převede na klíč pomocí Argon2id z knihovny libsodium (v Androidu verze 1.0.20).
- Nastavení: 64 MiB paměti, 3 průchody, paralelismus 1, 256bitový klíč.
- Argon2id je záměrně pomalý a pro každý pokus potřebuje hodně paměti. Hádání pomocí grafických karet je tak mnohem dražší.
- Na našich testovacích telefonech trvá jedno odemknutí asi 0,6 až 0,9 sekundy.
- Gesto se kombinuje s náhodnou 16bajtovou solí zařízení. Sůl je uložena v aplikaci, zašifrovaná klíčem uloženým v Android Keystore, který nelze z telefonu zkopírovat.
- Žádná kopie gesta se neukládá, kromě té, která se uchovává spolu s frází pro obnovení (viz níže). Aplikace gesto ověřuje tak, že se jím pokusí odemknout klíč.
- Cokoli zadáte do pole PIN nad body, vstupuje do stejného odvození klíče jako gesto. Prázdné pole znamená jen gesto.
Úrovně zabezpečení
Každý trezor má jednu úroveň. Zvolíte ji na začátku a později ji můžete změnit v Nastavení > Trezor > Úroveň zabezpečení poté, co znovu nakreslíte gesto.
- Nejvyšší zabezpečení (Ultra): gesto a PIN o 6 až 8 číslicích, obojí jen ve vaší hlavě. Bezpečné i proti hádání pomocí AI. Pokud jedno z nich zapomenete, trezor nelze obnovit.
- Úroveň 1 (doporučeno): jen gesto. Bezpečné, pokud se vyhnete běžným tvarům. Pokud ho zapomenete, trezor nelze obnovit.
- Úroveň 2: gesto a fráze pro obnovení napsaná na papíře. Pokud gesto zapomenete, dostanete se zpět dovnitř, ale kdo papír najde, může trezor otevřít také.
- Úroveň 3: gesto a otisk prstu. Nejpohodlnější, ale někdo by vám mohl prst na snímač přitisknout násilím. Otisk prstu funguje jen pro jeden trezor.
Jak se soubory šifrují
- Každý trezor má náhodný 256bitový hlavní klíč. Klíč z vašeho gesta a klíč pro obnovení tento hlavní klíč jen „obalují“ (šifrují).
- Soubory, miniatury a seznam vašich položek (původní názvy souborů, data, velikosti) jsou zašifrované pomocí AES-256-GCM se šifrováním zabudovaným v Androidu. GCM také odhalí, jestli byl soubor změněn nebo vyměněn.
- Soubory uvnitř aplikace mají náhodné názvy. Velké soubory se šifrují po částech o velikosti 1 MiB, takže se videa přehrávají, aniž by se do úložiště kdy zapsala nezašifrovaná kopie.
- U fotek JPEG se skryté údaje (EXIF, například fotoaparát a datum) ukládají zvlášť, také zašifrované.
- Když se aplikace zamkne, přepíše klíče, které drží v paměti, nulami.
Fráze pro obnovení
- Fráze pro obnovení je volitelná. Trezor ji dostane, jen když zvolíte Úroveň 2, a uloží se poté, co projdete krátkým kvízem.
- Bezpečný generátor náhodných čísel v telefonu vybere 9 anglických slov. Pocházejí ze dvou seznamů po 1 024 běžných slovech, v jednom ze 4 pevných pořadí. To představuje 92 bitů náhodnosti. Slova jsou anglická ve všech jazycích aplikace.
- Fráze prochází stejným nastavením Argon2id a sama odemyká hlavní klíč. Nepotřebuje sůl zařízení, takže funguje i tehdy, když gesto už nefunguje.
- Kopie fráze a kopie gesta trezoru (a PIN) jsou uložené v telefonu, každá zašifrovaná dvakrát: jednou hlavním klíčem a jednou klíčem z Android Keystore. Když fráze trezor otevře, aplikace jednou ukáže gesto. Po zamknutí aplikace se zapomene.
- Když změníte gesto, fráze zůstane stejná. Trezor bez fráze nemá žádnou cestu zpět, pokud gesto zapomenete.
Otisk prstu
Odemykání otiskem prstu je volitelné a funguje pro jeden trezor. Otisk prstu ověřuje Android, ne LifeVeil; aplikace váš otisk prstu nikdy nedostane. Hlavní klíč odemyká klíč v Android Keystore, který funguje jen hned po silném biometrickém ověření. Pokud někdo do telefonu přidá nový otisk prstu, tento klíč přestane fungovat a musíte znovu použít gesto.
Záložní soubor
- Záloha je jeden soubor
.lvb. Obsahuje vaše položky přesně tak, jak už jsou zašifrované, a navíc obalené kopie hlavního klíče: jednu pro gesto, které jste nakreslili při vytvoření zálohy, a jednu pro frázi pro obnovení, pokud ji trezor měl. - Kopie pro gesto používá pro každou zálohu novou náhodnou sůl, ne sůl zařízení. Díky tomu můžete zálohu otevřít v novém telefonu.
- Hlavička souboru je chráněna tak, aby se odhalily změny nebo vyměněné části.
- Kam ho uložit, vyberete na vlastní obrazovce Androidu pro ukládání. Nikdy neprochází přes nás.
- Pro obnovení otevřete soubor jeho gestem nebo jeho frází. Pak nakreslíte nové gesto. Obnovený trezor začíná bez fráze pro obnovení.
Další ochrana v aplikaci
- Snímky obrazovky, nahrávání obrazovky i náhled v seznamu nedávných aplikací jsou blokované na všech obrazovkách.
- Ve výchozím nastavení se aplikace zamkne, jakmile ji opustíte. Místo toho můžete zvolit 30 sekund nebo 1 minutu.
- Vlastní cloudová záloha Androidu a přenos z telefonu do telefonu data LifeVeil nezahrnují. Použijte místo toho záložní soubor.
- Aplikace nežádá o přístup k poloze, kontaktům ani ke „všem souborům“.
- Prázdný trezor pro každé nové gesto. Trezor bez souborů vypadá stejně, ať už byl uložen, nebo ne, takže ten, kdo vás nutí aplikaci otevřít, nepozná, co v ní ještě je. Vypnout to můžete v Nastavení > Zabezpečení a pak gesto, které nic neotevře, místo toho zobrazí chybu.
Zpomalení hádání
Protože každé gesto otevře trezor, hádání vypadá jako otevírání mnoha prázdných trezorů. LifeVeil ho zpomaluje, aniž by to na obrazovce oznámil, a čekání je stejné pro každé gesto, včetně toho správného.
- Během 24 hodin přidá 10 otevření trezorů bez souborů ke každému odemknutí 10 sekund, 20 otevření 60 sekund a 30 otevření 5 minut, což je maximum.
- Známky automatizace vedou rovnou k maximu: gesta dokončená třikrát za sebou s odstupem kratším než 2 sekundy nebo dotyky, které místo prstu pocházejí ze služeb usnadnění nebo z uměle vloženého vstupu.
- Každých 24 hodin bez otevření prázdného trezoru zpomalení o jeden stupeň zmírní. Posunutí hodin v telefonu zpět ho nezkrátí.
- Funguje to jen uvnitř aplikace. Nezpomalí hádání na počítači se zkopírovaným souborem (viz omezení níže).
AI a hádání gesta
- AI matematiku nepřeskočí. Každý pokus stále musí projít Argon2id s 64 MiB paměti. AI neprolomí Argon2id ani AES, takže žádný jednotlivý pokus nezlevní.
- AI mění pořadí pokusů. Dokáže se naučit tvary, které lidé mají rádi (písmena, čtverce, oblíbené výchozí rohy), a zkusit je jako první. Může také pomoci vyčíst gesto z videa natočeného přes vaše rameno nebo ze šmouh na displeji.
- Obrana se proto týká gesta, ne matematiky. Aplikace upozorňuje na běžné tvary. Nejvyšší úroveň zabezpečení přidává PIN o 6 až 8 číslicích, takže gesto zachycené na videu nestačí. Skrýt čáru gesta nenechá žádnou čáru, kterou by šlo natočit. Sůl zařízení v Android Keystore brání hádání mimo telefon.
Omezení, která byste měli znát
Žádná aplikace nedokáže ochránit před vším. Toto jsou upřímná omezení LifeVeil.
Jednoduchá gesta lze uhodnout
Krátké nebo běžné tvary (L, Z, rovná čára) lze uhodnout tak, že vás někdo pozoruje, podle šmouh na displeji nebo na pár pokusů. Skutečná gesta se hádají mnohem snáz, než by napovídal počet možných gest. Používejte více bodů a více zatáček. Aplikace vás upozorní na velmi jednoduchá gesta a také před uložením trezoru, jehož gesto má méně než 6 bodů.
Jak dlouho by hádání mohlo trvat
V aplikaci trvá každý pokus asi sekundu a opakované hádání zpomaluje každé odemknutí, až na 5 minut. Kdo však má váš záložní soubor nebo získal sůl zařízení z telefonu s rootem, může hádat na počítači, bez čekání. Argon2id to zpomaluje, ale gesto má mnohem méně možností než dlouhé heslo. Přibližné odhady pro jednu špičkovou grafickou kartu (třídy RTX 4090) při asi 1 000 pokusech za sekundu:
| Co se hádá | Možnosti | Čas, jedna grafická karta |
|---|---|---|
| 10 000 nejběžnějších gest | 104 | asi 10 sekund |
| Všechna gesta se 6 body | 1,28 × 108 | asi 1,5 dne |
| Všechna gesta se 7 body | 2,42 × 109 | asi 28 dní |
| Všechna gesta s 8 body | 4,36 × 1010 | asi 1,4 roku |
| Fráze pro obnovení (92 bitů) | 4,95 × 1027 | asi 1,6 × 1017 let |
Jde o odhady, ne o měření. Počty gest jsou horní hranice; skutečných gest je mnohem méně. Více nebo rychlejšího hardwaru úměrně zrychluje hádání. PIN na nejvyšší úrovni tato čísla násobí až 108.
Záložní soubor si nechte pro sebe
Záložní soubor neobsahuje sůl zařízení, takže kdokoli ho získá, může zkoušet gesta offline, jak je uvedeno výše. Ukládejte ho jen tam, kam máte přístup pouze vy, například do vlastního cloudového účtu, a používejte delší gesto.
Fráze pro obnovení ukáže i gesto
Kdo má frázi pro obnovení trezoru, může tento trezor otevřít a aplikace mu pak ukáže jeho gesto a PIN. Pokud stejné gesto používáte i jinde, například jako zámek obrazovky telefonu, dozví se i ho. Papír uchovávejte stejně bezpečně jako samotné soubory.
Telefony s rootem nebo napadené telefony
Pokud někdo může spouštět kód s oprávněními aplikace (například v telefonu s rootem nebo pomocí malwaru s plnou kontrolou), může odemknout sůl zařízení a hádat offline. Když je trezor otevřený, jsou klíče v paměti a lze je přečíst s přístupem root nebo pomocí debuggeru. Některé kopie vytvořené uvnitř Androidu a Flutteru a fotky zobrazené na obrazovce nelze z paměti hned vymazat.
Některé informace jsou vidět
Počet zašifrovaných souborů v úložišti aplikace, jejich přibližné velikosti a čas jejich vytvoření nebo změny nejsou skryté. Skryté není ani to, že je LifeVeil nainstalovaný.
Prázdný trezor oklame jen obrazovku
Kdo umí číst soubory aplikace (třeba na telefonu s rootem), může spočítat složky trezorů a vidět, že je toto nastavení zapnuté. Zpomalení započítává uložené i neuložené prázdné trezory stejně, takže ani samotné čekání je od sebe neodliší.
Maskování mění jen plochu
- Mění se jen ikona a název ve spouštěči. Seznam v Nastavení > Aplikace v telefonu, informace o aplikaci a obrazovky úložiště dál zobrazují LifeVeil.
- Čtečky obrazovky mohou dál říkat „LifeVeil“. Například spouštěč Samsung One UI předává TalkBacku skutečný název aplikace a aplikace to nemůže změnit.
- Nabídka sdílení v Androidu vždy zobrazuje skutečný název aplikace, proto z ní LifeVeil při změně ikony zmizí. Můžete ho tam znovu zapnout.
- Žádosti o oprávnění v Androidu zobrazují skutečný název, proto aplikace žádá o oprávnění dřív, než ikonu změníte.
- Dokud je ikona změněná, aplikace neposílá oznámení.
- Maskovací kód (4 až 8 číslic) jen zobrazí zamykací obrazovku. Vaše soubory neotevře. Je uložen jako solený hash, ale při tak malém počtu možností ho snadno zjistí každý, kdo získá daný soubor.
Otisk prstu je slabší cesta
Odemykání otiskem prstu Argon2id přeskakuje. Jeho síla závisí na snímači otisků prstů ve vašem telefonu a na Android Keystore. V Nastavení ho můžete kdykoli vypnout.
Údaje ve fotkách
- U fotek HEIC, PNG a WebP zůstávají skryté údaje (EXIF) uvnitř souboru. Celý soubor je přesto zašifrovaný.
- V Androidu 10 a novějším Android z fotek, které LifeVeil načítá, odstraní polohu GPS, protože aplikace nežádá o přístup k poloze. Když se originál z galerie smaže, tato poloha zmizí.
- Fotky přidané přes výběr fotek v Androidu dostanou nové názvy podle data, protože výběr neposkytuje původní název.
Během systémových obrazovek se zamykání pozastaví
Když je otevřená systémová obrazovka (žádost o oprávnění, potvrzení smazání, výběr fotek nebo souborů, výzva k otisku prstu) a během importu nebo exportu, aplikace se zamknutím počká. Pokud jste aplikaci opustili, zamkne se 2 sekundy poté, co to skončí.
Trezory sdílejí jednu sůl zařízení
Všechny trezory v telefonu používají stejnou sůl zařízení. Pokud někdo tuto sůl má, jeden pokus otestuje všechny trezory najednou. Náklady na útok na jeden trezor jsou stejné.
Co žádná aplikace nezastaví
Někoho, kdo vás sleduje při kreslení gesta, nebo kameru, která natáčí vaši obrazovku.
Bez fráze vám nikdo nepomůže
Pokud zapomenete gesto trezoru, který nemá frázi pro obnovení, nebo ztratíte gesto i frázi, nikdo jeho soubory neobnoví. Ani my.