Jak LifeVeil chroni Twoje pliki
Ta strona prostymi słowami wyjaśnia, co robi LifeVeil, a także czego nie potrafi. Lepiej znać ograniczenia, niż ufać zbyt dużej obietnicy.
W skrócie
- Całe szyfrowanie odbywa się na Twoim telefonie. Nie ma serwera LifeVeil ani konta.
- Twoje pliki są szyfrowane losowym kluczem. Ten klucz może odblokować tylko Twój wzór, fraza odzyskiwania albo odcisk palca.
- My, twórcy aplikacji, nigdy nie mamy Twojego wzoru, frazy ani kluczy. Nie możemy otworzyć Twoich plików ani zresetować Twojego wzoru.
- Używamy szyfrowania wbudowanego w Androida i znanej biblioteki libsodium. Nie napisaliśmy własnego szyfrowania.
- LifeVeil nie przeszedł jeszcze niezależnego audytu bezpieczeństwa.
Od wzoru do klucza
Rysujesz wzór na siatce 5×5, używając co najmniej 6 punktów, bez powtarzania żadnego z nich. LifeVeil zamienia wzór w klucz za pomocą Argon2id z biblioteki libsodium (wersja 1.0.20 na Androidzie).
- Ustawienia: 64 MiB pamięci, 3 przebiegi, 1 tor równoległy, klucz 256-bitowy.
- Argon2id celowo działa wolno i przy każdej próbie potrzebuje dużo pamięci. Przez to zgadywanie za pomocą kart graficznych jest dużo droższe.
- Na naszych telefonach testowych jedno odblokowanie trwa około 0,6–0,9 sekundy.
- Wzór jest łączony z losową, 16-bajtową solą urządzenia. Sól jest przechowywana w aplikacji, zaszyfrowana kluczem trzymanym w Android Keystore, którego nie da się skopiować z telefonu.
- Aplikacja nie przechowuje żadnej kopii wzoru. Sprawdza wzór, próbując odblokować nim klucz.
- Po 5 błędnych wzorach z rzędu trzeba odczekać 30 sekund. Po każdej kolejnej pomyłce czas oczekiwania się podwaja, maksymalnie do 16 minut.
Jak szyfrowane są pliki
- Każdy sejf ma losowy, 256-bitowy klucz główny. Klucz z Twojego wzoru i klucz odzyskiwania jedynie „opakowują” (szyfrują) ten klucz główny.
- Pliki, miniatury i lista Twoich elementów (oryginalne nazwy plików, daty, rozmiary) są szyfrowane algorytmem AES-256-GCM przy użyciu szyfrowania wbudowanego w Androida. GCM wykrywa też, czy plik został zmieniony lub podmieniony.
- Pliki w aplikacji mają losowe nazwy. Duże pliki są szyfrowane w kawałkach po 1 MiB, dzięki czemu filmy odtwarzają się bez zapisywania niezaszyfrowanej kopii w pamięci telefonu.
- W przypadku zdjęć JPEG ukryte szczegóły (EXIF, np. aparat i data) są przechowywane osobno, również zaszyfrowane.
- Gdy aplikacja się blokuje, nadpisuje zerami klucze, które trzyma w pamięci.
Fraza odzyskiwania
- Gdy tworzysz sejf, bezpieczny generator liczb losowych w telefonie wybiera 9 angielskich słów. Pochodzą one z dwóch list po 1024 popularne słowa, w jednej z 4 stałych kolejności. To daje 92 bity losowości. Słowa są angielskie we wszystkich językach aplikacji.
- Fraza przechodzi przez Argon2id z tymi samymi ustawieniami i sama odblokowuje klucz główny. Nie potrzebuje soli urządzenia, więc działa nawet wtedy, gdy wzór już nie działa.
- Kopia frazy jest przechowywana na telefonie, zaszyfrowana dwukrotnie: raz kluczem głównym i raz kluczem z Android Keystore. Możesz ją zobaczyć w Ustawieniach po ponownym narysowaniu wzoru.
- Gdy zmieniasz wzór albo wchodzisz z powrotem za pomocą frazy, dostajesz nową frazę. Stara przestaje działać.
Odcisk palca
Odblokowywanie odciskiem palca jest opcjonalne. Odcisk sprawdza Android, nie LifeVeil; aplikacja nigdy nie otrzymuje Twojego odcisku palca. Klucz główny jest odblokowywany kluczem z Android Keystore, który działa tylko tuż po silnym uwierzytelnieniu biometrycznym. Jeśli ktoś doda do telefonu nowy odcisk palca, ten klucz przestaje działać i trzeba znowu użyć wzoru.
Plik kopii zapasowej
- Kopia zapasowa to jeden plik
.lvb. Zawiera Twoje elementy dokładnie w takiej postaci, w jakiej są już zaszyfrowane, oraz dwie opakowane kopie klucza głównego: jedną dla wzoru narysowanego przy tworzeniu kopii i jedną dla frazy odzyskiwania, która obowiązywała w tamtym momencie. - Kopia dla wzoru używa nowej, losowej soli dla każdej kopii zapasowej, a nie soli urządzenia. Dzięki temu możesz otworzyć kopię na nowym telefonie.
- Nagłówek pliku jest chroniony, więc zmiany lub podmienione części zostaną wykryte.
- Miejsce zapisu wybierasz w systemowym oknie zapisu Androida. Plik nigdy nie przechodzi przez nas.
- Aby przywrócić kopię, otwórz plik jego wzorem albo jego frazą. Potem narysujesz nowy wzór i dostaniesz nową frazę odzyskiwania.
Inne zabezpieczenia w aplikacji
- Zrzuty ekranu, nagrywanie ekranu i podgląd na liście ostatnich aplikacji są zablokowane na każdym ekranie.
- Domyślnie aplikacja blokuje się, gdy tylko ją opuścisz. Zamiast tego możesz wybrać 30 sekund lub 1 minutę.
- Systemowa kopia zapasowa Androida w chmurze i przenoszenie danych między telefonami nie obejmują danych LifeVeil. Zamiast tego użyj pliku kopii zapasowej.
- Aplikacja nie prosi o dostęp do lokalizacji, kontaktów ani „wszystkich plików”.
- Pusty sejf przy błędnym wzorze. Wzór, który nie otwiera żadnego sejfu, zamiast błędu otwiera pusty sejf, więc osoba zmuszająca Cię do otwarcia aplikacji nie wie, co jeszcze w niej jest. Błędne próby są nadal liczone, zdjęcia intruza są nadal robione, a czas oczekiwania nadal obowiązuje. Możesz to wyłączyć w: Ustawienia > Bezpieczeństwo > Pusty sejf przy błędnym wzorze.
AI i zgadywanie wzoru
- AI nie ominie matematyki. Każda próba nadal musi przejść przez Argon2id z 64 MiB pamięci. AI nie łamie Argon2id ani AES, więc żadna pojedyncza próba nie staje się tańsza.
- AI zmienia kolejność prób. Może nauczyć się kształtów, które ludzie lubią (litery, kwadraty, ulubione narożniki startowe), i sprawdzać je najpierw. Może też pomóc odczytać wzór z filmu nagranego zza Twojego ramienia albo ze smug na ekranie.
- Dlatego ochrona dotyczy wzoru, nie matematyki. Wskaźnik siły ostrzega przed popularnymi kształtami. Wzór + PIN dodaje PIN z 4–6 cyfr, więc wzór podejrzany na filmie nie wystarczy. Ukryj linię wzoru sprawia, że nie ma linii do nagrania. Sól urządzenia w Android Keystore uniemożliwia zgadywanie poza telefonem.
Ograniczenia, które warto znać
Żadna aplikacja nie ochroni przed wszystkim. Oto uczciwie opisane ograniczenia LifeVeil.
Proste wzory da się odgadnąć
Krótkie lub popularne kształty (L, Z, prosta linia) można odgadnąć, obserwując Cię, po smugach na ekranie albo w kilku próbach. Prawdziwe wzory są dużo łatwiejsze do odgadnięcia, niż sugeruje liczba możliwych wzorów. Używaj więcej punktów i więcej zakrętów. Aplikacja ostrzega przed bardzo prostymi wzorami.
Ile może trwać zgadywanie
W aplikacji każda próba trwa około sekundy, a po 5 pomyłkach czas oczekiwania rośnie. Jednak ktoś, kto ma Twój plik kopii zapasowej albo wydobył sól urządzenia z telefonu z rootem, może zgadywać na komputerze, bez żadnego czekania. Argon2id to spowalnia, ale wzór ma dużo mniej możliwości niż długie hasło. Przybliżone szacunki dla jednej wydajnej karty graficznej (klasy RTX 4090) przy około 1000 prób na sekundę:
| Co jest zgadywane | Liczba możliwości | Czas, jedna karta graficzna |
|---|---|---|
| 10 000 najpopularniejszych wzorów | 104 | około 10 sekund |
| Każdy wzór z 6 punktów | 1,28 × 108 | około 1,5 dnia |
| Każdy wzór z 7 punktów | 2,42 × 109 | około 28 dni |
| Każdy wzór z 8 punktów | 4,36 × 1010 | około 1,4 roku |
| Fraza odzyskiwania (92 bity) | 4,95 × 1027 | około 1,6 × 1017 lat |
To szacunki, nie pomiary. Liczby wzorów to górne granice; prawdziwych wzorów jest dużo mniej. Więcej lub szybszy sprzęt proporcjonalnie przyspiesza zgadywanie.
Nie udostępniaj pliku kopii zapasowej
Plik kopii zapasowej nie zawiera soli urządzenia, więc każdy, kto go zdobędzie, może sprawdzać wzory offline, jak pokazano wyżej. Przechowuj go tylko tam, gdzie masz dostęp wyłącznie Ty, np. na własnym koncie w chmurze, i używaj dłuższego wzoru.
Telefony z rootem lub zainfekowane
Jeśli ktoś może uruchomić kod z uprawnieniami aplikacji (np. na telefonie z rootem albo za pomocą złośliwego oprogramowania z pełną kontrolą), może odblokować sól urządzenia i zgadywać offline. Gdy sejf jest otwarty, klucze są w pamięci i można je odczytać z dostępem root albo debugerem. Niektórych kopii tworzonych wewnątrz Androida i Fluttera oraz zdjęć wyświetlanych na ekranie nie da się od razu wymazać z pamięci.
Niektóre informacje są widoczne
Liczba zaszyfrowanych plików w pamięci aplikacji, ich przybliżone rozmiary oraz czas utworzenia lub zmiany nie są ukryte. Nie jest też ukryte to, że LifeVeil jest zainstalowany.
Pusty sejf oszukuje tylko ekran
Ktoś, kto może odczytać pliki aplikacji (na przykład na telefonie z rootem), może policzyć foldery sejfów i zobaczyć, że to ustawienie jest włączone. Do tego po 5 błędnych wzorach aplikacja każe czekać, co pokazuje, że wcześniejsze wzory niczego nie otworzyły.
Kamuflaż zmienia tylko ekran główny
- Zmieniają się tylko ikona i nazwa w launcherze. Lista Ustawienia > Aplikacje, informacje o aplikacji i ekrany pamięci w telefonie nadal pokazują LifeVeil.
- Czytniki ekranu mogą nadal mówić „LifeVeil”. Na przykład launcher Samsung One UI przekazuje TalkBack prawdziwą nazwę aplikacji, a aplikacja nie może tego zmienić.
- Menu udostępniania Androida zawsze pokazuje prawdziwą nazwę aplikacji, więc po zmianie ikony LifeVeil znika z tego menu. Możesz go tam z powrotem włączyć.
- Prośby Androida o uprawnienia pokazują prawdziwą nazwę, więc aplikacja prosi o uprawnienia przed zmianą ikony.
- Gdy ikona jest zmieniona, aplikacja nie wysyła powiadomień.
- Kod kamuflażu (od 4 do 8 cyfr) tylko pokazuje ekran blokady. Nie otwiera Twoich plików. Jest przechowywany jako solony skrót, ale przy tak małej liczbie możliwości łatwo go odgadnąć, jeśli ktoś zdobędzie plik.
Odcisk palca to słabsza droga
Odblokowywanie odciskiem palca pomija Argon2id. Jego siła zależy od czytnika linii papilarnych w Twoim telefonie i od Android Keystore. Możesz je w każdej chwili wyłączyć w Ustawieniach.
Zdjęcia intruzów
Aplikacja nie odtwarza dźwięku migawki, ale telefony sprzedawane w niektórych krajach, np. w Japonii i Korei, zawsze go odtwarzają. Zdjęcie nie zostanie zrobione, jeśli aparatu używa inna aplikacja albo telefon nie ma przedniego aparatu. Dopóki nie odblokujesz pierwszego utworzonego sejfu, zdjęcia są zabezpieczone kluczem z Android Keystore.
Szczegóły zdjęć
- W zdjęciach HEIC, PNG i WebP ukryte szczegóły (EXIF) pozostają w pliku. Cały plik jest jednak zaszyfrowany.
- Na Androidzie 10 i nowszym Android usuwa lokalizację GPS ze zdjęć odczytywanych przez LifeVeil, bo aplikacja nie prosi o dostęp do lokalizacji. Po usunięciu oryginału z galerii ta lokalizacja przepada.
- Zdjęcia dodane przez systemowy selektor zdjęć Androida dostają nowe nazwy oparte na dacie, bo selektor nie podaje oryginalnej nazwy.
Blokada czeka podczas ekranów systemowych
Gdy otwarty jest ekran systemowy (prośba o uprawnienia, potwierdzenie usunięcia, selektor zdjęć lub plików, prośba o odcisk palca) i podczas importu lub eksportu aplikacja wstrzymuje blokadę. Jeśli w tym czasie wyjdziesz z aplikacji, zablokuje się ona 2 sekundy po ich zakończeniu.
Sejfy mają wspólną sól urządzenia
Wszystkie sejfy na telefonie używają tej samej soli urządzenia. Jeśli ktoś ma tę sól, jedna próba sprawdza wszystkie sejfy naraz. Koszt ataku na pojedynczy sejf jest taki sam.
Czego żadna aplikacja nie powstrzyma
Kogoś, kto patrzy, jak rysujesz wzór, albo kamery nagrywającej Twój ekran.
Jeśli stracisz jedno i drugie, nikt nie pomoże
Jeśli stracisz zarówno wzór, jak i frazę odzyskiwania, nikt nie odzyska Twoich plików. Nawet my.