КРИПТОГРАФИЯ И ДОВЕРИЕ

Модель безопасности

Как Revault защищает ваши данные, что понадобится злоумышленнику, чтобы их прочитать, и где заканчивается эта защита.

Техническая справка · Обновлено в октябре 2026 г.

Защита начинается перед загрузкой

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

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

Ваше устройствоОткрытый текст и ключ хранилища
Шифровать локальноАутентифицированный зашифрованный текст
Зашифрованное хранилищеНет ключа хранилища в виде открытого текста

Независимые ключи для каждого хранилища

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

Шаблон устройства объединяет упорядоченную последовательность точек со случайным 256-битным секретом устройства. PBKDF2 с HMAC-SHA-256, новой 128-битной солью, и 600 000 итераций получают 256-битный ключ упаковки. AES-256-GCM затем шифрует главный ключ с помощью этого ключа упаковки. Служба получает зашифрованную оболочку, ее соль и общедоступные параметры вывода. Секрет устройства остается в локальной базе данных IndexedDB этого браузера.

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

Ключи доступа аутентифицируют вашу учетную запись с помощью ответов на запросы открытого ключа. Аутентификация учетной записи не позволяет получить ключ хранилища или расшифровать ваши файлы. Действительный сеанс учетной записи и успешная разблокировка хранилища являются отдельными требованиями в обычном процессе подачи заявки.

Криптографические параметры
ЦельСтроительство
Главный ключ хранилищаСлучайный 256-битный ключ AES
Упаковка ключейPBKDF2-HMAC-SHA-256 · 600 000 итераций · 128-битная соль → AES-256-GCM
Метаданные и миниатюрыAES-256-GCM · случайный 96-битный одноразовый номер · 128-битный тег аутентификации
Получение ключа файлаHKDF-SHA-256 · случайная 256-битная соль для каждого файла · 256-битный вывод AES
Секрет восстановления192 случайных бита, отображаемые в виде шести групп шестнадцатеричных символов.

Конфиденциальность и обнаружение несанкционированного доступа

Метаданные хранилища, метаданные файлов, эскизы и упакованные ключи используют AES-256-GCM со 128-битными тегами аутентификации. Каждое независимое шифрование использует новый случайный 96-битный одноразовый номер. Дешифрование проверяет тег перед возвратом открытого текста; измененный зашифрованный текст или неправильный ключ приводят к сбою аутентификации.

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

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

Большие файлы используют аутентифицированные сегменты.

Содержимое файла использует потоковую конструкцию AES-256-GCM-HKDF-SHA-256, описанную Tink, реализованную с использованием криптографических примитивов браузера. Каждый новый файловый поток имеет 40-байтовый заголовок, содержащий маркер длины, случайную 32-байтовую соль и случайный 7-байтовый префикс nonce.

HKDF получает отдельный ключ шифрования файла из главного ключа хранилища. Его контекст включает идентификаторы хранилища и файла, длину открытого текста в байтах и ​​настроенный размер сегмента. 12-байтовый одноразовый номер каждого сегмента объединяет случайный префикс, четырехбайтовый счетчик сегмента и флаг последнего сегмента. Сегменты содержат 128-битные теги GCM.

Приложение обрабатывает файлы ограниченными сегментами размером примерно 5 МБ. Позиции сегментов, флаг последнего сегмента и ожидаемая длина байтов приводят к тому, что замененные, измененные или усеченные сегменты не проходят проверку. Загрузки проверяют подлинность каждого сегмента перед его выпуском; ошибка в конце потока может привести к неполной загрузке, поэтому успешное завершение имеет значение. При повторных загрузках повторно используются уже зашифрованные байты, а не шифруется новый контент с помощью того же сегмента nonce.

Строительство следует за Спецификация потоковой передачи Tink AES-GCM-HKDF. Реализация Revault и конфигурация сегмента не прошли независимый аудит или сертификацию Tink.

Восстановление - это второй путь к тому же ключу

Секрет восстановления генерируется из 24 случайных байтов, что дает 192 бита случайного ввода. Он независимо получает ключ упаковки, используя PBKDF2-HMAC-SHA-256 и свою собственную соль, и шифрует тот же главный ключ хранилища с помощью AES-256-GCM. Любой, кто получит секрет восстановления и копию зашифрованного хранилища, сможет расшифровать это хранилище.

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

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

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

Общий доступ предоставляет доступ к одному файлу

Совместное использование доступно для завершенных загрузок в облако Revault. Браузер получает ключ потоковой передачи выбранного файла и помещает его, его дескриптор потока и метаданные файла в отдельный конверт AES-256-GCM. Идентификаторы папок и главный ключ хранилища исключаются. Этот конверт зашифрован новым случайным 256-битным секретом; получатель не может получить из него другие ключи файла.

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

Любой, у кого есть полная ссылка, может загрузить этот файл без учетной записи. Защищайте ссылки как секреты: содержимое буфера обмена, история браузера и сообщения могут раскрыть их. Срок действия ссылок истекает через один час, один день или семь дней. Служба проверяет срок действия, отзыв, доступность файла и приостановку доступа владельца при каждом запросе метаданных и фрагмента. Отзыв не может отозвать уже загруженные байты или остановить получателя, который сохранил зашифрованный текст и ключ файла. Safe Exit удаляет локальный доступ; он не отменяет ссылки на общий доступ к облаку.

Собственные общие ресурсы используют независимое шифрование.

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

