Шифрування візерунком: як намальована фігура захищає ваші файли

Ви малюєте візерунок пальцем. PBKDF2 перетворює цей жест на ключ сховища, який відкриває окремий випадковий ключ, яким AES-256-GCM захищає ваші файли. Ні поля пароля, ні короткого PIN-коду. Тільки ваш візерунок і навмисно багаторівнева ієрархія ключів.

Vaultaire серіалізує форму, намальовану на сітці 5×5, і обробляє її за допомогою PBKDF2-HMAC-SHA512, 600 000 ітерацій і сіллю рівня пристрою, що зберігається в iOS Keychain. 256-бітний результат є ключем сховища: він шифрує індекс сховища та розгортає окремий випадковий головний ключ, який AES-256-GCM використовує для вмісту файлів і метаданих.

Що таке шифрування візерунком?

Більшість застосунків-сховищ ховаються за PIN-кодом або паролем. Ви вводите чотири цифри: і ваші фото з'являються. Звучить достатньо надійно, правда?

Ось у чому проблема: чотиризначний PIN має рівно 10 000 можливих комбінацій. Комп'ютер може перебрати їх усі менш ніж за секунду. Шість цифр? Мільйон комбінацій. Для сучасного заліза це все одно тривіально швидко. Навіть восьмисимвольний пароль із самих малих літер дає близько 200 мільярдів варіантів. Звучить багато, поки не дізнаєшся, що звичайний ноутбук може перевіряти мільярди хешів паролів за секунду.

Шифрування візерунком використовує принципово інший підхід. Замість того, щоб вводити символи в поле, ви малюєте геометричну фігуру на сітці з точок. Конкретний шлях, який ви проводите — яких точок ви торкаєтеся, у якому порядку, з якою геометрією — стає вхідними даними для функції виведення ключа на основі пароля. Результат не просто перевіряється інтерфейсом: він повинен розблокувати автентифікований зашифрований індекс і випадковий головний ключ у ньому.

Відмінність має значення. Коли ви вводите PIN-код у деяких застосунках, застосунок лише перевіряє, чи ввели ви правильне число. Якщо так, він відкривається, хоча файли можуть бути захищені переважно контролем доступу. Натомість Vaultaire подає намальований візерунок у PBKDF2, щоб отримати 256-бітний ключ сховища. Цей ключ має автентифікувати та розшифрувати індекс сховища, перш ніж він зможе розгорнути випадковий головний ключ, який використовується для файлів. Нерозпізнаний візерунок показується як порожнє сховище, але автентифікація AES-GCM в основі все одно відрізняє правильний ключ від неправильного.

Ключова відмінність

Замок доступу на основі PIN-коду може бути схожим на замкнені двері перед файлами, які інакше можна прочитати. Візерунок Vaultaire ближче до комбінації на сейфі: він отримує ключ, який відкриває зашифрований індекс, який, у свою чергу, вивільняє окремий ключ, що захищає вміст. Інтерфейс не може просто обійти цей криптографічний ланцюжок.

Як це працює, крок за кроком

Ось що відбувається від моменту, коли ваш палець торкається екрана, до моменту, коли файли стають нечитабельними для всіх інших.

Крок 1: Ви малюєте свій візерунок

Vaultaire представляє сітку 5×5 точок. Ви малюєте безперервний шлях, що з’єднує принаймні 6 точок із принаймні однією зміною напрямку. Застосунок точно записує, які точки ви відвідали та в якому порядку. Ця послідовність — ваш візерунок.

Сітка візерунків 5×5

На відміну від сітки 3×3, яка зазвичай використовується для екранів блокування Android, Vaultaire використовує сітку 5×5. Це не косметичний вибір. Двадцять п'ять позицій дозволяють набагато більше шляхів, перехресть, пропусків і змін напрямку, ніж дев'ять позицій. Більший теоретичний простір допомагає, але фактична безпека все одно залежить від непередбачуваності обраного вами шляху. Знайому букву чи просту фігуру можна вгадати, навіть якщо сітка може виражати мільярди альтернатив.

Крок 2: Візерунок отримує ключ сховища

