Конфиденциальность и шифрование

Конфиденциальность

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

Шифрование

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

  • Чтобы эффективно искать по документам, мы создаем индексы ваших данных локально на основе зашифрованных объектов. Представьте, что это два разных хранилища: одно для данных, другое для индексов. Мы расшифровываем эти зашифрованные объекты на лету с помощью ваших ключей, выполняем некоторую логику и затем сохраняем результаты (т.е. индексы) локально. Эти индексы не зашифрованы, но мы предполагаем, что только у вас есть доступ к вашим локальным данным, т.е. доступ к вашему локальному компьютеру не скомпрометирован.

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

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

Технические детали

Вот некоторые технические детали о шифровании и хранении данных:

  • Anytype хранит историю изменений для каждого объекта, который вы создали.

  • Каждое изменение объекта имеет 2 уровня шифрования с разными ключами.

  • Первый уровень используется для связывания изменений в рамках одного объекта, например, "все эти зашифрованные данные принадлежат объекту с id <abc>".

  • Второй уровень используется для шифрования фактических данных. Мы используем AES с потоковым шифрованием в режиме CFB.

  • Когда вы создаете новое изменение для объекта, мы периодически отправляем его на наш резервный узел (только с ключом первого уровня). Больше информации о синхронизации здесь.

  • Резервные узлы Anytype имеют доступ к ключу первого уровня, поэтому они могут группировать изменения для объекта и отправлять их в одном пакете, когда вы хотите восстановить свои данные.

  • Резервные узлы Anytype НЕ имеют доступа к ключу второго уровня Ключ, поэтому они не могут прочитать фактические изменения данных.

Last updated