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.
- Pliki każdego sejfu są szyfrowane losowym kluczem. Ten klucz może odblokować tylko wzór tego sejfu (na najwyższym poziomie razem z jego PIN-em), jego fraza odzyskiwania, jeśli ją dodano, albo Twój odcisk palca, jeśli go włączono.
- Każdy wzór otwiera sejf. Wzór, który nie pasuje do żadnego zapisanego sejfu, otwiera pusty sejf i nic nie zostaje zapisane, dopóki nie dodasz do niego pliku.
- My, twórcy aplikacji, nigdy nie mamy Twojego wzoru, PIN-u, 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, bez powtarzania żadnego punktu. Nowo ustawiany wzór wymaga co najmniej 6 punktów. 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, poza tą trzymaną razem z frazą odzyskiwania (zob. niżej). Sprawdza wzór, próbując odblokować nim klucz.
- To, co wpiszesz w polu PIN nad punktami, trafia do tego samego wyprowadzania klucza co wzór. Puste pole oznacza sam wzór.
Poziomy bezpieczeństwa
Każdy sejf ma jeden poziom. Wybierasz go na początku, a później możesz go zmienić w: Ustawienia > Sejf > Poziom bezpieczeństwa, po ponownym narysowaniu wzoru.
- Najwyższe bezpieczeństwo (Ultra): wzór i PIN z 6 do 8 cyfr, oba tylko w Twojej głowie. Bezpieczny nawet przy zgadywaniu z pomocą AI. Jeśli zapomnisz któregoś z nich, sejfu nie da się odzyskać.
- Poziom 1 (zalecany): tylko wzór. Bezpieczny, jeśli unikasz popularnych kształtów. Jeśli go zapomnisz, sejfu nie da się odzyskać.
- Poziom 2: wzór i fraza odzyskiwania zapisana na papierze. Możesz wrócić do sejfu, jeśli zapomnisz wzoru, ale każdy, kto znajdzie kartkę, też może go otworzyć.
- Poziom 3: wzór i odcisk palca. Najwygodniejszy, ale ktoś może siłą przyłożyć Twój palec do czytnika. Odcisk palca działa tylko dla jednego sejfu.
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
- Fraza odzyskiwania jest opcjonalna. Sejf dostaje ją tylko wtedy, gdy wybierzesz Poziom 2, i zostaje ona zapisana po zaliczeniu krótkiego quizu.
- 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 i kopia wzoru sejfu (oraz PIN-u) są przechowywane na telefonie, każda zaszyfrowana dwukrotnie: raz kluczem głównym i raz kluczem z Android Keystore. Gdy fraza otwiera sejf, aplikacja raz pokazuje wzór. Zostaje on zapomniany, gdy aplikacja się zablokuje.
- Fraza pozostaje ta sama, gdy zmieniasz wzór. Sejf bez frazy nie ma żadnej drogi powrotu, jeśli zapomnisz wzoru.
Odcisk palca
Odblokowywanie odciskiem palca jest opcjonalne i działa dla jednego sejfu. 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 opakowane kopie klucza głównego: jedną dla wzoru narysowanego przy tworzeniu kopii i jedną dla frazy odzyskiwania, jeśli sejf ją miał. - 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. Przywrócony sejf zaczyna bez frazy 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 dla każdego nowego wzoru. Sejf bez plików wygląda tak samo bez względu na to, czy został zapisany, więc osoba zmuszająca Cię do otwarcia aplikacji nie wie, co jeszcze w niej jest. Możesz to wyłączyć w: Ustawienia > Bezpieczeństwo; wtedy wzór, który niczego nie otwiera, pokazuje błąd.
Spowalnianie zgadywania
Ponieważ każdy wzór otwiera sejf, zgadywanie wygląda jak otwieranie wielu pustych sejfów. LifeVeil to spowalnia, nie informując o tym na ekranie, a czas oczekiwania jest taki sam dla każdego wzoru, także właściwego.
- W ciągu 24 godzin 10 otwarć sejfów bez plików dodaje 10 sekund do każdego odblokowania, 20 dodaje 60 sekund, a 30 dodaje 5 minut, czyli maksimum.
- Oznaki automatyzacji od razu dają maksimum: wzory ukończone w odstępie krótszym niż 2 sekundy trzy razy z rzędu albo dotknięcia pochodzące z usług ułatwień dostępu lub wstrzykiwanego wejścia zamiast z palca.
- Każde 24 godziny bez otwarcia pustego sejfu zmniejszają spowolnienie o jeden stopień. Cofnięcie zegara w telefonie go nie skraca.
- Działa to tylko w aplikacji. Nie spowalnia zgadywania na komputerze ze skopiowanym plikiem (zob. ograniczenia niżej).
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. Aplikacja ostrzega przed popularnymi kształtami. Najwyższy poziom bezpieczeństwa dodaje PIN z 6 do 8 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, a także przed zapisaniem sejfu, którego wzór ma mniej niż 6 punktów.
Ile może trwać zgadywanie
W aplikacji każda próba trwa około sekundy, a powtarzane zgadywanie spowalnia każde odblokowanie, maksymalnie do 5 minut. 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. PIN na najwyższym poziomie mnoży te liczby nawet przez 108.
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.
Fraza odzyskiwania pokazuje też wzór
Kto ma frazę odzyskiwania sejfu, może ten sejf otworzyć, a aplikacja pokaże mu wtedy jego wzór i PIN. Jeśli używasz tego samego wzoru gdzie indziej, np. do blokady ekranu telefonu, pozna go także. Przechowuj kartkę tak starannie jak same pliki.
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. Spowolnienie liczy zapisane i niezapisane puste sejfy tak samo, więc sam czas oczekiwania ich nie odróżnia.
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.
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.
Bez frazy nikt nie pomoże
Jeśli zapomnisz wzoru sejfu, który nie ma frazy odzyskiwania, albo stracisz zarówno wzór, jak i frazę, nikt nie odzyska jego plików. Nawet my.