Намальований візерунок серіалізується з розміром сітки та подається в PBKDF2 (Функція виведення ключа на основі пароля 2) з HMAC-SHA512, 600 000 ітерацій і випадковою сіллю рівня пристрою. Сіль — це несекретне значення, яка зберігається в iOS Keychain як елемент WhenUnlockedThisDeviceOnly. Це прив’язує локальне виведення до пристрою; вона не є унікальною для кожного сховища та не додає ентропії до вибраного людиною візерунка.

Процес шифрування
Ваш візерунок
шлях на сітці 5×5
→
PBKDF2 + сіль
Деривація ключа
→
256-бітний ключ
Унікальний для кожного сховища
→
AES-256-GCM
Шифрування файлів

Процес отримання ключа навмисно дорогий. PBKDF2 виконує 600 000 ітерацій HMAC-SHA512 для кожного візерунка-кандидата, що підвищує вартість атаки вгадування. Це не перетворює візерунок з низькою ентропією на 256-бітний захист, а час атаки залежить від апаратного забезпечення зловмисника. Його мета вужча та вимірна: зробити кожну спробу значно дорожчою, ніж простий хеш.

Крок 3: Ваші файли шифруються

Під час першого створення сховища Vaultaire генерує випадковий 256-бітний головний ключ. Ключ сховища, отриманий з візерунка, шифрує індекс і обгортає цей головний ключ; він не шифрує кожен файл безпосередньо. Головний ключ використовується з AES-256-GCM для заголовків файлів, вмісту, ескізів і відповідних метаданих. Нові nonce гарантують, що повторюваний відкритий текст не створює повторюваний зашифрований текст під тим самим ключем.

Режим GCM додає важливий шар: автентифікацію. Він не просто шифрує ваші дані, а й генерує тег, який виявляє будь-яке втручання. Якщо змінити хоча б один біт зашифрованого файлу, розшифрування завершиться помилкою.Ніхто не може змінити ваші файли непомітно.

Крок 4: Очищається стан активного ключа

Коли Vaultaire блокується, він очищає своє активне сховище та стан головного ключа та вимагає повторного розблокування перед повторним показом файлів. Поки сховище відкрито, ці байти симетричних ключів обов’язково існують у процесі застосунку. CryptoKit виконує операції AES-GCM. Vaultaire також зберігає дані відновлення, зокрема візерунок і конверт відновлення, зашифрований фразою, у базі даних, зашифрованій AES-GCM, що зберігається в iOS Keychain. Це істотно відрізняється від твердження, що візерунок і кожна копія ключа ніде не зберігаються.

Математика за цим (простою мовою)

Вам не потрібен ступінь з інформатики, щоб зрозуміти, чому це працює. Безпека зводиться до трьох чисел: скільки можливих візерунків, скільки часу займає кожна спроба і скільки спроб може зробити зловмисник.

2256
Простір ключів AES
5×5
Розмір сітки
Мільярди
Можливих візерунків

Ентропія: міра непередбачуваності

Ентропія: це складне слово для поняття “наскільки важко це вгадати”. Підкидання монети має 1 біт ентропії (два результати). Чотиризначний PIN має близько 13 бітів ентропії (10 000 результатів). Добре обраний візерунок на сітці 5×5, що з'єднує 8 або більше точок, може перевищити 30 бітів ентропії: понад мільярд можливих візерунків.

Ентропія візерунка встановлює межу для атаки вгадування. PBKDF2 не може створити ентропію, якої не містить цей жест, але може зробити тестування кожного кандидата набагато дорожчим.

Деривація ключа: робимо вгадування дорогим

PBKDF2 бере серіалізований візерунок і запускає 600 000 раундів HMAC-SHA512. Оцінки атак повинні використовувати виміряну вартість апаратного забезпечення, яке виконує вгадування: при 1 мс на повного кандидата, 1 000 000 000 кандидатів знадобиться 1 000 000 с, або приблизно 11,6 днів, на одній системі. Повільніше виміряна вартість кандидата збільшує цей час; паралельне обладнання зменшує його. 256-бітна вихідна довжина не змінює розмір простору пошуку візерунка.

Сіль рівня пристрою зберігається в Keychain і не призначена бути секретною. Keychain і Захист даних iOS можуть ускладнити вилучення в разі конфіскації пристрою, але криптографічний аналіз повинен припускати, що експерт, який отримує зашифровані файли, також може отримати сіль. Сіль запобігає попередньому обчисленню між пристроями; це не заміна сильного візерунка.