iOS может поместить этот зашифрованный текст в отдельную иерархию записей CloudKit с частным приглашением только для чтения. Он не использует общую зону синхронизации хранилища. Кроссплатформенные собственные общие ресурсы используют ограниченные серверные части с контрольными суммами SHA-256. Независимые случайные 256-битные возможности чтения и управления хранятся в виде хешей на сервере. Секрет расшифровки передается отдельно и никогда не загружается. Срок действия контролируемых акций истекает в выбранное отправителем время в течение 30 дней. Служба атомарно подсчитывает сеансы доступа и обеспечивает соблюдение выбранного максимума, срока действия и отзыва. Сеанс загрузки длится не более 15 минут и не превышает истечения срока действия общего ресурса.

Получатели аутентифицируют каждый зашифрованный сегмент и открывают изолированное общее хранилище с отдельным секретом отправителя. Никакой учетной записи, личного хранилища или шаблона не требуется. Личные хранилища остаются запертыми. Если экспорт разрешен, получатели могут сохранить зашифрованную копию .qvault, которая открывается с секретом этого общего ресурса. В противном случае экспортный контроль отсутствует. Временный сеанс подтверждает постоянный доступ. Это элементы управления приложениями: снимки экрана, измененные клиенты и сохраненные копии невозможно предотвратить криптографически. Общие ресурсы представляют собой снимки без постоянных обновлений исходного кода. Неограниченные приглашения CloudKit не требуют подсчета количества доступа или автоматического истечения срока действия; доступ длится до тех пор, пока владелец не прекратит делиться. Удаление оригинала не аннулирует его отдельную долю, и никакое аннулирование не может отозвать уже сохраненную копию.

Срок после первого доступа

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

Дополнительная активность хранилища

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

Новые контролируемые общие ресурсы, созданные с включенным ведением журнала, сохраняют до 100 временных меток сеанса доступа в службе общего доступа. Только возможности управления могут получить их; журнал не содержит идентификатора получателя или секрета расшифровки. Отключение локального ведения журнала повлияет на будущие общие ресурсы. Существующие общие журналы сохраняют свои первоначальные настройки до их отзыва или истечения срока действия и очистки.

Дополнительные зашифрованные фотографии взлома

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

Выделенный открытый ключ RSA-3072 содержит новый 256-битный ключ AES-GCM для каждого оповещения с использованием OAEP с SHA-256 и MGF1-SHA-256. Это позволяет шифровать данные, пока хранилище заблокировано. Соответствующий закрытый ключ сам шифруется с помощью главного ключа этого хранилища с выделенным аутентифицированным контекстом. Только разблокировав это хранилище, можно расшифровать его фотографии. Оповещения появляются в представлении аудита независимо от обычной регистрации активности и могут быть удалены в настройках предупреждений о взломе. Они не являются доказательствами, защищенными от подделки.

Зашифрованные загрузки в вашу собственную корзину

Настройки хранилища хранилища позволяют напрямую подключить этот браузер к указанной пользователем конечной точке HTTPS, совместимой с S3. Выбранные файлы устройств шифруются локально с использованием той же конструкции файла. Каждый из них становится отдельным переносимым объектом .qvault, содержащим аутентифицированный зашифрованный инвентарь и упакованные ключи хранилища. Случайные имена объектов позволяют избежать раскрытия исходных имен файлов. Для восстановления требуется загруженный объект и ключ восстановления хранилища.

Конфигурация и учетные данные конечной точки шифруются с помощью главного ключа хранилища с выделенным аутентифицированным контекстом и хранятся в IndexedDB этого устройства. Они не синхронизируются и не отправляются в API Revault. Для подписания запроса используется подпись AWS версии 4, HMAC-SHA-256, а также хеш каждого ограниченного тела запроса. Составные части размером восемь МБ передают уже зашифрованные байты непосредственно поставщику хранилища. Доступ к сегменту по-прежнему регулируется разрешениями этого поставщика и политикой CORS.

Поставщик может видеть идентификаторы ключей доступа, пути к объектам, размеры в байтах, время загрузки и информацию о соединении. Сохраняйте сегмент конфиденциальным, а его учетные данные — доступными для необходимых операций. Загруженные объекты не зависят от облачной синхронизации и совместного использования Revault. Блокировка или отмена попыток прервать незавершенную загрузку; Закрытие вкладки или потеря соединения могут привести к тому, что части останутся потерянными, поэтому настройте правило жизненного цикла неполной загрузки. Safe Exit удаляет учетные данные локального хранилища других хранилищ, но не удаляет объекты из их корзин.

Safe Exit удаляет локальный доступ

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

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

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

Что остается видимым

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

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

Где заканчивается защита

Приватный просмотр обычно удаляет локальное хранилище по завершении приватного сеанса. Запрос на постоянное хранилище не делает сеанс инкогнито постоянным. Синхронизированные облачные копии остаются, но локальные шаблоны, несинхронизированные изменения, кэшированные файлы и настройки Safe Exit могут быть потеряны. Для нового частного сеанса необходим доступ к учетной записи и ключ восстановления для регистрации нового шаблона.

Приложение удаляет ссылку на ключ хранилища в памяти и отзывает URL-адреса частного предварительного просмотра при блокировке. Он автоматически блокируется при скрытии или после пяти минут бездействия. Нативные приложения также блокируются в фоновом режиме, удаляют временные предварительные просмотры и стирают принадлежащие им буферы ключей после завершения операций. Управление памятью браузера, Swift и JVM не может гарантировать немедленное удаление каждой копии ключа или декодированного медиа-буфера.

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

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

Безопасность и архитектура