Як LifeVeil захищає ваші файли
Ця сторінка простими словами пояснює, що робить LifeVeil, а також чого він зробити не може. Ми хочемо, щоб ви знали обмеження, а не вірили завеликим обіцянкам.
Коротко
- Усе шифрування відбувається на вашому телефоні. Немає ні сервера LifeVeil, ні облікового запису.
- Ваші файли зашифровано випадковим ключем. Розблокувати цей ключ можуть лише ваш графічний ключ, ваша фраза відновлення або ваш відбиток пальця.
- Ми, розробники, ніколи не маємо вашого графічного ключа, вашої фрази чи ваших ключів. Ми не можемо відкрити ваші файли і не можемо скинути ваш графічний ключ.
- Ми використовуємо шифрування, вбудоване в 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, звідки його неможливо скопіювати з телефона.
- Копія графічного ключа ніде не зберігається. Додаток перевіряє графічний ключ, намагаючись розблокувати ним ключ шифрування.
- Після 5 неправильних графічних ключів поспіль потрібно зачекати 30 секунд. Після кожної наступної помилки час очікування подвоюється, аж до 16 хвилин.
Як шифруються файли
- Кожне сховище має випадковий 256-бітний головний ключ. Ключ із графічного ключа та ключ відновлення лише «обгортають» (шифрують) цей головний ключ.
- Файли, мініатюри та список ваших елементів (оригінальні назви файлів, дати, розміри) шифруються за допомогою AES-256-GCM вбудованими засобами шифрування Android. GCM також виявляє, чи файл було змінено або підмінено.
- Файли всередині додатка мають випадкові назви. Великі файли шифруються частинами по 1 MiB, тож відео відтворюються без запису незашифрованої копії в пам’ять пристрою.
- Для фото у форматі JPEG приховані дані (EXIF, наприклад камера й дата) зберігаються окремо і теж зашифровані.
- Коли додаток блокується, він перезаписує нулями ключі, що зберігаються в оперативній пам’яті.
Фраза відновлення
- Коли ви створюєте сховище, безпечний генератор випадкових чисел телефона вибирає 9 англійських слів. Їх беруть із двох списків по 1024 поширених слова в одному з 4 фіксованих порядків. Це 92 біти випадковості. Слова англійські в усіх мовах додатка.
- Фраза проходить через ті самі параметри Argon2id і сама розблоковує головний ключ. Їй не потрібна сіль пристрою, тому вона працює, навіть коли графічний ключ уже не працює.
- Копія фрази зберігається на телефоні, зашифрована двічі: один раз головним ключем і один раз ключем Android Keystore. Ви можете переглянути її в налаштуваннях, ще раз намалювавши графічний ключ.
- Коли ви змінюєте графічний ключ або входите за допомогою фрази, ви отримуєте нову фразу. Стара перестає працювати.
Відбиток пальця
Розблокування відбитком пальця необов’язкове. Відбиток перевіряє Android, а не LifeVeil; додаток ніколи не отримує ваш відбиток пальця. Головний ключ розблоковується ключем в Android Keystore, який працює лише одразу після надійної біометричної перевірки. Якщо хтось додасть на телефон новий відбиток пальця, цей ключ перестане працювати, і вам знову доведеться використовувати графічний ключ.
Файл резервної копії
- Резервна копія — це один файл
.lvb. У ньому ваші елементи зберігаються в уже зашифрованому вигляді, а також дві обгорнуті копії головного ключа: одна для графічного ключа, який ви намалювали під час створення резервної копії, і одна для фрази відновлення, яку ви мали на той момент. - Копія для графічного ключа використовує нову випадкову сіль для кожної резервної копії, а не сіль пристрою. Саме тому резервну копію можна відкрити на новому телефоні.
- Заголовок файлу захищено, тож зміни або підмінені частини буде виявлено.
- Ви самі вибираєте, куди зберегти файл, на стандартному екрані збереження Android. Він ніколи не проходить через нас.
- Щоб відновити дані, відкрийте файл його графічним ключем або його фразою. Потім ви намалюєте новий графічний ключ і отримаєте нову фразу відновлення.
Інший захист у додатку
- Знімки екрана, запис екрана та попередній перегляд у списку нещодавніх додатків заблоковано на всіх екранах.
- За замовчуванням додаток блокується, щойно ви з нього виходите. Натомість можна вибрати 30 секунд або 1 хвилину.
- Стандартне хмарне резервне копіювання Android і перенесення з телефона на телефон не включають дані LifeVeil. Використовуйте натомість файл резервної копії.
- Додаток не запитує доступу до геоданих, контактів чи «всіх файлів».
- Порожній сейф при неправильному ключі. Ключ, який не відкриває жодного сейфа, замість помилки відкриває порожній сейф. Той, хто змушує вас відкрити застосунок, не дізнається, що ще в ньому є. Невдалі спроби й далі рахуються, фото зловмисника й далі робиться, очікування й далі діє. Вимкнути це можна в розділі Налаштування > Безпека > Порожній сейф при неправильному ключі.
ШІ та вгадування графічного ключа
- ШІ не може оминути математику. Кожна спроба все одно має пройти Argon2id із 64 MiB пам’яті. ШІ не зламує ні Argon2id, ні AES, тож жодна окрема спроба не стає дешевшою.
- ШІ змінює порядок спроб. Він може вивчити фігури, які люди люблять (літери, квадрати, улюблені початкові кути), і пробувати їх першими. Він також може допомогти розпізнати графічний ключ із відео, знятого з-за вашого плеча, або за слідами пальців на екрані.
- Тому захист стосується графічного ключа, а не математики. Індикатор надійності попереджає про поширені фігури. Графічний ключ + PIN додає PIN-код із 4–6 цифр, тож графічного ключа, побаченого на відео, недостатньо. Приховати лінію ключа не залишає лінії, яку можна зняти. Сіль пристрою в Android Keystore не дає вгадувати поза телефоном.
Обмеження, які варто знати
Жоден додаток не може захистити від усього. Ось чесні обмеження LifeVeil.
Прості графічні ключі можна вгадати
Короткі або поширені фігури (L, Z, пряма лінія) можна вгадати, спостерігаючи за вами, за слідами пальців на екрані або за кілька спроб. Справжні графічні ключі вгадати набагато легше, ніж можна подумати з кількості можливих ключів. Використовуйте більше точок і більше поворотів. Додаток попереджає про дуже прості графічні ключі.
Скільки часу може тривати вгадування
У додатку кожна спроба триває приблизно секунду, а після 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 років |
Це оцінки, а не вимірювання. Кількість графічних ключів указано як верхню межу; справжніх ключів набагато менше. Більше або швидше обладнання пропорційно пришвидшує вгадування.
Тримайте файл резервної копії в таємниці
Файл резервної копії не містить солі пристрою, тож будь-хто, хто його отримає, може підбирати графічні ключі офлайн, як показано вище. Зберігайте його лише там, де доступ маєте тільки ви, наприклад у власному хмарному обліковому записі, і використовуйте довший графічний ключ.
Телефони з root-доступом або заражені телефони
Якщо хтось може запускати код із дозволами додатка (наприклад, на телефоні з root-доступом або за допомогою шкідливої програми з повним контролем), він може розблокувати сіль пристрою й вгадувати офлайн. Поки сховище відкрите, ключі перебувають в оперативній пам’яті, і їх можна прочитати з root-доступом або за допомогою налагоджувача. Деякі копії, створені всередині Android і Flutter, а також фото, показані на екрані, неможливо одразу стерти з пам’яті.
Деяку інформацію видно
Кількість зашифрованих файлів у сховищі додатка, їхні приблизні розміри, а також час їх створення чи зміни не приховуються. Як і те, що LifeVeil установлено.
Порожній сейф обманює лише екран
Той, хто може читати файли застосунку (наприклад, на телефоні з root-доступом), може порахувати папки сейфів і побачити, що це налаштування увімкнене. А після 5 неправильних ключів застосунок змушує чекати, і це показує, що попередні ключі нічого не відкрили.
Маскування змінює лише головний екран
- Змінюються лише значок і назва на головному екрані. Список Налаштування > Додатки, екрани інформації про додаток і пам’яті в телефоні все одно показують LifeVeil.
- Програми зчитування з екрана все одно можуть озвучувати «LifeVeil». Наприклад, лаунчер Samsung One UI передає TalkBack справжню назву додатка, і додаток не може цього змінити.
- Меню «Поділитися» в Android завжди показує справжню назву додатка, тому під час зміни значка LifeVeil прибирає себе з нього. Його можна знову ввімкнути.
- Запити дозволів Android показують справжню назву, тому додаток запитує дозволи до зміни значка.
- Поки значок змінено, додаток не надсилає сповіщень.
- Код маскування (від 4 до 8 цифр) лише відкриває екран блокування. Він не відкриває ваші файли. Код зберігається як хеш із сіллю, але через малу кількість варіантів його легко знайти, якщо хтось отримає файл.
Відбиток пальця — слабший шлях
Розблокування відбитком пальця оминає Argon2id. Його надійність залежить від сканера відбитків вашого телефона та Android Keystore. Ви можете будь-коли вимкнути його в налаштуваннях.
Фото порушників
Додаток не відтворює звук затвора, але телефони, що продаються в деяких країнах, наприклад у Японії та Кореї, відтворюють його завжди. Фото не робиться, якщо камеру використовує інший додаток або фронтальної камери немає. Доки ви не розблокуєте перше створене сховище, фото захищені ключем Android Keystore.
Дані фото
- Для фото у форматах HEIC, PNG і WebP приховані дані (EXIF) залишаються всередині файлу. Увесь файл при цьому однаково зашифровано.
- На Android 10 і новіших версіях Android видаляє GPS-геодані з фото, які читає LifeVeil, бо додаток не запитує доступу до геоданих. Коли оригінал видаляється з галереї, ці геодані зникають.
- Фото, додані через засіб вибору фото Android, отримують нові назви на основі дати, бо засіб вибору не передає оригінальну назву.
Під час системних екранів блокування призупиняється
Поки відкрито системний екран (запит дозволу, підтвердження видалення, вибір фото чи файлу, запит відбитка пальця) і поки триває імпорт або експорт, додаток не блокується. Якщо ви вийшли з додатка, він заблокується через 2 секунди після завершення.
Сховища мають одну спільну сіль пристрою
Усі сховища на телефоні використовують ту саму сіль пристрою. Якщо хтось має цю сіль, одна спроба перевіряє всі сховища одночасно. Вартість атаки на одне сховище та сама.
Те, чого не зупинить жоден додаток
Хтось, хто дивиться, як ви малюєте графічний ключ, або камера, що знімає ваш екран.
Якщо ви втратите і те, і інше, ніхто не допоможе
Якщо ви втратите і графічний ключ, і фразу відновлення, ніхто не зможе відновити ваші файли. Навіть ми.