AES-256: публічний, добре вивчений стандарт

AES-256 — надійний стандартний шифр, опублікований NIST як FIPS 197. Цифра “256” стосується довжини ключа в бітах. 256-бітний ключ має 2256 можливих значень, забагато для повного перебору. Тому зловмисник атакує візерунок, і саме тому Vaultaire посилює його 600 000 ітераціями PBKDF2.

Безпека AES-256 не залежить від збереження алгоритму в секреті. Але вся система не захищена одним лише простором ключів AES: практична межа вгадування походить від ентропії візерунка, робочого фактора PBKDF2, а також захисту пристрою, солі та зашифрованого сховища. AES-256-GCM забезпечує надійне автентифіковане шифрування після розблокування правильного випадкового головного ключа.

Чому зламати це неможливо

Розгляньмо основні способи, якими хтось може спробувати дістатися до ваших зашифрованих файлів, що Vaultaire робить, щоб зробити це дорожчим, і де залишаються обмеження.

Перебір: спроба кожного візерунка

PBKDF2 змушує кожного кандидата платити 600 000 ітерацій HMAC-SHA512. Це значущий захист, але не обіцянка фіксованої кількості років: результат залежить від вибору візерунка, виміряної швидкості виведення, паралелізму та того, чи знайшов експерт сіль пристрою. Довші, менш передбачувані шляхи мають значення, тому що PBKDF2 підвищує вартість кожної спроби, а не створює нову ентропію.

Аналіз слідів від пальців: читання екрана

На сітці 3×3 сліди на екрані можуть суттєво звузити можливі варіанти. На сітці 5×5 слід показує лише, яких точок торкнулися, але не порядок, напрямок або з'єднання між ними. Комбінаторний вибух робить такий підхід практично неможливим.

Підглядання: спостереження за малюванням

Візерунки, намальовані швидко на маленькому екрані телефону, надзвичайно важко запам'ятати шляхом спостереження, особливо на сітці 5×5. Дослідження показують, що спостерігачам набагато складніше відтворити складні візерунки порівняно з підслуховуванням PIN-коду або пароля.

Вилучення пристрою: забирають ваш телефон

Якщо хтось забере ваш телефон, вміст і індекси файлів Vaultaire залишаться шифротекстом AES-GCM, доки необхідні ключі не будуть доступні. Застосунок не зберігає звичайний запис перевірки пароля, але це не видаляє офлайн-перевірку. Ім’я файлу кожного зашифрованого індексу сховища містить усічений хеш ключа сховища , а автентифіковане розшифрування AES-GCM для ключа-кандидата або вдається, або ні. Тому захист пристрою та міцність візерунка залишаються частиною моделі загроз.

Відсутність оракула верифікації

Окремий хеш пароля не потрібен для перевірки припущення на автентифікованому шифротексті. Теги AES-GCM у Vaultaire дають надійний результат «вдалося / не вдалося», а назва файлу індексу забезпечує дешевшу попередню перевірку. Захист — це вартість і непередбачуваність облікових даних плюс захист локального матеріалу засобами iOS, а не відсутність оракула перевірки.

Вибір надійного візерунка

Шифрування настільки надійне, наскільки надійний ваш візерунок. Ось як максимізувати безпеку з мінімальними зусиллями.

Що робить візерунок надійним

  • Використовуйте більше точок. З'єднуйте щонайменше 8 з 25 доступних точок. Кожна додаткова точка множить кількість можливих візерунків.
  • Перетинайте свій шлях. Візерунки з петлями, пропуском точок або несподіваними змінами напрямку набагато складніше відтворити з пам'яті або за спостереженням.
  • Уникайте очевидних форм. Літери (Г, Z, S), прості геометричні фігури (квадрати, трикутники) та прямі лінії: це перше, що спробує зловмисник.
  • Використовуйте всю сітку. Візерунки, обмежені одним кутом або одним краєм, марнують доступну ентропію. Розтягуйте їх.

Чого слід уникати

  • Викрійки мінімальної довжини. Vaultaire вимагає принаймні 6 точок і одну зміну напрямку, але дотримання мінімуму не робить шлях непередбачуваним. Використовуйте більше сітки, якщо можете надійно запам’ятати результат.
  • Прості геометричні форми. Г-подібна форма, зигзаг або пряма діагональна лінія: це аналог “password123” для візерунків.
  • Початок з одного й того ж кута щоразу. Дослідження замків-візерунків Android показують, що більшість людей починають з верхньої лівої точки. Зловмисники це знають.

