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.
- Vaše soubory jsou zašifrované náhodným klíčem. Tento klíč odemkne jen vaše gesto, fráze pro obnovení nebo otisk prstu.
- My, vývojáři, nikdy nemáme vaše gesto, 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. Musí spojit alespoň 6 bodů a žádný bod nesmí použít dvakrát. 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á. Aplikace gesto ověřuje tak, že se jím pokusí odemknout klíč.
- Po 5 nesprávných gestech za sebou musíte počkat 30 sekund. Po každé další chybě se doba čekání zdvojnásobí, až na 16 minut.
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í
- Když vytvoříte trezor, 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 je uložena v telefonu, zašifrovaná dvakrát: jednou hlavním klíčem a jednou klíčem z Android Keystore. Zobrazíte ji v Nastavení poté, co znovu nakreslíte gesto.
- Když změníte gesto nebo se pomocí fráze dostanete zpět dovnitř, dostanete novou frázi. Stará přestane fungovat.
Otisk prstu
Odemykání otiskem prstu je volitelné. 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 dvě 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í, kterou jste tehdy měli. - 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 a dostanete novou frázi 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 při nesprávném gestu. Gesto, které neotevře žádný trezor, místo chyby otevře prázdný trezor, takže ten, kdo vás nutí aplikaci otevřít, nepozná, co v ní ještě je. Neúspěšné pokusy se dál počítají, fotky narušitele se dál pořizují a čekací doby dál platí. Vypnout to můžete v Nastavení > Zabezpečení > Prázdný trezor při nesprávném gestu.
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. Ukazatel síly upozorňuje na běžné tvary. Gesto + PIN přidává PIN o 4–6 čí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 na velmi jednoduchá gesta upozorní.
Jak dlouho by hádání mohlo trvat
V aplikaci trvá každý pokus asi sekundu a po 5 chybách se čekání prodlužuje. 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í.
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.
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é. A po 5 nesprávných gestech vás aplikace nechá čekat, z čehož je vidět, že předchozí gesta nic neotevřela.
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.
Fotky vetřelců
Aplikace nepřehrává zvuk závěrky, ale telefony prodávané v některých zemích, například v Japonsku a Koreji, ho přehrávají vždy. Pokud kameru používá jiná aplikace nebo telefon nemá přední kameru, žádná fotka se nepořídí. Dokud neodemknete první trezor, který jste vytvořili, jsou fotky zapečetěné klíčem z Android Keystore.
Ú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.
Když ztratíte obojí, nikdo vám nepomůže
Pokud ztratíte gesto i frázi pro obnovení, nikdo vaše soubory neobnoví. Ani my.