Глоссарий

Приватность и шифрование

Эти слова в описаниях приложений используются вольно, а вся ценность на самом деле кроется именно в различиях между ними. Скрытое — не значит заблокированное. Заблокированное — не значит зашифрованное. А ключ, который держит кто-то другой, — не совсем твой.

Скрыто или зашифровано

Скрыто означает, что приложение соглашается что-то не показывать. Зашифровано означает, что байты на диске нечитаемы без ключа. Первое — это обещание; второе — арифметика.

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

Шифрование меняет файл. То, что лежит на диске, — это шум, и он остаётся шумом для любого, у кого нет ключа, включая тех, кто написал приложение. Разница становится видна только в тот день, когда она действительно важна, — именно поэтому знать о ней стоит заранее.

Смотри также: В состоянии покоя и при передачеChaCha20-Poly1305

ChaCha20-Poly1305

Современный алгоритм шифрования, который одновременно скрывает данные и обнаруживает их подделку. Быстро работает на телефонах, которые не всегда несут аппаратное ускорение для более старой альтернативы.

ChaCha20 выполняет шифрование; Poly1305 создаёт метку, подтверждающую, что данные не были изменены. Вместе они образуют то, что называется аутентифицированным шифрованием, — расшифровка на изменённом файле явно завершается ошибкой, а не выдаёт правдоподобный мусор.

Это та же конструкция, что используется в TLS и в современных защищённых мессенджерах. На железе без аппаратного ускорения AES она заметно быстрее AES, поэтому телефоны обычно предпочитают именно её.

Смотри также: В состоянии покоя и при передачеОбёртывание ключа

Обёртывание ключа

конвертное шифрование

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

Файлы шифруются один раз ключом, сгенерированным на устройстве. Затем этот ключ обёртывается — то есть шифруется — паролем, а также заново обёртывается кодом восстановления. Два конверта, и в каждом лежит один и тот же ключ.

Все последствия этого сугубо практические. Смена пароля переписывает несколько сотен байт вместо сотни гигабайт. Биометрическая разблокировка — это ещё одна обёрнутая копия, а не вторая модель безопасности. А потеря всех оболочек означает потерю самого ключа, потому что нигде больше он не существует.

Смотри также: Код восстановленияChaCha20-Poly1305

Код восстановления

Одноразовая строка, способная развернуть мастер-ключ, когда пароль забыт. Никто не может выдать его заново, потому что ни у кого его никогда и не было — включая тех, кто писал приложение.

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

Если пароль забыт, а код восстановления утерян, файлы не сможет расшифровать никто. Это не политика поддержки, которую можно оспорить, — это буквально значит, что копии ключа не существует. Храни его с той же тщательностью, какой заслуживают сами файлы.

Смотри также: Обёртывание ключаZero-knowledge (нулевое разглашение)

Фиктивный сейф

правдоподобное отрицание

Второй пароль, открывающий другой, безобидный сейф. Того, кого заставили разблокировать приложение, оно действительно разблокирует, но открывается не то, что искали.

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

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

Смотри также: Код восстановленияСкрыто или зашифровано

Keychain

Защищённое системное хранилище небольших секретов, опирающееся на аппаратное обеспечение безопасности устройства. Именно там место ключам и токенам, и именно там не место ничему крупному.

Элементы внутри могут нести условия: доступны для чтения только когда устройство разблокировано, только на этом устройстве, только после биометрического подтверждения или ввода пароля. Эти условия обеспечиваются аппаратно, а не вежливой просьбой со стороны приложения.

Оно хранит секреты, а не данные. Ключи, токены и обёрнутые материалы отправляются туда; сами зашифрованные файлы живут на диске, где размер уже не проблема.

Смотри также: Обёртывание ключаВ состоянии покоя и при передаче

В состоянии покоя и при передаче

Зашифровано в состоянии покоя означает нечитаемо на диске. Зашифровано при передаче означает нечитаемо в сети. Это два разных вида защиты, и продукт может честно заявлять о наличии одного, не обеспечивая другой.

HTTPS — это шифрование при передаче: безопасно от любого, кто наблюдает за сетью, и полностью читаемо сервером на другом конце, как только данные до него дойдут. Шифрование в состоянии покоя касается сохранённой копии — это важно, если устройство потеряно или с диска снят образ.

Внимательно читать заявление о приватности обычно означает выяснять, о котором из двух видов идёт речь. Фраза «твои данные зашифрованы» без уточнения того или другого слова — это предложение, специально сформулированное так, чтобы ничего конкретного не сказать.

Смотри также: ChaCha20-Poly1305Zero-knowledge (нулевое разглашение)

Zero-knowledge (нулевое разглашение)

нулевое знание

Конструкция, при которой оператор не может прочитать то, что хранит, потому что ключи никогда не покидают устройства пользователя. Проверка проста: могут ли они сбросить твой пароль и всё равно вернуть тебе данные?

Если сервис способен восстановить доступ после того, как ты забыл абсолютно всё, значит у него есть нечто, способное разблокировать твои данные, — а значит, его можно принудить это сделать, и любой, кто взломает сервис, унаследует ту же способность.

Компромисс здесь реален, и его стоит формулировать прямо, а не продавать как чистое преимущество: настоящее нулевое разглашение означает по-настоящему потерять доступ, когда потерян последний ключ. Третьего варианта, при котором оператор может тебя спасти, а больше никто не может, не существует.

Смотри также: Код восстановленияВ состоянии покоя и при передаче

Биометрия

Face ID, Touch ID

То, что это ты, подтверждает устройство, а не приложение; приложению сообщают только «да» или «нет». Ни отпечаток пальца, ни данные лица никогда не попадают в приложение, и ни то ни другое не является паролем.

Биометрическая разблокировка — это удобство, обёрнутое вокруг секрета, а не замена секрета. Она защищает сохранённый ключ, поэтому за ней всегда стоит пароль — биометрия может дать сбой, а резервным вариантом должно быть то, что ты знаешь.

Сравнение происходит внутри выделенного для этого аппаратного модуля, и шаблоны никогда его не покидают. Приложение, предлагающее Face ID, задаёт вопрос системе, а не собирает что-либо само.

Смотри также: KeychainОбёртывание ключа

Анонимная аналитика

Подсчёт событий без записи того, кто их совершил. Ценность этого заявления целиком зависит от того, что прикреплено к каждому событию, — и именно на именах файлов, путях и URL такие обещания обычно и ломаются.

Знание о том, что экран был открыт, — это подсчёт. Знание о том, какой файл был воспроизведён, — это уже описание конкретного человека. Границу между ними проводит не слово «анонимно», а то, какие поля несёт само событие.

Заявление, которому стоит доверять, столь же конкретно говорит о том, что *не* отправляется, как и о том, что отправляется: никаких имён файлов, никаких путей, никаких URL, никаких учётных данных, никакого идентификатора, переживающего сессии, — и предлагает способ отключить всё это целиком.

Смотри также: В состоянии покоя и при передаче

Другие темы