Шифрование узором: Как рисование фигуры защищает ваши файлы

Вы рисуете узор пальцем. 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 (Password-Based Key Derivation Function 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 дают надёжный ответ «удалось / не удалось», а имя индексного файла позволяет более дешёвую предварительную проверку. Защита держится на стоимости и непредсказуемости учётных данных и на защите локальных материалов в iOS, а не на отсутствии оракула проверки.

Выбор надёжного узора

Стойкость шифрования зависит от выбранного вами узора. Вот как повысить безопасность с минимальными усилиями.

Что делает узор надёжным

  • Используйте больше точек. Соедините не менее 8 из 25 доступных точек. Каждая дополнительная точка умножает число возможных узоров.
  • Перейди свой путь.Узоры, которые зацикливаются, пропускают точки или неожиданно меняют направление, гораздо труднее воспроизвести по памяти или наблюдению.
  • Избегайте очевидных форм.Буквы (L, Z, S), простые геометрические фигуры (квадраты, треугольники) и прямые линии, это первое, что может попробовать злоумышленник.
  • Используйте всю сетку. Узоры, которые остаются в одном углу или вдоль одного края, теряют доступную энтропию. Охватывайте всю сетку.

Чего следует избегать

  • Выкройки минимальной длины. Vaultaire требует как минимум 6 точек и одну смену направления, но достижение минимума не делает путь непредсказуемым. Используйте большую часть сетки, если вы можете надежно запомнить результат.
  • Простые геометрические фигуры. Буква L, зигзаг или прямая диагональ — это аналог пароля “password123” для узоров.
  • Начинать каждый раз с одного и того же угла. Исследования графических ключей Android показывают, что большинство людей начинают с верхней левой точки. Атакующие это знают.

Золотая середина

Узор, соединяющий 8–12 точек как минимум с двумя изменениями направления, обеспечивает отличную безопасность, но при этом его легко запомнить благодаря мышечной памяти. Вам не нужно запоминать его, как пароль, : ваша рука запоминает движение, так же, как она запоминает, как написать вашу подпись.

Почему вы должны чувствовать себя в безопасности

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

Ваш узор и локальный ключ сейфа не отправляются в Vaultaire. Пока резервное копирование в iCloud включено (а по умолчанию оно включено), отдельный резервный ключ, полученный из узора, шифрует записи 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 бесплатно