Конфиденциальность и шифрование
Конфиденциальность
Все ваши данные в Anytype являются частными. Только у вас есть ключи шифрования. Никто в Anytype не может расшифровать ваши данные. Поэтому, если вы потеряете свою фразу восстановления, мы не сможем восстановить доступ. Также никто в Anytype или любой другой человек не может прочитать содержимое вашего Anytype.
Шифрование
Ваши объекты хранятся как локально, так и на узлах в зашифрованном формате, который может быть расшифрован только с помощью ключей шифрования. Они разные для каждого документа, и у нас есть определенная иерархия ключей.
Чтобы эффективно искать по документам, мы создаем индексы ваших данных локально на основе зашифрованных объектов. Представьте, что это два разных хранилища: одно для данных, другое для индексов. Мы расшифровываем эти зашифрованные объекты на лету с помощью ваших ключей, выполняем некоторую логику и затем сохраняем результаты (т.е. индексы) локально. Эти индексы не зашифрованы, но мы предполагаем, что только у вас есть доступ к вашим локальным данным, т.е. доступ к вашему локальному компьютеру не скомпрометирован.
Эти индексы не синхронизируются нигде и остаются только на вашем компьютере. Например, если у вас два устройства, у каждого из них будет свое собственное хранилище индексов.
Мы предполагаем, что машина пользователя не скомпрометирована и надежна. По сути, если устройство скомпрометировано, существует множество векторов атак, включая сканирование ОЗУ и кейлоггинг фразы-пароля, что делает локальное шифрование намного менее полезным. Мы обязательно добавим дополнительное шифрование позже. На данный момент мы рекомендуем включить шифрование HDD и пароль на устройстве.
Технические детали
Вот некоторые технические детали о шифровании и хранении данных:
Anytype хранит историю изменений для каждого объекта, который вы создали.
Каждое изменение объекта имеет 2 уровня шифрования с разными ключами.
Первый уровень используется для связывания изменений в рамках одного объекта, например, "все эти зашифрованные данные принадлежат объекту с id <abc>".
Второй уровень используется для шифрования фактических данных. Мы используем AES с потоковым шифрованием в режиме CFB.
Когда вы создаете новое изменение для объекта, мы периодически отправляем его на наш резервный узел (только с ключом первого уровня). Больше информации о синхронизации здесь.
Резервные узлы Anytype имеют доступ к ключу первого уровня, поэтому они могут группировать изменения для объекта и отправлять их в одном пакете, когда вы хотите восстановить свои данные.
Резервные узлы Anytype НЕ имеют доступа к ключу второго уровня Ключ, поэтому они не могут прочитать фактические изменения данных.
Last updated