Данные на сервере

Что сервер о вас знает.

Серверу круга нужно ровно столько, чтобы решить, кого пускать, и понять, куда доставлять. Узнавать, кто вы и что сказали, он не умеет. Ниже — конкретно, что он хранит и чего не видит.

Для сервера вы — публичный ключ

Личность в Circlus — это пара ключей, созданная на вашем устройстве. Сервер получает публичную половину и больше ничего о том, кому она принадлежит.

Имён нет

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

Ни телефона, ни почты

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

Что публичный ключ всё-таки выдаёт

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

Роли сервер видит

Сервер знает, кто владелец, кто участник, а кто гость: он сам следит за тем, что каждому из них разрешено.

Что сервер всё-таки хранит

Каждый пункт здесь работает на одну из двух задач: решить, кого пускать, и доставить туда, куда нужно.

  • Публичные ключи и идентификаторы участников и подтверждённых ими подключений — телефонов, планшетов, браузеров.
  • Состав круга: какие личности в нём состоят, кто кого пригласил и когда.
  • Правила доступа: владелец, участник или гость, квоты приглашений, права на гостевые ссылки.
  • Состояние доставки: между какими личностями идёт переписка, в какое время, сколько сообщений и какого размера вложения.
  • Метаданные звонков: кто кому звонил, когда, сколько длилось, записи о качестве соединения.
  • IP-адрес и подпись браузера у запроса на добавление нового подключения — чтобы владелец видел, откуда он пришёл, прежде чем подтвердить.
  • Шифротексты: сообщения, файлы, имена, статусы, названия каналов. Хранятся и доставляются, но не читаются.

Чего сервер прочитать не может

Всё это зашифровано ключами, которые создаются на устройствах и на сервер не отправляются.

  • Содержимое сообщений, файлов и звонков.
  • Имена участников, карточки профиля и тексты статусов.
  • Названия, которые вы дали своим устройствам и браузерам.
  • Названия и описания каналов, подписи на гостевых ссылках.
  • Ключи от всего перечисленного.
  • Ваш телефон и адрес почты — их никто и не собирал.
Одно намеренное исключение: у круга может быть публичная страница. То, что владелец осознанно на ней публикует, открыто по замыслу, и эту часть сервер хранит в открытом виде.

Кто видит хранимое

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

На своём VPS

Администратор — вы, и у Circlus доступа к вашему серверу нет. Но провайдер, у которого вы арендуете VPS, технически может увидеть то же самое: диск и сеть принадлежат ему.

На сервере знакомого, компании или нашем

Тот, кто держит сервер, видит всё перечисленное, в том числе в своих резервных копиях. Если сервер наш, администратор — автор Circlus, ровно с этой видимостью и не больше.

На своём VPS, который настраивал специалист

Пока у специалиста есть доступ, он администратор — с теми же возможностями, не больше. После настройки закройте ему доступ: смените пароль или ключ SSH и пароль от панели провайдера — и проверьте в списке участников, что владелец круга — вы.

Метаданные — это не пустяк

Кто с кем общается, как часто и когда — это тоже информация, и мы этого не скрываем. Мы утверждаем только одно: содержимого и настоящих имён в ней нет.

Владелец и администратор — разные роли, и полномочия у них не пересекаются. Разница разобрана в разделе владелец круга и администратор сервера.

Чего администратор сделать не может

Это держится не на честности администратора: проверку выполняют приложения участников, а не сервер.

Прочитать переписку

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

Подменить приложение

Официальное приложение загружается с web.circlus.org или из магазина приложений, а не с сервера круга. Поэтому администратор сервера не может изменить код, который шифрует сообщения.

Добавить человека или забрать круг

Каждое изменение состава подписано — владельцем или приглашением, которое выдал участник круга, — и устройства проверяют подписи. Сервер не может незаметно добавить постороннего, вернуть заблокированного или назначить другого владельца.

Что он всё-таки может

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

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

Круг к серверу не привязан

Доверие администратору остаётся отзывным, потому что круг может уйти.

Перенос запускает владелец

Перенос начинает владелец круга из настроек круга. Нужное разрешение выдаёт администратор сервера-получателя. У администратора текущего сервера согласия не спрашивают.

Что это гарантирует, а что нет

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

Точный порядок и данные, которые перенос не переживают, описаны в руководстве по переносу круга.

Не верьте нам на слово

Каждое утверждение на этой странице проверяется без доверия к тем, кто её написал.

Сервер открыт

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

Схема базы лежит в репозитории

Запрет хранить имена и статусы в открытом виде записан прямо в схеме базы данных, а не только в коде. Схема опубликована вместе с сервером.

Circle Inspector

Владелец может выдать временный доступ к просмотру того, какие записи по его кругу существуют на самом деле, — себе, другому участнику или специалисту, который ему помогает.

Репозиторий сервера: github.com/circlus-org/circlus-server. Inspector: inspector.circlus.org.