Cryptile

Архитектура безопасности Cryptile, слой за слоем

Обновлено

Cryptile шифрует каждый файл, миниатюру и индекс AES-256-GCM ключами, которые создаются на вашем телефоне из нарисованного вами узора. Нет ни учётной записи, ни сервера, а разработчик никогда не хранит ключи.

Скачать Cryptile в App Store

Краткое изложение — на странице о безопасности.

Что нужно знать?

  • Ваш узор — источник каждого ключа. Без него ничего читаемого не хранится.
  • Размеры и число хранилищ размыты. Файлы выравниваются по размеру, а ложные слоты скрывают, сколько хранилищ существует.
  • Это можно проверить. Ядро шифрования опубликовано для аудита (исходный код доступен), вместе с моделью угроз и тестовыми векторами: github.com/jasonbrelsford/cryptile-core.

Как узор становится ключом?

  1. Узор записывается как размер сетки, за которым по порядку идут ячейки, которых вы коснулись.
  2. К нему примешивается 32-байтовый секрет устройства, который хранится в связке ключей (Keychain) iPhone только для этого устройства.
  3. PBKDF2-HMAC-SHA512 прогоняется по нему 600 000 раз. Столько же работы стоит каждая попытка подбора.
  4. HKDF-SHA256 делит результат на ключ поиска и ключ обёртки.
  5. Ключ поиска задаёт имя файла индекса хранилища. Ключ обёртки его открывает.

Внутри индекса лежит случайный 256-битный мастер-ключ хранилища. HKDF выводит из него отдельные подключи для файлов, миниатюр и индекса. Ни один ключ не используется для двух целей.

Как шифруются файлы?

Небольшие объекты, такие как миниатюры и индекс, запечатываются целиком AES-256-GCM со случайным nonce.

Крупные файлы используют схему STREAM с фрагментами по 1 МБ. У каждого фрагмента свой nonce, и в нём записаны его позиция и то, последний ли он. Если фрагменты обрезать, переставить или подменить, расшифровка не удастся.

GCM также проверяет подлинность каждого заголовка, поэтому изменённый файл отклоняется, а не показывается.

Как скрываются размеры и число хранилищ?

Каждый небольшой блок и каждый последний фрагмент файла дополняется до размера, кратного 64 КиБ. Тот, кто скопировал файлы, видит примерные размеры, а не точные.

Списка хранилищ нет. Приложение держит не меньше 8 слотов в формате индекса, настоящих и ложных, и при каждой записи заново генерирует ложные. Узор, которому не соответствует ни один слот, открывает пустое хранилище.

Как работает восстановление?

Каждое хранилище получает фразу восстановления из 9 слов, это 96 бит случайности. Она открывает отдельную резервную копию хранилища, запечатанную ключом из этой фразы.

Копия в iCloud отражает зашифрованные файлы как есть. Секрета устройства в ней по умолчанию нет, поэтому по одной копии подбирать узоры нельзя.

Что зашифровано, а что нет?

Зашифрованы: фото, видео, файлы, заметки, миниатюры, имена, папки, избранное, распознанный текст и места съёмки фото. Небольшой файл, который отслеживает ложные слоты и счётчики бесплатного тарифа, запечатан ключом устройства.

Не шифруется Cryptile:

  • Настройки. Время автоблокировки, порядок сортировки и переключатель копии не содержат секретов.
  • Отправленные объекты, ожидающие добавления. Их защищает файловая защита iOS, пока вы не откроете хранилище.
  • Общий размер контейнера и время записи. Хранилище на 10 ГБ не выглядит как 10 МБ.
  • Всё, что вы экспортируете. Копия, сохранённая в «Фото» или «Файлы», находится вне хранилища.

От чего это защищает?

  • От того, кто копирует файлы приложения без вашей связки ключей. Он получит шифртекст и не сможет перебирать узоры.
  • От Apple и от утечки в Apple. В iCloud лежит шифртекст и нет ключей.
  • От подмены. Изменённые или переставленные данные не расшифруются.
  • От нас. У нас нет сервера и нет ключей, поэтому сбросить доступ мы не можем.

От чего это не защищает?

  • Короткие узоры. Узор слабее парольной фразы. С вашими файлами и связкой ключей узор из 6 ячеек на сетке 4×4 перебирается на GPU за минуты. Используйте 8 ячеек или больше.
  • Вредоносные программы на разблокированном телефоне. Код, который читает память, пока хранилище открыто, не по силам ни одному приложению.
  • Тех, кто смотрит, как вы рисуете. Рисуйте там, где никто не видит вашу руку.
  • Потерю телефона и фразы. Хранилище исчезнет. Сброса нет.

Узор паники в Plus уничтожает секрет устройства, поэтому ни одно хранилище на телефоне не откроется, пока его не восстановят.

Скачать Cryptile в App Store