Правдоподобное отрицание в приложениях: что это и почему важно

Правдоподобное отрицание в приложениях: что это и почему важно

Правдоподобное отрицание означает, что существование скрытых данных нельзя доказать.


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

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

Что означает правдоподобное отрицание в шифровании

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

Концепция зародилась в дисковом шифровании. TrueCrypt (и его преемник VeraCrypt) ввёл скрытый том: зашифрованный том внутри другого. Один пароль раскрывает внешний том с безобидными файлами. Другой пароль раскрывает внутренний скрытый том с конфиденциальными файлами. Криминалист не может определить, существует ли скрытый том, потому что неиспользованное пространство внешнего тома заполнено случайными данными, неотличимыми от зашифрованных.

Для приложений правдоподобное отрицание означает, что разные учётные данные (пароли, PIN, узоры) открывают разные наборы данных, и нет метаданных, реестра, флага конфигурации или структурного артефакта, раскрывающего существование дополнительных наборов данных.

Настоящая отрицаемость vs косметические режимы-приманки

Это критическое различие, которое большинство приложений допускает неправильно.

Косметический режим-приманка (не настоящая отрицаемость)

Многие приложения-сейфы предлагают функцию «приманки» или «фальшивого PIN». Устанавливается вторичный PIN, открывающий отдельное пространство с другими фотографиями. Проблема: такие приложения обычно хранят булево значение, запись в базе данных или файл конфигурации, указывающий, что режим-приманка существует и настроен.

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

Признаки косметической отрицаемости:

  • В настройках есть переключатель «режим-приманка»
  • Файл конфигурации хранит, включён ли режим-приманка
  • Таблица базы данных перечисляет ID сейфов с индикаторами типа (основное/приманка)
  • Структура хранилища приложения меняется при включении режима-приманки
  • Удаление и повторная установка приложения выявляет разное поведение при настроенном режиме-приманке

Настоящая криптографическая отрицаемость

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

  1. Альтернативные учётные данные раскрывают только свой набор данных. Система не хранит отдельный флаг приманки, который помечает одни учётные данные как маскировку. Неверные учётные данные могут не сработать, но этот отказ не должен выдавать, существует ли нераскрытый набор данных.

  2. Нет реестра сейфов. Приложение не может перечислить, сколько сейфов существует. Нет счётчика, индекса, списка ID сейфов. Криминалист, исследующий хранилище приложения, находит недифференцированный пул зашифрованных данных.

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

  4. Хранилище дополнено случайными данными. Общий занятый объём не меняется в зависимости от количества сейфов или файлов. Без дополнения исследователь мог бы оценить количество сейфов по разнице между общим объёмом зашифрованных данных и видимым содержимым.

  5. Зашифрованные данные неотличимы от случайного шума. Нет границ файлов, заголовков, структурных маркеров, раскрывающих, где заканчиваются данные одного сейфа и начинаются данные другого.

Свойство Косметическая приманка Настоящая отрицаемость
Отдельные данные для каждых учётных данных Да Да
Нет реестра сейфов Нет (база данных отслеживает сейфы) Да
Нет флагов конфигурации Нет (переключатель приманки хранится) Да
Дополнение хранилища Редко Да
Скрывает альтернативные данные в статичном образе Нет Да, в рамках заявленной модели угроз для хранения
Архитектурное vs функция Функциональный переключатель Архитектурное свойство

Реальные сценарии, где это важно

Правдоподобное отрицание — не теоретическая проблема. Оно адресует задокументированные, повторяющиеся реальные ситуации.

Пограничные переходы

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

Домашнее насилие и принудительные отношения

Человек в отношениях с насилием может нуждаться в хранении доказательств (фото травм, угрожающих сообщений, юридических документов) на устройстве, которое контролирует насильник. Если насильник требует показать сейф, пользователь может открыть сейф с безобидным содержимым. Без настоящей отрицаемости флаг «режима-приманки» в конфигурации приложения раскрыл бы существование скрытого контента.

Кража устройства

Вор с техническими навыками может попытаться извлечь данные из украденного телефона. Правильно дополненное отрицаемое хранилище должно скрывать, сколько наборов данных занимает пул, хотя общий объём, состояние устройства, резервные копии и следы использования по-прежнему входят в модель угроз. Сейчас Vaultaire шифрует содержимое, но оставляет по одному локальному индексу на каждый настроенный сейф, и эти индексы можно пересчитать.

Юридическая и журналистская защита

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

Что Vaultaire реализует сегодня

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

Настроенные узоры открывают отдельные зашифрованные сейфы. PBKDF2 выводит ключ сейфа из узора и общей для устройства соли. Настроенный ключ проходит проверку подлинности своего зашифрованного индекса и распаковывает случайный мастер-ключ. Ненастроенный узор показывает пустой сейф, а не сообщение «неверный узор».

