Безопасность и конфиденциальность

Как Babel Mesh распределяет запросы, защищает аккаунты и проверяет узлы и чего он не может.

Куда попадает то, что вы отправляете

Ваш запрос попадает на шлюз Babel Mesh, который выбирает узел по классу данных запроса и пересылает запрос ему. Узел вычисляет результат своей моделью и возвращает его через шлюз.

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

Классы данных

У каждого аккаунта и каждого запроса есть класс данных. Аккаунты, зарегистрированные самостоятельно, начинают с «публичного». Узлы участников получают только «публичные» запросы. Более высокие классы идут только на собственные узлы оператора. Изображения и видео пока тоже обслуживаются только узлами оператора, потому что их результаты нельзя проверять выборочно, как текст.

  • Сайт и API используют HTTPS. Компоненты за ними (контроллер, шлюз, реестр, ретранслятор, узлы) общаются по шифрованным соединениям с взаимной проверкой сертификатов; личность узла записана в его сертификате.
  • Узлы подключаются только наружу. Они не открывают входящий порт и работают через ретранслятор.
  • Клиент хранит ваш ключ API на вашем компьютере, и читать его может только ваша системная учётная запись. Страница клиента никогда не получает ключ; запросы отправляет сам клиент.
  • Обновления клиента проверяются по подписанному манифесту: открытый ключ встроен в клиент, а неверная подпись или версия, которая не новее, не устанавливаются никогда.

Учёт и проверка

  • Квитанции, подписанные обеими сторонами. По каждому запросу шлюз и узел подписывают одну и ту же квитанцию, и реестр записывает её, только если подписи совпали. В квитанции есть хеши запроса и результата и объём использования, но нет содержимого.
  • Случайные проверки. Новые узлы проверяют чаще, узлы с долгой безупречной историей — реже. Узел, чьи результаты не совпадают, помещается на карантин; когда оператор подтверждает обман, заработок аннулируется и взыскивается штраф по правилам.
  • Заработок удерживается. Доход участника ждёт несколько дней, и всё это время проверки продолжаются.

Hive: сервер не видит вашу задачу

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

  • Шифрование происходит в браузере. У каждой задачи свой главный ключ; задача, её файлы и результат запечатываются им, а главный ключ запечатывается отдельно для каждой машины, которой разрешено её выполнять. Диспетчер, хранилище и шлюз видят шифртекст, размеры, время и идентификатор вашей учётной записи, но не содержимое.
  • Машина, выполняющая задачу, может её прочитать. Ей нужно открыть задачу, чтобы работать, и этого не избежать. Поэтому машины разделены по классам данных: публичные задачи могут уходить на любую допущенную машину; доверенные — только на собственные машины платформы, договорные организации и машины, прошедшие удалённую аттестацию; конфиденциальные — только на собственные машины платформы и аттестованные. Ваши собственные машины всегда первые, и только они могут брать ваши задачи независимо от класса.
  • Машины работают в изоляции. Задача выполняется в песочнице gVisor, по умолчанию без сети и с доступом только к своей рабочей папке. Новая машина должна пройти несколько проверок, прежде чем получит настоящие задачи, а машина, провалившая проверку, помещается в карантин или блокируется.
  • Один одноразовый ключ модели на задачу. Машины никогда не получают ключ вашей учётной записи; задача использует ключ, созданный только для неё, с лимитом расходов. Сервер отзывает его, как только задача заканчивается, открыта ваша страница или нет.
  • Как долго всё хранится. Задача и её результат (в зашифрованном виде) хранятся на сервере 7 дней, затем удаляются; страница показывает дату. Отмена стирает сразу. Ваши записи о задачах и ключи к ним остаются только в вашем браузере: если очистить его данные или сменить браузер, открыть их нельзя — если только не включить синхронизацию между устройствами (шифруется парольной фразой, которую знаете только вы; если забыть, её никто не восстановит).
  • «Моя библиотека» тоже шифруется в браузере. Файлы делятся на блоки и перед загрузкой шифруются собственным ключом; хранилище содержит шифртекст, причём не на одной машине, а оглавление зашифровано. Файл, к которому вы открыли доступ задаче, доступен только для чтения, ограничен по времени и своими блоками.
  • Вы можете это проверить. Основной код планируется открыть; выпуски уже можно собирать воспроизводимо, а их хэши будут записываться в журнал прозрачности, чтобы вы могли убедиться, что запускаемая вами программа собрана из исходников (этот шаг ещё не начат); браузерная криптография вынесена в отдельный файл и сверяется с реализацией сервера по общим тестовым векторам.

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

Чего он не может

  • Доверенной среды выполнения (TEE) пока нет: она не может гарантировать, что узел не видит содержимого, поэтому у запросов есть классы.
  • Он не проходил сторонний аудит безопасности.
  • Доступность не гарантируется: узлы могут исчезнуть в любой момент, а запрос повторяется на другом узле, но успех не гарантирован.

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