Глоссарий
Zero knowledge
Zero knowledge это устройство сервиса, при котором он хранит ваши данные в виде, который сам прочитать не может.
Что утверждает это слово
При таком устройстве зашифровывание и расшифровывание идут на вашей стороне, и до сервиса доезжает уже нечитаемое для него. Выгрузка всей базы даёт тогда размеры и даты, а не содержимое.
Главное слово здесь про знание. Не про то, что данные зашифрованы, это может честно сказать почти каждый, а про то, что держащая их сторона не умеет превратить их обратно в текст.
Как проверить утверждение
Четыре проверки решают дело быстрее любой страницы описаний, и три из них проходят без единой строки чужого кода.
Проверка забытым паролем
Если поддержка возвращает доступ к данным, а не к пустому аккаунту, ключ есть у кого-то на той стороне.
Где идёт арифметика
Шифрование на сервере означает, что открытое значение сперва туда приехало, что бы с ним ни сделали потом.
Что покажет выгрузка
Прямой ответ называет поля, которые остаются читаемыми, потому что в любой живой системе такие поля есть.
Вопрос о передаче
Отдать секрет напарнику так, чтобы сервис его не увидел, это трудная часть, и тихо кончаются обещания именно здесь.
Что до сервера не доходит вовсе
Для самого важного здесь вопрос и не встаёт: это просто никуда не отправляется.
Куки и данные сайтов
Они остаются в каталоге профиля на той машине, где работал браузер.
Пара входа у профиля
Она не отправляется вовсе, и общий профиль приходит к напарнику через сервер без неё.
Ключ одноразового кода
Столбца для него нет, поэтому вход с другой машины его за собой не приводит.
Отпечаток
Он не хранится вообще нигде: он выводится при запуске из самого профиля.
Что сервер всё-таки держит
Пока вы в своём аккаунте, настройки профилей отражаются на сервере, чтобы вторая машина и напарники видели один список: имя, папка, сценарий, шаблон и поколение отпечатка, прокси, метки и заметки. Это читаемо на нашей стороне, потому что общий список надо где-то собирать.
Пароль вашего аккаунта лежит хешем и никогда открытым. Пароль прокси закрыт в базе ключом, который живёт вне её, и это бережёт украденную выгрузку, но не бережёт от того, у кого есть и выгрузка, и ключ.
Где здесь стоит этот продукт
Мы не называем ARMANOS продуктом zero knowledge, потому что названные выше настройки нам читаемы, а забытый пароль восстанавливается письмом. Обратное утверждение провалило бы первую же проверку с этой страницы.
У архивов, которые везут ваши сессии, итог тот же, но другой дорогой. Они зашифрованы ключом, растянутым из вашего пароля, едут через вашу собственную папку, и сам пароль в эту папку не попадает.
С чем это путают
Сквозное шифрование
Оно про сообщение между двумя людьми. Zero knowledge про данные, лежащие на чужой машине.
Обещание не вести журналов
Это обещание о том, что выбрасывается, а не о том, что можно прочитать, пока оно лежит.
Шифрование при хранении
Данные закрыты, а вопрос о том, у кого ключ, остаётся открытым. В этом вопросе и вся разница.
Доказательство с нулевым разглашением
Способ доказать утверждение, не открывая того, на чём оно стоит. Торговля взяла оттуда слова, а не математику.
Чего это не делает
- Этот продукт не zero knowledge, и здесь нигде не сказано обратного. Настройки профилей, отражённые на сервере, пока вы в своём аккаунте, читаемы на нашей стороне.
- Забытый пароль аккаунта восстанавливается письмом. Одного этого хватает, чтобы слово не подходило, и это нарочная плата продукта для команды.
- Пароль прокси в базе закрыт ключом, который живёт вне её. Тот, у кого есть и выгрузка, и ключ, прочитает его.
- Пароль, который храните только вы, не восстановит никто. Эта часть ведёт себя ровно так, как обещает слово, и потеря пароля закрывает те архивы насовсем.
Проверить
За каждым утверждением выше стоит файл, а за большинством ещё и стенд, который краснеет, когда утверждение перестаёт быть правдой.
- Ни один запрос с настройками профиля не несёт пару входа, и в отражённой таблице для неё нет столбца
- apps/desktop/test/login-stays-local.js · apps/server/prisma/schema.prisma
- Отпечаток выводится при запуске, а не хранится, и на обеих машинах выходит одним и тем же
- packages/shared/src/index.js · apps/server/test/отпечаток-один-и-тот-же.js
- Архив сессии едет под вашим паролем, а сам пароль с ним не едет
- apps/desktop/src/lib/sessionSync.js · apps/desktop/test/session-sync-folder.js
- Пароль аккаунта лежит хешем, а второй шаг входа одноразовый
- apps/server/src/auth/auth.service.ts · apps/server/test/two-factor.js
Вопросы
- Zero knowledge это просто «зашифровано»?
- Нет. Шифрование говорит, что данные закрыты, а это слово говорит, у кого ключ, и только второй ответ показывает, чего стоит украденная база.
- Вы можете прочитать мои куки?
- Они никуда не отправляются. Данные сайтов и собственные базы браузера остаются в каталоге профиля на вашей машине.
- Вы можете прочитать пароль моего прокси?
- В базе он закрыт ключом, который живёт вне базы. Тот, у кого есть и то и другое, его откроет, и поэтому слово сюда не подходит.
- А архивы в моей папке синхронизации?
- Они зашифрованы ключом, растянутым из вашего пароля, и сам пароль в папку не попадает. Копии этого пароля нет ни у кого.
- Почему не построить продукт именно так?
- Часть его так и построена, а остальное это цена общего списка: вид, который видит напарник, надо собрать из настроек, читаемых кем-то.
Рядом с этим
Безопасность и доверие
Полный перечень того, что и где записано и что уходит с машины.
Шифрование при хранении
Обещание послабее и три вопроса, которые придают ему смысл.
Перенос сессии
Единственное здесь, что ведёт себя так, как обещает это слово.
Реестр обещаний
Каждое утверждение сайта против файла, который обязан его держать.
Прочитайте, что знает сервер
Страница безопасности называет каждое значение, уходящее с вашей машины, каждое остающееся и границы, на которых защита кончается.