Локальный формат позволяет пересчитать сейфы. Vaultaire создаёт отдельную папку хранения для каждого сейфа. Корневые файлы vault_index_<fingerprint>.bin лежат в пуле из 64 вместе с файлами-прикрытиями. Отпечаток не раскрывает узор или название сейфа, но тот, у кого есть доступ к контейнеру приложения, может подсчитать сейфы. Аутентификация AES-GCM и детерминированное имя файла также позволяют офлайн проверять возможные ключи сейфа.

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

Состояние восстановления и принуждения существует. Vaultaire хранит данные для восстановления в базе Keychain, зашифрованной AES-GCM. Режим принуждения удаляет локальные индексы и данные восстановления для всех сейфов, кроме ложного, и отключает это устройство от синхронизации. Он не стирает облачные резервные копии, копии на других устройствах и не каждый общий зашифрованный объект, а время завершения зависит от объёма локальной работы.

Итак, Vaultaire даёт разделение в интерфейсе и зашифрованное хранение, а не теоретико-информационное доказательство того, что других сейфов нет. Чтобы скрыть число локальных сейфов в офлайн-снимке контейнера приложения, понадобится будущий каталог фиксированной ёмкости с неотличимыми настоящими и фиктивными слотами.

Как оценивать заявления об отрицаемости

Когда приложение заявляет о правдоподобном отрицании, спросите:

  1. Есть ли переключатель «режим-приманка»? Если да — это косметика. Криминалист может найти переключатель.
  2. Есть ли у приложения список или база данных сейфов? Если да — существование сейфов доказуемо.
  3. Можно ли проверять догадки офлайн? Аутентифицированный шифротекст может подтвердить возможный ключ без отдельного хеша пароля. Спросите, что ограничивает стоимость перебора и не даёт ли схема хранения более дешёвый отпечаток ключа.
  4. Меняется ли занятый объём с количеством сейфов? Если да — анализ диска может оценить количество сейфов.
  5. Может ли приложение перечислить сейфы? Если приложение показывает список сейфов, этот список хранится на устройстве, и его можно найти.

Часто задаваемые вопросы

Является ли правдоподобное отрицание законным?

Использование шифрования с правдоподобным отрицанием законно в большинстве демократий. Закон не запрещает иметь зашифрованные данные на устройстве, существование которых нельзя доказать. В некоторых юрисдикциях (Великобритания по RIPA, Австралия по Assistance and Access Act) власти могут принудить к раскрытию ключей. Правовой вопрос о том, исполнимо ли принуждение к раскрытию ключа к данным, существование которых нельзя доказать, остаётся развивающейся областью права.

Могут ли криминалистические инструменты обнаружить правдоподобное отрицание?

Криминалист, получивший контейнер приложения Vaultaire, может обнаружить зашифрованные данные и подсчитать папки хранения, по одной на каждый сейф. Корневые файлы vault_index_*.bin лежат в пуле из 64 вместе с файлами-прикрытиями, но папки показывают, какие из них настоящие. Названия сейфов и содержимое не раскрываются, но подсчёт показывает количество локальных сейфов. Поэтому нынешняя конструкция скрывает сейфы от обычной навигации, а не от любой криминалистической проверки хранилища.

Работает ли правдоподобное отрицание против опытного государственного субъекта?

AES-256-GCM даёт надёжную границу шифрования содержимого, когда ключи, одноразовые числа (nonce) и реализация корректны. Но это не делает нынешнюю структуру хранения Vaultaire отрицаемой для криминалиста уровня государства: количество сейфов остаётся видимым, а атака на работающее устройство может добраться до узоров, ключей, превью или экспорта, пока сейф открыт. Нынешняя функция разделяет то, что открывают разные узоры в интерфейсе; она не обещает, что упорный криминалист не сможет доказать существование дополнительных локальных сейфов.

В чём разница между правдоподобным отрицанием и скрытыми сейфами?

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

Можно ли использовать правдоподобное отрицание с облачными резервными копиями?

Vaultaire записывает зашифрованные манифесты резервных копий и дополненные зашифрованные фрагменты файлов в частную базу данных CloudKit пользователя. Случайные имена записей, одинаковые типы записей, дополнение фрагментов до 10 МБ и ложные записи уменьшают прямое раскрытие содержимого. Количество записей, общий объём, время и характер обновлений остаются видимыми метаданными сервиса, поэтому облачная резервная копия не создаёт хранилище постоянного размера с теоретико-информационной отрицаемостью.

Итог

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

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