Як LifeVeil захищає ваші файли
Ця сторінка простими словами пояснює, що робить LifeVeil, а також чого він зробити не може. Ми хочемо, щоб ви знали обмеження, а не вірили завеликим обіцянкам.
Коротко
- Усе шифрування відбувається на вашому телефоні. Немає ні сервера LifeVeil, ні облікового запису.
- Файли кожного сейфа зашифровано випадковим ключем. Розблокувати цей ключ можуть лише графічний ключ цього сейфа (на найвищому рівні — разом із PIN-кодом), його фраза відновлення, якщо ви її додали, або ваш відбиток пальця, якщо ви його ввімкнули.
- Кожен графічний ключ відкриває сейф. Ключ, що не збігається з жодним збереженим сейфом, відкриває порожній, і нічого не записується, доки ви не додасте до нього файл.
- Ми, розробники, ніколи не маємо вашого графічного ключа, вашого PIN-коду, вашої фрази чи ваших ключів. Ми не можемо відкрити ваші файли і не можемо скинути ваш графічний ключ.
- Ми використовуємо шифрування, вбудоване в Android, і відому бібліотеку libsodium. Власного шифрування ми не писали.
- LifeVeil ще не проходив незалежного аудиту безпеки.
Від графічного ключа до ключа шифрування
Ви малюєте графічний ключ на сітці 5×5, не використовуючи жодну точку двічі. Новий графічний ключ, який ви задаєте, має містити щонайменше 6 точок. LifeVeil перетворює графічний ключ на ключ шифрування за допомогою Argon2id з libsodium (версія 1.0.20 на Android).
- Параметри: 64 MiB пам’яті, 3 проходи, 1 потік, 256-бітний ключ.
- Argon2id навмисно повільний і для кожної спроби потребує багато пам’яті. Через це вгадування за допомогою відеокарт стає значно дорожчим.
- На наших тестових телефонах одне розблокування триває приблизно 0,6–0,9 секунди.
- Графічний ключ поєднується з випадковою 16-байтовою сіллю пристрою. Сіль зберігається в додатку, зашифрована ключем, що зберігається в Android Keystore, звідки його неможливо скопіювати з телефона.
- Копія графічного ключа не зберігається, окрім тієї, що зберігається разом із фразою відновлення (див. нижче). Додаток перевіряє графічний ключ, намагаючись розблокувати ним ключ шифрування.
- Усе, що ви вводите в поле PIN-коду над точками, потрапляє в те саме виведення ключа, що й графічний ключ. Порожнє поле означає лише графічний ключ.
Рівні захисту
Кожен сейф має один рівень. Ви вибираєте його на початку, а пізніше можете змінити в розділі Налаштування > Сейф > Рівень захисту, ще раз намалювавши графічний ключ.
- Максимальний захист (Ultra): графічний ключ і PIN-код із 6–8 цифр, обидва лише у вашій пам’яті. Захищено навіть від вгадування за допомогою ШІ. Якщо ви забудете будь-що з них, сейф не вдасться відновити.
- Рівень 1 (рекомендовано): лише графічний ключ. Безпечно, якщо уникати поширених фігур. Якщо ви його забудете, сейф не вдасться відновити.
- Рівень 2: графічний ключ і фраза відновлення, записана на папері. Ви зможете знову ввійти, якщо забудете ключ, але той, хто знайде папірець, теж зможе відкрити сейф.
- Рівень 3: графічний ключ і відбиток пальця. Найзручніший, але хтось може силою прикласти ваш палець до сканера. Відбиток пальця працює лише для одного сейфа.
Як шифруються файли
- Кожен сейф має випадковий 256-бітний головний ключ. Ключ із графічного ключа та ключ відновлення лише «обгортають» (шифрують) цей головний ключ.
- Файли, мініатюри та список ваших елементів (оригінальні назви файлів, дати, розміри) шифруються за допомогою AES-256-GCM вбудованими засобами шифрування Android. GCM також виявляє, чи файл було змінено або підмінено.
- Файли всередині додатка мають випадкові назви. Великі файли шифруються частинами по 1 MiB, тож відео відтворюються без запису незашифрованої копії в пам’ять пристрою.
- Для фото у форматі JPEG приховані дані (EXIF, наприклад камера й дата) зберігаються окремо і теж зашифровані.
- Коли додаток блокується, він перезаписує нулями ключі, що зберігаються в оперативній пам’яті.
Фраза відновлення
- Фраза відновлення необов’язкова. Сейф отримує її, лише коли ви вибираєте Рівень 2, і вона зберігається після того, як ви пройдете коротку перевірку.
- Безпечний генератор випадкових чисел телефона вибирає 9 англійських слів. Їх беруть із двох списків по 1024 поширених слова в одному з 4 фіксованих порядків. Це 92 біти випадковості. Слова англійські в усіх мовах додатка.
- Фраза проходить через ті самі параметри Argon2id і сама розблоковує головний ключ. Їй не потрібна сіль пристрою, тому вона працює, навіть коли графічний ключ уже не працює.
- Копія фрази й копія графічного ключа сейфа (і PIN-коду) зберігаються на телефоні, кожна зашифрована двічі: один раз головним ключем і один раз ключем Android Keystore. Коли фраза відкриває сейф, додаток один раз показує графічний ключ. Після блокування додатка він забувається.
- Фраза не змінюється, коли ви змінюєте графічний ключ. Сейф без фрази неможливо повернути, якщо графічний ключ забуто.
Відбиток пальця
Розблокування відбитком пальця необов’язкове і працює для одного сейфа. Відбиток перевіряє Android, а не LifeVeil; додаток ніколи не отримує ваш відбиток пальця. Головний ключ розблоковується ключем в Android Keystore, який працює лише одразу після надійної біометричної перевірки. Якщо хтось додасть на телефон новий відбиток пальця, цей ключ перестане працювати, і вам знову доведеться використовувати графічний ключ.
Файл резервної копії
- Резервна копія — це один файл
.lvb. У ньому ваші елементи зберігаються в уже зашифрованому вигляді, а також обгорнуті копії головного ключа: одна для графічного ключа, який ви намалювали під час створення резервної копії, і одна для фрази відновлення, якщо сейф її мав. - Копія для графічного ключа використовує нову випадкову сіль для кожної резервної копії, а не сіль пристрою. Саме тому резервну копію можна відкрити на новому телефоні.
- Заголовок файлу захищено, тож зміни або підмінені частини буде виявлено.
- Ви самі вибираєте, куди зберегти файл, на стандартному екрані збереження Android. Він ніколи не проходить через нас.
- Щоб відновити дані, відкрийте файл його графічним ключем або його фразою. Потім ви намалюєте новий графічний ключ. Відновлений сейф спочатку не має фрази відновлення.
Інший захист у додатку
- Знімки екрана, запис екрана та попередній перегляд у списку нещодавніх додатків заблоковано на всіх екранах.
- За замовчуванням додаток блокується, щойно ви з нього виходите. Натомість можна вибрати 30 секунд або 1 хвилину.
- Стандартне хмарне резервне копіювання Android і перенесення з телефона на телефон не включають дані LifeVeil. Використовуйте натомість файл резервної копії.
- Додаток не запитує доступу до геоданих, контактів чи «всіх файлів».
- Порожній сейф для кожного нового ключа. Сейф без файлів виглядає однаково, збережений він чи ні, тож той, хто змушує вас відкрити додаток, не дізнається, що ще в ньому є. Вимкнути це можна в розділі Налаштування > Безпека, і тоді ключ, який нічого не відкриває, показуватиме помилку.
Сповільнення вгадування
Оскільки кожен графічний ключ відкриває сейф, вгадування виглядає як відкриття багатьох порожніх сейфів. LifeVeil сповільнює це, нічого не повідомляючи на екрані, і очікування однакове для кожного ключа, зокрема й правильного.
- Протягом 24 годин 10 відкриттів сейфів без файлів додають 10 секунд до кожного розблокування, 20 — 60 секунд, а 30 — 5 хвилин, це максимум.
- Ознаки автоматизації одразу ведуть до максимуму: ключі, завершені з інтервалом менше 2 секунд тричі поспіль, або дотики, що надходять від служб спеціальних можливостей чи штучно введених подій, а не від пальця.
- Кожні 24 години без відкриття порожнього сейфа зменшують очікування на один крок. Переведення годинника телефона назад його не скорочує.
- Це працює лише в додатку. Воно не сповільнює вгадування на комп’ютері зі скопійованим файлом (див. обмеження нижче).
ШІ та вгадування графічного ключа
- ШІ не може оминути математику. Кожна спроба все одно має пройти Argon2id із 64 MiB пам’яті. ШІ не зламує ні Argon2id, ні AES, тож жодна окрема спроба не стає дешевшою.
- ШІ змінює порядок спроб. Він може вивчити фігури, які люди люблять (літери, квадрати, улюблені початкові кути), і пробувати їх першими. Він також може допомогти розпізнати графічний ключ із відео, знятого з-за вашого плеча, або за слідами пальців на екрані.
- Тому захист стосується графічного ключа, а не математики. Додаток попереджає про поширені фігури. Найвищий рівень захисту додає PIN-код із 6–8 цифр, тож графічного ключа, побаченого на відео, недостатньо. Приховувати лінію ключа не залишає лінії, яку можна зняти. Сіль пристрою в Android Keystore не дає вгадувати поза телефоном.
Обмеження, які варто знати
Жоден додаток не може захистити від усього. Ось чесні обмеження LifeVeil.
Прості графічні ключі можна вгадати
Короткі або поширені фігури (L, Z, пряма лінія) можна вгадати, спостерігаючи за вами, за слідами пальців на екрані або за кілька спроб. Справжні графічні ключі вгадати набагато легше, ніж можна подумати з кількості можливих ключів. Використовуйте більше точок і більше поворотів. Додаток попереджає про дуже прості графічні ключі, а також перед збереженням сейфа, графічний ключ якого має менше 6 точок.
Скільки часу може тривати вгадування
У додатку кожна спроба триває приблизно секунду, а повторне вгадування сповільнює кожне розблокування, аж до 5 хвилин. Але той, хто має ваш файл резервної копії або дістав сіль пристрою з телефона з root-доступом, може вгадувати на комп’ютері, без жодного очікування. Argon2id це сповільнює, але в графічного ключа набагато менше варіантів, ніж у довгого пароля. Приблизні оцінки для однієї потужної відеокарти (класу RTX 4090) за швидкості близько 1000 спроб на секунду:
| Що вгадується | Варіантів | Час, одна відеокарта |
|---|---|---|
| 10 000 найпоширеніших графічних ключів | 104 | близько 10 секунд |
| Усі ключі з 6 точок | 1,28 × 108 | близько 1,5 дня |
| Усі ключі з 7 точок | 2,42 × 109 | близько 28 днів |
| Усі ключі з 8 точок | 4,36 × 1010 | близько 1,4 року |
| Фраза відновлення (92 біти) | 4,95 × 1027 | близько 1,6 × 1017 років |
Це оцінки, а не вимірювання. Кількість графічних ключів указано як верхню межу; справжніх ключів набагато менше. Більше або швидше обладнання пропорційно пришвидшує вгадування. PIN-код на найвищому рівні збільшує ці числа до 108 разів.
Тримайте файл резервної копії в таємниці
Файл резервної копії не містить солі пристрою, тож будь-хто, хто його отримає, може підбирати графічні ключі офлайн, як показано вище. Зберігайте його лише там, де доступ маєте тільки ви, наприклад у власному хмарному обліковому записі, і використовуйте довший графічний ключ.
Фраза відновлення показує й графічний ключ
Той, хто має фразу відновлення сейфа, може відкрити цей сейф, і тоді додаток покаже йому графічний ключ і PIN-код. Якщо ви використовуєте той самий графічний ключ деінде, наприклад для блокування екрана телефона, він дізнається і його. Бережіть папірець так само ретельно, як самі файли.
Телефони з root-доступом або заражені телефони
Якщо хтось може запускати код із дозволами додатка (наприклад, на телефоні з root-доступом або за допомогою шкідливої програми з повним контролем), він може розблокувати сіль пристрою й вгадувати офлайн. Поки сейф відкритий, ключі перебувають в оперативній пам’яті, і їх можна прочитати з root-доступом або за допомогою налагоджувача. Деякі копії, створені всередині Android і Flutter, а також фото, показані на екрані, неможливо одразу стерти з пам’яті.
Деяку інформацію видно
Кількість зашифрованих файлів у сховищі додатка, їхні приблизні розміри, а також час їх створення чи зміни не приховуються. Як і те, що LifeVeil установлено.
Порожній сейф обманює лише екран
Той, хто може читати файли додатка (наприклад, на телефоні з root-доступом), може порахувати папки сейфів і побачити, що це налаштування увімкнене. Сповільнення однаково враховує збережені й незбережені порожні сейфи, тож саме очікування не дає їх розрізнити.
Маскування змінює лише головний екран
- Змінюються лише значок і назва на головному екрані. Список Налаштування > Додатки, екрани інформації про додаток і пам’яті в телефоні все одно показують LifeVeil.
- Програми зчитування з екрана все одно можуть озвучувати «LifeVeil». Наприклад, лаунчер Samsung One UI передає TalkBack справжню назву додатка, і додаток не може цього змінити.
- Меню «Поділитися» в Android завжди показує справжню назву додатка, тому під час зміни значка LifeVeil прибирає себе з нього. Його можна знову ввімкнути.
- Запити дозволів Android показують справжню назву, тому додаток запитує дозволи до зміни значка.
- Поки значок змінено, додаток не надсилає сповіщень.
- Код маскування (від 4 до 8 цифр) лише відкриває екран блокування. Він не відкриває ваші файли. Код зберігається як хеш із сіллю, але через малу кількість варіантів його легко знайти, якщо хтось отримає файл.
Відбиток пальця — слабший шлях
Розблокування відбитком пальця оминає Argon2id. Його надійність залежить від сканера відбитків вашого телефона та Android Keystore. Ви можете будь-коли вимкнути його в налаштуваннях.
Дані фото
- Для фото у форматах HEIC, PNG і WebP приховані дані (EXIF) залишаються всередині файлу. Увесь файл при цьому однаково зашифровано.
- На Android 10 і новіших версіях Android видаляє GPS-геодані з фото, які читає LifeVeil, бо додаток не запитує доступу до геоданих. Коли оригінал видаляється з галереї, ці геодані зникають.
- Фото, додані через засіб вибору фото Android, отримують нові назви на основі дати, бо засіб вибору не передає оригінальну назву.
Під час системних екранів блокування призупиняється
Поки відкрито системний екран (запит дозволу, підтвердження видалення, вибір фото чи файлу, запит відбитка пальця) і поки триває імпорт або експорт, додаток не блокується. Якщо ви вийшли з додатка, він заблокується через 2 секунди після завершення.
Сейфи мають одну спільну сіль пристрою
Усі сейфи на телефоні використовують ту саму сіль пристрою. Якщо хтось має цю сіль, одна спроба перевіряє всі сейфи одночасно. Вартість атаки на один сейф та сама.
Те, чого не зупинить жоден додаток
Хтось, хто дивиться, як ви малюєте графічний ключ, або камера, що знімає ваш екран.
Без фрази ніхто не допоможе
Якщо ви забудете графічний ключ сейфа без фрази відновлення або втратите і ключ, і фразу, ніхто не зможе відновити його файли. Навіть ми.