Архітектура безпеки Cryptile шар за шаром
Cryptile шифрує кожен файл, мініатюру й індекс AES-256-GCM ключами, створеними на вашому телефоні з візерунка, який ви малюєте. Облікового запису й сервера немає, і розробник ніколи не тримає ключів.
Завантажити Cryptile з App Store
Простий підсумок — на сторінці про безпеку.
Що мені треба знати?
- Ваш візерунок — джерело кожного ключа. Без нього нічого читабельного не зберігається.
- Розміри й кількість сховищ розмиті. Файли доповнено, а слоти-приманки приховують, скільки сховищ існує.
- Ви можете це перевірити. Ядро шифрування опубліковане для аудиту (source-available) разом із моделлю загроз і тестовими векторами: github.com/jasonbrelsford/cryptile-core.
Як візерунок стає ключем?
- Візерунок записується як розмір сітки, за яким ідуть клітинки, яких ви торкнулися, по порядку.
- Його змішують із 32-байтовим секретом пристрою, що зберігається в Keychain iPhone лише для цього пристрою.
- PBKDF2-HMAC-SHA512 проходить по ньому 600 000 разів. Кожна спроба вгадати коштує стільки ж роботи.
- HKDF-SHA256 ділить результат на ключ пошуку й ключ обгортання.
- Ключ пошуку дає назву індексному файлу сховища. Ключ обгортання його відкриває.
Усередині індексу лежить випадковий 256-бітовий головний ключ сховища. HKDF виводить із нього окремі підключі для файлів, мініатюр та індексу. Жоден ключ не використовується для двох цілей.
Як шифруються файли?
Малі елементи, як-от мініатюри й індекс, запечатуються цілком AES-256-GCM із випадковим nonce.
Великі файли використовують схему STREAM частинами по 1 МБ. Кожна частина має власний nonce і записує свою позицію та чи є вона останньою. Якщо частини обрізати, переставити чи підмінити, розшифрування не вдасться.
GCM також автентифікує кожен заголовок, тож змінений файл відхиляється, а не показується.
Як приховуються розміри й кількість сховищ?
Кожен малий блок і кожна остання частина файлу доповнюються до кратного 64 КіБ. Той, хто копіює, бачить приблизні розміри, а не точні.
Списку сховищ немає. Застосунок тримає щонайменше 8 слотів у формі індексу, справжніх і приманок, і перегенеровує приманки під час кожного запису. Візерунок, що не вказує на жоден слот, відкриває порожнє сховище.
Як працює відновлення?
Кожне сховище отримує фразу відновлення з 9 слів — це 96 біт випадковості. Вона відкриває окрему копію сховища для відновлення, запечатану ключем, створеним із фрази.
Резервна копія в iCloud віддзеркалює зашифровані файли такими, як вони є. Секрету пристрою в ній типово немає, тож самої резервної копії недостатньо, щоб підбирати візерунки.
Що зашифровано, а що ні?
Зашифровано: фото, відео, файли, нотатки, мініатюри, назви, папки, обране, розпізнаний текст і місця фото. Невеликий файл, що відстежує приманки й лічильники безкоштовного плану, запечатано ключем пристрою.
Не зашифровано Cryptile:
- Параметри. Час автоблокування, порядок сортування й перемикач резервної копії не містять секретів.
- Поширені елементи, що чекають на додавання. Вони під захистом файлів iOS, доки ви не відкриєте сховище.
- Загальний розмір контейнера й час записів. Сховище на 10 ГБ не виглядає як 10 МБ.
- Усе, що ви експортуєте. Копія, збережена у Фото чи Файли, — поза сховищем.
Від чого це захищає?
- Від того, хто копіює файли застосунку без вашого Keychain. Він отримує шифротекст і не може пробувати візерунки.
- Від Apple чи витоку в Apple. iCloud зберігає шифротекст і жодних ключів.
- Від підробки. Змінені чи переставлені дані не розшифровуються.
- Від нас. Ми не маємо сервера й не тримаємо ключів, тож не можемо скинути доступ.
Від чого це не захищає?
- Від коротких візерунків. Візерунок слабший за парольну фразу. Маючи ваші файли й Keychain, візерунок із 6 клітинок на сітці 4×4 падає за кілька хвилин на GPU. Використовуйте 8 або більше клітинок.
- Від шкідливого ПЗ на розблокованому телефоні. Код, що читає пам'ять, поки сховище відкрите, — поза можливостями будь-якого застосунку.
- Від того, хто дивиться, як ви малюєте. Малюйте там, де ніхто не бачить вашої руки.
- Від втрати і телефона, і фрази. Сховища більше немає. Скидання немає.
Панічний візерунок у Plus знищує секрет пристрою, тож жодне сховище на телефоні не відкриється до відновлення.