Оптимальний варіант

Візерунок, що з'єднує 8–12 точок з щонайменше двома змінами напрямку, забезпечує відмінну безпеку і водночас легко запам'ятовується завдяки м'язовій пам'яті. Його не потрібно запам'ятовувати як пароль: ваша рука запам'ятовує рух так само, як вона запам'ятовує підпис.

Чому ви можете бути впевнені у захисті

Шифрування за візерунком у Vaultaire — це не просто гарна панель PIN-коду. Жест обробляється функцією виведення справжнього ключа та має розблокувати автентифіковані зашифровані дані. Його сила все ще залежить від жесту, який ви вибираєте, тому Vaultaire поєднує більшу сітку з високим робочим фактором PBKDF2 замість того, щоб подавати 256-бітної вихідної довжини як 256 біт людської секретної ентропії.

Ваш візерунок і ключ локального сховища не надсилаються до Vaultaire. Коли резервне копіювання ввімкнено (за замовчуванням), окремий резервний ключ, отриманий з візерунка, шифрує записи CloudKit, а зашифрований маніфест відновлення дозволяє фразі відновлення відновити сховище та резервні ключі. Vaultaire не має ключа постачальника, який розшифровує ці записи, але облікові дані пристрою та відновлення залишаються критично важливими для безпеки частинами дизайну.

Ви малюєте фігуру. Ця фігура захищає ваші файли. Математика робить все інше.

Часті запитання

Що станеться, якщо я забуду візерунок?

Коли ви створюєте сховище, Vaultaire генерує власну фразу відновлення з 9 окремих слів. PBKDF2 отримує ключ відновлення з цієї фрази, який відкриває зашифрований конверт, що містить ключ сховища. Якщо ви втратите і візерунок, і фразу відновлення, Vaultaire не матиме ключа на стороні сервера, який може відновити сховище.

Чи справді візерунок надійніший за пароль?

Добре обраний візерунок на сітці 5×5 може дорівнювати або перевищувати ентропію типового пароля. Перевага: у зручності: люди обирають слабкі паролі, бо складні важко запам'ятати. Візерунки задіюють м'язову пам'ять, тому складний візерунок використовується природно, без свідомого запам'ятовування.

Чи може хтось зробити знімок екрана або записати мій візерунок?

Vaultaire застосовує до сітки візерунка захист від знімків екрана в міру можливого та реагує, коли iOS повідомляє про активний знімок екрана. iOS не забезпечує публічного прапорця захищеного екрана для довільного вмісту застосунку, тому ці елементи керування зменшують випадкове захоплення, але не можуть гарантувати, що кожен метод захоплення буде заблоковано.

Який алгоритм шифрування використовує Vaultaire?

Vaultaire використовує PBKDF2-HMAC-SHA512 з 600 000 ітерацій для отримання ключа сховища з візерунка та солі Keychain рівня пристрою. Цей ключ сховища шифрує індекс сховища та обгортає випадковий 256-бітний головний ключ. AES-256-GCM під головним ключем захищає вміст файлу, заголовки, метадані та мініатюри за допомогою автентифікованого шифрування.

Чи зберігається візерунок на моєму пристрої?

Vaultaire зберігає інформацію про відновлення, включно з візерунком, у базі даних відновлення, зашифрованій AES-GCM, що зберігається в iOS Keychain. Візерунок не надсилається до Vaultaire і не зберігається у незашифрованих файлах. Поки сховище відкрито, байти ключів існують у процесі застосунку; блокування скидає активний стан ключа Vaultaire.

Чи може Vaultaire отримати доступ до моїх зашифрованих файлів?

Vaultaire не керує службою, яка отримує ваш візерунок, фразу відновлення, ключі розшифрування або читабельний вміст сховища. Зашифровані резервні копії iCloud залишаються у вашій приватній базі даних CloudKit. Ця межа постачальника не захищає відкрите сховище від скомпрометованої збірки застосунку, операційної системи чи пристрою.

Спробуйте шифрування візерунком

Намалюйте перший візерунок і відчуйте, що означає по-справжньому захищені файли.

Завантажити Vaultaire безкоштовно